C++ OpenCV如何实现基于距离变换与分水岭的图像分割


这篇文章主要为大家展示了“C++ OpenCV如何实现基于距离变换与分水岭的图像分割”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“C++ OpenCV如何实现基于距离变换与分水岭的图像分割”这篇文章吧。图像分割图像分割,英文名imagesegmentation,就是把图像分成若干个特定的、具有独特性质的区域并提出感兴趣目标的技术和过程。它是由图像处理到图像分析的关键步骤。现有的图像分割方法主要分以下几类:
基于阈值的分割方法基于区域的分割方法基于边缘的分割方法以及基于特定理论的分割方法从数学角度来看,图像分割是将数字图像划分成互不相交的区域的过程。图像分割的过程也是一个标记过程,即把属于同一区域的像索赋予相同的编号。图像分割的目标是将图像中像素根据一定的规则分为若干个(N)个cluster集合,I每个集合包含一类像素。
根据算法分为监督学习算法和无监督学习算法,图像分割的算法多数都是无监督学习算法。—KMeans距离变换与分水岭介绍距离变换距离变换常见算法有两种不断膨胀/ 腐蚀得到基于倒角距离分水岭变换分水岭变换常见的算法基于浸泡理论实现相关APIcv::distanceTransform(InputArray src,OutputArray dst,OutputArray labels,int distanceType,int maskSize,int labelType = DIST_LABEL_CCOMP)distanceType = DIST_L1/DIST_L2,maskSize = 3×3,最新的支持5×5,推荐3×3、labels离散维诺图输出,dst输出8位或者32位的浮点数,单一通道,大小与输入图像一致cv::watershed(InputArray image,InputOutputArray markers)操作步骤将白色背景变成黑色-目的是为后面的变换做准备使用filter2D与拉普拉斯算子实现图像对比度提高,sharp转为二值图像通过threshold距离变换对距离变换结果进行归一化到[0~1]之间使用阈值,再次二值化,得到标记腐蚀得到每个Peak – erode发现轮廓 香港云主机 – findContours绘制轮廓- drawContours分水岭变换 watershed对每个分割区域着色输出结果代码演示新建一个项目opencv-0027,配置属性(VS2017配置OpenCV通用属性),然后在源文件写入#include和main方法这次我们用opencv里面自带的一张图像来实个这个方法运行显示的图像为1.将白色背景变成黑色我们运行看一下可以看到右边的已经把背景都换为黑色了。2.使用filter2D与拉普拉斯算子实现图像对比度提高,sharp我们再运行看一下,左边的就是生成的结果图,可以看出左边的清晰度更高了一些3.转为二值图像通过threshold我们再运行看一下,左边的图像已经让我们转换为二值图像了,也比较清晰4.距离变换5.对距离变换结果进行归一化到[0~1]之间因为距离变换看不出任何效果,所以我们把4和5两步放在一起显示
我们再运行一下看看执行结果6.使用阈值,再次二值化,得到标记显示效果为7.腐蚀得到每个Peak效果不太好看,我们需要再进行二值的腐蚀,把上面的代码再修改一下我们再看一下运行效果,可以看出来比刚才的效果好很多了8.标记并且开始查找轮廓这一步只是查找轮廓,我们接下来绘制查找的轮廓再一起显示出来9.绘制轮廓上面drawContours和circle最后一个参数都是用了-1,代表着画的轮廓里面进行颜色填充
我们再显示一下看看效果看到好像什么也没有,这是因为我们画的轮廓太小了, 我们改一下显示效果把最后显示cv::imshow(imgdst,makers*5000)再乘5000,重新看一下显示效果这会儿就可以看到绘制的轮廓出来了10.分水岭变换我们看看显示的效果可以看出,每个轮廓都有明显的区分开了。11.对每个分割区域着色输出结果然后我们再运行看到最后结果
以上是“C++ OpenCV如何实现基于距离变换与分水岭的图像分割”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注开发云行业资讯频道!

相关推荐: Top50ggplot2Visualizations如何实现面积图

小编给大家分享一下Top50ggplot2Visualizations如何实现面积图,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完 香港云主机这篇文章后大有收获,下面让我们一起去了解一下吧!公众号里有朋友提问——在散点图添加拟合曲…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

Like (0)
Donate 微信扫一扫 微信扫一扫
Previous 08/29 21:55
Next 08/29 21:56

相关推荐