技術研究所のまつけんです。

 

少し前になりますが、7月14日に画像処理エンジニア検定 (エキスパート) を受けて無事、合格しました (同時開催のマルチメディア検定については先日の記事を参照)。今回の試験問題について、いくつかピックアップして、私なりの受験テクニックを紹介したいと思います。『画像処理エンジニア検定エキスパート・ベーシック公式問題集 [改訂第三版]』(ISBN978-4-903474-62-5) に類似問題と解説が載っていますが、そこでは紹介されていない解き方 (別解) として参考にしていただければと思います。

なお、今回 (2019年 前期) とそれ以前の試験問題と解答は、それぞれ以下の通り、PDFで公開されています:

2016年 前期: 問題 解答
2016年 後期: 問題 解答
2017年 前期: 問題 解答
2017年 後期: 問題 解答
2018年 前期: 問題 解答
2018年 後期: 問題 解答
2019年 前期: 問題 解答

では、実際に今回の試験問題の第2問d、第3問a、第6問c、第7問b、および、第10問dの5問について解説をしていきたいと思います。

第2問 d

ガンマカーブとオリジナル画像 (動物の写真) とが示され、オリジナル画像にガンマカーブを適用した場合の出力画像を選ばせる問題です。まず、色相はそのままで暗くなるはずなので、正解はイとウに絞られます。イは全体的に暗くなっていますが、ウは元々暗かった部分はあまり暗くなっていません。イの画像については、下図のように y = x をそのまま下にシフトしたようなトーンカーブを適用したと推測できます。従って、正解はウとなります。

第3問 a

25画素のグレースケール画像について、平均値、中央値、標準偏差を選択させる問題です。一瞬、平均値や標準偏差を計算しなければならないのかと思ってしまいますが、計算は必要ありません。まず、中央値の選択肢 (表の②の列) に着目します。図1右の画素値一覧に、129、98、160は存在しませんので、アとオに絞られます。更に、159はかなり大きな値 (というか最大値) なので、どうみても中央値ではありません。よって、アが正解となります。

第6問 c

座標変換に関する問題です。左右反転→45度回転→右に0.5平行移動するので、正解はウとなります。ただ、私の場合は、行列から「左右反転」のような「言葉」に変換するのを間違えることがあるので、行列計算をしてしまいます。元の画像の原点が、各選択肢のどこに該当するかを赤丸で図示すると、以下のようになります:

そして、全てが異なる座標になっています。ということは、行列A、B、Cの積ABCに原点を示すベクトル[ 0 0 1 ]を右から掛けた結果を計算して、ア~オの赤丸の位置と比較すれば、答えが出るわけです。その計算をMATLAB/Octaveで行うと、

>> r2 = sqrt(2) % ルート2を短縮して書けるように
r2 = 1.4142
>> A = [ 1 0 .5 ; 0 1 0 ; 0 0 1 ]
A =
1.00000 0.00000 0.50000
0.00000 1.00000 0.00000
0.00000 0.00000 1.00000
>> B = [ r2/2 -r2/2 0 ; r2/2 r2/2 0 ; 0 0 1 ]
B =
0.70711 -0.70711 0.00000
0.70711 0.70711 0.00000
0.00000 0.00000 1.00000
>> C = [ -1 0 0 ; 0 1 0 ; 0 0 1 ]
C =
-1 0 0
0 1 0
0 0 1
>> o = [ 0 ; 0 ; 1 ]
o =
0
0
1
>> A * B * C * o
ans =
0.50000
0.00000
1.00000
>>

となりますので、原点は (0.5, 0) に移動することがわかります。よって、正解はウです。試験中は手作業で計算することになりますので、原点の移動先を計算するのが有利です。なぜなら、どんな数でもゼロを掛けるとゼロになってくれるからです。手計算でやる場合は、以下の順序で計算すると良いでしょう:

>> Co = C * o
Co =
0
0
1
>> BCo = B * Co
BCo =
0
0
1
>> ABCo = A * BCo
ABCo =
0.50000
0.00000
1.00000

CoもBCoも[ 0 0 1 ]となるので、結局Aの0.5だけが残るわけです。原点の移動先が同一である選択肢が複数ある場合は、(1, 0) か (0, 1) を計算するのが良いかと思います。なお、ABCoの3番目の要素が1以外になった場合は、全体をその数で除します。

第7問 b

フーリエ変換に関する設問です。丸暗記するなら、「水平方向にブレるとスペクトルは縦長になる」と覚えれば良いのですが、「水平方向にブレる」=「水平方向にローパスフィルタを掛けた状態になる」=「水平方向の高周波成分が無くなる」ということなので、左右が黒くなっているアが正解となります:

また、たびたび出題される「周波数領域のフィルタリング」の問題と関連付けるならば、こちら:

のようなフィルタを適用したと考えることも出来ます。2018年前期試験の第6問dにおいて、「垂直方向にブレた」ような状態にするフィルタを選ばせる問題が出題されています (垂直方向の高周波成分を除去するフィルタなので、正解はイ)。

第10問 d

問題の引用は省略しますが、カラー画像の間引きに関する問題です。人間の視覚は、「輝度に対する空間分解能」>「色に関する空間分解能」であることを利用して画像を間引くと、違和感をあまり感じさせないように情報量を削減することが出来ます。 選択肢<1>~<4>のうち、色合いや明るさが変化してしまっている<3>と<4>は除外できるので、<1>と<2>のどちらが、「輝度成分Yだけを間引いた結果」、「色差成分CbCrだけを間引いた結果」なのかを考えます。「輝度に対する感度」>「色に関する感度」ですから、輝度成分だけを間引くと違和感の大きい画像が出来、色差成分だけを間引くと違和感の小さい画像が出来ます。従って、「どちらが違和感が小さいか」を考え、違和感の小さいほうが「色差成分だけを~」となります。

おまけ

座標変換を行列の掛け算で計算してしまうという解法は、3次元でも有用です。今回のCGエンジニア検定エキスパートの第2問cにおいて、3次元の平行移動→回転の行列を選ぶ問題が出題されていました。下の図の通り、原点にあった物体は、赤色→水色→緑色の順に(1, 0, 0)に移動します。

よって、[ 0 0 0 1 ]を右から掛けると[ 1 0 0 1 ]になる行列はアだけです。なお、一番右の列が[ 1 0 0 1 ] (または、[ 2 0 0 2 ]、[ 3 0 0 3 ]など) であるかどうかを見るだけで良いので、計算する必要すらありません。一番右の列が[ 1 0 0 1 ] (または、[ 2 0 0 2 ]、[ 3 0 0 3 ]など) である選択肢が複数ある場合は、他の座標 (この問題の場合は[ 0 1 0 1 ]が良いかもしれません) を掛けてみる必要があります。正解となる行列に[ 0 1 0 1 ]を掛けるとそれぞれ、[ 2 0 0 1 ]となるはずです。

2018年後期の第2問cでは、一番右の列が[ 0 0 -1 1 ]である選択肢が2つ (イとウ) あります。イとウの行列に[ 0 1 0 1 ]を掛けるとそれぞれ、[ 0 0 -2 1 ]と[ 1 0 -1 1 ]となります。よって、イが正解となります。

如何でしたか? 今後、皆様が受験される際に参考にしていただければ幸いです。