0

我是 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');

输出:

梯度计算的输出

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

4

1 回答 1

3

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

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

您本质上试图做的是使用看起来像这样的过滤器的过滤操作(或卷积)[-1 1]。查找 matlab 函数conv2filter.

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

使用所提出的方法检测车牌并不容易。它绝对应该让你开始。但是你真的需要开始阅读更多的算法。

于 2016-02-24T17:15:22.070 回答