空间域锐化滤波(拉普拉斯算子)

自定义一个空间域锐化滤波函数,要求该滤波器采用拉普拉斯算子作为滤波器模板并将输入图像(1.tif)进行空间域锐化处理函数模板为img2 = mySpatialLaplaceFilter(img1);其中img1为输入图像img2为滤波处理后的输出图像;并采用下述拉普拉斯算子作为滤波模板

空间域锐化滤波(拉普拉斯算子)_第1张图片

% 空间域锐化处理函数
function [ img2  ] = mySpatialLaplaceFilter( img1 )
[r,c] = size(img1);
img1 = double(img1);
% 拉普拉斯算子作为滤波器模板
template = [1,1,1;1,-8,1;1,1,1];
[a,b] = size(template);
% 边界填充
imgT = zeros(r+a-1,c+b-1);
imgT(a/2+0.5:a/2-0.5+r,b/2+0.5:b/2-0.5+c) = img1(:,:);
% 模板点乘原图的每个像素点的邻域再累加
img2 = zeros(r+a-1,c+b-1);
for i=a/2+0.5:(a/2-0.5+r)
    for j=b/2+0.5:(b/2-0.5+c)
           img2(i,j) = sum(sum(imgT(i-a/2+0.5:i+a/2-0.5,j-b/2+0.5:j+b/2-0.5).*template));
    end
end
% 去除边缘
img2 = img2(a/2+0.5:a/2-0.5+r,b/2+0.5:b/2-0.5+c);
% 锐化处理
img2 = img1 - img2;
img2 = uint8(img2);
end

% 主函数 
% 输入图像
img1 = imread('1.tif');
figure();
subplot(121);
imshow(img1);
title('原图');
img2 = mySpatialLaplaceFilter(img1);
subplot(122);
imshow(img2);
title('空间域锐化后图像');
结果

空间域锐化滤波(拉普拉斯算子)_第2张图片

你可能感兴趣的:(Matlab)