【问题标题】:Method to fill in any size hole填充任意大小孔的方法
【发布时间】:2013-04-26 02:42:01
【问题描述】:

我正在做一个指纹识别项目,但我需要对图像进行预处理。我经历了以下过程。

1) 二值化

2) 过滤去除“阶梯”效应;即平滑

3) 细化线条

我正在添加一个我正在尝试开发的步骤,该步骤将填补细化后留下的任何漏洞。我正在尝试按如下方式完成此操作。

4a) 使用bwlabel 来查找区域(我可能会考虑使用bwmorp(...,'shrink') 只留下“斑点”,但这样做会稍微减小斑点的大小)。

4b) 找出所有没有最大面积的区域

4c) 使用这些区域的位置将这些“斑点”缩小为点。

但是如何在指定位置应用收缩?

二值化

过滤

变薄

补洞

【问题讨论】:

    标签: matlab image-processing shrink


    【解决方案1】:

    我不确定我是否正确理解了这个问题。但是你能不能对细化的图像进行补充,然后使用bwlabel。之后,计算属于每个标签的像素数。应用您的标准来选择标签并获取它们的位置。之后就可以使用imfill(bw,locations)命令了。

    【讨论】:

    • 好吧,我真正想做的不仅仅是填充孔,而是将孔缩小到一个点。正如您在上面的孔填充图像中看到的那样,我填充了一堆这些小孔。我希望能够对这些区域应用收缩并将它们收缩到一个点。然后用这个新创建的点替换填充的孔。我遇到的问题是修剪山脊以留下填充区域,同时避免填充区域的侵蚀(如果我使用侵蚀,山脊会消失但也会减小区域的大小)。
    • 试试这个。完成bwlabel 后,分别填充每个孔,然后使用bwmorph(image,'remove')bwmorph(image,'skeleton'),任何适合您的需要。对每个孔(即标签)重复此过程。效率极低,但截至目前,我想不出别的了。
    【解决方案2】:

    如果您想要缩小到某个点的区域,则计算该区域的质心。只需平均 blob 中每个点的 x 和 y 坐标即可。将区域像素设置为黑色,将质心设置为白色。

    我遇到的问题是修剪山脊以留下填充区域,同时避免填充区域的侵蚀(如果我使用侵蚀,山脊会消失但也会减小区域的大小)。

    您不必担心小区域的侵蚀,因为它对质心的影响很小,并且您的点最终仍会到达适当的位置。

    【讨论】:

    • 侵蚀的问题是我需要能够从原始图像中“减去”这些像素并用一个点替换它们。如果我腐蚀图像,我会丢失斑点中的一些像素。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-03
    • 1970-01-01
    • 2014-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-27
    相关资源
    最近更新 更多