反向投影 calcBackProject
来源:互联网 发布:兼职 知乎 编辑:程序博客网 时间:2024/06/05 12:06
其中b(xi)表示在位置xi上像素对应的直方图第b(xi)个bin,直方图共m个bin,qu表示第u个bin的值。
还是以例子说明
(1)例如灰度图像如下
Image=
(2)该灰度图的直方图为(bin指定的区间为[0,3),[4,7),[8,11),[12,16))
Histogram=
(3)反向投影图
Back_Projection=
例如位置(0,0)上的像素值为0,对应的bin为[0,3),所以反向直方图在该位置上的值这个bin的值4。
测试代码如下:
#include <iostream>
using namespace std;
#include <iomanip>
#include <highgui.h>
#include <cv.h>
int main()
{
uchar data[]={0,1,2,3,4,5,6,7,8,9,10,11,8,9,14,15};//图像数据
CvMat mat=cvMat(4,4,CV_8UC1,data);
IplImage g_img; //灰度图
cvGetImage(&mat,&g_img);
//打印图像数据
cout<<"Image="<<endl;
for(int i=0;i<g_img.height;i++)
{
uchar* ptr=(uchar*)(g_img.imageData+i*g_img.widthStep);
for(int j=0;j<g_img.width;j++)
{
cout<<setw(3)<<setprecision(2)<<(int)ptr[j]<<" ";
}
cout<<endl;
}
//计算图像直方图
IplImage* imgs[]={&g_img};
int g_bin=4;
int size[]={g_bin};
float g_ranges[]={0,4,8,12,16};
float* ranges[]={g_ranges};
CvHistogram* hist=cvCreateHist(1,size,CV_HIST_ARRAY,ranges,0);
cvCalcHist(imgs,hist);
//打印图像直方图数据
cout<<"Histogram="<<endl;
for(int i=0;i<g_bin;i++)
{
cout<<setw(3)<<setprecision(2)<<*cvGetHistValue_1D(hist,i)<<" ";
}
cout<<endl;
//计算反向投影图
IplImage* back_project=cvCreateImage(cvGetSize(&g_img),g_img.depth,1);
cvCalcBackProject(imgs,back_project,hist);
//打印反向投影图数据
cout<<"Back_Projection="<<endl;
for(int i=0;i<back_project->height;i++)
{
uchar* ptr=(uchar*)(back_project->imageData+i*back_project->widthStep);
for(int j=0;j<back_project->width;j++)
{
cout<<setw(3)<<setprecision(2)<<(int)ptr[j]<<" ";
}
cout<<endl;
}
}
参考这篇:
CamShitf算法,即Continuously Apative Mean-Shift算法,基本思想就是对视频图像的多帧进行MeanShift运算,将上一帧结果作为下一帧的初始值,迭代下去。基本步骤为:
1.选取关键区域
2.计算该区域的颜色概率分布--反向投影图
3.用MeanShift算法找到下一帧的特征区域
4.标记并重复上述步骤
该算法的关键就是可以在目标大小发生改变的时候,可以自适应的调整目标区域继续跟踪
在进行CamShitf和MeanShift算法的时候,需要输入反向投影图,这就要求有个很重要的预处理过程是计算反向投影图。对应的函数为calcBackProject。所谓反向投影图就是一个概率密度图。calcBackProject的输入通常为目标区域的直方图和待跟踪图像的直方图,输出与待跟踪图像大小相同,每一个像素点表示该点为目标区域的概率。这个点越亮,该点属于物体的概率越大。这样的输入参数太适合做MeanS算法了。
转自http://blog.csdn.net/yang_xian521/article/details/6915608
- 反向投影 calcBackProject
- opencv学习(三十九)之反向投影calcBackProject()
- opencv3 计算反向投影-calcBackProject函数-滚动条
- 直方圖反投影(calcBackProject)
- 反向投影图calcBackProject
- 反向投影图calcBackProject的用法
- 反向投影
- 反向投影
- 反向投影
- 反向投影
- cvCalcBackProject-直方图反向投影
- 直方图反向投影
- opencv 反向投影
- OpenCV反向投影
- opencv 直方图反向投影
- opencv反向投影
- 直方图的反向投影
- 直方图的反向投影
- C/C++中几个宏的总结
- Qwt使用之QwtPlot
- 以太网,IP,TCP,UDP数据包分析
- hadoop基础
- JAVA多线程编程陷阱总结一
- 反向投影 calcBackProject
- 聚类分析初探(一)引言
- 快速排序算法C++实现
- 字符串转换为整数
- DAO设计模式
- UI组件分离皮肤的自问自答
- Linux socket 数据包
- Spring第一个程序
- 重载new/delete运算符