Matlab数字图像处理--分别采用 5×5,9×9,15×15 和 25×25 大小的拉普拉斯算子对图像进行锐化滤波,并完成图像的锐化增强

题目

 代码

初始化,B为灰度图(B=rgb2gary(img))。i表示生成尺寸为i*i的拉普拉斯算子。

function init(B,i)
  lap=genlaplacian(i);
  img_lap=imfilter(B,lap,'replicate');
  fr=fspecial('log',[i,i],0.5);
  ruihua=enlarge(B,fr,i);
  show(B,img_lap,ruihua)
end

 生成拉普拉斯算子

function sum=genlaplacian(n)
A=ones(n);
a=fix(n/2)+1;
b=fix(n/2)+1;
A(a,b)=1-n*n;
sum=A;
end

锐化处理

function img_result = enlarge(img, w, i)
    moban_size = i;
    [M,N] = size(img);
    img_lap = zeros(M, N);
     expand_img = double(wextend('2D','zpd', img, floor(i/2)));
     for i=1:M
        for j=1:N
            ave = sum( sum( expand_img(i:i+moban_size-1,j:j+moban_size-1) .* w)); 
            img_lap(i,j) = ave;
        end
     end
    img_lap = uint8(img_lap);
    img_result = img - img_lap;
end

显示图像

function show(B,img_lap,ruihua)
subplot(1,3,1),imshow(B),title('B')
subplot(1,3,2),imshow(img_lap),title('拉普拉斯')
subplot(1,3,3),imshow(ruihua),title('锐化')
end

例子:采用5x5的拉普拉斯算子对图像进行锐化滤波,并完成锐化增强

猜你喜欢

转载自blog.csdn.net/white_night_SZTU/article/details/129767186