[图像] 标注二值图像中的不同物体

来源:互联网 发布:淘宝订单导出不一样 编辑:程序博客网 时间:2024/06/04 20:13

         我们在计算二值图像的一阶矩、二阶矩性质时,实际上计算的是图像中所有“物体”的平均值,而我们更希望的往往是计算每个物体单独的值。这就需要我们把每个物体先区分开来。

        一种类似于找到图中所有联通分支的方法是,找到一个b(i,j) = 1的点(在二值图像中黑色的像素点),先给它一个标记,然后在它的邻域中递归搜索,标记那些同样满足b(i,j) = 1的点,不满足则退出递归。当这个过程结束了后,我们就标记完成了这个物体所有的像素点。这时候,我们还需要继续标记下一个物体,只需要扫描找到下一个没有被标注的,且值为1的像素点继续执行相同步骤即可。

        而对于图像中的背景而言,类似的,我们是从b(i,j) = 0的点开始搜索,在邻域中递归搜索满足b(i,j) = 0的点。


        那么,现在要考虑的是,什么是一个像素点的邻域。最常见的两种方法就是如下定义的4邻域和8邻域:

     

          这两种邻域的定义都有着一定缺陷。

          它们无法很好的识别如下的二值图像:

          0    1     0

          1     0     1

          0     1    0

        

        这个二值图像表达的是一个旋转45度角摆放的正方形,我们希望识别为1个物体,以及5个背景区域。用第一种方法可以正确识别5个背景区域,但是同样把物体识别为5个,第二种方法可以正确识别一个物体,但同样也把5个背景识别为1个。

        另外两种更好的邻域表达方式:

       

0 0