白色像素聚类提取

时间:2014-03-05 21:08:50

标签: matlab image-processing cluster-computing feature-detection

我正在进行指纹孔隙提取项目并且停留在毛孔的最后阶段(白色像素簇)提取。我有两个输出图像,我们将从中获得毛孔,但不知道如何去做..这两个图像的大小不同..图像大小为240 * 320,图像大小为230 * 310 ..这是我的图像..

           image 1 (240*320)                         image2 (230*310)

image1 image2

这是我正在做的提取白色毛孔簇..

for i = 1:230 
    for j = 1:310
        if image1(i,j)==1 && image2(i,j)==1
            result(i,j)=1;
        else
            result(i,j)= 0;
        end;
    end;
end;
figure(4);imshow(result,[]);

这是我的输出

      output (230*310)            expected (different than input image)

enter image description here image 4

图像3(输出)显示从上面的代码得到的图像..这些错误可能是由于我认为两个图像的大小不同...所以我该怎么做才能得到毛孔(白色簇)..请注意,第四张图像(预期)与输入图像不同,只是为了向您显示输出的样子......提前感谢..

1 个答案:

答案 0 :(得分:2)

我以前做过这种“类型”的特征提取。通常情况下我是如何看待它的(我曾在某家公司担任过这个过程的发明者):

1D Blob检测:

  • 从左到右(或从右到左)逐个像素地移动每一行
  • 如果您从黑色像素移动到其右侧的像素,您将转换为白色定义(由阈值设置),然后标记该点
  • 从黑色到白色的过渡,您现在可以集中搜索白色到黑色的过渡
  • 当发现白色到黑色时,将黑色到白色的过渡边界和白色到黑色的过渡边界配对成(我称之为)“1D blob”并存储在1D Blob列表中

2D Blob相关性:

  • 现在有了1D Blob的列表后,你需要通过寻找相邻的blob来将1D Blob关联到2D blob中

您可以通过多种不同方式定义边界:

  • 二进制决定像素是高于还是低于阈值(最简单,最快)
  • 转换的底部,中间或顶部,转换可能从黑到白/白到黑或快(这称为瞬态响应),也称为您正在寻找的斜率对

在你的情况下,它看起来好像你的图像是真正的二进制(黑色和白色没有灰色阴影),所以二进制阈值处理工作得很好。