在灰度图像上进行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核函数是估计多维概率密度函数的最优核函数,误差最小。
在灰度图像上进行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核函数是估计多维概率密度函数的最优核函数,误差最小。
相关文章推荐
- 在彩色图像上进行Mean Shift迭代搜索目标 ,二维加权直方图 + 巴氏系数 + Mean Shift迭代
- 在彩色图像上进行Mean Shift迭代搜索目标 ,rgb三维加权直方图 + 巴氏系数 + Mean Shift迭代
- 彩色图像上执行Mean Shift迭代搜索目标 ,维加权直方图 + 巴氏系数 + Mean Shift迭代
- Camshift原理 camshift利用目标的颜色直方图模型将图像转换为颜色概率分布图,初始化一个搜索窗的大小和位置,并根据上一帧得到的结果自适应调整搜索窗口的位置和大小,从而定位出当前图像中目标的
- OpenCV下设置灰度直方图的阈值来对图像进行查找(查表)变换的源码
- 用目标图像对源图像进行直方图匹配
- [OPENCV learning] 获取图像的灰度和一维RGB彩色直方图
- 7. 对一幅灰度图像进行离散余弦变换,用图像的形式显示其变换系数。变换后去掉小于系数最大值60% 、80%、90%的系数,在进行反变换,观察变换前后图像区别。
- Python OpenCV学习笔记之:灰度图像的直方图计算
- 图像的灰度直方图
- 灰度图像直方图均衡处理
- 9. 对一幅对比度差的图像进行灰度均衡化。
- opencv获取灰度图像直方图
- OpenCV 计算图像一维直方图
- [计算机视觉] CImg库绘制图像灰度直方图
- 利用SVM进行图像目标检测和分类
- OpenCV中如何载入图像并且转换成灰度显示图像直方图
- 10. 对一幅灰度图像进行均值滤波、中值滤波。(自己可适当对原图像增加高频噪声)
- 图像检索:一维直方图+EMD距离
- opencv实现灰度图像的直方图点计算以及灰度直方图显示