QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2395|回复: 0
打印 上一主题 下一主题

matlab 识别车牌字符

[复制链接]
字体大小: 正常 放大

1176

主题

4

听众

2884

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2023-12-15 16:06 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
本文为大家介绍了对于matlab解决8 \6 g! F9 u5 j9 [' K$ S  R
这段代码实现了一些基本的图像处理步骤,以及灰度图像的阈值处理(二值化)过程,并对代码的各个部分进行解释:
* G) h" ?; l, U3 y0 {& A! n, s' n* X) j7 Q6 F
1.读取图像和显示原始图像:
  1.    PS = imread('1.jpg');) t4 N4 h5 b, R8 q0 {% u
  2.    subplot(1,2,1);
    + v2 I6 @6 |* _& X$ |, Y+ [
  3.    imshow(PS);- o) r* w8 X! K/ v) X6 \4 y* G
  4.    title('原图');
复制代码
2.imread('1.jpg') 读取名为 '1.jpg' 的图像文件,并将其存储在变量 PS 中。
# L2 D7 A+ d' s  y8 O# R3.subplot(1,2,1) 将图像显示区域分成 1 行 2 列,当前处于第 1 个子图。
% m  S/ @. Z# I6 h/ z- v9 c7 s4.imshow(PS) 显示图像 PS。5 O+ z6 T6 N1 F  Y! }5 f
5.title('原图') 设置子图的标题为 '原图'。
. ?. e* R# f, D# r* q4 i1 \" y; w' ?

8 r/ b! l/ j8 N% Y% A- P1 _6.将图像转换为灰度图像:
  1.    p = rgb2gray(PS);; h' ?7 ]0 ^' Y) j2 z& F/ B7 R+ v\" Y
  2.    subplot(1,2,2);
    % l- k0 k( z3 M% S9 q6 }8 F
  3.    imshow(p);& H( k4 [% Q) B2 ?& ]1 m
  4.    title('原灰度图');
复制代码
7.rgb2gray(PS) 将彩色图像 PS 转换为灰度图像,并将其存储在变量 p 中。
! L# L+ `3 r7 d1 |9 t8.subplot(1,2,2) 在原先分割的图像显示区域中,当前处于第 2 个子图。
1 Q1 o: J* G. R! W% i9.imshow(p) 显示灰度图像 p。
6 e8 U; l0 U, d% r  Y1 M10.title('原灰度图') 设置子图的标题为 '原灰度图'。
' I8 ]9 |# N$ L: l9 ~  [4 }$ n
$ E! y- J! U7 G$ O, m
8 n7 I: ~4 w9 a$ n( o0 ^: b11.计算原灰度图像的灰度直方图并绘制:
  1.    [m, n] = size(p);
      o4 ]( D( f. h' Y3 P6 i
  2.    GP = zeros(1,256);/ r. ?' s; P1 ~, u6 S& R
  3.    for k = 0:2553 V) H6 w4 o\" _7 C/ }2 h. @6 c
  4.        GP(k+1) = length(find(p == k)) / (m * n);
    ; H( ?  A) {/ A& L% W0 ^
  5.    end
    & p0 H7 d$ C5 J/ ~* D$ F+ a3 C0 [
  6.    figure;% h7 j* W* n+ n2 T# \5 o
  7.    subplot(1,2,1);; ?8 ~6 m4 a! B8 Y+ \7 C
  8.    bar(0:255, GP, 'g');
    + O. j2 [5 @' b& @6 p
  9.    title('原灰度直方图');
复制代码
12.[m, n] = size(p) 获取灰度图像 p 的尺寸。
" e0 A: E  f, ?13.GP = zeros(1,256) 初始化一个长度为 256 的数组,用于存储灰度直方图。
# A. v1 K$ d" l5 n" R& \& g14.for k = 0:255 对每一个灰度级别(0-255)进行循环处理。7 s! ]; w$ l0 e6 }6 T
15.length(find(p == k)) / (m * n) 计算灰度级别 k 在图像中的像素占比。  X0 I0 N+ r3 ?; _
16.bar(0:255, GP, 'g') 绘制灰度直方图,横轴是灰度级别,纵轴是像素占比。# [+ }7 g/ H# W" x
- B6 P9 ~7 O" o" V) A

& z# i& b4 @% \4 t; _8 V; G17.寻找灰度直方图中的双峰,并计算阈值进行二值化:
  1. max_index = [];' T7 ^- Z! W( u5 p
  2.    for i = 3:length(GP)-2
    2 q. m% y$ s9 n, \, N4 ?\" L* b$ _* F
  3.        if ((GP(i) >= GP(i+1)) & (GP(i) >= GP(i-1))) & ((GP(i+1) >= GP(i+2)) & (GP(i-1) >= GP(i-2)))
    ; S: F' [5 q, C9 W
  4.            max_index(end+1) = i - 1;
    % m& S* W4 B4 b6 Z& w
  5.        end
    4 ?  M8 t5 w5 `
  6.    end0 o7 Y2 F. l) j3 b1 k' r7 W
  7.    possible = GP(max_index);7 r8 O/ X0 n1 y2 Y
  8.    [max_value, index] = max(possible);
    % a/ T8 u, e7 e: l7 r# V. Y
  9.    TT = max_index(index) - 2;
    + M2 S6 [& j5 E* F, B; l

  10. 5 b* t9 q; j) B4 ]: P! O& R( }: b
  11.    R = zeros(m, n);
    \" M2 q+ E% |5 n, {* Y4 A
  12.    for i = 1:m
    , n1 n$ F4 P! ~' L* k' E# Z! [8 q% [
  13.        for j = 1:n
    4 M  l! `9 R' l
  14.            if p(i, j) < TT
    ; S* H: T# i0 S& Z
  15.                R(i, j) = 0;
    . p$ M. I. x# A
  16.            else& g1 G( D( r  ?
  17.                R(i, j) = 256;& N! i; `! n* U+ B% n+ G
  18.            end0 O8 R) D9 T\" c8 `8 l2 C  L, ]  L
  19.        end
    3 ?% q7 y% Z$ E: ]$ x
  20.    end
    $ ]* W7 r, }& V/ t
  21.    subplot(1,2,2);5 U* ?( L' O% K  e$ F2 O
  22.    imshow(R);4 i( i* ~  j3 F3 b+ i
  23.    title('二值图');
复制代码
18.代码首先寻找灰度直方图中的双峰(双峰往往对应于两个主要的灰度区域),找到这些双峰的峰顶位置。
7 K4 C  W$ X4 x) ]+ w  c! N) c7 G19.然后选择灰度直方图双峰之间的谷底位置作为阈值 TT。6 a# c4 s/ j' j* x! J
20.接下来,通过一个嵌套循环,将灰度图像 p 根据阈值 TT 进行二值化处理,将像素值小于阈值的设为 0,大于等于阈值的设为 256。
8 h# l+ L5 O& ~4 F  m7 Z' G21.最后,将二值化后的图像 R 显示在第二个子图中,标题为 '二值图'。& |, m: J' M4 l4 H* o5 W

% g) |7 d. Z( r+ r9 z: _! B这段代码的核心是对灰度直方图的分析以及基于双峰寻找的阈值处理(二值化),将图像转换为只有两个值(0 或 256)的二值图像。
( A# l6 B% d" L: M1 Z
$ B7 s- h" I0 k# m VeryCapture_20231215154901.jpg ' f3 G" S6 Q* E7 g+ ^+ O9 I

6 u: G  I; q' B2 f# |- b& ~2 H( ~
; w8 i  C* F4 m4 N, P
8 _( p! A% h( T! j/ F

VeryCapture_20231215154901.jpg (109.12 KB, 下载次数: 197)

VeryCapture_20231215154901.jpg

MATLAB夜间车牌识别程序.rar

36.16 KB, 下载次数: 0, 下载积分: 体力 -2 点

售价: 2 点体力  [记录]  [购买]

zan
转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
您需要登录后才可以回帖 登录 | 注册地址

qq
收缩
  • 电话咨询

  • 04714969085
fastpost

关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

手机版|Archiver| |繁體中文 手机客户端  

蒙公网安备 15010502000194号

Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

GMT+8, 2025-9-21 00:20 , Processed in 0.407142 second(s), 55 queries .

回顶部