数字图像处理 边缘检测

一.实验题目

边缘检测:分别用Roberts、 Prewitt 和 Sobel算子对下图进行边缘检测,并比较三种检测结果的异同。


二.实验分析

边缘检测的检测器主要有Sobel,Prewitt,Roberts,Canny等,边缘检测的
基本意图是使用下两个基本准则之一在图像中找到亮度快速变化的地方:
①找到亮度的一阶导数在幅度上比指定的阈值大的地方
②找到亮度的二阶导数有零交叉的地方。
由于求导比较的麻烦,因此,一般用掩膜来数字化地近似一阶导数Gx和Gy。
   本实验完成方法很多,可以通过以下途径解决:①直接用edge函数
②用imfilter 模拟③直接进行模拟 。值得注意的是由于Roberts掩膜是2*2的,
一般选取3*3模板的右下角四个元素进行处理。

三.实验程序

% 代码一 直接通过edge函数检测
clear;clc;figure;
I=imread('images_chapter_10\Fig10.10(a).jpg');
subplot(2,2,1);imshow(I);title('orignal');
I1=edge(I,'sobel');
subplot(2,2,2);imshow(I1);title('sobel');
I2=edge(I,'prewitt');
subplot(2,2,3);imshow(I2);title('prewitt');
I3=edge(I,'roberts');
subplot(2,2,4);imshow(I3);title('roberts');
% 代码二 直接模拟
clear;clc;figure;
I=imread('images_chapter_10\Fig10.10(a).jpg');
subplot(2,2,1);imshow(I);title('orignal');
s1=[-1 -2 -1; 0 0 0; 1 2 1];
s2=[-1 0 1; -2 0 2; -1 0 1 ];
p1=[-1 -1 -1; 0 0 0 ;1 1 1];
p2=[-1 0 1;-1 0 1; -1 0 1 ];
r1=[-1 0 ;0 1];r2=[0 -1; 1 0];
[r,c]=size(I);I=double(I);
for u=1:r-2
    for v=1:c-2
        gx=sum(sum(I(u:u+2,v:v+2).*s1));
        gy=sum(sum(I(u:u+2,v:v+2).*s2));
        Is(u,v)=sqrt(gx*gx+gy*gy);
        gx=sum(sum(I(u:u+2,v:v+2).*p1));
        gy=sum(sum(I(u:u+2,v:v+2).*p2));
        Ip(u,v)=sqrt(gx*gx+gy*gy);
        gx=sum(sum(I(u+1:u+2,v+1:v+2).*r1));
        gy=sum(sum(I(u+1:u+2,v+1:v+2).*r2));
        Ir(u,v)=sqrt(gx*gx+gy*gy);
    end
end

Is1=Is;Ip1=Ip;Ir1=Ir;
scale=0.4;
Is2=Is1>max(max(Is1))*scale;
Ip2=Ip1>max(max(Ip1))*scale;
Ir2=Ir1>max(max(Ir1))*scale;
subplot(2,2,2);imshow(Is2,[]);title('sobel');
subplot(2,2,3);imshow(Ip2,[]);title('prewitt');
subplot(2,2,4);imshow(Ir2,[]);title('roberts');
       
程序说明:将程序二的scale赋值为0.2,效果与程序一相同

四.实验结果





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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值