我正在进行指纹毛孔提取项目,并停留在毛孔(白色像素簇)提取的最后阶段。我有两张输出图像,我们将从中获取毛孔,但不知道该怎么做..这两个图像的大小也不同..image1 的大小为 240*320,image2 的大小为 230*310..这是我的图像..
image 1 (240*320) image2 (230*310)
这是我正在做的提取白色毛孔簇的工作..
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)
图像 3(输出)显示了上面代码的结果图像。这些错误可能是由于两张图像的大小不同,我认为......所以我应该怎么做才能得到毛孔(白色簇)。请注意,第四张图片(预期)与输入图片不同,只是为了向您展示输出应该是什么样子...提前致谢...
最佳答案
我以前做过这种“类型”的特征提取。通常我是如何看到它完成的(我在某种程度上是我过去工作过的公司的这个过程的发明者)是:
1D Blob 检测:
- 从左到右(或从右到左)逐像素移动每一行
- 如果您从一个黑色像素移动到它右边的一个像素,在那里您过渡到您对白色的定义(由阈值设置),然后标记那个点
- 从黑色到白色的过渡,您现在集中搜索白色到黑色的过渡
- 当发现白到黑时,将黑到白过渡边界和白到黑过渡边界配对成(我称之为)“一维 Blob ”并存储在一维 Blob 列表中
2D Blob 相关性:
- 现在有了 1D Blob 列表后,您需要通过查找相邻的 Blob 将 1D Blob 关联到 2D Blob
您可以通过多种不同的方式定义边界:
- 像素是高于还是低于阈值的二元决策(最简单和最快)
- 底部、中间或顶部过渡点,从黑到白/白到黑的过渡可能很慢或很快(这称为 transient 响应),也称为您正在查看的斜率为
在你的情况下,它看起来好像你的图像是真正的二元图像(黑色和白色,没有灰色阴影),所以二元阈值处理就可以正常工作。
关于matlab - 白色像素簇提取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22209308/