为什么Imagemagick的形态学膨胀算法与数学定义不同?

时间:2019-11-20 05:04:29

标签: imagemagick image-morphology mathematical-morphology dilation

原始图片

0 0 0
0 1 0
0 0 0

生成者:

$ convert -size 3x3 xc:black -fill white -draw 'point 1,1' origin.png

扩张过程

使用2x1矩形作为具有中心点(0,0)的内核:

处理者:

$ convert origin.png -morphology Dilate Rectangle:2x1+0+0 output.png

预期产量

0 0 0
1 1 0
0 0 0

实际输出

0 0 0
0 1 1
0 0 0

问题

为什么输出意外?我不知道ImageMagick如何处理膨胀。

这是我的理解:

当内核的中心点迭代到原始图像的位置(0,1)时:

我认为(0,1)应该在执行AND操作后1

1 个答案:

答案 0 :(得分:-1)

2x1内核的“中心点”在像素之间。因此,您必须选择哪个是官方的“起源”。这是任意的。但是,在定义内核时,可以在ImageMagick中设置原点。参见https://imagemagick.org/Usage/morphology/#user

例如对于2x1内核,它可以是

2x1+0+0: 0,1

or

2x1+1+0: 0,1