| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 38_OpenCV关于图像形态学:腐蚀、膨胀、开闭运算、形态学梯度、顶帽和黑帽及自定义核 -> 正文阅读 |
|
[人工智能]38_OpenCV关于图像形态学:腐蚀、膨胀、开闭运算、形态学梯度、顶帽和黑帽及自定义核 |
OpenCV提供了一种高效且易用的图像形态学变换接口。基本上,所有的形态学操作都基于两种原始操作,接下来的讲述也将以这两点开始、循序渐进发展到更加复杂的操作,每个更加复杂的操作都将通过前面的方法来表示。 1. 膨胀和腐蚀膨胀和腐蚀是最基础的形态学变换,可以应用到许多方面,比如消除噪声、元素分割和连接等。 膨胀是一种卷积操作,将目标像素的值替换为卷积核覆盖区域的局部最大值。这是一个非线性核的例子。通常膨胀采用的核是一个四边形或圆形的实心核,其锚点在中心。膨胀的作用是使图中填充区域。 与膨胀对应的,腐蚀是与之相反的操作,腐蚀操作计算的是核覆盖范围内的局部最小值。 膨胀和腐蚀的效果可以参考如下: 总的来说,膨胀扩张了明亮区域,腐蚀缩减了明亮区域。 OpenCV提供函数cv::erode()实现腐蚀,提供函数cv::dilate()实现膨胀。 函数原型:
cv::erode()和cv::dilate()都需要传入源图像和目标图像,并且都支持就地调用(即源图像和目标图像是同一幅图像)。 腐蚀操作通常用于消除图中斑点一样的噪声,原理是斑点经过腐蚀后会消失,而大的可见区域不会收到影响。 cv::erode()函数运行时,函数内部发生的是将点p处的值设置成核与点p对齐后覆盖区域的最小值,而cv::dilate()是将最小值替换成最大值。 如下是腐蚀和膨胀的示例: 2. 通用形态学函数当处理的对象是二值图像和像素只可能是开(>0)或关(=0)的图像掩膜时,基本的腐蚀和膨胀操作就够用了,需要对灰度图或彩色图进行处理时,一些其它的操作就非常有用,这些操作可以通过函数cv::morphologyEx()实现,函数原型:
参数op用于指定函数将进行的操作,可选的值如下:
2.1 开操作和闭操作开操作和闭操作实际上是腐蚀和膨胀操作的组合。
对一幅非布尔类型的图像进行形态学操作时,闭操作最明显的效果是消除值小于邻域内的点的孤立异常值,开操作是消除大于邻域内的孤立异常值。 开操作和闭操作的iterations参数,两次的闭操作的迭代不是膨胀-腐蚀-膨胀-腐蚀,而是膨胀-膨胀-腐蚀-腐蚀,这样做不但可以消除孤立的异常值,也能消除邻域内的异常值。 开操作和闭操作对图像的结果如下: 2.2 形态学梯度形态学梯度可以用如下表达式描述: gradient(src) = dilate(src) - erode(src) 对于灰度图像,其结果就是计算明暗变换的趋势。形态学梯度通常用于显示明亮区域的边界,然后可以将它们看作目标或者目标的部分。用扩张的图像减去收缩的图像,这样就找出了完整的边界。 形态学梯度操作后的效果如下: ?操作后的效果类似边缘检测??? 2.3 顶帽和黑帽顶帽和黑帽操作分别用于显示与其邻域相比更亮或更暗的部分。 当试图根据物体的亮度变化分离依附于物体的某些部分时,就会用到这些方法,在生物体或细胞的显微镜图像上经常会用到这些方法。这两种操作都是根据如下基础操作定义的: TopHat(src) = src - open(src)? // Isolate brighter 顶帽操作用源图像减去对其开操作后的图像,开操作的效果是放大裂缝和局部小洞,用源图像减去对其开操作后的图像得到了比源图像更亮的环绕部分。 顶帽操作显示的是比源图像更亮的环绕部分。 如下分别是顶帽操作和黑帽操作后的结果: ? 3. 自定义核OpenCv可以创建自己的核,在形态学上,核常称为构造元素。供开发者创建自定义形态学核的函数叫cv::getStructuringElement()。 一般常用的是非矩形核,是一种非常规形状,函数cv::getStructuringElement()原型如下:
参数shape控制构造元素的基本形状; 参数shape的形状如下:
?cv::MORPH_CROSS是为旧版接口留下的。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 6:30:10- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |