c++ - 提高平均图像过滤速度的方法

标签 c++ opencv image-processing

平均图像滤波是一个很常用的图像预处理函数,关于平均滤波的简短介绍可以看here .在 Opencv 中,这是由 cv::blur 完成的.

当平均滤波的尺寸增大时,这个处理所花费的时间也会增加。提高平均滤波速度的常用方法可以分为两类:

所以这里我的问题是:通常使用什么方法来提高平均图像过滤的速度?如果有人研究过这个主题,每种方法的优缺点是什么?有人将 cv::blur 的速度与改进的平均图像过滤进行了比较吗?谢谢。

最佳答案

对于简单的平均过滤器,最好的选择是使用快速空间域优化,就像您链接的那样。另一个例子是 Integral Images .

基本思想是在过滤器框内部,相邻框之间共享某些总和,不需要再次计算。缺点是您需要额外的内存来存储这些中间值。优点是复杂度与内核大小无关(给定 N×N 图像,复杂度为 N * N * 常数)。

只有当您已经准备好图像 FFT 时,使用频域技术才方便,可能是因为其他类型的处理需要它。否则计算 2D FFT 是一个N * N * logN * constant 运算,因此优于空间优化滤波。

关于c++ - 提高平均图像过滤速度的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19997306/

相关文章:

c++ - 数组指针数组的析构函数

c++ - 此代码中是否存在数据竞争?

c++ - Stroustrup Ex.7, Chapter.4 - C++ 语法

c++ - 我可以获得opencv grabcut函数的轮廓吗?

matlab - 如何检测可以在蒙版上绘制的最大矩形?

java - 在java中将像素数据转换为图像

c++ - 什么是 undefined reference /未解析的外部符号错误以及如何修复它?

c++ - 错误:对cv::cudacodec::createVideoReader的 undefined reference

vector - 从 Mat OpenCV 获取非零索引

opencv - 检测图像的模糊程度