如何使用形状距离和通用接口在Opencv中查找Hausdorff距离?

巴拉吉河

我想找到包含轮廓组的两个Canny检测器输出图像之间的Hausdorff距离,以找到两个Shape的相似性。为此,我需要找到Hausdorff距离估计。Opencv是否实现了此功能?在《 Opencv API参考》中找到了此链接,但是我找不到在任何地方使用它的方法。谁能指导我如何使用此功能?

github上有一个很好的示例,但是您需要使用opencv3.0(master分支)。

实际上,hausdorff距离本身并不是一个大谜团,

// internal helper:
int distance_2( const std::vector<cv::Point> & a, const std::vector<cv::Point>  & b )
{
    int maxDistAB = 0;
    for (size_t i=0; i<a.size(); i++)
    {
        int minB = 1000000;
        for (size_t j=0; j<b.size(); j++)
        {
            int dx = (a[i].x - b[j].x);     
            int dy = (a[i].y - b[j].y);     
            int tmpDist = dx*dx + dy*dy;

            if (tmpDist < minB)
            {
                minB = tmpDist;
            }
            if ( tmpDist == 0 )
            {
                break; // can't get better than equal.
            }
        }
        maxDistAB += minB;
    }
    return maxDistAB;
}

double distance_hausdorff( const std::vector<cv::Point> & a, const std::vector<cv::Point> & b )
{
    int maxDistAB = distance_2( a, b );
    int maxDistBA = distance_2( b, a );   
    int maxDist = std::max(maxDistAB,maxDistBA);

    return std::sqrt((double)maxDist);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

仅使用距离和方位来查找位置?

Hausdorff距离目标检测

如何使用JGit查找提交距离?

查找使用纬度和经度之间的距离的SQL返回错误的距离

使用端点和凸出距离绘制圆弧。在OpenCV或PIL中

如何使用networkx查找与源节点的距离为2的节点?

在WPF中,如何使用实时图表设置点和列之间的最小距离?

查找给定距离和速度的碰撞时间

2列行之间的Hausdorff距离

如何使用python和opencv在图像上绘制两个轮廓,给定它们之间的轮廓距离为100像素

如何使用OpenCV查找从摄像机到对象/标记的距离和旋转?

opencv查找从特定点到图像中每个像素的距离?

Hausdorff距离结果在Meshlab中的含义

仅插入和删除查找距离的变化?

如何在opencv中制作颜色渐变的距离图像(Python)

如何使用QuickGraph库查找最昂贵(最高)的距离/路径?

如何使用精度和距离

在Java中,如何计算多个经度和纬度之间的距离?

如何在opencv中查找图像内像素之间的欧几里得距离

如何在OpenCV和C +++中找到图像中两个对象(点)之间的距离(以m和像素为单位的物理距离)?

如何在Google Places Api中同时按距离和使用半径排序?

如何在 MeshLab 中显示 Hausdorff 距离的热图?

如何使用从 fragcoord 到灯光位置的距离在 GLSL 中制作自定义灯光形状

向 Hausdorff 距离图添加图例

在networkx和python中查找距离内的节点

在 C 中的矩阵中查找距离

查找质心和点之间的距离

在 Opencv 中查找点之间的距离

使用 igraph 查找距离矩阵