如何使用 EmguCV C# 跟踪 4 个特定斑点的移动?

问题描述 投票:0回答:0

我的学校项目的目标是比较晶格结构的 2 个图像,然后计算中心变形。 首先,我将我的图像二值化并应用侵蚀过滤器以获得我的格子的所有节点。 然后我使用

SimpleBlobDetector
进行 blob 检测以获得我所有节点的坐标,然后我在中心附近选择 4 个 blob 并保存它们的中心坐标和它们的数量。

晶格结构图:

二值化、腐蚀和轮廓检测后的图像:

使用的过滤器: 二值化

CvInvoke.AdaptiveThreshold(imgGray, imgBinarize, 255, Emgu.CV.CvEnum.AdaptiveThresholdType.GaussianC, Emgu.CV.CvEnum.ThresholdType.Binary, 120, 0);

侵蚀

imgErode = imgBinarize.Erode(6);

问题是我认为这会很简单,因为我认为你可以只取 4 个斑点的数量并比较基本图像和变形图像之间的坐标,然后使用毕达哥拉斯定理计算距离以获得运动以像素为单位。但是在尝试这种方法后,我发现几乎所有斑点的数量都发生了变化,因此无法正确取数。正如您在图像中看到的,我想要比较的斑点是左侧图像中绿色圆圈(斑点 122)中的斑点,但在右侧的变形图像中,斑点 122 在绿色圆圈中,因此它不对应上一个。

目前我没有任何解决方案,因为我对图像处理有点陌生,所以我很乐意接受任何帮助,提前谢谢你。

c# image-processing emgucv
© www.soinside.com 2019 - 2024. All rights reserved.