当前位置:   article > 正文

基于MATLAB的夜间车牌识别处理_夜间识别代码

夜间识别代码

先看处理结果

简单说一下实现思路:

读取图片,转灰度,计算灰度直方图,估算阈值(这里的阈值计算很重要,经过阈值算法,选取一个最恰当的阈值),之后二值化。显示图像即可。后面阈值的计算补更。 

  1. %%车牌
  2. clear all
  3. clc
  4. PS=imread('chepai.png');
  5. subplot(1,2,1);
  6. imshow(PS)
  7. title('原图')
  8. p=rgb2gray(PS);
  9. subplot(1,2,2)
  10. imshow(p)
  11. title('原灰度图')
  12. [m,n]=size(p);
  13. GP=zeros(1,256);
  14. for k=0:255
  15. GP(k+1)=length(find(p==k))/(m*n); %计算每级灰度出现的概率,将其存入GP,这里的find函数寻找
  16. %与0-255相等的个数,然后通过length函数返回一个数,再除以
  17. %总的像素点个数,就是第0个灰度数据出现的次数,放入第一个
  18. %里面
  19. end
  20. figure
  21. subplot(1,2,1);
  22. bar(0:255,GP,'g')
  23. xlabel('灰度值')
  24. ylabel(' 出现概率')
  25. title('原灰度直方图')
  26. max_index=[];
  27. for i=3:length(GP)-2
  28. if((GP(i)>=GP(i+1))&(GP(i)>=GP(i-1)))&((GP(i+1)>=GP(i+2))&(GP(i-1)>=GP(i-2)))
  29. max_index(end+1)=i-1;%数组的扩展,有n个元素,那么第n+1个用来存放数据i-1(因为是从0开始的,所以-1
  30. end
  31. end
  32. possible=GP(max_index);
  33. [max_value,index]=max(possible);%前者存值,后者放位置
  34. TT=max_index(index)-2;%取出数据
  35. [m,n]=size(p);
  36. R=zeros(m,n);
  37. for i=1:m
  38. for j=1:n
  39. if p(i,j)<TT
  40. R(i,j)=256;
  41. else R(i,j)=0;
  42. end
  43. end
  44. end
  45. subplot(1,2,2);
  46. imshow(R);
  47. title('二值图');

 

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/237713
推荐阅读
相关标签
  

闽ICP备14008679号