计算cvIntegral后奇怪的图像?

时间:2012-10-27 15:05:51

标签: opencv

我正在尝试了解cvIntegral的使用。输出图像的行为是否与附加的图像相似?是的,当手动计算时,左上部确实具有小值(黑色)并且当它向右下方(更亮)时。没有标准化(0-255),图像完全是白色,然后是黑色。

original image

原始图片

Integral Image

积分图像标准化

1 个答案:

答案 0 :(得分:0)

实际上,这取决于你想要计算的积分类型,因为它有三种类型 - 来自documentation

  

该函数计算源的一个或多个整数图像   图片如下:enter image description here

     

enter image description here

     

enter image description here

如果你谈论第一类积分,那么它只是矩形[(0,0),(x,y)]中所有像素的总和。我的积分图像输出是这样的: enter image description here

什么似乎在逻辑上是正确的。

通过规范化(255/max),我会看到与输出相同的图像。

<强>更新 似乎我得到了你的错误 - imwrite失去了图像的质量(可能)因为某些积分图像的值太大(大于255),但imshow显示正常(该图像只是一个)截图)。所以就像你一样使用规范化。这是代码:

Mat src = imread("moon.jpg", CV_LOAD_IMAGE_GRAYSCALE);
Mat int1, norm;

integral(src, int1);

double max;
minMaxIdx(int1, 0, &max);
int1.convertTo(norm, CV_8UC1, 255/max);

imshow("simple output", int1);//shows normally
imshow("normalized output", norm);
//imwrite("output.jpg", int1);// looses quality
waitKey();