使用Matlab进行形态学操作

时间:2014-09-05 03:31:32

标签: matlab image-processing mathematical-morphology

问题在于:

相机拍摄一分钱,一角硬币和四分之一的图像I 背景和硬币不重叠。假设阈值处理成功创建了二进制映像B 硬币区域为1,背景为0。

您将获得已知直径的硬币d_pd_dd_q(以像素为单位)(请注意d_d < d_p < d_q)。我如何使用形态学操作(扩张,侵蚀,开放和 关闭)和逻辑和设置操作(AND,OR,NOT和设置差异),以生成三个二进制输出图像PDQ,其中P应该只包含一分钱,D应该只包含一分钱,Q应该只包含四分之一?

任何人都可以提供代码或一些提示吗?提前谢谢!

1 个答案:

答案 0 :(得分:3)

这显然看起来像家庭作业所以我不会为你写任何代码,但我会给你一些提示,以推动你朝着正确的方向前进。你所描述的情况是高度理想化的,并不能反映现实世界的情况......这实际上很棒,因为它使编码变得更加简单。我将假设图片是用硬币直接在表面上拍摄的,而不是一个角度。

  1. 您已经知道每个硬币的直径,并且因为直径以像素为单位,这使得这个问题变得更加容易。因此,您可以指定三个圆形的结构元素,每个硬币具有相同的直径。

  2. 首先使用最大的结构元素B进行形态开放,即四分之一。开口是侵蚀,然后是扩张。关于侵蚀应该知道的一件事是,任何小于结构元素的对象都会消失,而那些较大的对象将保留对象中的像素。因此,通过关闭,您将删除一分钱和一角钱,而四分之一将完全重建。打开的一个好处是,如果你的结构元素小于对象本身,那么做一个开口应该保持对象相同,前提是结构元素和对象遵循或多或少相同的特征。因为你的结构元素是圆形的,硬币也是如此,我们很高兴。因此,这是您的第一张图片Q

  3. 接下来,使用第二大结构元素(即便士),并在图像B上打开一个空格。现在会发生的是,一分钱应该消失,而四分之一和便士应该仍然存在。因此,请在此图像与Q之间进行设置差异。我们的结果只是剩下的一角钱,所以这是P

  4. 最后,对于硬币,你实际上甚至不需要做任何形态学。执行逻辑OR操作以合并季度Q和便士P以获取合并图像。之后,在原始图像B和此合成图像之间进行设置差异。然后你将孤立一角钱,现在是D


  5. 这应该足以让你入门。祝你好运!