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

    积分图像(integral image)是一种高速计算矩形区域之和的数据结构,常利用它对算法进行加速。积分图像中处的值是原始灰度图像的左上角与当前点所围成的矩形区域内全部像素点的灰度值之和,即:


    当中 为原图像, 为积分图像。图1是积分图像的示意。

    图1

    积分图像是用来加速算法的。因此求取积分图像本身复杂度不能非常高。否则就失去了意义。为了高速的计算出积分图像。须要充分利用已经计算出的结果。避免反复计算。

    计算公式例如以下:


    下图是该公式的原理示意:


     图2

    以下给出计算积分图像的matlab程序:

    Integral.m

    function I=Integral(Img) 
    Img=double(Img);
    [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

    main.m

    close all;
    clear all;
    clc;
    Img=double(imread('lena.tif'));
    Int=integral(Img);
    figure;
    imshow([Img/max(Img(:)),Int/max(Int(:))]);


    图3

    积分图像是一种估计算技术,本质是空间换时间。得到积分图像后。通过4次查表便能够在常量时间内计算出随意一个矩形区域的灰度之和。如图4,为了计算ABCD围成的红色矩形区域中的和。须要从它的积分图像中取出四个值 并进行例如以下计算:


     

    图4

    值得注意的是。上述的A、B、C三个像素点并不在红色区域内,如图5所看到的,这在编程的时候须要格外注意。


       图5


  • 相关阅读:
    vCenter添加主机后添加虚拟机失败
    FreeSwitch那些坑之CallCenter
    FreeSwitch录音功能
    在Widnwos中安装VMware vCenter Server
    VMware配置额外内存设置
    VMWare全局禁用vmem虚拟内存文件
    MySQL实现高可用架构之MHA
    Dell Vostro 5590在Windows 10中WIFI经常断开
    tesseract-OCR + pytesseract安装
    python3 TensorFlow训练数据集准备 下载一些百度图片 入门级爬虫示例
  • 原文地址:https://www.cnblogs.com/yjbjingcha/p/6910435.html
Copyright © 2011-2022 走看看