opencv3/C++ 积分图像
2018-01-19 19:04
441 查看
计算源图像一个或多个积分图像,如下所示:
sum(X,Y)=∑x<X,y<Yimage(x,y)
sqsum(X,Y)=∑x<X,y<Yimage(x,y)2
tilted(X,Y)=∑y<Y,abs(x−X+1)≤Y−y−1image(x,y)
使用这些积分图像,可以在一个固定的时间内在图像的特定右上方或旋转矩形区域上求和计算平均值和标准偏差,例如:
∑x1≤x<x2,y1≤y<y2image(x,y)=sum(x2,y2)+sum(x1,y1)−sum(x1,y2)−sum(x2,y1)
在多通道图像的情况下,每个通道的总和独立累加。
OpenCV中利用函数integral()计算图像的积分。
函数integral()参数说明:
其中:
输入图像src 为 W×H ,积分图像sum为 (W+1)×(H+1), 积分图像像素值的平方sqsum为大小 (W+1)×(H+1) 的双精度
浮点(64f)数组;图像旋转45度的积分tilted为 (W+1)×(H+1) 大小的数组,数据类型与sum相同。
integral()示例:
sum(X,Y)=∑x<X,y<Yimage(x,y)
sqsum(X,Y)=∑x<X,y<Yimage(x,y)2
tilted(X,Y)=∑y<Y,abs(x−X+1)≤Y−y−1image(x,y)
使用这些积分图像,可以在一个固定的时间内在图像的特定右上方或旋转矩形区域上求和计算平均值和标准偏差,例如:
∑x1≤x<x2,y1≤y<y2image(x,y)=sum(x2,y2)+sum(x1,y1)−sum(x1,y2)−sum(x2,y1)
在多通道图像的情况下,每个通道的总和独立累加。
OpenCV中利用函数integral()计算图像的积分。
函数integral()参数说明:
void integral( InputArray src, //输入图像(8位整型或32或64浮点图) OutputArray sum,//积分图像(32位整型或32或64浮点图) OutputArray sqsum,//积分图像像素值的平方 OutputArray tilted,//图像旋转45度的积分 int sdepth = -1, //积分和倾斜积分图像的期望深度(CV_32S、CV_32F、 CV_64F) int sqdepth = -1 //平方像素值积分图像的期望深度(CV_32F、CV_64F) );
其中:
输入图像src 为 W×H ,积分图像sum为 (W+1)×(H+1), 积分图像像素值的平方sqsum为大小 (W+1)×(H+1) 的双精度
浮点(64f)数组;图像旋转45度的积分tilted为 (W+1)×(H+1) 大小的数组,数据类型与sum相同。
integral()示例:
#include<opencv2/opencv.hpp> using namespace cv; int main() { Mat src, dst; src = imread("E:/image/image/daibola.jpg"); if (src.empty()) { printf("could not load image...\n"); return -1; } namedWindow("input", CV_WINDOW_AUTOSIZE); imshow("input", src); Mat sumii = Mat::zeros(src.size(), CV_32FC1); Mat sqsumii = Mat::zeros(src.size(), CV_64FC1); //计算图像的积分 integral(src, sumii, sqsumii); //规范化 normalize(sumii, dst, 0, 255, NORM_MINMAX, CV_8UC1, Mat()); namedWindow("output", CV_WINDOW_AUTOSIZE); imshow("output", dst); waitKey(0); return 0; }
相关文章推荐
- OpenCV_用积分图像统计像素
- opencv(c++)图像处理(imgproc模块)[2]
- OpenCV —图像像素操作(C++结构)
- opencv学习---计算图像的水平积分投影和垂直积分投影
- C#调用C++图像处理算法(opencv)
- OpenCV学习C++接口:图像锐化
- opencv图像融合c++代码实例及运行结果
- C++ - opencv - 图像融合
- 图像批量读取(opencv C++ python)
- 【opencv+C++】在图像中找四边形
- opencv图像融合c++代码实例及运行结果
- Halcon图像与Opencv图像相互转换(C++代码)
- c++ 解析从浏览器端传过来的图像base64编码,并转换成opencv识别的格式
- 【第三课:C++和opencv】图像反转
- OpenCV(C++接口)学习笔记1-图像的读取、显示、保存
- 利用OpenCV计算图像的垂直和水平积分投影
- opencv3/C++图像边缘提取
- opencv图像融合c++代码实例及运行结果
- 利用opencv2和c++实现视频与图像的互相转换
- 图像卷积操作的手动实现(基于opencv的C++编译环境)