Opencv中integral计算积分图
Paul Viola和Michael Jones在2001年首次将积分图应用在图像特征提取上,在他们的论文“Rapid Object Detection using a Boosted Cascade of Simple Features”中,积分图被当作一种新的图像特征表征方式,可以把检测的Haar特征非常高效的计算出来,用于实时人脸检测系统。
积分图是一种能够描述全局信息的矩阵表示方法,其构造方式是积分图像上位置(i,j)处的值ii(i,j)是原图像(i,j)左上角方向所有像素的和。
利用积分图可以可以快速的计算图像上某一区域内的像素和,如下图:
要计算区域D内的像素和,只需要获取到积分图上1、2、3/4点各自的像素值,分别表述为ii(1)、ii(2)、ii(3)、ii(4),则区域D的像素和=ii(4)+ii(1)-ii(2)-ii(3)。
传统的计算像素和的方式需要遍历区域D内所有的像素,再执行累加,计算量随着区域D面积的增大而增大,而对积分图方式来说,只需要在计算积分图之后,通过简单几次加减运算就可以得到某一区域内“像素和”这一特征,计算速度非常快,并且这种速度的提升效果随着区域面积的增大和计算次数的增多表现的更为明显。
Opencv中使用integral函数计算积分图。
void integral( InputArray src, OutputArray sum, int sdepth=-1 );
第一个参数src,可以使灰度图或RGB彩色图,单通道和三通道均可作为输入,但每个通道的精度必须是8位int或32位、64位浮点型;
第二个参数sum,积分图,若输入src是灰度图,则积分图也是灰度图,若输入src是RGB三通道图,则积分图sum也是RGB三通道彩色。sum的图像深度是32位整型或32位、64位浮点型,这取决于第三个参数sdepth的定义;
第三个参数sdepth,定义积分图的深度(depth),32位整型或者32位、64位浮点型。注意图像的深度跟图像的通道数是无关的,相关概念可以参看这里:Opencv Mat矩阵中data、size、depth、elemSize、step等属性的理解 ;
所以在使用sum之前,声明即可,可以不事先定义Mat矩阵的大小和数据类型。
#include "highgui/highgui.hpp"
#include "imgproc/imgproc.hpp"
using namespace cv;
int main(int argc,char *argv[])
{
Mat image=imread(argv[1]);
//cvtColor(image,image,CV_RGB2GRAY); //原图像是三通道,积分图也是三通道
Mat imageIntegral;
integral(image,imageIntegral,CV_32F); //计算积分图
normalize(imageIntegral,imageIntegral,0,255,CV_MINMAX); //归一化,方便显示
Mat imageIntegralNorm;
convertScaleAbs(imageIntegral,imageIntegralNorm); //精度转换为8位int整型
imshow("Source Image",image);
imshow("Integral Image",imageIntegralNorm);
waitKey();
}
原图:
积分图:
显示的积分图是经过归一化后的。可以看到从左上角到右下角,图像是越来越亮的,也就是说积分图上像素值是越来越大的。
积分图的图像通道数跟原始图像保存一致,当计算积分图的原始图像是彩色图像时,积分图也是彩色图像,这时候积分图计算的不是灰度,而是颜色:
Opencv中integral计算积分图的更多相关文章
- 目标检测之积分图---integral image 积分图2
前面在图像处理一栏中涉及到boxfilter 的时候,简单介绍过积分图,就是每个像素点是左边和上边的累加和,这样的话可以方便均值和方差,以及直方图统计的相关运算,这里再次结合网络资源重新单独对积分图做 ...
- OpenCV——积分图计算
#include <opencv2/opencv.hpp> #include <iostream> #include "math.h" using name ...
- AdaBoost中利用Haar特征进行人脸识别算法分析与总结1——Haar特征与积分图
原地址:http://blog.csdn.net/watkinsong/article/details/7631241 目前因为做人脸识别的一个小项目,用到了AdaBoost的人脸识别算法,因为在网上 ...
- OpenCv关于灰度积分图的SSE代码学习和改进。
最近一直沉迷于SSE方面的优化,实在找不到想学习的参考资料了,就拿个笔记本放在腿上翻翻OpenCv的源代码,无意中看到了OpenCv中关于积分图的代码,仔细研习了一番,觉得OpenCv对SSE的灵活运 ...
- SSE图像算法优化系列六:OpenCv关于灰度积分图的SSE代码学习和改进。
最近一直沉迷于SSE方面的优化,实在找不到想学习的参考资料了,就拿个笔记本放在腿上翻翻OpenCv的源代码,无意中看到了OpenCv中关于积分图的代码,仔细研习了一番,觉得OpenCv对SSE的灵活运 ...
- [OpenCV-Python] OpenCV 中计算摄影学 部分 IX 对象检测 部分 X
部分 IX计算摄影学 OpenCV-Python 中文教程(搬运)目录 49 图像去噪目标 • 学习使用非局部平均值去噪算法去除图像中的噪音 • 学习函数 cv2.fastNlMeansDenoisi ...
- AI 积分图
积分图(Integral Image),可以用于快速计算矩形特征.积分图每个位置(x, y)的值,等于原图对应位置的左上角所有像素点的值之和.因为“积分”在离散情况下就是求和,所以这也是积分图的命名由 ...
- [OpenCV-Python] OpenCV 中机器学习 部分 VIII
部分 VIII机器学习 OpenCV-Python 中文教程(搬运)目录 46 K 近邻(k-Nearest Neighbour ) 46.1 理解 K 近邻目标 • 本节我们要理解 k 近邻(kNN ...
- Opencv中Mat矩阵相乘——点乘、dot、mul运算详解
Opencv中Mat矩阵相乘——点乘.dot.mul运算详解 2016年09月02日 00:00:36 -牧野- 阅读数:59593 标签: Opencv矩阵相乘点乘dotmul 更多 个人分类: O ...
随机推荐
- BZOJ3529: [Sdoi2014]数表(莫比乌斯反演,离线)
Description 有一张 n×m 的数表,其第 i 行第 j 列(1 <= i <= n, 1 <= j <= m)的数值为 能同时整除 i 和 j 的所有自然数之和.给 ...
- LAN8720A网络模块的使用问题
一.LAN8720A模块驱动电路 最近在调试STM32F4驱动LAN8720A网络模块,在做方案前参考是正点原子的LAN8720A的驱动电路方案,但是从网上买回来的LAN8720A模块用正点原子的例程 ...
- C#之菜单控件、主窗体打开子窗体、GroupBox控件使用
一.背景 一年前有学习过C#,但没有在项目中去实际做APP,重新捡起来应用到项目中.我同事本来做好一个CANOPEN设备管理的界面,由于近期搜索了别人的开发的界面,我觉得有很多东西要重新安排,以及我已 ...
- [Angular] Use :host-context and the ::ng-deep selector to apply context-based styling
If you want to style host component. You can use ':host-context'. // host @Component({ selector: 'my ...
- 97.TCP通信
运行截图: 客户端 创建通信套接字 //通信套接字,用于创建TCP连接 SOCKET socket_send; 创建tcp通信 //创建tcp通信 socket_send = socket(AF_IN ...
- 使用jmeter监控服务器性能指标
先下载jmeter-ServerAgent Windows下载和Linux下载 https://jmeter-plugins.org/wiki/PerfMon/ 找到ServerAgent的下载链接 ...
- DC针对pipeline的优化
set_optimize_register true compile -ultra 调整pipleline各级的组合逻辑,使得各级组合逻辑的延迟跟接近 对非pipeline进行优化: regi ...
- 全选或者单选checkbox的值动态添加到div
图片.png <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> < ...
- 管理aix的密码策略
aix 中 /etc/security/user 存放用户的概要 常用参数参数如下 1.account_locked defines whether the account is locke ...
- OAuth2 社区通用组件
转载:http://www.cyqdata.com/download/article-detail-54302 使用本组件,只需要几行代码,就可以在网站上集成以下效果: 相关文章及使用说明 ...