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(第一张原图,第二张灰色,第三张锐化图像)

感谢您的帮助。

4

1 回答 1

5

尝试

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

添加应该缩放灰度图像[]imshow你应该看到你瞄准的灰色结果。

编辑 :

可能导致问题的另一件事是图像的数据类型。如果您的图像存储为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 图像执行操作 - 请记住,不会表示负值并且会裁剪大值。您的操作应该能够处理这些情况。

于 2012-12-16T10:09:23.677 回答