如果我有一个结构元素,看起来像这样(原点位于 SE 的中心):
0 0 0
0 0 0
0 0 0
如果我对二进制图像执行腐蚀/膨胀,结果全是 0 或 1。有人可以向我解释一下吗?(通过matlab检查)
非常感谢。
如果我有一个结构元素,看起来像这样(原点位于 SE 的中心):
0 0 0
0 0 0
0 0 0
如果我对二进制图像执行腐蚀/膨胀,结果全是 0 或 1。有人可以向我解释一下吗?(通过matlab检查)
非常感谢。
你有一个完全有效的 SE。它是一个扁平的正方形,在每个图像处理库中都被普遍接受和使用。
现在,了解平面和非平面结构元素(或结构函数)之间的区别和相似性很重要。相似之处在于它们在某个社区内运作。对于基本正方形元素,邻域可以用 3x3 矩阵表示,其中每个元素都在元素的邻域中(例如,对于菱形 SE,它也是一个 3x3 矩阵,但角不属于邻里)。在 Matlab 中,这种特定的邻域关系由ones(3, 3)
或简单地表示[1 1 1; 1 1 1; 1 1 1]
。扁平化和非扁平化 SE 的区别在于strel
Matlab中的功能就是这样。非平坦 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
不正确。