C++ 中的草火算法

Posted

技术标签:

【中文标题】C++ 中的草火算法【英文标题】:Grassfire algorithm in C++ 【发布时间】:2010-11-18 12:51:34 【问题描述】:

有人知道如何在 C++ 中执行 Grassfire 吗?

我正在使用 OpenCV 库

【问题讨论】:

【参考方案1】:

距离变换有什么区别?有一个函数叫cv::distanceTransform,或许能帮到你。

【讨论】:

【参考方案2】:

this 链接中的伪代码呢?

是这样的:

 for each row in image left to right
    for each column in image top to bottom
      if(pixel is in region)
        set pixel to 1 + minimum value of the north east neighbours
      else
        set pixel to zero
      
    
  

  for each row right to left
    for each column bottom to top
      if(pixel is in region)
        set pixel to min(value of the pixel,1 + minimum value of the south west neighbours)
      else
        set pixel to zero
      
    
  

【讨论】:

【参考方案3】:

所以这是我目前用于 BLOB 提取的草火的修改版本。它需要一个数字化的(图像已被修改,使得所有值都是 1 或 0)并返回一个由最大的边界框组成的向量。该代码相当长,但它位于 src/cvLib.cpp 文件中https://github.com/bstadt/JHU-Robotics-compVis 的公共存储库中。另请注意,边界框是我自己编写的一个类,因此您也需要它。它的源代码在 src 文件夹中,头文件在 include 目录中,所以一定要抓住这两个。

【讨论】:

以上是关于C++ 中的草火算法的主要内容,如果未能解决你的问题,请参考以下文章

NOI-1.8-17-最好的草-矩阵找最大连接井号-递归

C++ 舍入算法中的 0.501,C++ 中的 Excel ROUND

为啥这个算法在 python 中的运行速度比在 C++ 中快得多?

C++中的Ciphersaber解密算法

两个列表中的匹配元素算法 C++

C++中的随机生成算法