zoukankan      html  css  js  c++  java
  • 积分图像

    参考博客:https://www.cnblogs.com/magic-428/p/9149868.html

    1、积分图原理

    积分图的每一点(xy)的值是原图中对应位置的左上角区域的所有值得和:[6] [7]

    {displaystyle I(x,y)=sum _{egin{smallmatrix}x'leq x\y'leq yend{smallmatrix}}i(x',y')}

    而且,积分图可以只遍历一次图像即可有效的计算出来,因为积分图每一点的(xy)值是:

    {displaystyle I(x,y)=i(x,y)+I(x-1,y)+I(x,y-1)-I(x-1,y-1)\,}
     
    计算矩形阴影区域的值

    一旦积分图计算完毕,对任意矩形区域的和的计算就可以在常数时间内完成。如上图中,阴影矩形区域的值:

    {displaystyle sum _{egin{smallmatrix}A(x)<x'leq C(x)\A(y)<y'leq C(y)end{smallmatrix}}i(x',y')=I(C)+I(A)-I(B)-I(D).}

    2、积分图应用

    2.1 Haar-like特征值计算

    以如下一种 Haar-like 边缘特征为例

    假设需要计算的这种 Haar-like 特征在图中的位置如下所示:

    那么,A,B区域所构成的 Haar-like 边缘特征是:

    HarrAB=Sum(A)Sum(B)=[SAT4+SAT1SAT2SAT3][SAT6+SAT3SAT4SAT5](4)(4)HarrA−B=Sum(A)−Sum(B)=[SAT4+SAT1−SAT2−SAT3]−[SAT6+SAT3−SAT4−SAT5]

    显然,对一个灰度图而言,事先将其积分图构建好,当需要计算灰度图某个区域内所有像素点的像素值之和的时候,利用积分图,通过查表运算,可以迅速得到结果。

    2.2 使用积分图像实现自适应阈值化

    自适应阈值是一种局部方法。它的原理是根据每个像素的邻域(如 5x5)计算阈值,如将每个像素的值与指定的邻域的平均值进行比较,如果某像素的值与它的局部平均值差别很大,就会被当作异常值在阈值化过程中被分离。

    如若不采用积分图像,则每个像素比较时,都需要进行 5 x 5 次加法运算;而采用积分图像,运算复杂度不随邻域大小而改变,每次只需计算 2 次加法和 2 次减法。

    2.3 Boxfilter 快速计算

    积分图可以使复杂度为O(MN)的求和, 求方差等运算降低到O(1)或近似于O(1)的复杂度,但它的缺点是不支持多尺度。

    Boxfilter 的原理有点类似 Integral Image,而且比它还要快,但是实现步骤比较复杂。在计算矩形特征之前,Boxfilter 与 Integral Image 都需要对图像进行初始化(即对数组A赋值), 不同于 Integral Image, Boxfilter 的数组 A 中的每个元素的值是该像素邻域内的像素和(或像素平方和), 在需要求某个矩形内像素和的时候,直接访问数组中对应的位置就可以了。因此可以看出它的复杂度是O(1)。

    Boxfilter 的细节可以移步这里.

    2.4 滑动窗口

    其实就是上面的 Boxfilter 中使用的方法.

    在车牌字符分割时,设计了一个动态模板在车牌图像上滑动,并且每次滑动都计算一次模板内包含的非零像素点个数,使用积分图来计算每次滑动后区域内的非零像素点个数,效率非常高。

  • 相关阅读:
    18_09_05 textarea高度自适应 和 Z-index
    18_08_20 jQuery 获取URL中的参数
    18_08_20 jQuery 光标聚焦文字之后
    18_08_20 jQuery 将前台 多张图片 和 多个附件 转化为 附件 向后台请求
    18_8_20 Bootstrap ul标题太多的处理方式
    Http (java)的post和get方式
    18_8_20 java 时间延后的通用写法
    iOS设计模式-组合
    iOS设计模式-迭代器
    iOS设计模式-观察者
  • 原文地址:https://www.cnblogs.com/2Bthebest1/p/10918030.html
Copyright © 2011-2022 走看看