ピクセル画像

1枚の画像データは、pixel-imageクラスで表現される。pixel-imageは、 バイト型データを要素とする2次元配列である。それぞれのデータの内容は、 アプリケーションに依存している。一般的にピクセルの明るさを表現するために 使われるが、エッジ輝度や微分方向やカラー輝度やbarグラフのようなものにも用いることができる。




pixel-image [クラス]


  :super   array 

:slots xpicture display-lut histogram
brightness-distribution0
brightness-distribution1
brightness-covariance


pixel-imageは、xwindowへの表示機能を持つ2次元の行列である。 pixelの変換は、display-lutによって実現され、 その結果の画像はxpictureに蓄積される。 主な軸は縦方向にとる。(x,y)imgのピクセルは (aref img y x)でアクセスすることができる。


:width [メソッド]

ピクセル画像の横サイズを返す。


:height [メソッド]
ピクセル画像の縦サイズを返す。


:size [メソッド]
配列の大きさを返す。


:transpose &optional (result (instance (class self) :init dim0 dim1)) [メソッド]
x軸とy軸を交換する。


:map-picture lut &optional (result (send self :duplicate)) [メソッド]
この画像をlutで変換し、その画像データをresultに蓄積する。


:map fn &optional (result (send self :duplicate)) [メソッド]
この画像のすべてのピクセルにfnを適用して、 resultのピクセルに置く。


:brightest-pixel [メソッド]
この画像の一番明るいピクセル値を見つける。


:darkest-pixel [メソッド]
この画像の一番暗いピクセル値を見つける。


:average-pixel [メソッド]
この画像のすべてのピクセルの平均輝度を計算する。


:halve &optional simage [メソッド]
半分の大きさの画像に縮小したピクセル画像を返す。


:subimage x y subwidth subheight [メソッド]
この画像に(x,y)を左上角とし、幅がsubwidthで高さがsubheight である四角形を切り出す。 その画像の原点は(x,y)に置かれる。 :subimageは、この四角形で囲まれた画像を表現するピクセル画像を作る。


:xpicture &optional lut [メソッド]
この画像をlutを用いて変換し、xpictureに設定する。


:display-lut &optional newlut [メソッド]
display-lutにルックアップテーブルnewlutを設定する。 その後、このルックアップテーブルを用いて画像を変換し、 xpictureに設定する。


:display (xwin geometry:*viewsurface*) [メソッド]
:putimageを用いてxwinで指定されるXwindowにこの画像を 表示する。 それぞれのピクセル値はXのカラーマップを参照する。 希望する表現を得るためには、このピクセル画像を固有のLUTで 変換すべきである。


:duplicate [メソッド]
この画像オブジェクトと同じ幅と高さを持つ同じクラスの インスタンスを作る。ピクセルデータはコピーされない。


:copy-from src [メソッド]
srcで指定される他の画像からピクセルデータをコピーする。 srcとこの画像は同一の次元でなければならない。


:hex &optional (x 0) (y 0) (w 16) (h 16) (strm t) [メソッド]
四角領域で示されるピクセルデータを16進数フォーマットで表示する。


:hex1 &optional (x 0) (y 0) (w 64) (h 16) (strm t) [メソッド]
四角領域で示されるピクセルデータを16進数フォーマットで表示する。


:prin1 strm &rest msg [メソッド]
このピクセル画像を名前と次元とともに表示する。


:init w h &optional imgvec [メソッド]
w、高さhを持つピクセル画像を初期化する。


:amplify rate &optional (result (send self :duplicate) [メソッド]
rateをそれぞれのピクセル値に掛ける。


:compress-gray-scale levels &optional result &aux pict2 [メソッド]
この画像のピクセル値を0からlevelsまでの範囲に変換をし、 その変換された画像を返す。


:lut lut1 &optional (result (send self :duplicate)) [メソッド]
ルックアップテーブルlut1を用いてこの画像を変換し、 その変換された画像を返す。


:lut2 lut1 lut2 &optional (result (send self :duplicate)) [メソッド]
lut1lut2を連結したルックアップテーブルを用いてこの画像を 変換し、その変換された画像を返す。


:histogram [メソッド]
この画像のそれぞれのピクセル値の発生回数を数え、そのヒストグラム を整数ベクトル表現で返す。


:brightness-distribution [メソッド]
明るさの分散を返す。


:optimum-threshold [メソッド]
この画像の明るさの分散値が最大となっている階調を返す。


:project-x [メソッド]
同じx座標のピクセル値をすべて加算し、これらの値のベクトルを返す。


:project-y [メソッド]
同じy座標のピクセル値をすべて加算し、これらの値のベクトルを返す。


:digitize threshold &optional (val0 0) (val1 255) result [メソッド]
thresholdを用いてこの画像をval0val1の2値画像に 変換する。


:and img2 [メソッド]
この画像とimg2のビット論理積をとり、処理した画像を返す。


:plot min max &optional color viewsurface [メソッド]
minmaxの間の値を持つピクセルをすべてcolor(gc) でviewsurfaceにプロットする。



\begin{emtabbing}
{\bf :edge1}
\it\&optional \= (method 1) \\lq  [メソッド]\ ...
...th-threshold*)\\
\> (win geometry:*viewsurface*) (edgeimg1)
\rm
\end{emtabbing}

この画像のエッジを抽出し、Xwindow上にエッジ画像を表示する。


k-okada 2013-05-21