用MATLAB进行图像处理

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

扩张algorithms-Introduction

根据Cris Luengo的评论反馈于9月4日更新。

今天,我将开始一个新的系列,涵盖执行形态扩张(和侵蚀,这是非常相似的)的一些基本算法的概念。大多数时候,当人们谈到图像膨胀时,他们指的是对每个像素的邻居进行局部最大运算的膨胀形式。例如,这里是如何计算每个图像像素的局部最大值,该像素和它的8个邻居:

=魔法(5)
A = 17 24 18 15 23 5 7 14 16 4 6 13 20 22 10 12 19 21 11 18 25 2 9
se = 1 (3)
Se = 111 111 111 111 111
B =直接插入(A, se)
B = 24 24 24 16 16 24 24 24 22 23 23 21 22 22 22 18 25 25 22 22 22 22 22 25 21

最大算子所涉及的邻域像素集合形成一个形状,称为结构化元素.结构元素不必是方形的,如上所述。下面是一个3像素的短线条:

Se = [111 1];B2 = imdilate(A, se)
B2 = 24 24 24 15 15 23 23 14 16 16 6 13 20 22 22 12 19 21 21 21 18 25 25 25 9

让我们考虑一下计算膨胀需要多长时间。假设一幅图像有P个像素,构成元素包含Q个邻居。计算特定像素的输出涉及Q内存读取和Q比较。因此,我们可以期望计算时间与Q成正比。

我们可以尝试使用不同大小的方形结构元素来验证这种行为。

在一个小的样本图像中读取并复制它,使其成为1k乘1k%测试图像。我= repmat (imread (“rice.png”)、4、4);使用一组方形结构元素测量膨胀时间%大小范围从5 * 5到97 * 97。w = 5:4:97;每个结构元素的邻居数量Q将为% w ^ 2。我们猜测运行时间是成比例的% Q。Q = w。^ 2;初始化包含记录时间的向量。* = [];工作= w不是很多MATLAB用户熟悉for循环%以上构造。我给第一个发一件MATLAB的t恤%为这篇文章添加简短、清晰、和正确的解释。Se = strel(ones(wk, wk));f = @()直接(I, se);*时间(结束+ 1)= (f);结束plot(Q, times) ylim([0 1.5*max(times)])

这个图看起来几乎是恒定的,可能只是随着Q的增加而增加。

那么,imdilate不知何故,计算膨胀的速度比预期的要快?

这是本系列的主题。下次我们再深入探讨。




MATLAB®7.6发布

|
  • 打印
  • 发送电子邮件

评论

要留下评论,请点击在这里以登录您的MathWorks帐户或创建一个新的帐户。