1

はじめに

コンピューターにとって、デジタル グレースケール イメージは、最大数 (整数の精度に依存する) が黒を表し、0 が白を表す整数行列として表されます。

ここに画像の説明を入力

これは、整数の場合、および浮動小数点数にキャストされた場合の画像の表現です。

ここに画像の説明を入力

int
array([[6, 1, 1, 0, 6, 4],
       [0, 1, 2, 7, 5, 2],
       [0, 4, 6, 6, 3, 4],
       [1, 1, 2, 6, 7, 0],
       [3, 6, 6, 5, 5, 3]])

float
array([[ 6.,  1.,  1.,  0.,  6.,  4.],
       [ 0.,  1.,  2.,  7.,  5.,  2.],
       [ 0.,  4.,  6.,  6.,  3.,  4.],
       [ 1.,  1.,  2.,  6.,  7.,  0.],
       [ 3.,  6.,  6.,  5.,  5.,  3.]])

質問

私はsvdを使用してきましたが、その結果、行列表現がフロートで構成される画像を取得しました。imshowそれはmatplotlibからうまく印刷されます。

グレースケール画像の値が浮動小数点数の場合、「明るさから値へ」のマッピングはどのように機能しますか?

4

2 に答える 2

1

matplotlibcolormap (doc)クラス (およびそのサブクラス) とNormalize (doc)クラス (およびそのサブクラス)を使用して、値を色にマップします。基本的な考え方は、normalize与えられた入力を の範囲の float に変換することです[0, 1]。これを行うには、さまざまな線形および非線形の方法があります (ガンマ補正の実装など)。次に、クラスは範囲->値colormapのスカラーを変換し、必要なマッピングによってそれを行うことができます(ギャラリー)[0, 1]rgb

于 2013-05-03T22:49:41.700 に答える
1

http://www.weizmann.ac.il/matlab/toolbox/images/imshow.htmlによると

imshow(I,n) は、n 段階のグレー レベルをもつ強度イメージ I を表示します。n を省略した場合、 imshow は 24 ビット ディスプレイでは 256 のグレー レベルを使用し、他のシステムでは 64 のグレー レベルを使用します。

imshow(I,[low high]) は I をグレースケール強度イメージとして表示し、I のデータ範囲を指定します。値 low (および low より小さい値) は黒で表示され、値 high (および high より大きい値) は黒で表示されます。白で表示され、その間の値は灰色の中間の色合いで表示されます。imshow は既定のグレー レベル数を使用します。[low high] に空行列 ([]) を使用する場合、imshow は [min(I(:)) max(I(:))] を使用します。I の最小値は黒で表示され、最大値は白で表示されます。

imshow(BW) は、バイナリ イメージの BW を表示します。値 0 は黒で表示され、値 1 は白で表示されます。

したがって、表示する画像をどのように解釈するかは、 imshow() の呼び出し方法によって異なります。[low,high] に空の行列を指定して呼び出すと、配列内の最大値と最小値が何であれ使用されます。

于 2013-05-03T09:25:33.337 に答える