边缘检测(matlab)

自从搞了简单的文字识别之后,就在考虑机器视觉还能为我的研究生盆子上镶点什么金边,简单搜了一下文献,对于刀具磨损的视觉识别还是不少的,但是要么是拆下来拍照检测,要么是固定在某个位置检测,机器视觉还没有真正实现在机检测,又去某国内学术网站搜了一下,发现这个东西够一篇硕士毕业论文了,那还是简单搞搞吧。

wear tool应该与new tool进行轮廓对比,所以就需要得到两种刀具的轮廓。下面是我的new tool和wear tool:

           

 边缘检测就是算法,直接上代码了。我对各个滤波方法和边缘检测算子进行了对比,代码和对比结果如下:

%比较滤波效果
A = imread('D:\Users\weixi\MATLAB\Projects\cv_edge\new.jpg');%读入彩色图片
B=rgb2gray(A);%把彩色图片转化成灰度图片,256级
B_gaosi=imnoise(B,'gaussian');%加入高斯噪声
h=fspecial('average',6);%fspecial函数用于预定义滤波器

A_junzhi=uint8(round(filter2(h,B)));%进行均值滤波
A_zhongzhi=medfilt2(B,[8,8]);%进行中值滤波
A_weina=wiener2(B,[8,8]);%进行维纳滤波

i_max=double(max(max(B))); %获取亮度最大值

i_min=double(min(min(B))); %获取亮度最小值

thresh=round(i_max-((i_max-i_min)/3)); %计算灰度图像转化成二值图像的门限thresh

B_2=(B>=thresh); %B_2为二值图像

A_junzhi_2=uint8(round(filter2(h,B_2)));%进行均值滤波
A_zhongzhi_2=medfilt2(B_2,[3,3]);%进行中值滤波
A_weina_2=wiener2(B_2,[3,3]);%进行维纳滤波

figure(1);
subplot(3,3,1);imshow(B);title('原灰度图像','color','b');
subplot(3,3,2);imshow(B_2);title('二值图像','color','b');
subplot(3,3,3);imshow(B_gaosi);title('加入高斯噪声后的图像','color','b');
subplot(3,3,4);imshow(A_junzhi);title('均值滤波后的图像','color','b');
subplot(3,3,5);imsh
  • 6
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值