机器视觉中的图像积分图及事实上现

计算机视觉中,人脸检測(Face Detection)是一项常见的任务。

Paul Viola和Michael Jones在《Rapid object detection using a Boosted cascade ofsimple features》一文中提出的高速对象识别算法将人脸检測推向了一个新的高度,这样的将Adaboost 和Cascade 算法综合运用的实时人脸检測系统,使人脸检測这项工作具有了更为实际的意义和价值。

当中。为了加速Haar特征的计算,他们提出了积分图的概念。

坐标点(x, y)的积分图定义为其所相应的图中左上角的像素值之和:

当中ii(x,y)表示像素点(x, y)的积分图,i(x, y)表示原始图像。

比如。在Matlab中最简单的计算积分图的方法就是使用累和函数cumsum。以下给出一段简单的演示样例代码。

>> m = [1, 2, 3;
        4, 5, 6;
        7, 8, 9]

m =

     1     2     3
     4     5     6
     7     8     9

>> cumsum(cumsum(m, 2), 1)

ans =

     1     3     6
     5    12    21
    12    27    45

可是你能够想象,如果依照定义来计算图像的积分图,随着图像尺寸的扩大。计算量的增长是很惊人的。幸好,我们能够使用一种更加高效的方法来计算积分图。ii(x,y)通过下式迭代进行计算:s(x, y) = s(x, y?1)+i(x,y)。ii(x, y) = ii(x-1, y)+s(x,y),当中s(x,y)表示行的积分和,且s(x, -1) =0,ii(-1, y) = 0。求一幅图像的积分和。仅仅需遍历一次图像就可以。

积分图元素值计算:由上述公式可知,上图中点“1”的积分图的值是矩形框A中全部像素的像素值之和。点“2”的积分图所相应的值为A+B,点“3”是A+C。点“4”是A+B+C+D。所以D中全部的像素值之和能够用4+1-(2+3)计算。

这也是利用积分图来实现Haar特征高速计算的基本原理。如果点4处的坐标为(x,y),那么能够知道点4处积分图ii(x,y)的计算公式为 ii(x, y) = i(x, y) + ii(x-1, y) + ii(x, y-1) - ii(x-1, y-1)。 这个公式相应图中的 D + (A+C) + (A+B) - A = A + B + C + D。

以下所看到的之Matlab代码就是利用上述原理来计算积分图的。

>> [w h] = size(m);
>> %计算积分图
I=zeros(w,h);
for i=1:w
    for j=1:h
        if i==1 && j==1             %积分图像左上角
            I(i,j)=m(i,j);
        elseif i==1 && j~=1         %积分图像第一行
            I(i,j)=I(i,j-1)+m(i,j);
        elseif i~=1 && j==1         %积分图像第一列
            I(i,j)=I(i-1,j)+m(i,j);
        else                        %积分图像其他像素
            I(i,j)=m(i,j)+I(i-1,j)+I(i,j-1)-I(i-1,j-1);
        end
    end
end
>> I

I =

     1     3     6
     5    12    21
    12    27    45

可见这同前面依据定义算得的结果是一致的。

时间: 2025-01-05 07:18:38

机器视觉中的图像积分图及事实上现的相关文章

机器视觉中的图像积分图及其实现

计算机视觉中,人脸检测(Face Detection)是一项常见的任务.Paul Viola和Michael Jones在<Rapid object detection using a Boosted cascade ofsimple features>一文中提出的快速对象识别算法将人脸检测推向了一个新的高度,这种将Adaboost 和Cascade 算法综合运用的实时人脸检测系统,使人脸检测这项工作具有了更为实际的意义和价值.其中,为了加速Haar特征的计算,他们提出了积分图的概念. 坐标点

【练习6.14】积分图像cvIntegral及使用积分图的性质找横向和纵向边,IplImage结构中widthStep细节

提纲 题目要求 程序代码 结果图片 要言妙道 题目要求: 加载一副灰度图,得到它的积分图.利用积分图的性质找到图像里的横向和纵向边缘. 利用细长的矩形,在适当的位置减去或加上它们. 备注:边缘查找尚未加入代码 程序代码: 1 // OpenCVExerciseTesting.cpp : 定义控制台应用程序的入口点. 2 // 3 //D:\\Work\\Work_Programming\\Source\\Image\\lena.jpg 4 5 #include "stdafx.h" 6

图像处理之积分图应用四(基于局部均值的图像二值化算法)

图像处理之积分图应用四(基于局部均值的图像二值化算法) 基本原理 均值法,选择的阈值是局部范围内像素的灰度均值(gray mean),该方法的一个变种是用常量C减去均值Mean,然后根据均值实现如下操作: pixel = (pixel > (mean - c)) ? object : background 其中默认情况下参数C取值为0.object表示前景像素,background表示背景像素. 实现步骤 1. 彩色图像转灰度图像 2. 获取灰度图像的像素数据,预计算积分图 3. 根据输入的参数

浅析人脸检测之Haar分类器方法:Haar特征、积分图、 AdaBoost 、级联

浅析人脸检测之Haar分类器方法 一.Haar分类器的前世今生 人脸检测属于计算机视觉的范畴,早期人们的主要研究方向是人脸识别,即根据人脸来识别人物的身份,后来在复杂背景下的人脸检测需求越来越大,人脸检测也逐渐作为一个单独的研究方向发展起来. 目前的人脸检测方法主要有两大类:基于知识和基于统计. Ø  基于知识的方法:主要利用先验知识将人脸看作器官特征的组合,根据眼睛.眉毛.嘴巴.鼻子等器官的特征以及相互之间的几何位置关系来检测人脸. Ø  基于统计的方法:将人脸看作一个整体的模式——二维像素矩

基于OpenCL的图像积分图算法改进

复杂的算法却未必低效,简单的算法往往要付出代价,这个代价可能很大.在opencl环境下编程,与我们在CPU上的传统编程思想有一些差异,这些差异看似微不足道,但往往是细节决定成功,就是这些看似微不足道的差异,在多核的GPU上被无限放大,导致同一种算法在GPU和CPU运行效果有着巨大的差别. 之前写过一篇文章<基于OpenCL的图像积分图算法实现>介绍了opencl中积分图算法的基本原理(不了解积分图概念的朋友可以先参考这篇文章),并基于这个基本原理提供了kernel实现代码.但经过这两个月的实践

ActionScript3游戏中的图像编程(连载十五)

1.3.1 HSB模式的色彩空间模型及其分支 第一次接触HSB模式的原理,是从以下这个地址开始的. http://zh.wikipedia.org/wiki/HSL%E5%92%8CHSV%E8%89%B2%E5%BD%A9%E7%A9%BA%E9%97%B4 图 1.21是我从上面的文章拷过来的一张色彩空间示意图,可见HSB在业界至少还可以细分成HSL和HSV两种模式.它们都使用了三维坐标系来描述色彩值的分布. 图 1.21 色彩空间示意图 第一个属性是色相,它代表颜色的种类,如红,黄,绿属于

ActionScript3游戏中的图像编程(连载二十)

1.4.2 灰度的计算方法 回过头来看RGB,站在科学的角度来解释,它们确实也有更明亮的理由,因为下面一排色彩反射出来的色光总量是上一排色的两倍.      为此,作者曾自作聪明地发明了一条“原创”的灰度公式: Gray=(r+g+b)/3 哈哈,用色光总量来表达颜色的灰度想必就比较准确了吧!沾沾自喜一番以后,我还试着用这条自创的定律来转换这张测试图片,上下色块的灰度果然拉开了,可是很不幸地,左右相邻,边界分明的色块依然粘连在一块(图 1.30). 图 1.30 笔者“自创”的灰度转换 显然此法

ActionScript3游戏中的图像编程(连载二十一,第1章完)

1.4.3 用灰度/明度指导色彩搭配 试着只通过调整不等于0的通道,让上一排的色彩在灰度上保持一致,把三个颜色分别代入到心理学公式.得 Gray(red) = r * 0.299      Gray(green) = g * 0.587      Gray(blue) = b * 0.114 让它们灰度相等,则 r * 0.299 = g * 0.587 = b * 0.114 可见,b值一定最大,不妨让b取最大值255,求得r=97, g=50.把这两个值分别应用到红和绿两个色块上. 绿色不再

ActionScript3游戏中的图像编程(连载十九)

1.4 浅析亮度与灰度/明度的关系 进入正题之前,先来了解一下灰度/明度. 1.4.1 灰度/明度的概念及其与HSB亮度的异同 在很多场合,灰度与明度的概念完全等价. “灰度”最初来源于摄影领域,在彩色显像技术问世以前,拍摄出来的照片只有黑,白,灰三类颜色,在这种黑白照片里,只有白色.黑色以及灰色的点能完好无损地显示出来,其它颜色将根据其亮度呈现出不同深度的灰色.亮度越大灰色越浅,反之越深.把黑与白色之间分成若干级,称为“灰度等级”.能呈现的灰度等级愈多,画面的层次感就愈丰富. 所以,从彩色转黑