zoukankan      html  css  js  c++  java
  • 车牌校正中水平方向的边缘提取

    1.下面是一个水平角度调试比较好的设置
    一下是主要几个参数:
     cvSobel(img,imgS,0,1,3);
     cvErode(imgTh,imgTh,KernelVertical,1);

    经过试验验证,其实用scharr滤波器比sobel滤波器更好,scharr滤波器只是把最后一个svSobel参数改为-1
     cvSobel(img,imgS,0,1,-1);
    scharr滤波器的滤波系数和sobel的滤波系数有差异,
    书上说Scharr滤波器同sobel滤波器一样快,但是准确率更高。



    使用扩展 Sobel 算子计算一阶、二阶、三阶或混合图像差分

    void cvSobel( const CvArr* src, CvArr* dst, int xorder, int yorder, int aperture_size=3 );
    
    src输入图像.dst输出图像.xorderx 方向上的差分阶数yordery 方向上的差分阶数aperture_size扩展 Sobel 核的大小,必须是 1, 3, 5 或 7。 除了尺寸为 1, 其它情况下, aperture_size ×aperture_size 可分离内核将用来计算差分。对 aperture_size=1的情况, 使用 3x1 或 1x3 内核 (不进行高斯平滑操作)。这里有一个特殊变量 CV_SCHARR (=-1),对应 3x3 Scharr 滤波器,可以给出比 3x3 Sobel 滤波更精确的结果。Scharr 滤波器系数是:

    egin{bmatrix}     -3 & 0 & 3 \     -10 & 0 & 10 \     -3 & 0 & 3  end{bmatrix}

    对 x-方向 或矩阵转置后对 y-方向。

    函数 cvSobel 通过对图像用相应的内核进行卷积操作来计算图像差分:

    dst(x,y) = frac{d^{xorder+yorder}src} {dx^{xorder} dy^{yorder}} |(x,y)

    由于Sobel 算子结合了 Gaussian 平滑和微分,所以,其结果或多或少对噪声有一定的鲁棒性。通常情况,函数调用采用如下参数 (xorder=1, yorder=0, aperture_size=3) 或 (xorder=0, yorder=1, aperture_size=3) 来计算一阶 x- 或 y- 方向的图像差分。第一种情况对应:

    egin{bmatrix}     -1 & 0 & 1 \     -2 & 0 & 2 \     -1 & 0 & 1  end{bmatrix}核。

    第二种对应:

    egin{bmatrix}     -1 & -2 & -1 \     0 & 0 & 0 \     1 & 2 & 1  end{bmatrix}

    或者

    egin{bmatrix}     1 & 2 & 1 \     0 & 0 & 0 \     -1 & -2 & -1  end{bmatrix}

    核的选则依赖于图像原点的定义 (origin 来自 IplImage 结构的定义)。由于该函数不进行图像尺度变换,所以和输入图像(数组)相比,输出图像(数组)的元素通常具有更大的绝对数值(译者注:即像素的位深)。为防止溢出,当输入图像是 8 位的,要求输出图像是 16 位的。当然可以用函数 cvConvertScale 或 cvConvertScaleAbs 把运算结果(dst)转换为 8 位的。除了8-位图像,函数也接受 32-位 浮点数图像。所有输入和输出图像都必须是单通道的,并且具有相同的图像尺寸或者ROI尺寸。

    http://hi.baidu.com/uestclgh/item/360d811853a2a9fddceeca88

    1.倾斜的车牌:


    2.经过sobel算子提取的水平方向边沿:
     cvSobel(img,imgS,0,1,3);


    3.在保证准确性的前提下,为了降低hough变换的时间复杂度,将sobel计算的到的水平边沿图像进行3像素单位的腐蚀:
    IplConvKernel* KernelVertical=cvCreateStructuringElementEx(1,3,0,1,CV_SHAPE_RECT); 
    cvErode(imgTh,imgTh,KernelVertical,1);



    这样再经过hough变换就可以求出车牌水平方向的倾斜角度。
    水平旋转车牌后,可以就行垂直方向上的仿射变换。而不是垂直方向的简单旋转,
    经过仿射变换后,车牌的倾斜校正就完成了,
    为车牌的字符分隔,字符识别完成预处理。
    下一篇:车牌识别的垂直校正

  • 相关阅读:
    Unix命令大全
    vs2008 与 IE8出现的兼容性问题
    Java 创建文件、文件夹以及临时文件
    如何修改Wamp中mysql默认空密码
    PAT 乙级真题 1003.数素数
    Tags support in htmlText flash as3
    DelphiXE4 FireMonkey 试玩记录,开发IOS应用 还是移植
    10 Great iphone App Review sites to Promote your Apps!
    HTML tags in textfield
    Delphi XE4 IOS 开发, "No eligible applications were found“
  • 原文地址:https://www.cnblogs.com/cnsec/p/3789811.html
Copyright © 2011-2022 走看看