簡単な画像処理(0)

2011 Sept 19  by Masahiro MIZUTANI

読み出しディレクトリの設定

SetDirectory[NotebookDirectory[]]

"/Users/umekoo/Documents/wavelet/program/"

画像の読み込み

endeavour=Import["data/Endeavour.jpg"]

画像情報の構造

ヘッダをListに付け替えて画層情報をみる

Head[endeavour]

画像オブジェクトのHeadをListに変換する

endeavour /. Image->List

先頭に画像データが格納されていて、そのColorSpace形式はRGBであることがわかる
画像は142行100列のピクセルからなり、各ピクセルが3つのRGBデータ(R,G,B値は0以上1以下)である。

画像のpixelデータをImageData[ ]で取得する

画像の1行1列のRGBピクセルデータを表示する

ImageData[endeavour][[1,1]]

適切なピクセル行列データをImage[ ] に渡すとが、相当する画像が表示される

Image[ImageData[endeavour]]

カラー画像をモノクロームに変換する

ColorConvert[ ]関数にオプション “Grayscale” 指定してモノクローム画像に変換する

monoendeavour=ColorConvert[endeavour,"Grayscale"]

ヘッダをListに付け替えて画層情報をみる

monoendeavour /. Image->List

先頭に画像データが格納されていて、そのColorSpace形式はGrayscaleであることがわかる
画像は142行100列のピクセルからなり、各ピクセルが1つのGrayscaleデータ(0以上1以下)である。

画像のpixelデータをImageData[ ]で取得する

画像の1行1列のGrayscaleピクセルデータを表示する

ImageData[monoendeavour][[1,1]]

画像の1行(100個の要素からなるリスト)のGrayscaleピクセルデータを表示する

ImageData[monoendeavour][[1]]

適切なピクセル行列データをImage[ ] に渡すとが、相当する画像が表示される

Image[ImageData[monoendeavour]]

モノクロ画像の２値化

リストデータ、ここでは2次元データ（142個のリスト要素でその各要素は100個のGrayscale値からなるリスト）であるデータに、純関数 If[#≥0.5,1,0] & （各要素値が 閾値0.5以上なら1、未満なら 0 を与えて２値化する関数 ）
を Map[ ] を使ってImageData[monoendeavour]のレベル {2} データ（つまり、リスト要素における要素、つまり各Grayscaleデータ） 全体に適用する

Image[Map[If[#≥0.5,1,0]&,ImageData[monoendeavour],{2}]]