这里使用matlab实现laplacian图像锐化的一个例子:
I_g = imread('3.tif');
imtool(I_g)
% 使用laplacian进行图像锐化,该过程会产生负值,因此需要使用double类型
w = fspecial('laplacian',0);
I_g_d = double(I_g);
g = imfilter(I_g_d,w,'replicate');
I_g_g = I_g_d-g;
imtool(I_g_g,[]);
原图像:
使用laplacian锐化图像的过程中,图像灰度级发生了变化。后续为了编程的方便,我们需要将数据恢复到0-255之间,这里不能使用mapminmax(参考:matlab函数mapminmax不适用与于图像处理中的灰度级的扩展与压缩)
方法1:
y = 255*(I_g_g-min(min(I_g_g)))/(max(max(I_g_g))-min(min(I_g_g)));
y=uint8(y);
imtool(y,[])
输出图像:
方法2:
y1=mat2gray(I_g_g); % 将数据压缩到0-1,数据类型仍为double
y1 = im2uint8(y1); % 将数据恢复到0-255,数据类型变为uint8
imtool(y1);
方法3:使用im2double与im2uint8
I_g = imread('3.tif');
imtool(I_g)
% 使用laplacian进行图像锐化,该过程会产生负值,因此需要使用double类型
w = fspecial('laplacian',0);
I_g_d = im2double(I_g);
g = imfilter(I_g_d,w,'replicate');
I_g_g = I_g_d-g;
imtool(I_g_g,[]);y1 = im2uint8(I_g_g);
imtool(y1);