如果我有一个结构元素看起来像这个(原点位于SE的中心):
0 0 0
0 0 0
0 0 0
如果我对二进制图像执行侵蚀/扩张,结果将全部为0或1。
有人可以向我解释这个吗? (通过matlab检查)
非常感谢你。
答案 0 :(得分:2)
你有一个完全有效的SE。它是一个扁平的正方形,在每个图像处理库中都可以使用。
现在,了解平面和非平面结构元素(或结构化函数)之间的差异和相似性非常重要。相似之处在于它们在某个邻域上运行。对于elementar square元素,邻域可以用3x3矩阵表示,其中每个元素都在元素的邻域中(例如,对于菱形SE,它也将是3x3矩阵,但角落不属于邻里)。在Matlab中,这个特定的邻域关系由ones(3, 3)
或简称[1 1 1; 1 1 1; 1 1 1]
表示。平坦和非平坦SE之间的差异使得Matlab中的strel
函数成为现实。非平坦的SE意味着它可以不同地对待邻居,因此它不仅仅依赖于值0(侵蚀和扩张的定义被略微修改以处理这种情况)。例如,方形SE在Matlab中正确定义为strel('arbitrary', ones(3, 3), zeros(3, 3))
(指定zeros(3, 3)
,因为第二个参数基本上是一个错误,因为你说你没有邻居)。另一方面,可以用无限的方式定义非平面正方形,其中一个可以是strel('arbitrary', ones(3, 3), [-1 -1 -1; -1 0 -1; -1 -1 -1])
。
总结一下,您最有可能错误地使用strel
。