0

私は画像処理が初めてです。

現在、ラプラシアン先鋭化法について勉強しています。しかし、私には理解できなかったことがあります。あなたが私を助けてくれることを願っています。

ご存知のように、元の画像にラプラシアン フィルター処理された画像を追加すると、シャープな画像が生成されます。

しかし、ラプラシアン フィルター処理された画像を取得した後、私の参考書は、このラプラシアン フィルター処理された画像を表示目的でスケーリングし、灰色がかった画像を取得します。そして、この灰色がかったものを元の画像に追加すると、最終的にシャープな画像が得られます.

私の問題は、この灰色がかった画像をどのように取得できるかです。

これが私のコードです:

image1=imread('hw1image1.tif');
m=[1 1 1; 1 -8 1; 1 1 1];
f1=imfilter(image1,m);
r=image1-f1;
subplot(1,3,1);
imshow(image1);
subplot(1,3,2);
imshow(f1);
subplot(1,3,3);
imshow(r);

f1 はラプラシアン フィルター処理されたイメージです。しかし、ご存知のように灰色ではありません。この灰色がかったものはどうやって手に入れることができますか?

編集:

http://i.imgur.com/9qqXX.jpg (1枚目は原画、2枚目はグレーっぽい画像、3枚目はシャープにした画像)

ご協力ありがとうございました。

4

1 に答える 1

5

試す

imshow( f1, [] ); title('Laplacian filtered image');

追加する[]imshow、グレーレベルの画像がスケーリングされ、目的の灰色がかった結果が表示されるはずです。

編集 :

問題を引き起こす可能性のあるもう 1 つのことは、画像のデータ型です。画像がタイプとして保存されている場合、uint8負の値はありません(unsignedタイプのため)。

試す:

img = im2double( image1 ); % convert image from uint to double
f1 = imfilter( img, m );
figure; imshow( f1 ); title( 'Laplacian filtered image' );
r = img - f1; % perform the image editing with double precision variables and NOT with unsigned ints.
r = im2uint( r ); % if you have to -cast only the final result to unsigned ints.

一般的な原則として、常に浮動小数点画像に対して画像操作を実行し、unsigned int 画像に対して操作を行うことは控えてください。

選択の余地がなく (ハードウェア/メモリの制約)、unsigned int 画像を使用して操作を実行する必要がある場合は、負の値は表現されず、大きな値はトリミングされることに注意してください。あなたの操作はこれらのケースを処理できるはずです。

于 2012-12-16T10:09:23.677 に答える