学习笔记--车牌识别(一)

来源:互联网 发布:mac终端抹掉磁盘命令 编辑:程序博客网 时间:2024/05/16 17:12

车牌识别(一)

  • 读入原始图像,5*5高斯模糊。目的:去除相机和图像采集产生的噪声,为后续sobel步骤做准备。size是滤波的模板大小,一般取奇数,因为待处理的像素要在模板中心。高斯滤波的模板带有加权。
    GaussianBlur(img_origin, img_origin, Size(5, 5), 0,0, 4);//高斯模糊
  • 转成灰度图像。目的:sobel只能处理灰度图像。
Mat img_gray;cvtColor(img_origin, img_gray, CV_BGR2GRAY);//原始图像转灰度图
  • sobel算子加强垂直边缘特征。目的:车牌(plate)中的字符存在许多竖直边缘,以此明显区分出车牌。sobel算子:可分别在垂直和水平方向求一阶导数,根据导数值大小判定是否是边缘。当水平方向求一阶导数时,可辨别垂直边缘特征。sobel函数第四个参数dx、第五个参数dy的阶数。
Sobel(img_gray, img_gray, 0, 1,0, 3, 1,0, BORDER_DEFAULT);//sobel强化垂直特征
  • 二值化,阈值选取使用otsu算法。参数:第三个,阈值选取;第四个,二值化后的最大像素值;第五个二值化模式,这里使用OTSU算法选取阈值CV_THRESH_OTSU,且忽略第三个参数,设为0;CV_THRESH_BINARY正二值化即当x大于阈值x0时像素值变为255,x小于阈值x0时像素值变为0。
Mat img_binary;threshold(img_gray, img_binary, 0, 255, CV_THRESH_BINARY +CV_THRESH_OTSU);//二值化
  • 形态学闭运算。目的:将车牌变成边缘平滑的连通域。闭运算:膨胀+腐蚀。膨胀运算将相近的车牌字符块连接成一个连通域,腐蚀运算平滑被膨胀的车牌轮廓边缘。
Mat element = getStructuringElement(MORPH_RECT, Size(m_MorphWidth, m_MorphHeight));//定义核morphologyEx(img_binary, img_binary, MORPH_CLOSE, element);//进行形态学操作
0 0