|
|
1
4
解决这个问题的方法是找到一种方法来组合来自a和b的信息,从而使过滤本身变得容易。 我首先想到的是沿着三维连接A和B,并通过一个过滤器屏蔽,它将从“A-Slice”中获取8个元素,从“B-Slice”中获取中心元素。不幸的是,这不受Matlab的支持。 虽然nlfilter只适用于二维图像,但它允许您指定任何用于过滤的函数。因此,你可以创建一个函数,这个函数可以通过某种方式查找a和b的正确值,因此我找到了我的第一个解决方案。 创建一个新数组c,该数组包含每个元素的元素索引,即第一个元素是1,第二个元素是2,等等。然后运行nlfilter,它接受一个3x3滑动窗口,并将窗口内的c值传递给过滤函数ffn。ffn是一个匿名函数,它调用CrazyFilter,并且已经初始化,以便在每次调用时传递A和B。CrazyFunction从C的滑动窗口获取值,这些值只是索引到A和B中,并从A和B中收集值。 第二种解决方案是完全相同的,只是不移动滑动窗口,而是创建一个新数组,在每列中的每个可能位置都有滑动窗口的内容。如果窗口重叠,则列数组将比原始数组大。同样,您只需要使用列数组c的值(它是a和b的索引)就可以在相关位置查找a和b的值。 编辑 如果你有足够的内存,im2col和col2im可以大大加快这个过程
旧版本(使用较少内存,可能需要填充)
|
|
|
2
2
如果您的数据是
unsigned integer type
(就像典型的灰度图像类型
下面的示例应用上述形式的中值滤波器(3乘3的元素数组
|
|
|
SH_IQ · 在MATLAB条形图中为特定条形图颜色添加其他图例 1 年前 |
|
|
Vlad Vadean · Matlab数组乘法 1 年前 |
|
|
Catalin Baba · 如何在MATLAB中连接两个向量 1 年前 |
|
|
servoz · 在matlab和python中创建类似的矩阵对象 2 年前 |
|
|
CircAnalyzer · MATLAB中字符串的十进制数列表 2 年前 |
|
|
I Like Algebra · 在Julia中交换行的最简单方法 2 年前 |