【图像处理】图像锐化的工作原理和算法实现(matlab实现)

实验目的

1、掌握一阶锐化算法的工作原理和算法实现。
2、掌握二阶锐化算法的工作原理和算法实现。

实验内容

测试图片

链接: https://pan.baidu.com/s/1-7zn44maHCCI7w9qaZjvxg

提取码: dakh

实现拉普拉斯锐化

实验代码

im = imread('.\im\Grayblur6.png');
imshow(im); title('原始图像');
im0 = im;
im = double(im);

H = [0 -1 0;-1 4 -1;0 -1 0];
im1 = filter2(H,im);

im2 = uint8(im1+im);
figure; imshow(im2); title('Laplacian锐化叠加后图像');

im_L0 = uint8(im1);
figure; imshow(im_L0); title('Laplacian锐化');
im=imread('im\Grayblur6.png')
imshow(im);
title('原始图像');
im0=im;
im=double(im);

H=[0 -1 0;-1 4 -1;0 -1 0];
im1=filter2(H,im);

im2=uint8(im1+im);
figure,imshow(im2);
title('Laplacian锐化叠加后的图像');

im_L0=uint8(im1);
figure,imshow(im_L0);
title('Laplacian锐化');

maxV=max(max(im1));
minV=min(min(im1));
delta=0;
if(minV<0)
    delta=abs(minV);
end

实验结果

实现Sobel微分算子的代码

实验代码

im = imread('.\im\Grayblur6.png');
imshow(im); title('原始图像');
im = double(im);

H = [-1 0 1;-2 0 2;-1 0 1];
Dy = filter2(H,im);

H = [-1 -2 -1;0 0 0;1 2 1];
Dx = filter2(H,im);

im_2 = sqrt(Dx.^2+Dy.^2);
im_2 = uint8(im_2);
figure; imshow(im_2); title('Sobel锐化图像'); %显示滤波后的图像

im_3 = uint8(im+sqrt(Dx.^2+Dy.^2)*0.1);
figure; imshow(im_3); title('Sobel锐化叠加图像'); %显示滤波后的图像

实验结果

实现交叉微分算法(Roberts算法)

实验步骤

读入图像到矩阵F
得到F的行列数与颜色通道数:m,n,c
如果颜色通道数c>1,则将彩色图像转化为灰度图rgb2gray
初始化输出矩阵G
对于F的每一行i(1到m-1)
     对于F的每一列j(1到n-1) 
     根据以下公式,由F(i,j)F(i+1,j)F(i,j+1)F(i+1,j+1)计算G(i,j)
显示Roberts锐化图像
显示Roberts锐化并叠加原图的结果图像

实验代码

im = imread('.\im\Grayblur6.png');
imshow(im); title('原始图像');
[row,col,k] = size(im);
if(k>1) 
    im = rgb2gray(im);
end
im = double(im);
G = zeros(row,col);
for i=2:row-1
    for j=2:col-1
        G(i,j) = abs(im(i+1,j+1)-im(i,j)) + abs(im(i+1,j)-im(i,j+1));
    end
end
g = uint8(G);
figure; imshow(g); title('Roberts锐化并叠加原图的结果图像')

实验结果

学如逆水行舟,不进则退

猜你喜欢

转载自blog.csdn.net/weixin_42429718/article/details/106902377