【发布时间】:2016-12-30 10:28:36
【问题描述】:
我有一个程序可以处理大量 2d 灰度图像,目前在处理每个图像时多次使用 imgaussfilt() (Matlab 2015b)。就运行时间而言,这被证明是非常昂贵的。我有一些较大 sigma 值的实例,它们似乎更昂贵(即 imgaussfilt(image,[1,40])...imgaussfilt(image,[10,15]))。
有人知道高斯平滑的更快版本/方法吗?
我曾尝试使用 FFT/IFFT 方法,但这似乎比原生 MATLAB imgaussfilt() 功能花费的时间要长得多。
也尝试过在 X 和 Y 维度上依次运行高斯平滑,但这比原生 imgaussfilt() 功能花费的时间略长。
不同的平滑方法也可以正常工作,还有其他更快的方法吗? (尝试了 imboxfilt()...只是稍微快一点,但效果不佳)。
提前致谢
【问题讨论】:
-
您是否尝试过将
imfilter与高斯内核一起使用?imfilter使用英特尔集成性能原语进行高效过滤。 -
为什么在处理一张图像时需要“多次”应用这个过滤器?也许你一开始只能使用一次,尺寸合适
-
@rayryeng 我尝试使用高斯内核的 imfilter - 速度非常快,但仍然比 imgaussfilt() 稍慢
-
也许尝试使用较小的图像进行一些处理?使用金字塔?
-
缩小图像尺寸会影响您的结果吗?如果您必须使用不同的过滤器设置进行多次通过,即使是很小的尺寸减小也可能会为您提供所需的加速。
标签: matlab image-processing blur gaussian smoothing