在学习直方图反向投影之前,如果你对直方图的概念,直方图均衡化,直方图计算等直方图相关的概念比较模糊,建议先了解一下
1.直方图概念及直方图均衡化 https://blog.csdn.net/shuiyixin/article/details/80001756
2.直方图计算 https://blog.csdn.net/shuiyixin/article/details/80032167
3.直方图比较 https://blog.csdn.net/shuiyixin/article/details/80257822
如果你想了解更多有关于计算机视觉、OpenCV、机器学习、深度学习等相关技术的内容,想与更多大佬一起沟通,那就扫描下方二维码加入我们吧!
二、反向投影概念反向投影是一种记录给定图像中的像素点如何适应直方图模型像素分布的方式,简单来讲,反向投影就是首先计算某一特征的直方图模型,然后使用模型去寻找图像中存在的特征。反向投影在某一位置的值就是原图对应位置像素值在原图像中的总数目。
三、反向投影理解举个栗子,给大家介绍反向投影:
想必大家都玩过一个游戏,(没玩过的可以体验一下),一个人蒙住眼睛,其余的人在指定区域内活动,蒙眼睛的人依靠声音等方式去寻找其余的人。设蒙眼睛的人为A,其余人中有个人是B。
假如这个人只能通过声音去寻找,那这个人其实是通过“双耳效应”,简化一下,就是说当B发出声音的时候,A听到B的声音,根据自己感知到声音传到两个耳朵的不同,顺着声音的方向,做两条反向延长线,两条线交于一个点,这个点的位置,就是B所在的位置。
同样原理的还有测量地震的设备,很多时候,测震源有两个设备,设备对地震源做反向投影,就会找到地震的中心。(如下图)
}/*—————————————本代码所需函数实现————————————— */ 八、结果展示
void Hist_And_BackProjection(int, void*) {//局部变量float range[] = { 0,180 };const float *histRanges = { range };int hist_h = 400;int hist_w = 400;int bin_w = hist_w / bins;Mat h_hist;Mat histImage(hist_w, hist_h, CV_8UC3, Scalar(0, 0, 0));//直方图计算及归一化处理calcHist(&hue, 1, 0, Mat(), h_hist, 1, &bins, &histRanges, true, false);normalize(h_hist, h_hist, 0, 255, NORM_MINMAX, -1, Mat());//直方图反向投影calcBackProject(&hue, 1, 0, h_hist, backProjectionImg, &histRanges, 1, true);//画直方图分部图for (int i = 0; i