3

私はdoubleの画像を持っていますが、unsigned int 16ビットで表示したいので、次のようにします。

I = im2uint16(I);
figure;imshow(I);title('Image being saved')

これはこれを示しています(通常のノイズを伴う):

次に、この画像を.pngでビット深度16ビットで書き込みます。そうです:

imwrite(I,'image.png','BitDepth',16);

そして今、Photoshop CS5、またはWindows Photo Viwerで開いた画像は次のようになります:(ノイズは魔法のように消えます):

誰かがこの奇妙な行動を説明できますか?

このエラーを再現する方法

C:\test\ここで使用した画像をダウンロードしてください:

次に、次のスクリプトを実行します。

I = im2double(imread('C:\test\test_matlab.tif'));

% Add gaussian noise with variance = 0.0012
I = imnoise(I,'gaussian',0,0.0012);
figure,imshow(I);

imwrite(I,'C:\test\withNoise.tif');

そして、MATLABの図と保存されたファイルを比較します

4

2 に答える 2

2

再現するのに十分なデータを提供しなかったため、言うのは難しいですが、問題は表示の問題に関連していると思います。画像は物理的な表示ウィンドウよりも大きいため、表示するにはダウンサンプリングを適用する必要があります。そのリサンプリングがどのように行われるかに応じて、結果は-このシナリオでは-視覚的に非常に異なる可能性があります。matlabがその表示に最近傍のリサンプリングを適用するとします。これは、画像が非常にノイズの多いように見える理由を説明します。代わりに、別の画像ビューアが双一次内挿または同様のものを適用する場合、それは実質的にホワイトノイズを除去するローカル平均になります。

これをテストするには、小さな画像で同じことを試してください。または、見た目がきれいな画像をズームして、実際のサイズで表示してみてください(100%:1つの画像ピクセル= 1つの表示ピクセル)

更新:こちらもご覧ください

于 2013-01-30T13:20:49.177 に答える
2

これが私がしたことです:

%# read the image (why is it so big?)
I = im2double(imread('https://p7o1zg.bay.livefilestore.com/y1pcQVsmssygbS4BLW24_X1E09BKt_Im-2yAxXBqWesC47gpv5bdFZf962T4it1roSaJkz5ChLBS0cxzQe6JfjDNrF7x-Cc12x8/test_matlab.tif?psid=1'));

%# add noise
I = imnoise(I,'gaussian',0,0.0012);

%# write tiff
imwrite(I,'withNoise.tif');

%# read the tiff again
I2 = imread('withNoise.tif');

class(I2) %# -- oopsie, it's uint8 now! 

%# convert to uint16 as in original post
I = im2uint16(I);

%# writ again
imwrite(I,'withNoise16.png','bitDepth',16);

%# read it
I2 = imread('withNoise16.png');

%# compare
all(all(I==I2)) %# everything is equal

したがって、画像の書き込み/読み取りでファンキーなことは発生しません(ただし、ビット変換で一部の情報が失われます。元の画像はダイナミックレンジの約3分の1しか占めないため、ストレッチした場合よりも多くの情報が失われます。変換前のコントラスト)。

ただし、画像は2kx2kです。画像の右上隅(500 x 500 pix)だけを見ると、Matlabや他のグラフィックプログラムでも同じように表示されます。したがって、Matlabが他のプログラムとは異なる方法で行うのは、画像をリサンプリングすることの問題だと思います。@leonbloyが示唆しているように、Matlabは最近傍のリサンプリングを実行している可能性がありますが、他のプログラムは補間を実行します。

于 2013-01-30T13:22:57.530 に答える