OpenCV之积分图像学习

 

目录

积分图像

积分图像的求和方式

OpenCV中所用到的API

实验结果  


积分图像

积分图像(Integral Image)是一种计算机视觉中的图像处理技术,它可以快速地计算图像中某个区域内所有像素的和。积分图像可以用于加速图像特征的计算,如Haar特征和HOG特征等。它的计算速度很快,因为可以通过一次遍历图像就可以计算出所有的积分图像。同时,积分图像还可以用于快速的图像模板匹配和物体检测。

积分图像的求和方式

积分图像求和的方式是通过对原始图像进行积分得到的。具体的求和方式如下:

  1. 对原始图像进行积分,得到积分图像。积分图像的每个像素值表示该像素及其左上角所有像素的和。(例如P0点的值等于蓝色区域所有像素点的灰度值之和)

  2. 要计算某个区域内所有像素的和,只需要用该区域右下角的像素的积分图像值减去左上角的积分图像值,再加上左上角左边的积分图像值和右下角下面的积分图像值,即可得到该区域内所有像素的和。(例如P3减去P0即可得到灰色区域的所有像素之和)

  3. 如果要计算多个不相交的区域的像素和,可以用同样的方法分别计算每个区域的像素和

OpenCV中所用到的API

void QuickDemo::intergral_demo() {
	//创建了一个16×16的单通道浮点数型(CV_32FC1)的矩阵image,并设置像素值全为1
	Mat image = Mat::ones(16, 16, CV_32FC1);
	//创建一个随机噪声
	RNG rng(10086);
	for (int y = 0;y < image.rows;y++)
	{
		for (int x = 0;x < image.cols;x++)
		{
			float d = rng.uniform(-0.5, 0.5);
			image.at<float>(y, x) = image.at<float>(y, x)+ d;
		}
	}
	//标准和求积分
	Mat sum;
	integral(image, sum);
	//为了方便显示,转成CV_8U格式
	Mat sum8U = Mat_<uchar>(sum);
	namedWindow("SUM8U", WINDOW_NORMAL);
	imshow("SUM8U", sum8U);

	//平方和求积分
	Mat sqsum;
	integral(image, sum,sqsum);
	//为了方便显示,转成CV_8U格式
	Mat sqsum8U = Mat_<uchar>(sqsum);
	namedWindow("sqSUM8U", WINDOW_NORMAL);
	imshow("sqSUM8U", sqsum8U);

	//倾斜求和求积分
	Mat qxsum;
	integral(image, sum, sqsum,qxsum);
	//为了方便显示,转成CV_8U格式
	Mat qxsum8U = Mat_<uchar>(qxsum);
	namedWindow("qxSUM8U", WINDOW_NORMAL);
	imshow("qxSUM8U", qxsum8U);

}

实验结果  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值