【问题标题】:OpenCV - how to crop out the rear of a truck in a scene?OpenCV - 如何在场景中裁剪卡车的后部?
【发布时间】:2017-11-30 12:56:40
【问题描述】:

目前我正在处理大量看起来像这样的图像:

我想像这样裁剪卡车后部:

以下是我面临的一些挑战:

  • 卡车可以是任何颜色
  • 场景可以是白天也可以是夜晚
  • 背景可以有很大的不同(树木、灌木丛、道路、天空、 等)

我有以下工作对我有利:

  • 卡车总是会填满大部分图像
  • 相机的分辨率和质量至少和这个一样好 示例图片
  • 如果在晚上,卡车后部的照明会相对较好 泛光灯或类似物

到目前为止,我很难有很多工作要做。以下是我尝试过的一些事情:

  • 高斯模糊/侵蚀/膨胀/打开/关闭(两者 在进入单个频道之前和之后,请参阅下一个要点)
  • 转换为灰度
  • 打破 B、G、R 通道
  • 打破 H、S、V 通道
  • 打破 L、A、B 通道
  • 在我尝试过的上述 10 个频道中的每一个上:
  • cv::threshold()
  • cv::adaptiveThreshold()
  • cv::Canny()
  • cv::floodFill()
  • cv::watershed()

这些都没有产生看起来很有希望的结果。

任何人都可以提供任何替代建议吗?不同的方向?也许我错过了另一个有用的预处理步骤?我不确定下一步该去哪里。

【问题讨论】:

  • 卡车后部是否有可以注册的特定功能?例如公司标志,还是左边的数字?
  • 很遗憾,没有,预告片可以适用于许多公司中的任何一家。徽标可以不同,数字可以在任何地方。
  • 听起来像是机器学习的工作。
  • 如果您可以再发布一些示例图片(以了解图片的多样性),那就太好了。
  • 您是否尝试过任何深度学习对象检测 API 来解决此问题?应该很快就能比较结果。

标签: opencv computer-vision


【解决方案1】:

我过去曾尝试过类似的事情。

设置阈值和检测线条不适用于所有图像,因为它们会随着照明、背景等的变化而变化很大。

解决方案:

选择深度学习模型。 最初使用大约 1000 张图像训练您的模型。输入为图像,输出为裁剪区域的坐标。

因为作为输出,您将获得矩形的坐标。使用这些坐标裁剪区域。 详情请查看this

【讨论】:

  • 感谢您的回复,我不知道为什么有些混蛋不赞成您的回复。我想得越多,图像中的可变性就足以使深度学习方法似乎是必要的。我想我会尝试让 TensorFlow 来解决这个问题,看看我能想出什么。该链接也很有帮助。
  • 非常感谢 :) 很高兴你发现这很有帮助
  • 这是不包含代码的实际有用答案的一个很好的例子。 SO上有一个趋势是对没有代码的答案进行投票,希望版主能够注意这一点。
【解决方案2】:

第一个评论,你真的需要自动剪切吗?

如果您的大量图像少于 10000,那么您应该手动完成。 如果数量大于这个数字并且可以加班增加,那么您应该构建软件。

其次,根据您的条件,简单的阈值永远不会起作用。一个简单的阈值处理起来太复杂了。

在我看来,最简单的方法是先分割你的图像,然后切断面积最大的分割。 您还可以使用更复杂的方法,例如训练检测器来检测卡车。 (SSD是目前最好的物体检测器)

【讨论】:

  • 是的,我需要自动裁剪卡车,当卡车经过时,图像将来自摄像机(为了避免提及任何具体的公司,我不想详细说明)。感谢您的建议,看来需要一种深度学习方法。
【解决方案3】:

一个简单的方法是在执行 Canny 边缘检测后执行霍夫线检测(cv::HoughLines),并选择使用检测到的接近水平和垂直线可以形成的最大矩形。

虽然基于阈值的方法可能适用于某些图像,但它们会忽略高级信息,例如容器背面的矩形形状。

This page 有一个可以作为起点的工作示例。

如果您需要更多详细信息,我会编辑问题。

【讨论】:

  • HoughLines() 和 HoughLinesP() 都采用二值图像,因此我必须使用我在帖子中提到的一种方式转换为一个通道,然后再转换为二值图像以使用其中之一这些。正如 janu777 所提到的,图像中可能存在如此多的可变性,因此不可能获得 4 条干净、一致的线条。也许我应该在我的原始帖子中进一步澄清这一点。
  • 要获得霍夫线,您需要一个二进制图像,但它不是通过阈值创建的。最好使用 Canny 边缘检测创建。边缘检测比阈值检测对光照变化更稳健。我更新了答案以反映这一点。
  • 谢谢,但我在原帖中已经提到我尝试了 cv::threshold、cv::adaptiveThreshold 和 cv::Canny()
猜你喜欢
  • 2014-07-13
  • 1970-01-01
  • 2019-08-25
  • 2014-07-16
  • 1970-01-01
  • 2020-10-11
  • 1970-01-01
  • 2015-06-05
  • 2021-11-16
相关资源
最近更新 更多