Mae向きなブログ

Mae向きな情報発信を続けていきたいと思います。

令和2年度10月 応用情報午後問3

令和2年度10月 応用情報技術者試験(AP)の午後問題3は、

  • 誤差拡散法による減色処理

に関する問題でした。

減色処理とは、画像の情報量を落として画像ファイルのサイズを小さくしたり、モノクロの液晶画面に画像を表示させたりする際に行われる処理で、誤差拡散法は減色アルゴリズムの一つだそうです。

誤差拡散法というアルゴリズムも本問を通して知りましたが、画像処理についてもあまり知らないので、実際に動かしてみることで理解を深めていこうと思います。

下図は、減色処理をする前の元画像です。2つの方法で減色を行っていきます。

f:id:rahaema:20201020201918p:plain
元画像(from.png)

プログラム例(r02o_ap_pm3_1.rb.rb)

まずは、問題文(pdf)図3,図5に示されるアルゴリズム(画質向上のための改修をする前)を具現化してみました。

実行結果

from.pngが画像処理前の画像、to1.pngが画像処理後、出力されるファイル名を指定します。

$ ruby r02o_ap_pm3_1.rb from.png to1.png

f:id:rahaema:20201020202333p:plain
画質向上のための改修前アルゴリズムの実行結果(to1.png)

プログラム例(r02o_ap_pm3_2.rb.rb)

画質向上のための改修

ピクセルを処理する順番を、Y座標ごとに逆向きにすることで、誤差拡散の方向の偏りを減らし、画質を改善するアルゴリズム

実行結果

$ ruby r02o_ap_pm3_2.rb from.png to2.png

f:id:rahaema:20201020202656p:plain
画質向上のための改修後アルゴリズムの実行結果(to2.png)

ちょっとしたアルゴリズムの工夫を行うだけで、改修前アルゴリズムの実行結果の画像と比べて、かなりの改善がみられることが分かりました。実際にプログラムを作って実行してみることの重要性を再認識しました。

参考

関連

追記