提出物の提出も終わり、2月に入ってプログラミングのネタ探し。
今回はデジタル画像処理。画像処理なら風景がいいかな。ということで、ネタを探しに洞峰公園にいってきました。
偶然、写真展をやっていて、写真家さんの写真を見てからの写真撮影散歩ということもあって、ちょっといい写真が撮れたのではないかと思います。個人の考えですが。
青と赤と、季節的に緑がないのが残念ですが、良しとしましょう。
画像処理でやりたいことと言えば、ネガポジ変換、モノクロ変換、二値化、輪郭強調(エッジ処理、シャープネス)、モザイクなどなど
画素について理解する
画像の画素(ピクセル)は赤の輝度を表すR,緑の輝度を表すG,青の輝度を表すBがあり、それぞれ0~255までの256段階になっていて、それを並べたもので構成されています。
上のよくありがちな円を3つ並べた画像のイメージです。
HTMLなんかを触ったことのある人なら、#FFFFFFが白とか#FF0000が赤になるなんて知っているかもしれませんね。
255を16進数であらわすとFFなんですね。それを3つ並べたものなんです。
HSPなんかのプログラミング言語では白は、
color 255,255,255
とあらわします。
ネガポジ変換をプログラミングする
ネガポジ変換というと、あまりなじみはないかもしれませんが、色を反転する処理です。
ネガポジ変換はどうするかというと、先にも上げたように色を反転するわけですから、それぞれの数値は0~255までの256段階になっていますので、次のように各色の輝度を255から引いてあげると色が反転するという仕組みです。
R’=255ーR
G’=255ーG
B’=255ーB
その数値R’,G’,B’で画素を作って、元あった場所に置き換えてあげると色が反転してネガの出来上がりというわけです。
例えば先ほどの白、
color 255,255,255
の場合は、
R’=255ー255=0
G’=255ー255=0
B’=255ー255=0
というわけで、
color R’,G’,B’は
color 0,0,0
となりこれは黒になります。
さて、実際にやってみるとこんな感じ。
できたものがこちらですね。
実際、白い雲のあったところが黒くなっているのがわかると思います。生徒の髪や来ている服が黒かったので白い恋人になっていますね。いや、白い人です。
これをちゃんと計算式を理解して、プログラムに組み込んでいく作業こそがツクガク魂です。
あるものつかえばいいじゃん、じゃないんですよ。
なければ作るクリエイター魂じゃないですか(笑)
といいながら、この画像についてはGIMPでちょちょいという矛盾(w
こんな風に計算してモノクロ画像なんかも作っていく予定です。
出来たらアップしますので、ぜひ見に来てくださいね。