计算车牌定位的垂直梯度

Compute Vertical Gradients for License Plate Localization

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

输出:

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

首先,您应该了解照明是一种令人头疼的问题。当你不断学习新算法时,你就会明白这一点。

查看您的第一组图像,您可以看到车牌是图像的突出部分。车牌旨在提供字符和背景之间的对比。而且整个背景还算平滑。当您查看底部的图像时,会发现很多伪影和急剧的强度过渡,这应该可以解释为什么您的渐变有噪点。

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

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

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