在matlab中imfilter'复制'如何用于更大的过滤器?

时间:2017-10-18 22:00:26

标签: matlab

我正在读这个:

https://uk.mathworks.com/help/images/imfilter-boundary-padding-options.html

我正在努力了解它如何适用于5x5或7x7内核。假设在5x5内核中,你将在内核的顶部和右侧有一个额外的行和列,而不是链接中的图像。这需要什么价值?它能找到的最近的一个?对角线值(拐角处的值)怎么样?

1 个答案:

答案 0 :(得分:2)

来自imfilter中的'replicate'选项的文档,

  

假设数组边界外的输入数组值等于最接近的数组边界值。

通过使用正确的参数调用imfilter,您实际上可以看到padarray使用的确切数组。假设我们有一个5x5阵列:

im = reshape(1:25, 5, 5)
im =
    1    6   11   16   21
    2    7   12   17   22
    3    8   13   18   23
    4    9   14   19   24
    5   10   15   20   25

我们可以在每一边填充这个数组2(相当于使用5x5内核):

padarray(im, [2 2], 'replicate')
ans =
    1    1    1    6   11   16   21   21   21
    1    1    1    6   11   16   21   21   21
    1    1    1    6   11   16   21   21   21
    2    2    2    7   12   17   22   22   22
    3    3    3    8   13   18   23   23   23
    4    4    4    9   14   19   24   24   24
    5    5    5   10   15   20   25   25   25
    5    5    5   10   15   20   25   25   25
    5    5    5   10   15   20   25   25   25

将行/列间隔开,以便您可以更轻松地查看原始数组:

1    1       1    6   11   16   21      21   21
1    1       1    6   11   16   21      21   21

1    1       1    6   11   16   21      21   21
2    2       2    7   12   17   22      22   22
3    3       3    8   13   18   23      23   23
4    4       4    9   14   19   24      24   24
5    5       5   10   15   20   25      25   25

5    5       5   10   15   20   25      25   25
5    5       5   10   15   20   25      25   25

您还可以通过在其中一个角落创建一个1个值的内核来验证这一点:

im = reshape(1:25, 5, 5)
im =
    1    6   11   16   21
    2    7   12   17   22
    3    8   13   18   23
    4    9   14   19   24
    5   10   15   20   25

k = zeros(5); k(1,1) = 1
k =

   1   0   0   0   0
   0   0   0   0   0
   0   0   0   0   0
   0   0   0   0   0
   0   0   0   0   0

imfilter(im, k, 'replicate')
ans =
    1    1    1    6   11
    1    1    1    6   11
    1    1    1    6   11
    2    2    2    7   12
    3    3    3    8   13

当然,这只显示9x9填充数组的左上角5x5子阵列,但是通过在不同角落重复1的过程,您可以看到整个数组。