【調査してみた】カラー写真はいったいどのような数値情報を持っているのか、実際の写真で確認してみた

Image Processing

こんにちは、てつをです。今日は画像について色々と確認していこうと思います。画像処理や画像認識、機械学習など難しそうな話に入る前に、そもそも今から取り扱おうとしている画像とは一体どのような情報を持ったデータなのか。まずは先日美味しくいただいた神楽坂にあるラムダックというお店のラム肉の写真を見ていきたいと思います。

ちなみに、ラムダックはとてもおすすめのお店です。友人との食事やデート、接待や忘年会など幅広く利用できます。
ラムダックの情報はこちらを参照ください。

では、早速画像を見ていきましょう。こちらが先日食べたラム肉になります。

この画像を用いて今回は画像がどのような情報を保持し、どのような構造になっているのかを確認していこうと思います。

ラム肉の写真を分解してみる

上のラム肉の写真はどのような情報を保持しているのでしょうか。結論からお伝えすると、一般的に画像はRGBという赤・緑・青の三元色を重ねてできています。では、実際に上のラム肉の画像を3原色に分解してみます。今回は画像をnumpyで読み込み、処理を進めました。コードの参考サイトはこちらです。

このように、画像を3原色に分解することができました。ここで、画像の構造を少し確認したいと思います。カラー画像は3原色の画像を重ね合わせて表現していることはわかりました。では続いて、例えばこの赤い画像を拡大してみようと思います。すると、1つ1つの正方形が並んでいます。この正方形1つ1つをピクセル(pixel)と呼び、各ピクセルは輝度と呼ばれる光の明るさを表した値を持つ。輝度は0〜255の符号なし整数の8bitで表現することが一般的。このピクセルが縦横にどれくらい並んでいるかを表すのがよく耳にする画素になります。

ラム肉の写真を白黒写真に変換してみる

ラム肉の写真はRGBの3枚の写真を重ね合わせてできていることがわかりました。このまま、カラーの画像を用いて機械学習の話に続けても良いのですが、RGBと3つの情報を持っているよりは白黒写真に変更しておいた方が情報量が1/3になるため、話を簡略化するという意味でラム肉の写真を白黒に変換したいと思います。

カラーの画像から輝度を算出する方法は、RGBからYUVという画像の別の表現方法に変換することで輝度を算出することが可能になります。YUVについては、Wikiをご確認ください。RGBから輝度を抽出して白黒写真にしたものがこちらになります。

この白黒画像も、各ピクセルに0~255の範囲のいづれかの値が格納されています。

ラム肉の白黒写真から特徴量を抽出する〜ヒストグラムの作成〜

では最後に、白黒写真から特徴量を抽出する方法を考えたいと思います。今回は、輝度のヒストグラムを作成したいと思います。ヒストグラムは画像の輝度の値をカウントして作成します。以下のグラフが今回の白黒写真から輝度をカウントし作成したヒストグラムです。

このように、ヒストグラムは画像のサイズに依存せず0~255の256次元のベクトルになるため、パラメータの数を大幅に削減することが可能です。また、この輝度を利用することで機械学習とは別の話ですが、例えば画像を2つの領域に分離(二値化)することなども可能になります。Otsu法などが有名なニ値化の方法になります。

今回は画像を分解してみたりヒストグラム作ったりと、画像が持つ情報や構造及び特徴量の抽出について確認しました。

次回からは、早速CNNの第一段階として数字の識別について調査していきたいと思います。

以上