数字图像处理 拉普拉斯(Laplace)变换 边缘检测算子(二阶导 sobel)变换 锐化(反锐化模板锐化) 算法实现及效果

程序代码:

clear
%拉普拉斯变换
A = imread("Moon.jpg");
Laplace1(A);

%Soble变换
B = imread("lens.jpg");
Soble1(B);

%锐化
C = imread("rabbit.jpg");
C = C(:,:,1);
%st = 3,k = 1.5
Sharpen1(C,3,1.5);
%st = 3,k = 3
Sharpen1(C,3,3);
%st = 5,k = 1.5
Sharpen1(C,5,1.5);
%st = 5,k = 3
Sharpen1(C,5,3);

一、Laplace变换

(1)Figure

在这里插入图片描述

(2)Code

function [g_1,g_2] = Laplace1(A)
%拉普拉斯变换
%预先留出输出图像
A_double = double(A);
g_1 = A;
g_2 = A;
[ra,ca] = size(A);
%中心为负,最后应相减
%h1是x轴和y轴方向的二阶导数
%h2是四个方向的二阶导数
h1 = [0,1,0;1,-4,1;0,1,0];
h2 = [1,1,1;1,-8,1;1,1,1];
st = 3;
for A_i = (st+1)/2:ra-(st+1)/2+1
    for A_j = (st+1)/2:ca-(st+1)/2+1
        Hxy_1 = A_double(A_i-(st-1)/2:A_i+(st-1)/2,A_j-(st-1)/2:A_j+(st-1)/2).*h1;
        Hxy_2 = A_double(A_i-(st-1)/2:A_i+(st-1)/2,A_j-(st-1)/2:A_j+(st-1)/2).*h2;
        g_1(A_i,A_j) = sum(Hxy_1(:));g_2(A_i,A_j) = sum(Hxy_2(:));
    end
end
%对于超出0-255范围的值应加以归0或归255
g_1 = uint8(A-g_1);
g_1(g_1<0) = 0;g_1(g_1>255) = 255;
g_2 = uint8(A-g_2);
g_2(g_2<0) = 0;g_2(g_2>255) = 255;
figure,
subplot(131),imshow(A),title("原图");
subplot(132),imshow(g_1),title("模板一锐化");
subplot(133),imshow(g_2),title("模板二锐化");
end

二、Soble变换

(1)Figure

在这里插入图片描述

(2)Coded

function [g_1,g_x,g_y] = Soble1(A)
%soble边缘检测
%单层图像的检测
%g_1是xy方向完整的检测
%g_x\g_y分别是x和y方向的检测
A_double = double(A);
g_x = A_double;
g_y = A_double;
[ra,ca] = size(A_double);
hx = [-1,-2,-1;0,0,0;1,2,1];
hy = [-1,0,1;-2,0,2;-1,0,1];

st = 3;
for A_i = (st+1)/2:ra-(st+1)/2+1
    for A_j = (st+1)/2:ca-(st+1)/2+1
        Hxy_x = A_double(A_i-(st-1)/2:A_i+(st-1)/2,A_j-(st-1)/2:A_j+(st-1)/2).*hx;
        Hxy_y = A_double(A_i-(st-1)/2:A_i+(st-1)/2,A_j-(st-1)/2:A_j+(st-1)/2).*hy;  
        g_x(A_i,A_j) = sum(Hxy_x(:));
        g_y(A_i,A_j) = sum(Hxy_y(:));
    end
end
g_x = uint8(g_x);
g_y = uint8(g_y);
g_1 = g_x+g_y;
g_1(g_1<0) = 0;g_1(g_1>255) = 255;
figure,
subplot(221),imshow(A),title("原图");
subplot(222),imshow(g_x),title("x方向");
subplot(223),imshow(g_y),title("y方向");
subplot(224),imshow(g_1),title("soble变换后图片");
end

三、锐化

(1)Figure

%st = 3,k = 1.5

在这里插入图片描述

%st = 3,k = 3

在这里插入图片描述

%st = 5,k = 1.5

在这里插入图片描述

%st = 5,k = 3

在这里插入图片描述

(2)Code

function [A_Out,Mod,A_Med] = Sharpen1(A,st,k)
%锐化
%步骤:先将原图钝化,原图-钝化图片=反锐化模板,原图+k*反锐化模板 = 输出图像
%st可选,k是锐化系数
A_Med = AverageFilter1(A,st);
Mod = A-A_Med;
A_Out = A+k.*Mod;
figure,subplot(221),imshow(A),title('原图');
subplot(222),imshow(A_Out),title("锐化图像st = "+st+" K = "+k);
subplot(223),imshow(A_Med),title("均值滤波后图片st = "+st+" K = "+k);
subplot(224),imshow(Mod),title("反锐化模板st = "+st+" K = "+k);
end



### 
  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Free God

随缘

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值