matlab - 白色像素簇提取

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

我正在进行指纹毛孔提取项目,并停留在毛孔(白色像素簇)提取的最后阶段。我有两张输出图像,我们将从中获取毛孔,但不知道该怎么做..这两个图像的大小也不同..image1 的大小为 240*320,image2 的大小为 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(输出)显示了上面代码的结果图像。这些错误可能是由于两张图像的大小不同,我认为......所以我应该怎么做才能得到毛孔(白色簇)。请注意,第四张图片(预期)与输入图片不同,只是为了向您展示输出应该是什么样子...提前致谢...

最佳答案

我以前做过这种“类型”的特征提取。通常我是如何看到它完成的(我在某种程度上是我过去工作过的公司的这个过程的发明者)是:

1D Blob 检测:

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

2D Blob 相关性:

  • 现在有了 1D Blob 列表后,您需要通过查找相邻的 Blob 将 1D Blob 关联到 2D Blob

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

  • 像素是高于还是低于阈值的二元决策(最简单和最快)
  • 底部、中间或顶部过渡点,从黑到白/白到黑的过渡可能很慢或很快(这称为 transient 响应),也称为您正在查看的斜率为

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

关于matlab - 白色像素簇提取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22209308/

相关文章:

node.js - 聊天/系统通信应用程序(Nodejs + RabbitMQ)

hadoop - 集群性能可视化

matlab - 在 MATLAB 中对连通正方形进行聚类

matlab - Octave 中的函数句柄格式

python - 图像处理 : Problem with Fish measuring

python - 表示和解决给定图像的迷宫

c++ - 如何将 mat 转换为 array2d<rgb_pixel>?

jms - activemq 服务器如何知道何时将一个奴隶提升为主人?

java - 以编程方式(不进行字符串匹配)检查 JVM 是否使用 IPV6 或 IPV4

Matlab 除以 0 : Inf or -Inf