数字图像处理 空间域锐化 MATLAB实验

一、原理_空间域锐化

设图像为 f(x,y) ,
Roberts算子的定义式为:
公式

其对应的模板为:
模板1

Prewitt算子的定义式为:
公式2
其中,
公式3
公式4
其对应的模板为:
模板2

Sobel算子的定义式为:
公式4
其中,
公式6

其对应的模板为:
模板3
Laplacian算子的定义式为:
公式7
其对应的模板为:
模板4

二、步骤

(1)读入原图像lena.bmp并显示;
(2)分别采用Roberts算子、Prewitt算子、Sobel算子计算图像的梯度;
(3)采用Laplacian增强算子对图像进行增强,并显示增强结果;
(4)比较各种锐化算子对图像边缘的增强效果。

三、实验图像

图片

lena.bmp

四、框图

框图

五、代码

%------------------------------------------------------------------------
% File name:           third_2
% Last modified Date:  2021年6月10日20点24分
% Author:              Jasmine
% Descriptions:        空间域锐化
%------------------------------------------------------------------------


%清空工作区
clc,clear,close all;
%读入原图像
lena = imread('D:\_1Course\Digital_image_processing\photo\lena.bmp');
lena=rgb2gray(lena);
%显示原图像
subplot(3,2,1),imshow(lena);title('原图');
[ROW,COL] = size(lena);
lena = double(lena);
new_img = zeros(ROW,COL); %新建画布
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%定义robert算子
roberts_x = [-1,0;0,1];
roberts_y = [0,-1;1,0];
for i = 1:ROW - 1
    for j = 1:COL - 1
        funBox = lena(i:i+1,j:j+1);
        G_x = roberts_x .* funBox;
        G_x = abs(sum(G_x(:)));
        G_y = roberts_y .* funBox;
        G_y = abs(sum(G_y(:)));
        roberts_xy  = G_x * 0.5 + G_y * 0.5;
        new_img(i,j) = roberts_xy;
    end
end
subplot(3,2,3),imshow(new_img/255),title("robert算子的图像");
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 定义laplace算子
laplace = [0,1,0;1,-4,1;0,1,0];
for i = 1:ROW - 2
    for j = 1:COL - 2
        funBox = lena(i:i+2,j:j+2);
        G = laplace .* funBox;
        G = abs(sum(G(:)));
        new_img(i+1,j+1) = G;
    end
end
subplot(3,2,4),imshow(new_img/255),title("laplace算子的图像");
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%定义sobel算子
sobel_x = [-1,0,1;-2,0,2;-1,0,1];
sobel_y = [-1,-2,-1;0,0,0;1,2,1];
for i = 1:ROW - 2
    for j = 1:COL - 2
        funBox = lena(i:i+2,j:j+2);
        G_x = sobel_x .* funBox;
        G_x = abs(sum(G_x(:)));
        G_y = sobel_y .* funBox;
        G_y = abs(sum(G_y(:)));
        sobelxy  = G_x * 0.5 + G_y * 0.5;
        new_img(i+1,j+1) = sobelxy;
    end
end
subplot(3,2,5),imshow(new_img/255),title("sobel算子的图像");
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%定义Prewitt算子
sobel_x = [-1,0,1;-1,0,1;-1,0,1];
sobel_y = [-1,-1,-1;0,0,0;1,1,1];
for i = 1:ROW - 2
    for j = 1:COL - 2
        funBox = lena(i:i+2,j:j+2);
        G_x = sobel_x .* funBox;
        G_x = abs(sum(G_x(:)));
        G_y = sobel_y .* funBox;
        G_y = abs(sum(G_y(:)));
        sobelxy  = G_x * 0.5 + G_y * 0.5;
        new_img(i+1,j+1) = sobelxy;
    end
end
subplot(3,2,6),imshow(new_img/255),title("Prewitt算子的图像");

六、运行结果

空间域锐化运行结果

空间域锐化运行结果
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Jasmine-Lily

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值