您的位置:首页 > 其它

在灰度图像上进行Mean Shift迭代搜索目标 ,一维加权直方图 + 巴氏系数 + Mean Shift迭代

2014-04-27 08:16 288 查看
今天要给大家分享的是:

在灰度图像上进行Mean Shift迭代搜索目标 一维加权直方图+巴氏系数+Mean Shift迭代

关于 加权直方图、巴氏系数、Mean Shift迭代 这三者之间的关系请大侠们阅读我的另一篇博文:巴氏系数的最大化与Mean Shift的关系

先上一张迭代过程的运行图吧(算法的实际运行是在灰度图上进行的,彩色图是为了显示效果):



在上图中,我们首先在奶茶妹妹的图像中按下鼠标左键拖动出一块矩形区域,那个绿颜色的框就是我选中的要搜索的roi区域。紧接着,由程序给定一个初始搜索位置,就开始Mean Shift迭代搜索啦,直到最终找到奶茶妹妹的脸蛋(roi区域),图中用红色线条串起来的黑色圆点就是每次迭代的矩形框的中心位置啦。有脸蛋的那个直方图窗口中,绿色的曲线是加权直方图,红色的曲线是没有加权的直方图,可以看到,经过核函数中心加权后,奶茶妹妹的脸蛋左上角的黑色头发的亮度偏暗的灰度被抑制了。

请看程序:

下面是
/**********控制算法运行行为的主要参数*******************************************************/

//该参数用于控制给定的初始位置框和真正的roi框的重叠度:取值范围(0,1)

//初始搜索框位置默认放在真实位置的右下角,与真实目标框de重叠度是overlap

float overlap = 0.5f; //一般来说,重叠度越高,迭代收敛越快,迭代次数越少

int MaxIterNum = 50; //该参数用于控制Mean Shift的最大迭代次数

bool isJudgeOverShift = false;//用于Mean Shift迭代过程中判断是否冲过头的标志

weight_method = 1; //选择加权核函数 ==0的话选择 Epanechnikov kernal;==1选择Gaussian kernal

lock_roi = true; //如果lock_roi为真,则鼠标选取的矩形框被无效化,使用roi_rect的默认位置作为roi区域

/**********控制算法运行行为的主要参数*******************************************************/

再上几张图吧(算法的实际运行是在灰度图上进行的,彩色图是为了显示效果):O(∩_∩)O哈哈~


下面的左图是对应于Epanikov核函数的迭代收敛过程,右图是对应于Gaussian 加权的迭代收敛过程



可见 Epanikov核函数是估计多维概率密度函数的最优核函数,误差最小。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐