程序代码:
clear
A = imread("Moon.jpg");
Laplace1(A);
B = imread("lens.jpg");
Soble1(B);
C = imread("rabbit.jpg");
C = C(:,:,1);
Sharpen1(C,3,1.5);
Sharpen1(C,3,3);
Sharpen1(C,5,1.5);
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 = [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
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)
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
(2)Code
function [A_Out,Mod,A_Med] = Sharpen1(A,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
###