网站大量收购独家精品文档,联系QQ:2885784924

【图像处理】快速计算积分图.doc

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
? 【图像处理】快速计算积分图 分类:?【算法分析】?【机器视觉】?【图像处理】2014-01-06 21:39?4398人阅读?评论(14)?收藏?举报 目录(?)[+] 积分图是图像中十分常用的方法,最初是在Haar特征的快速计算中学到(参考博文:利用积分图像法快速计算Haar特征),后来发现在均值滤波,二值化等图像处理方法中也十分常见。 积分图的简要介绍可以参考博文:利用积分图像法快速计算Haar特征,这里不再重复了。本篇主要是小记一下积分图的计算方法。 由于积分图中每个单元存储的信息是原图中此位置左上角所有像素之和,所以对一张W*H的图像直接求取积分图,需要: (1+2+...+W-1)*H+(1+2+...+W)*(H=1) = (w-2)*H/(W-1)+2(W+1)*(H-1)/W? 次加法。一种简单的快速计算方法 最直接的快速计算方法是利用以计算积分求当前位置的积分,其思想正如快速计算Haar特征的方法。 即,Integral(i,j) = Integral(i,j-1) +?Integral(i-1,j) - Integral(i-1,j-1) + Image(i,j); 于是,对一张W*H的图像直接求取积分图,需要: (W-1)+(H-1)+3*(W-1)*(H-1) 次加法。代码如下: [cpp]?view plaincopy void?integral(unsigned?char*?inputMatrix,?unsigned?long*?outputMatrix,?int?width,?int?height){?? ????//?calculate?integral?of?the?first?line?? ????for(int?i=0;iwidth;i++){?? ????????outputMatrix[i]?=?inputMatrix[i];?? ????????if(i0){?? ????????????outputMatrix[i]?+=?outputMatrix[i-1]; ????????}?? ????}?? ????for?(int?i=1;iheight;i++){?? ????????int?offset?=?i*width;?? ????????//?first?column?of?each?line?? ????????outputMatrix[offset]?=?outputMatrix[offset-width]+inputMatrix[offset];?? ????????//?other?columns??? ????????????outputMatrix[offset+j]?=?outputMatrix[offset+j-1]?+?outputMatrix[offset-width]?+?outputMatrix[offset-width-1]?+?inputMatrix[offset];??? ????????}?? ????}?? ????return?;?? }? 改进的快速计算方法 通过观察上一种方法,发现积分Integral(i,j) 并不需要由三个位置的积分计算出来,只需要左边Integral(i,j-1)加上当前列的和即可。 即,Integral(i,j) =?Integral(i,j-1) + ColumnSum(j); 因此,对一张W*H的图像直接求取积分图,只需要: (W-1)+(H-1)+2*(W-1)*(H-1) 次加法。代码如下: [cpp]?view plaincopy void?fastIntegral(unsigned?char*?inputMatrix,?unsigned?long*?outputMatrix,?int?width,?int?height){?? ????unsigned?long?*columnSum?=?new?unsigned?long[width];?//?sum?of?each?column?? ????//?calculate?integral?of?the?first?line?? ????for(int?i=0;iwidth;i++){?? ????????columnSum[i]=inputMatrix[i];?? ????????outputMatrix[i]?=?inputMatrix[i];?? ????????if(i0){?? ????????????outputMatrix[i]?+=?outputMatrix[i-1];?? ????????}?? ????}?? ????for?(int?i=1;iheight;i++){?? ????????int?offset?=?i*w

您可能关注的文档

文档评论(0)

fpiaovxingl + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档