现在的位置: 首页 > 综合 > 正文

基于彩色图像的五值化方法实现

2014年09月05日 ⁄ 综合 ⁄ 共 1738字 ⁄ 字号 评论关闭
最近看到一篇文章<车牌识别中一种新的直接基于彩色图像的二值化简化方法> 文章来源: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');

实现结果好的情况:


实现结果差的情况:

抱歉!评论已关闭.