バックナンバーはこちら。
https://www.simulationroom999.com/blog/compare-matlabpythonscilabjulia3-backnumber/
はじめに
画像処理を試す場合、RGBではなく、グレースケールで試すことが多い。
というわけで、まずは画像をグレースケール化するところの話をする。
登場人物
博識フクロウのフクさん
イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1
エンジニア歴8年の太郎くん
イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1
グレースケールの方が楽ちん?
で、これからいろいろな画像処理をしていくのだと思うのだけど、
どんな感じで進めるの?
まずはグレースケール化だな。
グレースケール?
まぁ、白黒画像にするってことだな。
折角カラーになってるものを白黒にしちゃうの?
画像処理に於いて、
白黒は1チャンネル。
カラーは3チャンネル。
白黒で出来たことは、カラー時には同じことをRGBそれぞれのチャンネルに実施すればOKなんだよね。
つまり、グレースケールで何かしら画像処理ができることが確認が取れれば
同じことRGBそれぞれにやっていまうだけでOK。
だから、お試しの段階ではグレースケールにしておいた方が分かりやすいってことか。
そうそう。
グレースケールの種類
で、グレースケールにするにはどうするの?
それぞれの環境にグレースケールに変換するようなライブラリがある感じ?
ライブラリはあるが、今回は使用しない予定だ。
ということはガチで何かしら演算をするってことか・・・。
演算と言っても大したことはしないけどね。
問題はグレースケールにもいくつか種類があって、その種類を認識した上で適切なものを選択する必要がある。
と言っても、大体一択にはなるんだけど。
どういう種類があるの?
RGB平均、CIE規格、SDTV規格、HDTV規格、Gチャンネルってのが有名どころかな。
それぞれのRGBに対しての補正値を示したがこの表になる。
グレースケール種別 | R | G | B | 備考 |
---|---|---|---|---|
RGB平均 | 0.3333 | 0.3333 | 0.3333 | |
CIE規格 | 0.2126 | 0.7152 | 0.0772 | 国際照明委員会 |
SDTV規格 | 0.2990 | 0.5870 | 0.1140 | 標準画質テレビ |
HDTV規格 | 0.2126 | 0.7152 | 0.0722 | 高精細テレビ |
Gチャンネル | 0.0000 | 1.0000 | 0.0000 | Gのみ抽出 |
RGB平均以外は、Gが強めでBが弱めって感じか。
なんでこんな感じになってるんだ?
諸説あるが、人間の目は緑を強く感じるらしい。
よって、グレースケールにした際は、Gの成分を強めに残した方が、カラー時の印象に近いようだな。
なるほど。
人間の感覚に合わせてるのね。
で、結局どれを使うの?
OpenCV等のライブラリはSDTV規格を使用しているらしい。
よって、我々もそれに則ってSDTV規格のグレースケールで進めるつもりだ。
まぁ、よく使われてるものに合わせておいた方が良いよね。
係数が違うだけだから、もし変える必要があってもそれほど困らなそうだけど。
まとめ
まとめだよ。
- 画像処理の実験をする際はグレースケールにしておくのが一般的。
- カラー(RGB)の際は各チャンネルに対して同じ処理をすれば良い。
- グレースケールにも種類がある。
- SDTV規格が一般的らしい。
バックナンバーはこちら。
コメント