gpt4 book ai didi

opencv - 如何使用形状距离和通用接口(interface)在 Opencv 中查找 Hausdorff 距离?

转载 作者:太空宇宙 更新时间:2023-11-03 22:01:11 24 4
gpt4 key购买 nike

我想找到包含一组轮廓的两个 Canny 检测器输出图像之间的 Hausdorff 距离,以找到两个形状的相似性。为此,我需要找到 Hausdorff 距离估计。 Opencv里面有实现这个功能吗?我找到了 this link在 Opencv API 引用中,但我找不到如何在任何地方使用它。谁能指导我如何使用此功能?

最佳答案

有一个nice sample on 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);
}

关于opencv - 如何使用形状距离和通用接口(interface)在 Opencv 中查找 Hausdorff 距离?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21482534/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com