当前位置: 首页 > news >正文

图像处理_积分图

目录

1. 积分图算法介绍

2. 基本原理

2.1 构建积分图

2.2 使用积分图

3. 举个例子


1. 积分图算法介绍


        积分图算法是图像处理中的经典算法之一,由Crow在1984年首次提出,它是为了在多尺度透视投影中提高渲染速度。

        积分图算法是一种快速计算图像区域和以及图像区域平方和的算法。直白的说,就是很快计算一幅图像任意区域,也就是卷积区域下的像素值的和跟平方和。它的核心思想就是对每一个图像建立起自己的积分图查找表,在图像处理的阶段就可以根据预先建立积分图查找表直接查找,从而实现对均值卷积的线性时间计算。做到了卷积执行的时间与半径窗口大小的无关联。

        利用积分图可以极大地加快计算原始图像中任一矩形区域的像素和,因为只需经过一次计算。这种算法被应用到基于NCC的快速匹配、对象检测和SURF变换中、基于统计学的快速滤波器等方面。第一个应用积分图像技术的应用是在Viola-Jones的对象检测框架中出现。

2. 基本原理

在积分图中,我们需要做两个操作:
1)构建积分图
2)使用积分图

2.1 构建积分图

这里写图片描述

        如上图所示,S(x,y)对应于(x,y)跟左上角原点(0,0)所包围的区域的图像灰度总和。从左上角开始,我们可以根据如下公式推算整个图像的积分图。原始图像(x,y)位置对应的积分值为:

        积分图是由 “每个像素位置(x,y)对应的与原点(0,0)组成的矩形区域内的图像灰度和(称为积分值)” , 组成一个一个新的"图像"。

2.2 使用积分图

这里写图片描述

如上图所示,为了求该矩形区域的灰度之和。我们可以用以下公式表示:

这里的总和并不包含点A,B,C的像素值。如上图所示的小像素点,A,B,C所在的像素点不在矩形区域以内。 

3. 举个例子

原始(灰度)图像 与 积分图像

其中:图像位置(1,1)对应的积分值  I(1,1) = 528 的计算方法为:

        S(1,1) = I(1,1) + S(0,1) + S(1,0) - S(0,0) = 132(原图中(1,1)位置灰度值) + 264(积分图中(0,1)位置积分值) + 264(积分图中(1,0)位置积分值) - 132(积分图中(0,0)位置积分值) = 528

则求下面区域的图像像素灰度值Sum(A) = 等于多少?如何求?

则  Sum(A) = S(6,5) +S(3,2) -S(3,5) - S(6,2) = 3923 + 792 – 1584 – 1960 = 1171,

可以在原始图像验算下: 133 + 125 + 130 + 118 + 124 + 125 + 127 + 126 + 163 = 1171, 正确

注意:计算积分图第一行,第一列时,对于上方和右方越界的像素点,灰度设为0 ,图示如下:

对应python函数:

python中对应的函数为cv2.integral(返回sum)。根据输出需要,还有两个可选函数cv2.integral2(返回sum与平方和)和cv2.integral3(返回sum、平方和以及旋转45度)。

参考:

【OpenCV】28 图像积分图算法_opencv 图像平方和-CSDN博客

【图像处理】积分图像及其应用_对图像矩阵做积分图怎么做,给出例子-CSDN博客

图像检测入门(五)积分图 - 知乎

http://www.lryc.cn/news/331644.html

相关文章:

  • B/S架构SaaS模式 医院云HIS系统源码,自主研发,支持电子病历4级
  • (C)1005 继续(3n+1)猜想
  • 编译好的C++应用程序拷贝到其它电脑,提示dll未找到依赖项的解决方法。
  • wps 开发插件
  • C语言----数据在内存中的存储
  • 【Linux学习】Linux 的虚拟化和容器化技术
  • Delphi 是一种内存安全的语言吗?
  • golang语言系列:Scrum、Kanban等敏捷管理策略
  • QT背景介绍
  • 动态规划详解(Dynamic Programming)
  • 前端大额计算,真正解决js精度丢失问题
  • Android笔记--MediaCodec(一)
  • Linux简单介绍
  • Servlet 的基本理解
  • JavaScript之applye、bind和call方法详解
  • Docker,anaconda环境的部署与迁移
  • 【大数据运维】Hbase shell 常见操作
  • LeetCode-217存在重复的元素
  • 基于两个单片机串行通信的电子密码锁设计
  • 产品经理功法修炼(3)之产品设计
  • Qt 的发展历史、现状与启示
  • Quiet-STaR:让语言模型在“说话”前思考
  • 【Kotlin】匿名类和伴生类
  • 【机器学习算法介绍】(3)决策树
  • 算法之查找
  • LInux脚本学习
  • JavaWeb基础(计网 socket 数据库 JDBC lombok Mybatis JUnit Maven)
  • 【HBase】
  • Vue3:使用Pinia存储、读取、修改数据
  • 基于 Quartz.NET 可视化任务调度平台 QuartzUI