我有一些具有固定背景的图像和它们上面的单个对象,该对象在每个图像中放置在该背景的不同位置。我想找到一种方法来以无人监督的方式提取该对象的位置。例如,作为人类,我们会记录对象的 x 和 y 位置。当然,NN 没有 x 和 y 的概念,但我希望给定图像,NN 产生 2 个数字,尽可能地保留背景上物体的实际相对位置。例如,如果 3 个对象在一条直线上等距分布(在 3 个图像中),我希望 NN 为 3 个图像中的每一个生成的 2 个数字保持这种顺序,即使它们不会形成直线。它们可以形成一条奇怪的曲线,但只要顺序正确,就可以拓扑变换为正确的直线。有人可以向我推荐任何类似的论文/架构吗?谢谢!
从图像中获取对象的位置
人工智能
神经网络
卷积神经网络
图像识别
建筑学
2021-11-16 13:25:52
1个回答
正如评论中所说,我不会为此使用机器学习。
您可以使用 OpenCV 之类的工具来实现该结果。
例如:
- 获取“裸体”背景图片:如果没有,可以通过对每张图片取平均值来轻松计算:
background = np.mean(images, axis=0)
- 对于每个图像,计算图像和背景之间的像素差。
diffs = [img - background for img in images]
- Diff 的像素可以是负数,所以在转换为灰度之前取每个像素的绝对值。
- 如果一切顺利,您现在就有了一张暗噪图像,并且您的对象有一个明亮的轮廓。
- 设置一个阈值(即
threshold = diff.percentile(95)
)并制作一个二进制掩码,因此现在每个像素都表示1
图像轮廓和0
背景。 - 找到对象的质心(例如计算每个像素 = 1 的平均坐标)。你有它!
当然,我只是描述了一种清晰而简单的方法。但是您可以找到自己的最佳解决方案。
- ✅ 不需要训练神经网络
- ✅ 不需要标记数据
- ✅ 适用于任何一组图像/背景
- ✅ 精确坐标
- ✅ 易于制作、调试和适应。
- ✅ 跑得快
其它你可能感兴趣的问题