OpenCV计算反向投影
2016-04-12 15:30
435 查看
反向投影概念的理解:
首先,对上图红色方框的imgROI区域,计算灰度直方图并进行归一化,
为了好解释,这里假设直方图有5个bin(实际上我的程序为256个bin),归一化范围为0.0-255.0(实际上我的程序为0.0-1.0)
像素值的取值范围是0-51, 51-102, 102-153, 153-204, 204-255
如下图所示:
然后再来一幅的灰度图
遍历该图像的每个像素点的灰度值。
比如点(x, y)的灰度值为120,则它在上图的第三个bin中,该bin的值为255,那么我们就修改点(x, y)的灰度值为255
按照这个做法遍历完所有的像素点之后就得到了一幅新的图像,该图像即为反向投影图,如下图所示:
程序如下:
首先,对上图红色方框的imgROI区域,计算灰度直方图并进行归一化,
为了好解释,这里假设直方图有5个bin(实际上我的程序为256个bin),归一化范围为0.0-255.0(实际上我的程序为0.0-1.0)
像素值的取值范围是0-51, 51-102, 102-153, 153-204, 204-255
如下图所示:
然后再来一幅的灰度图
遍历该图像的每个像素点的灰度值。
比如点(x, y)的灰度值为120,则它在上图的第三个bin中,该bin的值为255,那么我们就修改点(x, y)的灰度值为255
按照这个做法遍历完所有的像素点之后就得到了一幅新的图像,该图像即为反向投影图,如下图所示:
程序如下:
#include <iostream> #include <opencv2/opencv.hpp> using namespace cv; using namespace std; Mat c_srcImg; Mat g_srcImg; Mat imgROI; Mat dstHist; Mat backprojection; int main() { c_srcImg = imread("1.jpg"); int histSize[1] = {256}; float hranges[2] = {0, 255}; const float* ranges[1] = {hranges}; int channels[1] = {0}; cvtColor(c_srcImg, g_srcImg, COLOR_RGB2GRAY); imgROI = g_srcImg(Rect(360, 55, 40, 50)); rectangle(c_srcImg, Rect(360, 55, 40, 50), Scalar(0, 0, 255)); imshow("c_srcImage", c_srcImg); calcHist(&imgROI, 1, channels, Mat(), dstHist, 1, histSize, ranges); //通过归一化该直方图,我们得到一个函数,它给出了一个给定强度的像素属于imgROI区域的概率 normalize(dstHist, //输入直方图 dstHist, //输出直方图(可以原地址计算) 0.0, //缩放的最小值 1.0, //缩放的最大值 NORM_MINMAX //缩放类型 ); //反向投影的作用是替换输入图像中的每个像素值,使其变成归一化直方图中对应的概率值 calcBackProject(&g_srcImg, 1, //一幅图像 channels, //通道数量 dstHist, //进行反射投影的直方图 backprojection, //生成的反射投影图像 ranges, //每个维度的值域 255.0 //缩放因子 ); imshow("backprojection", backprojection); waitKey(0); return 0; }
相关文章推荐
- linux常用快捷键
- Hbase之shell操作
- 每天一个linux命令(61):wget命令
- Pentaho Work with Big Data(三)—— 向Hadoop集群导入数据
- hadoop的伪分布式模式配置与安装
- nginx+tomcat7(8) 集群,负载均衡和session共享
- 解决 docker on windows下网络不通
- 关于php-fpm方式和apache配合使用的几点记录
- 关于php-fpm方式和apache配合使用的几点记录
- 前端技术学习网站(百度、腾讯、淘宝)
- CentOS6.6从头到尾部署nginx与tomcat多实例
- Linux链接库一(动态库,静态库,库放在什么路径下)
- 【架构】使用OpenStack、AliYun、AWS、Docker打造融合的IAAS、PAAS平台
- CentOS 7.0安装配置LAMP服务器篇一:安装centos7
- BP(Back Propagation)
- linux iconv字符编码批处理方式转换
- mac下搭建AMP环境(apache+mysql+php)
- 秒杀系统架构优化思路
- Kubernetes DNS部署
- chromium编译过程记录