matlab练习程序(积分图)
计算Haar特征时有用到这个。
wiki介绍的非常好,我可耻的转了:
积分图的每一点(x, y)的值是原图中对应位置的左上角区域的所有值得和:
而且,积分图可以只遍历一次图像即可有效的计算出来,因为积分图每一点的(x, y)值是:
一旦积分图计算完毕,对任意矩形区域的和的计算就可以在常数时间内完成。如下图中,阴影矩形区域的值:
clear all; close all; clc; img=double(imread('lena.jpg')); [m n]=size(img); %计算积分图 I=zeros(m,n); for i=1:m for j=1:n if i==1 && j==1 %积分图像左上角 I(i,j)=img(i,j); elseif i==1 && j~=1 %积分图像第一行 I(i,j)=I(i,j-1)+img(i,j); elseif i~=1 && j==1 %积分图像第一列 I(i,j)=I(i-1,j)+img(i,j); else %积分图像其它像素 I(i,j)=img(i,j)+I(i-1,j)+I(i,j-1)-I(i-1,j-1); end end end %如何使用I就要看情况了