ordfilt2 到底是做什么的?

信息处理 matlab 过滤
2022-02-05 00:54:36

能否请您简单解释一下ordfilt2matlab中的函数中输入参数表示什么?

B=ordfilt2(A,Order,Domain)

我见过人们将此功能用作J = ordfilt2(I, 9, true(5))J=ordfilt2(I,25,ones(3,3))

但我不明白每个输入对图像I的作用以J作为输出..

非常感谢提前

1个回答

我自己对此很陌生,所以如果我弄错了,请纠正我。

使用您的示例,J = ordfilt2(I, 9, true(5)). 将以与 相同大小的块ordfilt2在二维数组上移动对于这些 5x5 块中的每一个,从最小到最大对所有元素进行排序。现在用一堆第 9 个最小元素的副本填充相应的块。Itrue(5)J

使用一个较小的例子,所以我有空间输入它:

I = [ 1 2 4 5 ;
      5 3 5 1 ;
      0 3 5 2 ;
      2 1 7 7 ];
J = ordfilt2(I,3, ones(2,2));

现在,让我们一次过几个街区。第一个ones(2,2)[1 2; 5 3]在左上角。如果我们对这些元素进行排序,我们会得到[1 2 3 5],并且由于我们正在寻找第三个最小的元素,因此对于 的 (1,1) 位置,我们会收到 3 的值J

J = [ 3 ? ? ? ;
      ? ? ? ? ;
      ? ? ? ? ;
      ? ? ? ? ];

接下来是I(1:2,2:3)块。对这些元素进行排序得到[2 3 4 5],所以第三个最小的是 4。现在我们J(1,2)用 4 替换。

J = [ 3 4 ? ? ;
      ? ? ? ? ;
      ? ? ? ? ;
      ? ? ? ? ];

继续运行此命令并比较 I、J 以了解发生了什么。要知道的另一件事是,输入矩阵在默认情况下会在右下角填充零。所以I(4:5,4:5)块是[ 7 0; 0 0]