【问题标题】:Compute Vertical Gradients for License Plate Localization计算车牌定位的垂直梯度
【发布时间】:2016-06-07 02:19:48
【问题描述】:

我是 MATLAB 新手,正在尝试实现车牌本地化的以下步骤:

这是我目前的进展。

代码:

[rows,cols] = size(img);
image_gradient = zeros(rows,cols);

for i =1:1:rows
    for j =1:1:cols-1
        image_gradient(i,j) = abs( img(i,j+1) - img(i,j) );
    end
end

figure,imshow(image_gradient);title('Gradient');

输出:

如果有人能指导我在这里做错了什么,我将不胜感激。

【问题讨论】:

  • 是什么让你说你做错了什么?这可能是缩放结果图像的问题。尝试将示例图像与您的算法一起使用,看看是否得到类似的结果。
  • 当我将算法应用于示例图像时,我得到了相同类型的输出

标签: matlab localization anpr


【解决方案1】:

首先,您应该了解照明是背后的痛苦。当你不断学习新算法时,你就会明白这一点。

查看您的第一组图像,您可以看到盘子是图像的一个突出部分。车牌的设计是为了在字符和背景之间形成这种对比。此外,整个背景相当平滑。当您查看底部的图像时,会有很多伪影和强烈的强度过渡,这应该可以解释为什么您的渐变是嘈杂的。

您实际上要做的是使用类似于[-1 1] 的过滤器进行过滤操作(或卷积)。查找matlab函数conv2filter

为了减少噪音,您应该与梯度一起执行平均操作。这将降低对噪声的敏感性。所以你的最终过滤器看起来像这样[-1 1;-1 1;-1 1]。如果您正在尝试其他复杂的过滤器,请确保您的过滤器值已标准化。

使用建议的方法检测车牌并不容易。它绝对应该让你开始。但是您确实需要开始阅读更多算法。

【讨论】:

  • 非常感谢您花时间和考虑我的问题:) 我从答案中了解到代码没有错误以及背后的原因嘈杂的输出 是输入图像中的尖锐的强度过渡。所以我应该在计算梯度之前应用conv2 来平滑图像。请从过滤器的角度详细说明normalization这个词。
  • 你是对的。平滑操作应该减少梯度。执行归一化以确保您对图像使用的任何过滤器加起来为 1,这样就不会为强度引入增益。这通常是通过对滤波器抽头求和并将内核中的每个抽头除以该总和来完成的。它不适用于您的梯度过滤器,因为总和已经为 0。
  • 嗯,非常感谢您的回复,我在vertical gradient 计算的输出上应用了vertical gradient,然后是horizontal gradient,现在我的图像看起来与示例输出非常相似。跨度>
猜你喜欢
  • 2015-01-21
  • 1970-01-01
  • 2018-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-16
  • 2016-11-27
  • 2017-07-13
相关资源
最近更新 更多