如何实现自定义细化算法?

时间:2015-02-07 21:04:37

标签: c++ algorithm opencv image-processing

我需要你在这个问题上的专业知识:我正在处理一个图像,并希望提取骨架。到目前为止,通过预处理,我可以达到2像素厚度的骨架。但是我真的想最小化骨架的大小,最终厚度为1.因此,我提出了以下算法,这对我来说很有意义。在我开始整个代码过程之前,我想摆脱一些怀疑。 让我解释一下:

我的算法如下:

  • 搜索图像像素(记住所描述的ROI充当滑动窗口)
  • 对于第一个像素(跳过边界像素)创建一个3x3的感兴趣区域(该像素是ROI的锚点(中心))
  • 该像素是否带有最大值? (使用指向w.r.t的8个邻居检查这个条件)

  • 同时获取前一个像素的右邻居的第二个3x3投资回报率

  • 这也是最大值吗?

现在创建以下逻辑:

  • 如果第一个ROI返回true且第二个ROI返回true
    • 将第一个ROI的中心设为true,并向右跳过1个像素
  • 如果第一个ROI返回true而另一个ROI返回false
    • 将第一个ROI的中心设为true并继续下一个像素

还有其他建议吗?我的想法是获得厚度为1的骨架。

0 个答案:

没有答案