Steve用MATLAB进行图像处理

图像处理概念,算法,和MATLAB

膨胀和侵蚀中的垫值

博客阅读器dk问最近为什么假设图像外的值是当计算膨胀。我认为这个问题值得进一步探讨,因为它对某些计算具有实际意义。

假设我们从一个简单的4 × 4矩阵开始:

F = [22 23 15 16;24 25 14 15;20 18 17 23;19 16 15 20]
F = 22 23 15 16 24 25 14 15 20 18 17 23 19 16 15 20

现在考虑用一个3乘3的平面结构元素计算侵蚀。左上角的输出是什么?它是这9个值中的最小值:

????????22日23 ? ?24日25日

对于图像边界外的未知值我们用什么?假设我们将pad归零:

0 0 0 22 23 0 24 25

那么(1,1)输出值为0。事实上,如果图像像素是非负的,这是很常见的,那么将会有一个零值的单像素宽的边界一直围绕着输出图像的边缘。这叫做边界的工件,是不可取的。我们可以通过简单地在计算最小值时排除外部值来避免这个问题。侵蚀的数学等效是假设外部值都等于某个常数,保证大于或等于所有图像像素,如Inf:

25 . Inf Inf Inf Inf 22 23 Inf 24

在进行扩张时,为了避免边界伪影,用

-Inf -Inf -Inf -Inf 22 23 -Inf 24

类,大多数情况下不需要显式地使用值。当结构化元素不包括center元素时,会发生一种异常。然后有时值可以出现在输出中。

膨胀(f, [1 0 0])
ans = 23 15 16 -Inf 25 14 15 -Inf 18 17 23 -Inf 16 15 20 -Inf

类似地,大多数时候你实际上不需要显式地填充图像。例外情况是在计算膨胀(或侵蚀)序列时。在图像处理工具箱中,这经常发生,因为imdilate而且imerode利用“结构化元素分解”。也就是说,一个大的结构元素被分解成两个或更多的更小的结构元素,它们在数学上与原始结构等价。

这里有一个人为的例子来演示为什么需要显式填充来实现数学等价。

构造元素1将图像向左平移2像素。

Se1 = [1 0 0 0 0];

结构元素2将图像向右平移1像素。

Se2 = [0 0 1];

你会期望这两个结构元素的膨胀组合等价于一个单独的膨胀,其中一个结构元素平移了一个像素的图像:

Se3 = [1 0 0];

让我们试试没有填充的序列:

F1 = imdilate(f, se1)
f1 = 15 16 -Inf -Inf 14 15 -Inf -Inf 17 23 -Inf -Inf 15 20 -Inf -Inf
F2 = imexpand (f1, se2)
f2 = -Inf 15 16 -Inf -Inf 14 15 -Inf -Inf 17 23 -Inf -Inf 15 20 -Inf

现在用se3放大原始图像并比较:

F3 = imdilate(f, se3)
f3 = 23 15 16 -Inf 25 14 15 -Inf 18 17 23 -Inf 16 15 20 -Inf

它们不一样。为了使结果等价,您必须填充原始图像,执行膨胀序列,并对结果进行裁剪。

fp = padarray(f, [2 2], -Inf)
fp =负负负负负负负负负负负负负负负负负负无穷到22日23日15 16负负负负24日25日14 15负负负负20 18 17 23负负负负19 16 15 20负负负负负负负负负负负负负负负负负无穷
Fp1 = imdilate(fp, se1)
fp1 =负负负负负负负负负负负负负负负负无穷到22日23日15 16负负负负24日25日14 15负负负负20 18 17 23负负负负19 16 15 20负负负负负负负负负负负负负负负负负负负无穷
Fp2 = imdilate(fp1, se2)
fp2 =负负负负负负负负负负负负负负负负负无穷到22日23日15 16负负负负24日25日14 15负负负负20 18 17 23负负负负19 16 15 20负负负负负负负负负负负负负负负负负负无穷
fp2_裁剪= fp2(3:end-2, 3:end-2)
fp2_crop = 23 15 16 -Inf 25 14 15 -Inf 18 17 23 -Inf 16 15 20 -Inf
fp2_cropped isequal (f3)
ans = 1

每当imdilateimerode与分解的结构元素调用时,函数计算避免边界工件和衬垫所需的最小填充量,分别。

这是一个经典的速度与内存的权衡。利用结构化元素分解更快,但是存储中间填充数组需要更多的内存。




发布与MATLAB®7.4

|
  • 打印
  • 发送电子邮件

评论

如欲留言,请点击在这里登录到您的MathWorks帐户或创建一个新帐户。

Baidu
map