图像处理_积分图

目录

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.mzph.cn/news/784331.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于Python实现多功能翻译助手(上)

创建一个支持多种语言翻译并且允许通过文件拖拽来输入文本的Python窗口应用程序是一个相对复杂的任务,涉及到多个库和组件。以下是一个简化的指南,展示如何使用Python的Tkinter库创建GUI窗口,结合Googletrans库进行翻译,以及使用P…

jvm类加载机制概述

、什么是jvm的类加载机制 类加载机制是指我们将类的字节码文件所包含的数据读入内存,同时我们会生成数据的访问入口的一种 特殊机制。那么我们可以得知,类加载的最终产品是数据访问入口。 加载类文件(即.class文件)的方式有以下几…

处理 Oracle 数据库表空间满的问题

处理 Oracle 数据库表空间满的问题 1、诊断表空间满的问题2、处理表空间满的问题3、设置表空间自增结论 在 Oracle 数据库管理中,表空间是一个重要的概念,用于存储数据库对象和数据。当表空间满了时,可能会导致数据库的运行受到影响&#xff…

Mac 下安装maven教程

note:网上已经有很多该类型教程了,这边自身保留一份,方便后面使用; 一、安装地址:官网 二、安装步骤 $ tar -xvf apache-maven-3.3.9-bin.tar.gz //mac支持手动点击解压 $ sudo mv -f apache-maven-3.3.9 /usr…

服务器固定IP(固定出口IP)去访问外部服务

背景 服务器上有多个IP,那么在服务器请求外部服务的时候,到底是使用哪个IP呢?如果要使用特定的IP去请求外部服务,该如何设置呢? 分析 遇到一个实际的场景: 我们产品和其他产品联调,我们的服务…

PCL 计算线段之间的距离(3D)

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 这里我们设第一个线段的端点为 P 0 P_0 P

Linux中断管理:(一)中断号的映射

文章说明: Linux内核版本:5.0 架构:ARM64 参考资料及图片来源:《奔跑吧Linux内核》 Linux 5.0内核源码注释仓库地址: zhangzihengya/LinuxSourceCode_v5.0_study (github.com) 1. 中断控制器 Linux 内核支持众多…

规划控制如何兼顾安全与舒适性

规划控制如何兼顾安全与舒适性 附赠自动驾驶学习资料和量产经验:链接 **导读:**自动驾驶技术研发对于“安全第一”的追求是毋庸置疑的,但是这中间可能就忽视了舒适性。 因此,今天我想给大家分享的是,自动驾驶研发如何…

《Java面试自救指南》(专题一)操作系统

文章目录 力推操作系统的三门神课操作系统的作用和功能线程、进程和协程的区别并行与并发的区别什么是文件描述符操作系统内核态和用户态的区别用户态切换到内核态的方式大内核和微内核的区别用户级线程和内核级线程的区别线程的七态模型进程调度算法有哪些进程间通信的七种方式…

算法练习----力扣每日一题------3

原题链接 331. 验证二叉树的前序序列化 - 力扣(LeetCode) 题目解析 给一个字符串,判断它是否是一个二叉树的前序遍历.不同元素由逗号隔开,空节点用#字符代替. 递归解法 先假设每个元素都由一个字符构成(这样可以先不考虑烦人的多个字符情况) 在接口中调…

zookeeper如何管理客户端与服务端之间的链接?(zookeeper sessions)

zookeeper客户端与服务端之间的链接用zookeeper session表示。 zookeeper session有三个状态: CONNECTING, ASSOCIATING, CONNECTED, CONNECTEDREADONLY, CLOSED, AUTH_FAILED, NOT_CONNECTED(start时的状态) 1、CONNECTING 。 表明客户…

【Linux2】Linux的权限

思维导图 学习内容 在介绍完一些基本指令后,我们需要进行对权限以后一个全新的认识,比如文件的权限、目录的权限等等…… 学习内容 通过上面的学习目标,我们可以列出要学习的内容: shell命令以及运行原理Linux权限的概念Linux权…

【Blockchain】GameFi | NFT

Blockchain GameFiGameFi顶级项目TheSandbox:Decentraland:Axie Infinity: NFTNFT是如何工作的同质化和非同质化区块链协议NFT铸币 GameFi GameFi是游戏和金融的组合,它涉及区块链游戏,对玩家提供经济激励&#xff0c…

失物招领(源码+文档)

失物招领(小程序、ios、安卓都可部署) 文件包含内容程序简要说明含有功能项目截图客户端首页注册界面发布动态我的详细登录修改资料发布动态 管理端后台登录用户管理分类管理内容管理 文件包含内容 1、搭建视频 2、流程图 3、开题报告 4、数据库 5、参考…

听说小程序可以转换APP?

直接上传送门: 多端框架概述 多端框架概述 多端框架概述 Donut 多端框架是支持使用小程序技术和工具开发移动应用的框架,开发者可以一次编码,分别编译为小程序和 Android 以及 iOS 应用,实现多端开发;能帮助企业有效降…

Delphi10.2调用diocp开发的HTTP服务器,网址带中文参数用了UTF8Decode还是乱码的问题解决

由于项目需要,最近用 Delphi.10.2精简版404M的开发工具 维护了一个 网关程序,这个网关程序采用的是 HTTP服务器。核心是调用了 diocp这个开源项目,听说是支持高并发。接受到的数据用UTF8Decode处理后还是中文还是乱码。。。。。 http://127.…

施耐德 PLC 控制系统 产品 + 软件总体介绍 2020

参考 2020.7 官方说明视频:https://www.bilibili.com/video/BV1Mi4y1G7Qc/ 总体说明 施耐德作为工业控制界巨头(公认的几大巨头:西门子、AB、施耐德),PLC 控制器产品线很庞大,涵盖了高中低的完整产品线&…

webpack打包模块

webpack打包模块 一.webpack简介二.Webpack 修改入口和出口三.Webpack 自动生成 html 文件四.Webpack-打包 css 代码五.优化-提取 css 代码六.优化压缩过程七.Webpack-打包图片 一.webpack简介 1.Webpack 是一个静态模块打包工具,从入口构建依赖图,打包…

嵌入式C语言--GPT通用定时器

嵌入式C语言–GPT通用定时器 嵌入式C语言--GPT通用定时器 嵌入式C语言--GPT通用定时器一. GPT基本概念二. GPT的作用三. GPT通道的四个状态四. Continuous/One-Shot模式3.1)Continuous模式3.2)One-Shot模式 一. GPT基本概念 GPT即General Purpose Timer…

vue-列表渲染

在vue中 提供了 v-if v-else v-else-if v-show v-if v-if指令用于条件性渲染地渲染一块内容.这块内容只会在指令的表达式返回真值时会被渲染 实例: <template><h3>条件渲染</h3><div v-if"flag">看</div></template> <s…