【发布时间】:2014-02-18 12:58:50
【问题描述】:
因此,通常使用四个 for 循环来实现最小/最大过滤器的效率非常低。
for( index1 < dy ) { // y loop
for( index2 < dx ) { // x loop
for( index3 < StructuringElement.dy() ) { // kernel y
for( index4 < StructuringElement.dx() ) { // kernel x
pixel = src(index3+index4);
val = (pixel > val) ? pixel : val; // max
}
}
dst(index2, index1) = val;
}
}
但是,这种方法效率极低,因为它会再次检查以前检查过的值。所以我想知道有什么方法可以在下一次迭代中使用之前检查的值来实现这一点?
可以对结构元素大小/原点进行任何假设。
更新:我特别想知道任何关于这种或类型实施的见解:http://dl.acm.org/citation.cfm?id=2114689
【问题讨论】:
-
这不是一个完整的解决方案,只是一个想法:我认为该操作是可分解的,即您可以通过执行 3x1 扩张和 1x3 扩张来获得 3x3 扩张一行,这要快得多。一个 1x9 的膨胀可以分解成两个 1x3 的膨胀。 (我知道这适用于高斯模糊,但不确定它是否适用于腐蚀/膨胀。)
标签: algorithm math computer-vision filtering convolution