pyrMeanShiftFiltering函数
pyrMeanShiftFiltering函数
对图像进行:均值偏移滤波
调用格式:
void cvPyrMeanShiftFiltering( const CvArr* src, CvArr* dst,double sp, double sr, int max_level=1,CvTermCriteria termcrit=cvTermCriteria(CV_TERMCRIT_ITER+CV_TERMCRIT_EPS,5,1));
- src
- 输入的8-比特,3-信道图象.
- dst
- 和源图象相同大小,相同格式的输出图象.
- sp
- The spatial window radius.
- 空间窗的半径
- sr
- The color window radius.
- 色彩窗的半径
- max_level
- Maximum level of the pyramid for the segmentation.
我们先借助Mean Shift算法的分割特性将灰度值相近的元素进行聚类,然后,在此基础上应用阈值分割算法,
达到将图像与背景分离的目的。 简单来说,基于Mean Shift的图像分割过程就是首先利用Mean Shift算法对图像中的像素进行聚类,
即把收敛到同一点的起始点归为一类,然后把这一类的标号赋给这些起始点,同时把包含像素点太少的类去掉。
然后,采用阈值化分割的方法对图像进行二值化处理 基于Mean Shift的图像分割算法将图像中灰度值相近的像素点聚类为一个灰度级,
因此,经过Mean Shift算法分割后的图像中的灰度级较该算法处理之前有所减少。
opencv代码:
// meanshift_segmentation.cpp : 定义控制台应用程序的入口点。
//#include "stdafx.h"
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <iostream>using namespace cv;
using namespace std;Mat src,dst;
int spatialRad=10,colorRad=10,maxPryLevel=1;
//const Scalar& colorDiff=Scalar::all(1);void meanshift_seg(int,void *)
{//调用meanshift图像金字塔进行分割pyrMeanShiftFiltering(src,dst,spatialRad,colorRad,maxPryLevel);RNG rng=theRNG();Mat mask(dst.rows+2,dst.cols+2,CV_8UC1,Scalar::all(0));for(int i=0;i<dst.rows;i++) //opencv图像等矩阵也是基于0索引的for(int j=0;j<dst.cols;j++)if(mask.at<uchar>(i+1,j+1)==0){Scalar newcolor(rng(256),rng(256),rng(256));floodFill(dst,mask,Point(i,j),newcolor,0,Scalar::all(1),Scalar::all(1));// floodFill(dst,mask,Point(i,j),newcolor,0,colorDiff,colorDiff);}imshow("dst",dst);
}int main(int argc, uchar* argv[])
{namedWindow("src",WINDOW_AUTOSIZE);namedWindow("dst",WINDOW_AUTOSIZE);src=imread("stuff.jpg");CV_Assert(!src.empty());spatialRad=10;colorRad=10;maxPryLevel=1;//虽然createTrackbar函数的参数onChange函数要求其2个参数形式为onChange(int,void*)//但是这里是系统响应函数,在使用createTrackbar函数时,其调用的函数可以不用写参数,甚至//括号都不用写,但是其调用函数的实现过程中还是需要满足(int,void*)2个参数类型createTrackbar("spatialRad","dst",&spatialRad,80,meanshift_seg);createTrackbar("colorRad","dst",&colorRad,60,meanshift_seg);createTrackbar("maxPryLevel","dst",&maxPryLevel,5,meanshift_seg);// meanshift_seg(0,0);imshow("src",src);/*char c=(char)waitKey();if(27==c)return 0;*/imshow("dst",src);waitKey();//无限等待用户交互响应
// while(1);//这里不能用while(1)的原因是需要等待用户的交互,而while(1)没有该功能。虽然2者都有无限等待的作用。return 0;
}
pyrMeanShiftFiltering函数相关推荐
- OpenCV3学习(7.4)——图像分割之四(Meanshift算法,PyrMeanShiftFiltering函数)
详情请转到https://blog.csdn.net/qq_30815237/article/details/86488192 mean shift还可用于视频跟踪,参见我的博客: https://b ...
- 图像均值迁移模糊:pyrMeanShiftFiltering()
https://blog.csdn.net/kingkee/article/details/94437333 一.编程环境: OpenCV 4.1.0 IDE Visual Studio 2017 ...
- Mean Shift算法(3)在OpenCV上的实现——图像分割PyrMeanShiftFiltering
Meanshift不仅可以用于视频跟踪,还可以用于图像分割.Meanshift算法找到空间上颜色分布的峰值,关注于颜色的空间分布:在视频跟踪领域组更关注于在连续帧中通过事件跟踪这些分布. 一般而言一副 ...
- OpenCV每日函数 专栏简述(陆续整理中)
一.OpenCV概述 OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习软件库.OpenCV库拥有超过 2500 种优化算法,其中包 ...
- 【OpenCV 4开发详解】分割图像——Mean-Shift分割算法
本文首发于"小白学视觉"微信公众号,欢迎关注公众号 本文作者为小白,版权归人民邮电出版社发行所有,禁止转载,侵权必究! 经过几个月的努力,小白终于完成了市面上第一本OpenCV 4 ...
- opencv进阶学习笔记11:cannny边缘检测,直线检测,圆检测
基础版笔记传送门 python3+opencv学习笔记汇总目录(适合基础入门学习) 进阶版笔记目录链接: python+opencv进阶版学习笔记目录(适合有一定基础) cannny边缘检测 基础版边 ...
- [Python从零到壹] 十三.机器学习之聚类算法四万字总结全网首发(K-Means、BIRCH、树状聚类、MeanShift)
欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...
- OpenCV入门(十)——图像分割技术
目录 0x01 FloodFill分割 0x02 均值漂移MeanShift 0x03 图割Grabcut 0x04 奇异区域检测 0x05 肤色检测 0x01 FloodFill分割 FloodFi ...
- OpenCV NAO机器人辅助捡球丢球
文章目录 1. 概述 2. 相关技术 2.1 NAO机器人 2.2 Choregraphe 2.3 OpenCV 3. 总体设计与详细设计 3.1 系统模块划分 3.2 主要功能模块 4 遇到的问题 ...
最新文章
- Docker学习(三)-----Docker镜像常用命令
- POJ-2524-Ubiquitous Religions
- 实现自己的“单页”博客,只需要一个指令 (Moka)
- 得到classpath和当前类的绝对路径的一些方法
- 《天际友盟DRP数字风险防护报告(2021年上半年)》重磅发布
- Java 开发的编程噩梦,这些坑你没踩过算我输
- 新服务器配置 显示,新服务器配置纪录
- hello一直显示与服务器断开,新手问题--服务器环境部署hello world
- java导出excel 客户端_java如何将导出的excel下载到客户端
- JAX-RPC学习笔记(1)-Hello World!
- COPRA RF 2005_
- 嵌入式程序和FW的区别
- 软件工程——软件结构图设计(变换分析设计、事务分析设计、混合流设计)
- python声音识别歌曲_听歌识曲--用python实现一个音乐检索器的功能
- Javaweb google身份宝验证
- JS报错 Uncaught TypeError: undefined is not a function,解决
- 了解Swift:15个适合iOS应用开发的初学者友好资源
- 几类自适应波束形成算法推导
- 安装ps显示检测到计算机,修复:win10下Photoshop遇到显示驱动程序问题
- IntelliJ Idea SpringBoot 数据库增删改查实例