利用均值漂移实现图像分割的原理和OpenCV代码
图像处理开发需求、图像处理接私活挣零花钱,请加微信/QQ 2487872782
图像处理开发资料、图像处理技术交流请加QQ群,群号 271891601
要想大致理解均值漂移实现图像分割的原理请见网页基于均值漂移的图像分割算法 - 豆丁网,网页中对原理的理解已经说得比较清楚。如果你想了解详细原理,可以参考PAMI 2003的一篇文章,非常经典的哦,Mean Shift:A Robust Approach Toward Feature Space Analysis。
算法实施过程为:原点是选定的初始迭代点,将蓝色圆(其半径记为h)内所有向量相加,相加的结果如黄色向量所示,其终点指向上图所示的红色点,则下一次迭代以该红色点为圆心,h为半径画圆,然后求这个圆内以圆心为起点所有向量的和。如此迭代下去,圆的中心点为收敛于一个固定的点,也就是概率密度最大的地方。所以 均值漂移算法本质上是一种基于梯度的优化算法。
OpenCV中提供了函数pyrMeanShiftFiltering()来实现,函数原型如下:
void pyrMeanShiftFiltering( InputArray src, OutputArray dst, double sp, double sr, int maxLevel = 1, TermCriteria termcrit=TermCriteria(TermCriteria::MAX_ITER+TermCriteria::EPS,5,1) );
各参数的含义如下:
src-输入图像,要求是8位的三通道图像!
dst-表示结果输出图像,与输入图像同类型同尺寸。
sp-空间窗的半径,空间和颜色两个因素作为迭代的对象
sr-颜色窗的半径,空间和颜色两个因素作为迭代的对象
maxLevel-高斯金字塔分割的最高水平,当maxlevel>0时,建立maxlevel+1层高斯金字塔,层层迭代,减少运算量
termcrit-均值漂移参数的终止条件
代码如下(代码中用到的图像的下载链接:sea.jpg_免费高速下载|百度网盘-分享无限制):
代码请访问博文0042-在OpenCV下利用均值漂移(Meanshift)进行图像分割_清溪算法-CSDN博客_均值漂移算法图像分割获取
代码请访问博文0042-在OpenCV下利用均值漂移(Meanshift)进行图像分割_清溪算法-CSDN博客_均值漂移算法图像分割获取
代码请访问博文0042-在OpenCV下利用均值漂移(Meanshift)进行图像分割_清溪算法-CSDN博客_均值漂移算法图像分割获取
运行结果如下图所示:
从结果中来看,此算法比分水岭分割法的效果要好很多嘛,不过我在运行过程中发现花的时间较长啊!
图像处理开发需求、图像处理接私活挣零花钱,请加微信/QQ 2487872782
图像处理开发资料、图像处理技术交流请加QQ群,群号 271891601
相关文章
- python OpenCV使用
- opencv-----基本数据类型
- opencv---cvor
- opencv BP神经网络使用过程
- OpenCV每日函数 图像过滤模块 (1) bilateralFilter函数(双边滤波)
- Opencv学习笔记 - 关于OpenCV的UMat 类
- Opencv学习笔记 DNN模块调用Tensorflow的mobilenet对象检测模型
- 【OpenCV-Python】教程:5-3 光流
- 成功解决sub_div.insert(points)cv2.error: OpenCV(3.4.1) C:projectsopencv-pythonopencvmodulesimgproc
- 成功解决cv2.error: OpenCV(4.1.2) C:projectsopencv-pythonopencvmodulesimgprocsrccolor.cpp:182: err
- Qt Opencv图像拼接
- C++版本的OpenCV 5.x编译生成opencv-python==5.x(GPU版本)接口并进行调用
- yolov4视频目标检测:使用C++版本联合CUDA11.2的OpenCV 5.x编译生成opencv-python==5.x进行推理
- C++使用onnxruntime/opencv对onnx模型进行推理(附代码)
- 在OpenCV里学习常见问题汇编29
- 在OpenCV里用fillPoly填充多边形
- 在OpenCV里实现全局直方图均衡化1
- Opencv项目实战:06 文档扫描仪
- Chapter 02:Opencv的五个基本功能
- OpenCV入门(三十)快速学会OpenCV 29 支持向量机SVM
- 【OpenCV 例程300篇】47. 直方图处理之直方图匹配
- 【OpenCV 例程200篇】44. 图像的灰度变换(伽马变换)
- 【youcans 的 OpenCV 例程200篇】153. 边缘检测之 DoG 算子
- opencv经典算子原理总结+SIFT算法原理+特征匹配用于图像拼接
- 一招解决报错error: OpenCV(4.2.0) C:projectsopencv-pythonopencvmodulesobjdetectsrccascadedetect.cpp
- yolov4视频目标检测:使用C++版本联合CUDA11.2的OpenCV 5.x编译生成opencv-python==5.x进行推理