- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有2张图像,它们具有相同的形状,但排列在不同的位置。我想正确匹配那些图像。
执行的步骤...
def modified_hausdorff(A,B):
D = cdist(A,B) #euclidean distance
fhd = np.mean(np.min(D,axis=0))
rhd = np.mean(np.min(D,axis=1))
return max(fhd,rhd)
最佳答案
这是双向任务。
前进方向
1.翻译
对于每个轮廓,计算其moment。然后针对该轮廓中的每个点,将其平移一下,即contour.point[i] = contour.point[i] - contour.moment[i]
。这会将所有轮廓点移动到原点。
PS:您需要跟踪每个轮廓的产生力矩,因为它将在下一部分中使用
2.旋转
使用新翻译的点,计算其rotated rect。这将为您提供旋转 Angular 。根据该 Angular ,您需要计算要旋转此轮廓的新 Angular 。 this answer会有所帮助。
达到新 Angular 后,计算rotation matrix。请记住,这里的中心将是起点,即(0, 0)
。在计算旋转矩阵时,我没有考虑缩放(金字塔起作用的地方),因此我通过了1。
PS:您需要跟踪每个轮廓的生成矩阵,因为它将在下一部分中使用
使用该矩阵,可以继续旋转轮廓线中的每个点,如here *所示。
完成所有这些操作后,您可以继续计算Hausdorff距离并找到通过您设置的阈值的轮廓。
后退方向
在第一部分中完成的所有操作都必须撤消,以便我们将有效的轮廓绘制到摄像机的提要上。
1.旋转
回想一下,每个检测到的轮廓都会产生一个旋转矩阵。您要撤消有效轮廓的旋转。只需执行相同的旋转,但使用inverse matrix即可。
For each valid contour and corresponding matrix
inverse_matrix = matrix[i].inv(cv2.DECOMP_SVD)
Use * to rotate the points but with inverse_matrix as parameter
cv2.DECOMP_SVD
也会产生一个逆矩阵。
Create a pyramid consisting of n layers
For each layer in n
Find contours
Translate the contour points
Rotate the contour points
templ_contours
中。因此,如果我说
templ_contours[0]
,这将为我提供金字塔等级0的旋转轮廓。
transCont
,
rotCont
和
moment
中。
image_contours = Find Contours
for each contour detected in image
moment = calculate moment
for each point in image_contours
transCont.thisPoint = forward_translate(image_contours.thisPoint)
rotCont.thisPoint = forward_rotate(transCont.thisPoint)
for each contour_layer in templ_contours
for each contour in rotCont
calculate Hausdorff Distance
valid_contours = contours_passing_distance_threshold
for each point in valid_contours
valid_point = backward_rotate(valid_point)
for each point in valid_contours
valid_point = backward_translate(valid_point)
drawContours(valid_contours, image)
关于python - 使用修正的Hausdorff距离查找形状,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46776280/
我一直在努力尝试实现描述的大纲算法 here和 here . 论文的总体思路是确定二值图像的豪斯多夫距离,并用它从测试图像中找到模板图像。 对于模板匹配,建议构建image pyramids连同滑动窗
我试图找到两个网格之间的偏差。例如在 3d 空间中定义的两组点之间的差异,我计划使用一些 3d 可视化工具来可视化距离,例如QT3d 或一些基于开放式 gl 的库。 我有两组网格,基本上是两个 .ST
我必须为 2 个网格实现 Hausdorff 距离。网格是人体器官的不同分割结果,我必须比较它们,一个网格是黄金分割。第二个是分割算法的结果。 我将使用 Hausdorff 距离,但在理解我必须做什么
我对计算由顶点定义的 2 个多边形(特别是几乎是矩形的四边形)之间的 Hausdorff 距离很感兴趣。它们可能会重叠。 回想 $d_H(A,B) =\max(d(A,B), d(B,A))$ 其中
我有多个网格(numpy 数组 [Nk,Ny,Nx])并且想使用 Hausdorff 距离作为这些网格相似性的度量。 scipy 中有几个模块(scipy.spatial.distance.cdist
我想使用 Hausdorff 距离作为训练指标,但我刚刚找到了 Weighted_Hausdorff_loss并将其用作医学图像分割的指标。 import math import numpy as n
使用 MeshLab 中的过滤器 Sampling->Hausdorff Distance 我计算了网格和目标网格之间的距离。 如何保存点到点距离并将其呈现在热图上或将其绘制在直方图上? 最佳答案 如
我正在尝试在 CGAL::Surface_mesh_3 数据结构网格上使用 approximate_Hausdorff_distance,但经过 +- 30 秒的计算后,我每次都得到错误的分配。两个网
我想找到包含一组轮廓的两个 Canny 检测器输出图像之间的 Hausdorff 距离,以找到两个形状的相似性。为此,我需要找到 Hausdorff 距离估计。 Opencv里面有实现这个功能吗?我找
我是一名优秀的程序员,十分优秀!