基于Hough变换的车牌子区域提取

您所在的位置:网站首页 车牌识别中的车牌定位 基于Hough变换的车牌子区域提取

基于Hough变换的车牌子区域提取

2024-03-15 20:07| 来源: 网络整理| 查看: 265

主题:基于Hough变换的子图像提取 要求:

1)汽车车牌作为一个标志相对明晰的目标子图像位于车头(尾)图像中。利用Hough变换寻找图像中的直线,寻找长宽比一定的矩形区域,以确定车牌子图像的位置。

2)直线方程参数量化间隔选取

3)记录车牌子图像的棋盘坐标位置

4)得到图像中规定角度范围内所有直线的方程

================================= 车牌在网络上下载

下载好车牌图像后,对于原始图像预处理,往往需要进行灰度变换、噪声过滤、畸形矫正等,最基本的处理手段包括:图像变换、图像增强(噪声滤波、边缘增强、对比度改善等)和图像恢复。在本次课题中,我们用了灰度变换以及噪声滤波的原始图像进行了预处理。此处选用中值滤波。

此外,为了得到更好的提取效果,本次对图像还进行了图像腐蚀与闭运算的操作。

Hough变换利用图像空间和Hough参数空间的点-线对偶性,把图像空间中的检测问题转换到参数空间。通过在参数空间里进行简单的累加统计,然后在Hough参数空间寻找累加器峰值的方法检测直线。Hough变换具体原理读者们可以自行查阅相关文献了解。

本次还用到先验知识:车牌长宽比为:44/14。 具体流程为: (1)对原始图像转换为灰度图,进行中值滤波 (2)滤波后进行边缘检测,得到图像中可能的直线特征 (3)对边缘检测后的图像进行腐蚀,去除不必要的如车体本身的曲线等线特征 (4)腐蚀后进行闭运算,可以初步得到车牌区域的二值图像,然后可以据此在原始图像中初步分离出可能的车牌区域 (5)Hough变换得到线特征,调整参数去除太短或过长的直线 (6)选取出两两垂直的直线,并锁定长宽比为44/14,进一步晒出线特征。 (7)得到区域并划线,得到直线方程与四个顶点坐标。

代码如下:

N = 44/14;%车牌长宽比 I = imread('chepai2.jpg'); subplot(1,3,1) imshow(I),title('原图') I1 = rgb2gray(I); subplot(1,3,2); imshow(I1),title('灰度图') I11 = medfilt2(I1);%中值滤波 subplot(1,3,3); imshow(I11),title('中值滤波') I2 = edge(I11,'canny');%边缘检测 figure imshow(I2),title('边缘检测') se = [1;1;1]; I3 = imerode(I2,se);%图像腐蚀 figure imshow(I3),title('图像腐蚀') se = strel('rectangle',[30,30]); I4 = imclose(I3,se); I5 = bwareaopen(I4,2500); [y,x,z] = size(I5); myI = double(I5); figure imshow(I5),title('处理后的区域图像'); Blue_y=zeros(y,1); for i=1:y for j=1:x if(myI(i,j,1)==1) Blue_y(i)= Blue_y(i)+1;%蓝色像素点统计 (第i行) end end end [temp,MaxY] = max(Blue_y) PY1 = MaxY; while ((Blue_y(PY1,1) >= 120)&&(PY1 > 1)) %暂定120 PY1 = PY1-1; %区域的起始行 end PY2 = MaxY; while ((Blue_y(PY2,1 )>= 40)&&(PY2 < y)) PY2 = PY2 + 1;%区域的终止行 end I6 = I(PY1:PY2,:,:); Blue_x = zeros(1,x); for j = 1:x for i = PY1:PY2 if(myI(i,j,1) == 1) Blue_x(j) = Blue_x(j)+1; end end end PX1 = 1; while ((Blue_x(PX1) < 3)&&(PX1 < x)) PX1 = PX1 + 1;%起始列 end PX2 = x; while ((Blue_x(PX2) < 3)&&(PX2 > PX1)) PX2 = PX2 - 1;%终止列 end I7 = I(PY1 - 30:PY2 + 30,PX1 - 30: PX2 + 20); %车牌区域 figure imshow(I7),title('车牌区域') Theta_test = 1;%参数度量选择 Rho_test = 1; [H,T,R] = hough(I8,'ThetaResolution',Theta_test,'RhoResolution',Rho_test);%Hough变换 %%%%%选取theta = 0 时的直线 [x00,x0] = size(T); [a,b] = size(H); H0 = zeros(a,b); for cnt1 = 1:x0 if T(cnt1) == 0 H0(:,cnt1) = H(:,cnt1); end end T0 = zeros(1,x0); for cnt1 = 1:x0 if T(cnt1) == 0 T0(1,cnt1) = T(1,cnt1); end end P0 = houghpeaks(H0,2,'threshold',ceil(0.3*max(H0(:)))); H_mid = (H(P0(1,1),P0(1,2)) + H(P0(2,1),P0(2,2)))/2; lines0 = houghlines(I8,T0,R,P0,'FillGap',50,'MinLength',10); PT00 = T(P0(1,2));%坐标点提取 PR00 = R(P0(1,1)); PT01 = T(P0(2,2)); PR01 = R(P0(2,1)); fprintf('直线1: %d = x*%d + y*%d\n',PR00,cos(PT00),sin(PT00)); fprintf('直线2: %d = x*%d + y*%d\n',PR01,cos(PT01),sin(PT01)); %%%选取theta = 90 的直线 H90 = zeros(a,b); for cnt1 = 1:x0 if abs(T(cnt1))==90 H90(:,cnt1) = H(:,cnt1); end end T90 = zeros(1,x0); for cnt1 = 1:x0 if abs(T(cnt1)) == 90 T90(1,cnt1) = T(1,cnt1); end end P90 = houghpeaks(H90,2,'threshold',ceil((1/N)*H_mid)); lines90 = houghlines(I8,T90,R,P90,'FillGap',155,'MinLength',150); PT10 = T(P90(1,2)); PR10 = R(P90(1,1)); PT11 = T(P90(2,2)); PR11 = R(P90(2,1)); fprintf('直线3: %d = x*%d + y*%d\n',PR10,cos(PT10),sin(PT10)); fprintf('直线4: %d = x*%d + y*%d\n',PR11,cos(PT11),sin(PT11)); figure imshow(I7), hold on title('车牌范围标注及坐标') for k = 1:length(lines0) xy0 = [lines0(k).point1;lines0(k).point2]; plot(xy0(:,1),xy0(:,2),'LineWidth',2,'Color','green');%画出线段 plot(xy0(1,1),xy0(1,2),'x','LineWidth',2,'Color','yellow');%起点 plot(xy0(2,1),xy0(2,2),'x','LineWidth',2,'Color','red');%终点 fprintf('坐标为:(%d,%d)\n',lines0(k).point1 +PY1,lines0(k).point2 + PX1); xy90 = [lines90(k).point1; lines90(k).point2]; plot(xy90(:,1),xy90(:,2),'LineWidth',2,'Color','green');%画出线段 plot(xy90(1,1),xy90(1,2),'x','LineWidth',2,'Color','yellow');%起点 plot(xy90(2,1),xy90(2,2),'x','LineWidth',2,'Color','red');%终点 fprintf('坐标为:(%d,%d)\n',lines90(k).point1 + PX1,lines90(k).point2 + PY1); end

仿真结果: 在这里插入图片描述 在这里插入图片描述

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 此外,还能得到直线方程及顶点坐标。 当然,代码还有很多不足之处,对于不同的车牌,参数的调整任重而道远。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3