最近看到一篇文章<车牌识别中一种新的直接基于彩色图像的二值化简化方法> 文章来源:http://www.cnblogs.com/zhangzhongyi/archive/2010/03/01/1675333.html。目的将车牌图像中的彩色信息简化为5中颜色,再进一步进行二值化,从而就简化了彩色车牌图像,有能准确定位出车牌。按照文章的步骤,我粗略的在MATLAB中实现。但觉得效果不如作者描述的好,有些车牌的信息还是丢了。是在不解。希望能够与大家讨论,看看是哪出现了问题。
实现代码如下:
clear all; %读入彩色图像 srcImage=imread('G:\carlicense\155.jpg'); figure(1); imshow(srcImage); title('srcimage'); [row,col]=size(srcImage(:,:,1)); tempImage=srcImage; yImage=uint8((uint16(srcImage(:,:,2))+uint16(srcImage(:,:,1)))/2);%黄色 grayImage=uint8((uint16(srcImage(:,:,3))+uint16(yImage))/2);%灰度 for m=1:row for n=1:col if srcImage(m,n,3)>187&&yImage(m,n)>187 %白色 tempImage(m,n,3)=255; tempImage(m,n,2)=255; tempImage(m,n,1)=255; else if srcImage(m,n,3)<153&&yImage(m,n)<153%黑色 tempImage(m,n,3)=0; tempImage(m,n,2)=0; tempImage(m,n,1)=0; else if yImage(m,n)<0.9*srcImage(m,n,3) %进入蓝色细分部分 if yImage(m,n)<0.8*srcImage(m,n,3)% 蓝色部分明显多 tempImage(m,n,3)=255; tempImage(m,n,2)=0; tempImage(m,n,1)=0; else if grayImage(m,n)<187 %蓝色 tempImage(m,n,3)=255; tempImage(m,n,2)=0; tempImage(m,n,1)=0; else if grayImage(m,n)>=187%灰色 tempImage(m,n,1)=128; tempImage(m,n,2)=128; tempImage(m,n,3)=128; end end end else if srcImage(m,n,3)<0.9*yImage(m,n) %黄色细分 if srcImage(m,n,3)<0.8*yImage(m,n) tempImage(m,n,3)=0; tempImage(m,n,2)=255; tempImage(m,n,1)=255; else if grayImage(m,n)>153%黄色 tempImage(m,n,3)=0; tempImage(m,n,2)=255; tempImage(m,n,1)=255; else %灰色 tempImage(m,n,1)=128; tempImage(m,n,2)=128; tempImage(m,n,3)=128; end end else %进入灰色细分 if grayImage(m,n)<153 tempImage(m,n,3)=0; tempImage(m,n,2)=0; tempImage(m,n,1)=0; else if grayImage(m,n)>187 tempImage(m,n,3)=255; tempImage(m,n,2)=255; tempImage(m,n,1)=255; else tempImage(m,n,1)=128; tempImage(m,n,2)=128; tempImage(m,n,3)=128; end end end end end end end end resultImage=tempImage; figure(2); imshow(resultImage); title('RGB-YB');实现结果好的情况:
实现结果差的情况: