问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

图像处理高手请进!请问什么是均值漂移图像分割技术?它的原理是什么?小弟谢了啊!

发布网友 发布时间:2022-06-08 22:01

我来回答

1个回答

热心网友 时间:2023-09-10 19:28

上网搜了一下,还没发现把mean shift原理说的很清楚的文章,我就来写一段了:

首先你要知道这是PAMI 2003的一篇文章,非常经典的哦,Mean Shift: A Robust Approach Toward Feature Space Analysis。当然原文有17页,都是一些复杂的公式。。。。。

Mean shift主要用在图像平滑和图像分割(那个跟踪我现在还不清楚),先介绍一下平滑的原理:

输入是一个5维的空间,2维的(x,y)地理坐标,3维的(L,u,v)的颜色空间坐标,当然你原理也可以改写成rgb色彩空间或者是纹理特征空间。

先介绍一下核函数,有uniform的,也有高斯的核函数,不管是哪个的,其基本思想如下:简单的平滑算法用一个模板平均一下,对所有的像素,利用周围的像素平均一下就完事了,

这个mean shift的是基于概率密度分布来的,而且是一种无参的取样。有参的取样就是假设所有的样本服从一个有参数的概率分布函数,比如说泊松分布,正态分布等等,高中生都知道概率公式里面是有参数的,在说一下特征空间是一个5维的空间,距离用欧几里德空间就可以了,至少代码里就是这样实现的,而本文的无参取样是这样的:在特征空间里有3维的窗口(想象一下2维空间的窗口),对于一个特征空间的点,对应一个5维的向量,可以计算该点的一个密度函数,如果是有参的直接带入该点的坐标就可以求出概率密度了,基于窗函数的思想就是考虑它邻近窗口里的点对它的贡献, 它假设密度会往密集一点的地方转移,算出移动之后的一个5维坐标,该坐标并会稳定,迭代了几次之后,稳定的地方是modes。这样每一个像素点都对应一个这么一个modes,用该点的后3维的值就是平滑的结果了,当然在算每个点的时候,有些地方可能重复计算了,有兴趣的化你可以参考一下源代码,确实是可以优化的。总结一下mean shift的平滑原理就是在特征空间中向密度更高的地方shift(转移)。

其次是怎么利用mean shift分割图像

先对图像进行平滑,

第2步利用平滑结果建立区域邻接矩阵或者区域邻接链表,就是在特征空间比较近的二间在2维的图像平面也比较接近的像素算成一个区域,这样就对应一个区域的邻接链表,记录每个像素点的label值。当然代码中有一个传递凸胞的计算,合并2个表面张力很接近的相邻区域,这个我还没想怎么明白,希望比较清楚的朋友讲一讲。最后还有一个合并面积较小的区域的操作,一个区域不是对应一个modes值嘛,在待合并的较小的那个区域中,寻找所有的邻接区域,找到距离最小的那个区域,合并到那个区域就ok了。

void msImageProcessor::Filter(int sigmaS, float sigmaR, SpeedUpLevel speedUpLevel)这个是平滑操作,sigmaS是2维的平面窗口的窗函数,sigmaR是颜色空间的窗函数,最后一个参数表示是否加速算法。

void msImageProcessor::FuseRegions(float sigmaS, int minRegion)这个就是合并较小区域的一个函数。

void msImageProcessor::Segment(int sigmaS, float sigmaR, int minRegion, SpeedUpLevel speedUpLevel)这个是分割函数,里面包括了平滑功能。再详细的我也不说了。。。。。

最后是怎么调用问题:void CImageProcessing::mydebug()
{
int x,y;
int width_ = imageWidth;
int height_ = imageHeight;
unsigned char *tmp = new unsigned char[width_ * height_ * 3];
unsigned char *dst = tmp;

for (x = 0;x < imageHeight; x ++)
for(y = 0;y < imageWidth; y++)
{
//Color tmp = (*imageData_RGB)(y, x);
//uchar * data = &CV_IMAGE_ELEM(ip,uchar,x,y*3) ;
// *(dst++) = data[2] ;
// *(dst++) = data[1] ;
// *(dst++) = data[0] ;

*(dst++) = (*imageData_RGB)(y, x).channel[0];
*(dst++) = (*imageData_RGB)(y, x).channel[1];
*(dst++) = (*imageData_RGB)(y, x).channel[2];
}
cbgImage_->SetImageFromRGB( tmp, width_, height_, true);
delete []tmp;

msImageProcessor *iProc = new msImageProcessor();
iProc->DefineImage(cbgImage_->im_, COLOR, height_, width_);
iProc->SetSpeedThreshold(0.1);
iProc->Segment(5,8,10,NO_SPEEDUP);
// iProc->Filter(5,8,NO_SPEEDUP);
// iProc->FuseRegions(mWinSize,mAreaSize);//°ë¾¶ºÍ×îСÇøÓòÃæ»ý
} 至于怎么调试编译我看我是说不清楚了。。。。。。。。。。。。。。。。。。。。。。

推荐参考:http://hi.baidu.com/zzf378139208/blog/item/33a47c35b7ed95b9d1a2d304.html
http://hi.baidu.com/zzf378139208/blog/item/ee395c115019e80f203f2e85.html

参考资料:http://hi.baidu.com/changfeng01200/blog/item/e2a9d412fcd7970a5baf5376.html

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
天秤男吃醋的八大表现 天秤座男生吃醋时的表现 人工授精之后注意什么 人授后需要卧床休息吗 ...经两个月没发工资了,我不想干了,老板不给钱怎么办? 新手玩《兰斯10》这款游戏的快速通关攻略是什么? 兰斯10怎么用食券快速刷SSR 兰斯10二周目7cp怎么达成 兰斯10大侵攻达成条件介绍 跳舞同手同脚叫什么来着 喷油嘴清洗机主要功能 电压差多少 level shift 请问高手MAX232集成电路是用什么原理让电压升高的?他外围的四个电容取值该是多少? level shifter的原理 四西、二宁各指什么? 关于欠钱不还起诉 移动如何更改彩铃 移动手机怎么更换彩铃? 移动用户怎么换彩铃? 我的微信打开一片空白,联系人信息都没有,也收不到别人给我发的信息,视频聊天,朋友圈正常? 微信页面空白怎么回事微信聊天别人发信息来可以看,看了反回去就成空白,下次聊天得到通讯录里面找是怎么_百度问一问 两湖两广两河山 五江二宁四西是哪个地方 进消防箱65立管上蝶阀高度有没有具体尺寸 图上消火栓支管阀门是多大 直辖市特别行政行政划歌中四西指的是什么 五江山指什么,四西指什么,二宁指什么 我用的是win7系统重装后&quot;我的电脑“里面没有工具选项了,隐藏文件也没法打开啊,求高手帮助啊。 我的电脑是W7的系统 怎么恢复桌面上的工具条呢 想用ps设计0.8x1.8的展板,在网上找的背景图都太小,放大后又不清楚,该怎么办?自己怎样制作背景图片? 拜求唐朝日常礼仪!!! 可视锚鱼是冬天锚鱼好还是夏天好? 饿了么兼职外卖骑士 请问在长春英孚和维多利亚英语哪个好? 高中学生去新加坡留学需要些准备什么资料?维多利亚学校了解不? 维多利亚大学国内认可吗?如果您是老板或企业管理会要这样的留学生吗? 南瓜香肠馒头怎么做 南爪馒头怎做口感会细腻松软 创维电视剧如何观看江西二套节目 四川有哪些较好的公务员考试笔试培训班? 四川省2013年公务员考试培训课程 四川2014年公务员考试培训课程? 2014年下半年四川公务员考试怎么备考,培训课程? 2013四川公务员考试培训? 四川公务员考试了要来了,那个培训班比较完美? 以Y开头的男子英文名,中文名叫袁彦 我在酷我音乐里怎么上传不了自己录的歌啊,谁有具体步骤和注意事项赶紧啊!!! 怎么确定债权转让纠纷的案由 描写春天的对联谁有? 可以帮我用数据结构(C语言)顺序表编一个学生信息表 存放学生信息的表格使用什么类型的数组比较好? 用数据结构建一个学生的线性表(包括姓名,考试分数,当输入的学生姓名为&quot;$$&quot;结束)