图像处理:针对“可口可乐罐”识别的算法改进

17 浏览
0 Comments

图像处理:针对“可口可乐罐”识别的算法改进

在过去的几年里,我参与过的最有趣的项目之一是一个关于图像处理的项目。该项目的目标是开发一个系统,能够识别可口可乐\'罐\'(请注意,我强调了单词\'罐\',一会儿您将明白为什么)。您可以在下面看到一个示例,其中可以在绿色矩形内识别罐的比例和旋转。

\"Template

该项目的一些限制:

  • 背景可能非常嘈杂。
  • 罐子可能具有任何比例或旋转甚至方向(在合理的限制范围内)。
  • 图像可能有某种程度的模糊(轮廓可能不完全直线)。
  • 图像中可能有可口可乐瓶,算法应仅检测罐子!
  • 图像的亮度可能变化很大(因此您不能太依赖颜色检测)。
  • 罐子可能在侧面或中间部分被部分隐藏,可能在瓶子后部分隐藏。
  • 图像可能根本没有罐子,在这种情况下,您必须什么都不找到并写一个说明。

所以你可能会遇到像这样棘手的事情(在这种情况下,我的算法完全失败):

\"Total

我做这个项目已经有一段时间了,非常开心做这件事,我有一个不错的实现。以下是我实现的一些详细信息:

语言:使用OpenCV库在C++中完成。

预处理:对于图像的预处理,即将图像转化为更原始的形式以供算法使用,我采用了两种方法:

  1. 改变颜色空间从RGB到HSV,并基于\"红色\"色调进行过滤,饱和度超过一定阈值以避免类似橙色的颜色,同时过滤低值以避免暗调。最终结果是一个二进制的黑白图像,其中所有的白像素都代表了符合这个阈值的像素。显然,图像中还有很多垃圾,但这减少了你需要处理的维度。
  2. 使用中值滤波(取邻居的所有像素值的中位数并将像素替换为该值)来减少噪声。
  3. 使用Canny边缘检测滤波器来得到2个先前步骤中所有物品的轮廓。

    \"Contour

算法:我选择用于此任务的算法是从这本关于特征提取的惊人的书中取出来的,被称为广义Hough变换(与常规的Hough变换有很大不同)。它基本上说了几件事:

您可以在不知道其解析方程的情况下描述空间中的对象(这里就是这种情况)。

它抵抗像缩放和旋转这样的图像变形,因为它基本上会测试每个比例因子和旋转因子的组合以测试您的图像。

它使用算法将“学习”的基本模型(模板)。

轮廓图像中的每个像素都会为另一个像素投票,该像素据认为是您的对象的重心(重心),根据它从模型中学到的内容。

最终,您将获得一个投票热图,在这里,例如,所有罐头轮廓的像素将投票支持其重心,因此您将在相应的中心像素中获得很多投票,并且将在下面的热图中看到一个峰值:

一旦您拥有了它,一个简单的基于阈值的启发式方法就可以给出中心像素的位置,从而可以得出比例和旋转,然后在其周围绘制您的小矩形(最终比例和旋转因子显然相对于您的原始模板)。至少在理论上…

结果:现在,尽管这种方法在基本情况下有效,但在某些领域严重不足:

非常慢!我不够强调这一点。几乎需要一整天来处理30个测试图像,因为我具有极高的旋转和平移缩放因子,因为有些罐头非常小。

它完全迷失了瓶子在图像中的位置,因为某种原因几乎总是找到瓶子而不是罐头(可能是因为瓶子更大,因此有更多的像素,因此有更多的投票)

模糊的图像也不好,因为选票最终落在中心周围的随机位置,从而出现非常嘈杂的热图。

翻译已完成管理员,麻烦审核一下了,谢谢!

我希望有些人也能从中学到一些东西,毕竟我认为不仅仅是提问的人应该学习。:)

admin 更改状态以发布 2023年5月22日
0
0 Comments

为了加快速度,我会利用这样一个事实,即你并不是要找到任意的图像/物体,而是特别要找一个带有可口可乐标志的图像。这是很重要的,因为这个标志非常独特,它应该在频率域中具有一个特征的、尺度不变的签名,特别是在RGB的红色通道中。也就是说,红-白-红的交替模式会在一个水平扫描线(训练在水平对其的标志上)通过标志的中心轴时具有一个独特的“节奏”。这个节奏会在不同的尺度和方向上“加速”或“减速”,但比例上是等同的。你可以在标志的水平和垂直方向上以及更多的对角线方向上定义几十个这样的扫描线,以星形图案排列。把这些叫做“签名扫描线”。\n\n在目标图像中搜索这个签名是一个简单的事情,在水平条带中扫描图像。寻找红色通道中的高频(表示从红色区域移动到白色区域),一旦找到,看看它是否后面跟着一个在训练中识别到的频率节奏。一旦找到一个匹配,你会立即知道扫描线的方向和位置(如果你在训练中跟踪这些事情),因此从那里识别标志的边界就是微不足道的。\n\n我会很惊讶如果这不是一个线性有效的算法,或几乎如此。它显然没有解决你的罐-瓶辨析,但至少你会有你的商标。更新:对于瓶子的识别,我会寻找与商标相邻的可乐(棕色液体)——也就是瓶子内部。或者,在空瓶的情况下,我会找到一个盖子,这个盖子的基本形状、大小和距商标的距离通常都相同,而且通常都是纯白色或红色。在商标相对位置应该有盖子的椭圆形的固定颜色处进行搜索。当然,这并不是完美的,但你的目标应该是尽快找到那些容易识别的瓶子。\n\n(由于我已经离开图像处理领域已有几年了,所以我将这个建议保持在高层次和概念性。我认为这可能略微近似于人眼的操作方式——或者至少是我大脑的操作方式!)

0
0 Comments

输出内容缺失

0