boxfilter盒子滤波

简介: **Boxfilter** 是图像处理中的优化技术,通过积分图实现,将O(MN)复杂度的像素和、方差运算降至O(1)。不同于均值滤波,Boxfilter不计算像素均值,而是直接累加邻域像素值。该方法适用于快速计算局部特征,但不支持多尺度。通过滑动矩形模板并更新中间变量缓冲区,高效地完成滤波操作。

boxfilter盒子滤波

   在模式识别领域,Haar特征是大家非常熟悉的一种图像特征了,它可以应用于许多目标检测的算法中。与Haar相似,图像的局部矩形内像素的和、平方和、均值、方差等特征也可以用类似Haar特征的计算方法来计算。这些特征有时会频繁的在某些算法中使用,因此对它的优化势在必行。Boxfilter就是这样一种优化方法,它可以使复杂度为O(MN)的求和,求方差等运算降低到O(1)或近似于O(1)的复杂度,它的缺点是不支持多尺度

1.基本原理

    与均值滤波不同的是,方框滤波不会计算像素的均值。在均值滤波中,滤波结果的像素值是任意一个点的邻域平均值,等于各邻域像素值之和除以邻域面积。而在方框滤波中,可以自由选择是否对均值滤波的结果进行归一化,即可以自由选择滤波结果是邻域像素值之和的平均值,还是邻域像素值之和。


积分图实现boxfilter


Boxfilter 的初始化过程如下:

1、给定一张图像,宽高为(M,N),确定待求矩形模板的宽高(m,n),如图紫色矩形。图中每个黑色方块代表一个像素,红色方块是假想像素。

2、开辟一段大小为 M 的数组,记为 buff, 用来存储计算过程的中间变量,用红色方块表示.

3、将矩形模板(紫色)从左上角(0,0)开始,逐像素向右滑动,到达行末时,矩形移动到下一行的开头(0,1),如此反复,每移动到一个新位置时,计算矩形内的像素和,保存在数组 A ( buff 只是用来缓存中间变量的)中。以 (0,0) 位置为例进行说明:首先将绿色矩形内的每一列像素求和,结果放在 buff 内(红色方块),再对蓝色矩形内的像素求和,结果即为紫色特征矩形内的像素和,把它存放到数组A中,如此便完成了第一次求和运算。

4、每次紫色矩形向右移动时,实际上就是求对应的蓝色矩形的像素和,此时只要把上一次的求和结果减去蓝色矩形内的第一个红色块,再加上它右面的一个红色块,就是当前位置的和了,用公式表示 sum[i] = sum[i-1] - buff[j] + buff[j+m].

5、当紫色矩形移动到行末时,需要对 buff 进行更新。因为整个绿色矩形下移了一个像素,所以对于每个buff[i], 需要加上一个新进来的像素,再减去一个出去的像素,然后便开始新的一行的计算了。

Image.png

相关文章
|
8月前
|
存储 并行计算 数据可视化
大模型应用:GPU的黑盒拆解:可视化看透大模型并行计算的底层逻辑.67
本文深入解析GPU核心架构与大模型算力优化原理,涵盖SM流式多处理器、显存、显存控制器、PCIe接口等关键组件,详解线程级/指令级并行及张量核心加速机制,并通过全流程耗时分析与任务拆分可视化,揭示“数据传输是主要瓶颈”的核心结论,助力高效部署大模型。
926 6
|
算法 计算机视觉
OpenCV(四十三):Shi-Tomas角点检测
OpenCV(四十三):Shi-Tomas角点检测
746 0
|
编解码 C++ Windows
QT软件开发: QProcess启动进程完成交互并获取输出
QT软件开发: QProcess启动进程完成交互并获取输出
3475 0
QT软件开发: QProcess启动进程完成交互并获取输出
|
5月前
|
SQL 人工智能 测试技术
Loop Engineering 与 Spec-Driven Development 结合下的 token 收敛
本文深度剖析Loop Engineering(循环工程)——2026年兴起的第四代AI工程范式:它并非取代Prompt/SDD,而是构建“目标→执行→验证→修正→再执行”的自主闭环,让AI自我迭代直至达标;同时直面Token爆炸痛点,结合SDD规范实现上下文收敛与成本可控。(239字)
|
7月前
|
人工智能 JavaScript 前端开发
从零开始:手把手教你用Vue构建完美复刻大模型打字效果的对话界面
本文深入解析AI对话应用中流式输出(Streaming)的实现原理与工程实践,涵盖SSE协议选型、Fetch+ReadableStream替代EventSource、Vue响应式流处理、Markdown实时渲染、光标动画、平滑滚动、AbortController中断、DOM性能优化及XSS防护等核心环节,助力打造专业级流式交互体验。(239字)
1052 0
关于 QtCreator中写Qt程序遇到printf不输出问题 的解决方法
关于 QtCreator中写Qt程序遇到printf不输出问题 的解决方法
|
5月前
|
人工智能 自然语言处理 算法
阿里云百炼Qwen 3.7 Plus与Max实测全解:性价比与多模态能力、成本深度对比
2026年,阿里云百炼平台推出的Qwen 3.7系列成为企业与开发者落地AI应用的核心选择,其中Qwen 3.7 Max与Plus作为两大旗舰版本,定位差异显著:Max是纯文本推理旗舰,专注高强度智能体与复杂逻辑任务;Plus则是多模态全能版,在保留强大文本能力的同时,补齐图像、视频理解能力,且价格大幅降低。本文基于2026年最新实测数据,从核心参数、文本能力、多模态能力、智能体表现、性价比与场景选型六大维度,全面解析两款模型的差异,为用户提供精准选型参考。
2300 0
|
Java Android开发 开发者
Android Studio Profiler Memory (内存分析工具)的简单使用及问题分析
Android Studio Profiler Memory (内存分析工具)的简单使用及问题分析
4177 0
Android Studio Profiler Memory (内存分析工具)的简单使用及问题分析
|
Ubuntu 安全 Linux
在Ubuntu 18.04上安装和配置VNC的方法
在Ubuntu 18.04上安装和配置VNC的方法
848 1
|
人工智能 数据处理 计算机视觉
AI计算机视觉笔记十六:yolov5训练自己的数据集
本文介绍了一种利用云服务器AutoDL训练疲劳驾驶行为检测模型的方法。由于使用本地CPU训练效率低下,作者选择了性价比高的AutoDL云服务器。首先,从网络获取了2000多张疲劳驾驶行为图片并使用labelimg软件进行标注。接着,详细介绍了在云服务器上创建实例、上传数据集和YOLOv5模型、修改配置文件以及开始训练的具体步骤。整个训练过程耗时约3小时,最终生成了可用于检测的模型文件。
1349 0