opencv - 如何使用图像处理从俯 View 中找到铰链点或旋转轴点?

标签 opencv image-processing computer-vision

我手头有一个问题,我需要使用图像处理来检测/预测铰链点或旋转点轴的坐标。图片如下:

image enter image description here

我使用了一种方法,首先在配置文件中跟踪 RoI 中一些特征点围绕默认铰链坐标(手动输入)的圆周运动(弧形)。这些跟踪点的这种圆周运动发生在穿过铰链点的垂直轴周围。现在,我从它们的初始位置开始跟踪这些点,直到连杆与 y 轴成特定角度 (15°/20°),我在同一点的这些不同位置(开始和结束位置)之间绘制正割线并绘制它的垂直平分线理想地穿过(同心)圆的中心,这是理想的铰接点。

Eg:
y_intercepts calculated for each point
H0 (322, 42)                        
H1 (322, 64) (within tolerance, closest to GT)
H2 (322, 48)
H_avg (322,52)
H_groundtruth (x,y): (322, 61)

我们需要 +/- 3 像素的精度或公差。 现在,我们在这个理想场景中面临的实际工作问题是:

不同的跟踪点给出不同的潜在铰链点(垂直黄线上的不同点),(其中很少有非常接近地面实况(黄色圆圈)),但它们的加权/平均值(大绿色圆圈)偏离了标记。坦率地说,这是一个太多的问题,我们确实最接近地面实况,但我们不确定这些点中的哪一个最接近,因为我们不使用默认的 Hook 坐标(手动输入) 来自配置文件。

最佳答案

一种解决方案可能是使用已经实现的图像注册框架,例如 elastix。如果将其配置为刚性配准,则可以获得变换矩阵,从而获得旋转中心。

这里的问题是只有图像的一部分在移动。在进行配准之前,我会通过从两幅图像的减法计算掩码来简单地掩蔽感兴趣区域,以仅保留实际移动的部分。

这种方法可以获得亚像素精度。您也可以对多个角度重复它并对结果进行平均。除了求平均值,您还可以使用 RANSAC algorithm了解哪些铰链点关闭(异常值)并排除它们。

Here is an example how to do a simple rigid transformation with elastix.

希望对您有所帮助!

关于opencv - 如何使用图像处理从俯 View 中找到铰链点或旋转轴点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56982880/

相关文章:

c++ - Opencv:EM算法训练缓慢

matlab - 正射校正算法;拼接航拍图像

matlab - 在matlab中检测不规则线/折线

python - 如何在 OpenCV Python 中为深度图更改 cv2.StereoBM_create 的属性

Java Opencv 3.4.2 如何从 Mat 对象中提取不同的 channel ?

c++ - Android NDK 与 Gradle 中的 OpenCV 原生集成

python - 控制OpenCV凸包

python - Tensorflow 膨胀的行为不同于形态膨胀

android - 从Android中的图像进行数字检测

python - 使用 Conv3D 的 theano 实现的建议