图像分割技术之图像边缘检测

刚刚接触到数字图像处理,跟着导师做相关项目,现在只是对图像分割技术有所了解,如果写的不对的地方还请大家指出,谢谢。

参考的课本  数字图像处理(刚萨雷斯)

我对图像边缘检测的理解:人的视觉上就是把图像中的一座房子的边缘给画出来,大多数是房子的线条,这是宏观上的理解。让我们抽象到微观世界中,为什么能够检测出一条线呢?那是因为存在灰度级间断,就是说这条线两边的像素点都处于一个阶跃跳变状态(一部分显示黑,一部分显示白色,可以想象成一个台阶吧),那是理想模型,往往是因为物理硬件问题是无法达到骤变的效果,而是一个斜坡式的上升。那么我们可以对它进行求导了。一阶导数:可以判断是否是边界   二阶导数:可以判断是在黑的那部分还是白的那部分。

明白了抽象状态的边缘组成状况,那么可以去拿算子来对图片进行检测了。

简单说一下算子吧,可以理解为一个模(mu)子,也就是个模型,你拿着这个模子从图像的左上角,从左往右,一行一行的进行匹配,中间会进行一个计算,算出的值如果大于阈值的话那么就会报警说:“我是边缘“,然后把那个像素的值改成256,如果不是边缘的话,那就把值设置成0。基本的理解是这样吧。

Roberts,Prewitt,Sobel算子都是比较传统的算子相对来说比较好理解,课本上讲的比较详细。提供一下matlab实现的基本方法吧:

1.读入图片数据
2.实现图像矩阵的归一化操作  mat2gray(img) 
3.设置一个图像的边缘像素
4.经过roberts算子得到的每个像素的值
5.设置阈值
进入双层for循环,让3*3算子一行一行进行遍历 ,遍历之后执行算子,然后将数值对阈值进行比对,如果超过那么为白 ,如果没有超过为黑。最后输出

在图像处理中噪声的影响其实是很大的,对于loG算子和canny算子都先进行了高斯滤波,目的是让图像变得更平滑(实现的话可以采用edge算法)

(edge算法只能处理double的图形 ,找到的方法是先对图像进行二值变化(im2bw),然后再去对图形进行double转换 然后再使用edge方法)edge方法封装了这些算子,方便实用........


第一次写博客,发现缺少实验数据,同时还是对理论有所欠缺(例如在canny和loG算子上没有更深入的理解内核,博主一会仔细看看,就不写了).......我感觉应该会有问题的,请大家指正,谢谢。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值