适宜用与非均匀光照条件的边缘检测方法

  • Post author:
  • Post category:其他


一直在做车牌识别算法的研究实现和实现,我是真的很想给做车牌识别算法研究的人正个名。在图像识别相关研究如火如荼之时,一提到车牌识别,往往都是被鄙视的。车牌识别近四十年的发展,技术确实很成熟,但是车牌识别应用环境自由度那么大,目前市面上商用系统能搞得定几种场景?个人觉得,对于任何一个研究课题,即便是技术都烂透了的东西,在没有深入去了解它之前,就应该保持一个谨慎的态度,认真对待!
稍微发下牢骚,发泄一下在车牌识别研究的时候被鄙视的郁闷心情!开始正题,在CSDN记录一下,车牌识别研究中接触到的图像处理方法的实现。
本篇介绍一种边缘检测算子——类拉普拉斯算子。论文参考“A new and robust method of character segmentation and recognition in license plate images”本篇提供基于opencv的实现!
/************************************************************************/
/* A method to binarize image
   1. blur image using gaussian
   2. filter image with laplacian_like kernel, size of which is 10 *10
   3. RGB converts to gray and binarizes image with otsu
   parameters:
   input: rgb image;
   output: binary image
   return: int, 0 means failed, or 1;
*/
/************************************************************************/
int speBinarizeMethod(const Mat src, Mat &dest)
{
    if (src.empty()||src.channels()!=3)
    {
        return 0;
    }
    float laplcian_like_kernel[81] = {0, 0, 0, 0, -1, 0, 0, 0, 0,
                                      0, 0, 0, 0, -1, 0, 0, 0, 0,
                                      0, 0, 0, 0, -1, 0, 0, 0, 0,
                                      0, 0, 0, 0, -1, 0, 0, 0, 0,
                                      -1,-1,-1,-1,16,-1,-1,-1,-1,
                                      0, 0, 0, 0, -1, 0, 0, 0, 0,
                                      0, 0, 0, 0, -1, 0, 0, 0, 0,
                                      0, 0, 0, 0, -1, 0, 0, 0, 0,
                                      0, 0, 0, 0, -1, 0, 0, 0, 0};
    float med_blur_kernel[10] = {1,1,1,1,1,1,1,1,1,1};
    Mat laplcianLkernel = Mat(9, 9, CV_32FC1, laplcian_like_kernel);
    Mat medblurKernel = Mat(5, 2, CV_32FC1, med_blur_kernel);
    Mat srcClone = src.clone();
    Mat grayImg, lSrcClone;
    Mat gaussKernel = getGaussianKernel(5, 2);
    GaussianBlur(srcClone, srcClone, Size(5,5),0,2);
    filter2D(srcClone, lSrcClone, srcClone.depth(), laplcianLkernel);
    cvtColor(lSrcClone, grayImg, CV_RGB2GRAY);
    medianBlur(grayImg, grayImg, 3);
    threshold(grayImg, dest, 0, 255, CV_THRESH_BINARY+CV_THRESH_OTSU);
    return 1;
}

其处理效果:

第二列是利用该算子检测的二值图像,第三列是sobel算子的结果。从图可以看出,该算子对处理光照不均的情况较好!(

https://img-blog.csdn.net/20160420092414843

)



版权声明:本文为qiufenwoaini原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。