The River is Just a River  
If you're absent from my struggle,then,don't be present for my success

 

 接触到积分图像,对于cvIntegral函数得到的结果有点疑惑,为什么W*H的图像的积分图像是(W+1)*(H+1)呢?做了个简单的实验如下:

 

 我设置了一个2*2的CvMat:

         

 然后,调用cvIntegral计算积分图像,得到的结果如下: 

       

从结果中发现,第一行与第一列都是0, 真正对我们有缘的数据是从第一行和第一列开始的,这也是我们理解的积分图像应该得到的结果。回头看一下cvIntegral的文档介绍,就会发现为什么积分图的宽与高会增加1,且第一行与第一列都是0.

而对于opencv来说,X,Y都是从0开始的,显然,当X==0||Y==0时,{(x,y)|x<X,y<Y}是空集, 我没有去看源码,但是从上面的结果应该可以猜测出,当X==0||Y==0时,就将sum(X,Y)置0了。

 

opencv这样做对于某些操作的确有所简化,但是,其实没有什么太大的好处。至于这么做是否有其本质上的原因,就不得而知了,还希望知情人不吝赐教 

posted on 2012-07-29 14:42  TiffanyZhou  阅读(3158)  评论(0编辑  收藏  举报