关闭

边缘检测算子的MATLAB代码

标签: matlab图像边缘检测
373人阅读 评论(0) 收藏 举报
分类:

①Roberts 算子(针对彩色三维图像)

(1)用卷积函数conv2 处理的Matlab 程序代码:

a=imread('D:\290', 'bmp');  
b=[0 1;-1 0]/126;c=[1 0;0 -1]/126; %参数126 是实验时为增强图像对比度试验出来的  
d=convn(a,b,'same');d=abs(d); %处理水平方向算子的结果,参数'same'使得得到的图像与原图大小相等。  
e=convn(a,c,'same');e=abs(e); %处理垂直方向算子的结果  
f=max(d,e); %取水平及垂直方向上的大值  
subplot(1,3,1),imshow(d), title(' roberts 水平') 
subplot(1,3,2),imshow(e), title(' roberts 垂直') 
subplot(1,3,3),imshow(f), title(' roberts 综合') 


(2)用edge函数处理的Matlab程序代码:

a = imread('D:\290.bmp'); %读取图像  
a=rgb2gray(a);  
a = imnoise(a, 'salt & pepper',0.005); %对图像加椒盐噪声  
b = edge(a,'roberts',0.02); %以阈值为0.02进行roberts边缘检测  
c = edge(a,'roberts',0.07); %阈值为0.07  
[d,e] = edge(a,'roberts'); %该处可得阈值的默认值e  
subplot(2,2,1),imshow(a),axis on; title('原图')  
subplot(2,2,2),imshow(b) ,axis on; title('roberts阈值=0.02')  
subplot(2,2,3),imshow(c) ,axis on;title('roberts 阈值=0.07')  
subplot(2,2,4),imshow(d) ,axis on; title('默认') 

感觉参数设置的不太对,但是暂时先这样,以后慢慢调。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:2678次
    • 积分:55
    • 等级:
    • 排名:千里之外
    • 原创:2篇
    • 转载:3篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档