0
点赞
收藏
分享

微信扫一扫

学习总结——2

江南北 2022-01-06 阅读 44
opencv

OK,这学期所有的考试总算都结束了,可以专心学习自己的研究方向啦,今天在对上一周零散学习的知识做个总结!

上一周通过视频和自己找的相关资料主要学习了阈值分割、图像梯度和边缘检测三个部分。

一:阈值分割

这一部分主要学了最简单的二值化分割、大津算法还有自适应阈值分割。

(1)二值化分割

这个就比较简单了,可以理解为预先认为设置一个阈值,然后遍历每一个像素,对于超过和低于阈值的像素分别采取不同的处理方式,使其成为背景或者前景,公式如:


或者

对于提前设定阈值这样最简单的二值分割,opencv里有现成的cv2.threshold函数,可以直接调用

cv2.threshold (src, thresh, maxval, type)

从函数的构成不难看出,函数需要四个输入参数。

src:输入图像,要求是灰度图

thresh:设定的阈值,范围0~255

maxval:填充色,范围0~255

type:阈值类型

这一部分可以参考链接:(16条消息) opencv: 阈值处理(cv2.threshold) 探究(图示+源码)_JNing-CSDN博客_opencv threshold源码

(2)大津算法

上一个方法很简单,但每次都要根据不同的图片设定不同的阈值来达到预期的效果,这本身是一个繁琐的事情,基于此,日本学者大津展之提出大津法,也叫最大类间方差法,大津法能够对每一幅图像自动算出阈值,从而进行阈值分割,具体原理可以参考:

(15条消息) OTSU算法(大津法—最大类间方差法)原理及实现_小武的博客-CSDN博客_大津法

记得之前本科学图像处理课程的时候,老师带我们学习过这个算法,当时我们是根据原理一步步写代码来实现的,在opencv里就很方便了,这里已经集成了这个算法,只要调用之前提到的 cv2.threshold函数便可以实现 。

(3)自适应阈值分割

前面提到的两种方法,都是全局阈值法,对于一些光照不均匀的图像,它们的效果往往不好,比如:

 

 

 

这时候就需要运用自适应阈值分割法,这个方法可以理解为,在每一个小区域内都计算出一个阈值,在进行阈值分割,对于图像的不同区域,计算出不同的阈值,因此叫做自适应阈值分割法。

这种方法就可以很好的解决照明的问题。

处理效果如图所示:

 二:图像梯度

图像梯度可以用梯度来检测图像的边缘,从而确定轮廓,同时梯度也是 HOG和SIFT的基础

图像梯度是指图像某像素在x和y两个方向上的变化率(与相邻像素比较),是一个二维向量,由2个分量组成,X轴的变化、Y轴的变化 。当然,如果想追求精确,也可以增加斜方向。

具体的参数以及定义可以参考链接:

图像梯度(Image Gradient)概念和求解 (icode9.com)

opencv里给我们提供了cv2.Sobel,cv2.Scharr两种计算梯度的函数,求解梯度也为下一步边缘检测提供便利。

 

 

三:边缘检测

 作为图像处理的基本功之一,边缘检测非常重要,一般来说边缘检测的代名词就是Canny边缘检测,Canny边缘检测过程可分为四步:

(1)对图像进行高斯平滑,减少噪声

(2)计算图像梯度gX,gY

(3)应用非最大值抑制保留指向梯度方向的梯度幅度像素的局部最大值

(4)定义和应用滞后阈值

在opencv中也是很方便的提供了集成函数:cv2.Canny,直接调用即可

总的来说进度还是有点慢了,这段时间趁着空闲下来的日子,要好好追回来啦~

 

 

 

 

举报

相关推荐

Mybatis学习总结_2

今日学习总结2

shell学习训练&&总结_2

2022/2/15学习总结

j2ee学习总结(2)

LearningOpenGL学习总结Day2

0 条评论