có sơ đồ nguyên lý, sơ đồ khối và lưu đồ giải thuật và code đầy đủ cho NHẬN DẠNG BIỂN số XE TRONG ẢNH dùng MATLAB ...............................................................................................................................................................
Trang 1NHẬN DẠNG BIỂN SỐ XE
TRONG ẢNH
MỤC LỤC
Trang 3RGB: Red Green Blue
OCR: Optical Character Recognition
CIE : Commision Internationaled Eclairage
Trang 4CHƯƠNG 1: GIỚI THIỆU VỀ ĐỀ TÀI
1.1.Lý do chọn đề tài:
Cùng với sự phát triển của khoa học kỹ thuật,nhu cầu đi lại ngày càng lớn,khiến lưu lượng giao thông ngày càng tăng cao,với tình trạng như trên việc quản lý các phương tiện giao thông gặp rất nhiều khó khăn do đó cần nhanh chóng xây dựng các hệ thống tự động.Một trong các hệ thống đó là hệ thống nhận dạng biển số xe.Đó là một hệ thống có khả năng “đọc” và hiểu các biển số xe một cách tự động
Với yêu cầu thiết thực trên tôi chọn đề tài Nhận Dạng Biển Số Xe Trong Ảnh trên giao diện MATLAB để có thể áp dụng vào các ứng dụng của đời sống….như Hệ thống bãi giữ xe.Ứng dụng trong an toàn giao thông…vv
1.2 Nôi dung đề tài
Quá trình xử lý và nhận dạng biển số xe được thực hiện qua những bước như sau:
Tách biển số: Viêc tách biển số từ ảnh chụp bằng phương pháp xử lý số là hết sức khó khăn vì không thể biết được vị trí của biển số và nó còn phụ thuộc vào độ sáng của ảnh Kết quả đạt được là ảnh biển số dạng RGB(Red Green Blue) được cắt ra từ ảnh chụp
Phân đoạn ký tự: Sau khi tiến hành tách biển số việc tiếp theo là phân đoạn ký tự.Chuỗi ký tự của biển số sẽ được tách thành từng ký tự riêng lẽ và tạo thành tập ảnh riêng biệt, phục vụ cho việc nhận dạng ký tự.Ảnh của mỗi ký tự sẽ là ảnh trắng đen
Nhận dạng Ký tự: Sau khi các ký tự trong biển số được tách thành từng ký tự riêng biệt,và tạo thành từng chuỗi ký tự thì chuỗi này được đưa vào khối nhận dạng ,để tiến hành nhận dạng từng ký tự trong chuỗi
Trang 51.3 Giới hạn đề tài
Việc có quá nhiều biển số xe với định dạng và biển số khác nhau gây khó khăn trong việc nhận dạng.Do quá trình nhận dạng dựa vào phương pháp xử lý ảnh và trích xuất biển số từ ảnh nên độ sáng khác nhau làm tăng độ phức tạp trong quá trình nhận dạng
Do thời gian thực hiện đề tài không cho phép, nên đề tài cần được giới hạn với những điều kiện sau:
Biển số có nền trắng chử đen,có 2 hàng và 8 ký tự
Biển số còn nguyên vẹn,không bị tróc sơn hay rỉ sét,không bị che khuất
Góc nghiêng của biển số không quá 45 độ so với phương ngang
Không bị nhiễu bởi ánh sáng,làm biển số bị chói
Biển số rỏ ràng.nhìn được bằng trực quan
1.4 Mục tiêu và nội dung
Trang 6CHƯƠNG 2: TỔNG QUAN VỀ NHẬN DẠNG ẢNH
2.1 Khái niệm
Xử lý và nhận dạng ảnh là một lĩnh vực còn tương đối mới chưa được áp dụng rộng rãi như những lĩnh vực khoa học khác Nó còn có mối quan hệ mật thiết với nhiều nghành khoa học khác như lý thuyết thông tin, lý thuyết thống kê, nhận dạng, dùng để nhận dạng chữ số, ký tự, vân tay.mặt người
Xử lý ảnh số có rất nhiều công đoạn cần phải giải quyết như: khôi phục ảnh, thu nhận ảnh, tăng cường ảnh, phân tích ảnh , biến đổi ảnh các quá trình này cần phải thực hiện nhiều bởi thuật toán khác nhau
Nhận dạng là thực hiện phân loại các đối tượng được biểu diễn theo một mô hình nào đó và chúng được gán vào 1 lớp dựa theo những mẫu chuẩn và quy luật của nó Quá trình xử lý và nhận dạng ảnh số tùy thuộc vào điều kiện ứng dụng thực tế mà có nhiều cách áp dụng các thuật toán khác nhau tuy vậy việc xử lý và nhận dạng đều quy
về một cách thể hiện như sau
Hình 1.1.Sơ đồ nhận dạng ảnh tổng quát
Thu nhận ảnh: Thu nhận ảnh từ ảnh có sẵn Ảnh thu được là tín hiệu tương tự.
Mã hóa: là quá trình biến đổi tín hiệu tương tự sang tín hiệu rời rạc.Sau đó số hóa
bằng lượng tử hóa trước khi chuyển sang giai đoạn xử lý
Trang 7 Trước hết nâng cao chất lượng ảnh, do chất lượng ảnh thu được không đạt yêu cầu với nhiều nguyên nhân khác nhau.Sau đó khôi phục ảnh để làm nổi bật một
số đặc tính chính của ảnh, hay làm cho ảnh giống nhất với trạng thái gốc
Kế tiếp là phát hiện các đặc tính như: biên, phân vùng ảnh, trích chọn các đặc tính,
lý ảnh,mô phỏng,neural,xử lý số tín hiệu…
Matlab còn cung cấp Image Processing toobox,chuyên về xử lý ảnh
Matlab có một tài nguyên vô cùng lớn,có thể nói Matlab là một phần mềm vô cùng lợi hại giúp cho việc thực hiện các giải thuật xử lý nhanh chóng và dễ hiểu
2.2.2.Ảnh grayscale
Mỗi ảnh được biểu diễn bởi một ma trận hai chiều,trong đó giá trị của mỗi phần tử cho biết độ sáng(mức xám) của điểm ảnh đó.Ma trận này được thể hiện dưới dạng uint8,uint16,double.Ảnh biểu diễn theo kiểu này còn được gọi là ảnh ‘Trắng Đen”
Trang 8Ảnh được biểu diễn bởi một ma trận hai chiều thuộc kiểu logical.Mỗi điểm ảnh chỉ có thể nhận một trong hai giá trị là 0(đen) và 1(trắng).
Hình 2.2.Ảnh nhị phân
2.2.4 Ảnh RGB
Ảnh RGB(Red Green Blue) còn gọi là ảnh “truecolor” do tính trung thực của nó Ảnh này được biểu diễn bởi một ma trận ba chiều kích thước m x n x 3, với m x n là kích thước ảnh theo pixels Ma trận này định nghĩa các thành phần màu red, green, blue cho mỗi điểm ảnh, các thành phần của nó có thể thuộc kiểu uint8, uint16, hoặc double.Theo lý thuyết màu do Thomas đưa ra mọi màu đều có thể tổ hợp từ 3 màu cơ bản sau:
Trang 9Hình 2.3: Mô hình màu RGB
Trích [1]
Trang 10Hình 2.4: Minh họa ảnh màu sau khi mã hóa
Hệ nhận dạng ký tự OCR cần có một lưu ý đó là sự khác nhau giửa trang văn bản và hình ảnh Đa số các hệ nhận dạng dùng các tham số thống kê để phân biệt chữ và hình ảnh ( đối với văn bản, màu trắng và đen phân bố với nhịp điệu chuẩn, còn trong hình ảnh thì các pattern đen trắng phân bố không đều Có nhiều phương pháp nhận dạng, nhưng nói chung được quy về 2 kiểu: nhận dạng theo mẫu ( template-base ) và nhận dạng theo tính chất ( feature - base)
Phương pháp nhận dạng theo mẫu là so sánh với các mẫu chữ lưu sẵn
Trang 11 Nhận dạng theo tính chất thì quy ô mực thành các tính chất quy định cách thức viết nên con chữ.
Phương pháp nhận dạng theo mẫu thuộc loại cổ điển quy mỗi ô mực thành một ma trận điểm 10 x 10 Các con chữ có thể có kích cỡ khác nhau nhưng đều quy thành ma trận 10 x 10 và so sánh với mẫu để chọn mẫu gần nhất
Trang 12Nhận dạng theo tính chất, trong hệ có 100 “ hệ chuyên gia” khác nhau, thực chất là các thuật toán nhận dạng 100 con chữ ( từ A Z, a z, số, các dấu ) Các con chữ được nhận dạng theo các tính chất như gạch nghiêng, đứng, nghiêng, điểm uốn, phản xạ,
chiều dài và hướng các dấu gạch Giải thuật nhận dạng
Hình 1.2: Sơ đồ nhận dạng biển số xe
Từ lưu đồ trên ta thấy hệ thống nhận dạng biển số xe này có thể chia thành ba giai đoạn chính: trích biển số, tách ký tự và nhận dạng các ký tự như sau:
Tiền xử lý ảnh: Tại đây các phép tiền xử lý ảnh như: chuyển đổi không gian
màu,, cân bằng sáng được tiến hành nhằm chuẩn bị dữ liệu tốt, phù hợp tùy theo yêu cầu của các thuật toán xử lý ở mức cao hơn
Xử lý trích xuất vùng biển số xe: Những ảnh chụp từ máy chụp ảnh sau khi đưa
vào máy tính làm cơ sở dữ liệu, ta dựa vào một số đặc điểm cơ bản của biển số
xe so với các vật thể khác trong ảnh, áp dụng các thuật toán trích ra được vùng ảnh nhỏ nhất chứa biển số
Phân đoạn ký tự: Tách thành 8 hoặc 9 ký tự trong biển số xe, công đoạn này cũng thực hiện giống như trích biển số
Nhận diện các ký tự: Nhận dạng các ký tự từ các ký tự đã được tách ra.
Trang 13CHƯƠNG 3: TRÍCH XUẤT BIỂN SỐ XE
3.1 Tìm hiểu phương pháp
Trích xuất biển số xe là một bước rất quan trọng trong quá trình nhận dạng biển số
xe Khối này được chia làm 2 giai đoạn chính
Giai đoạn 1: Định vị trí của biển số trong ảnh
Giai đoạn 2: Dùng các giải thuật để cắt biển số xe ra khỏi ảnh chụp và xoay biển số
xe về phương ngang
Hình 3.1 Sơ đồ tổng quát của khối trích xuất biển số
Việc định vị trí biển số xe dựa vào các tính chất của biển số như: hình dạng,màu sắc của biển số so với nền Biển số xe có hình chữ nhật với kích thước chiều dài
và rộng không thay đổi Từ đó chúng ta có thể tìm các vùng có hình tứ giác trong hình, tính tỉ lệ giữa hai chiều của hình so với khoảng giá trị cho trước để xem thử vùng đó có chứa biển số hay không Ngoài ra, định vị biển số còn dựa trên màu sắc của biển số Hầu hết các biển số xe Việt Nam đều nền trắng, chữ đen Kết hợp hai tính chất trên, chúng ta xác định được vùng chứa biển số
Sau khi định vị biển số xe, chúng ta tiến hành cắt biển số xe Biển số xe được cắt theo 2 bước Bước đầu tiên là cắt vùng rộng hơn vùng chứa biển số Sau
đó tìm góc nghiêng của biển số và thực hiện xoay biển số về phương thẳng đứng Bước hai là cắt biển số ra khỏi vùng trên
Việc tách biển số sử dụng rất nhiều giải thuật và phương pháp xử lý ảnh số như sơ đồ sau đây:
Trang 14Hình 3.2.Sơ đồ chi tiết của khối tách biển số
3.2 Tìm vùng màu trắng
Vì biển số màu trắng,nên nhị phân hóa ảnh bằng cách gắn giá trị cho các pixel trắng là 1, còn ngược lại là 0 Đầu tiên, ảnh gốc được biến đổi thành ảnh xám (có mức sáng từ 0 đến 255), sau đó nhị phân hóa với một ngưỡng thích hợp Nếu ảnh được chụp vào ban đêm hay ban ngày nhưng ít ánh sáng thì mức ngưỡng sẽ là 120 Còn ban ngày, nhiều ánh sáng là 190
Nếu tần số xuất hiện các pixel có giá trị <64 thì đó là ảnh tối, ngược lại là ảnh sáng
Trang 16Đây là sơ đồ thuật giải của bước tìm và tách vùng màu trắng:
Hình 3.5 Sơ đồ thuật giải tìm và tách vùng màu trắng
Chiều cao là H { H = start(i).Boundingbox(4) }
Chiều ngang là W { W = start(i).Boundingbox(3) }
Diện tích vùng trắng là S_pixel_trắng { S_pixel_trắng = start(i).Area }
Trang 17Diện tích biển số là S_biển số { S_biển số = W × H }
Tỉ số 2 kích thước của biển số là 0.7 nhưng khi bị nghiêng thì là 0.8
Hinh 3.6 Hình dạng biển số khi bị nghiêng
Sau điều kiện thứ nhất, sẽ có những vùng trắng không chứa biển số nhưng có tỉ
số giữa chiều cao và chiều ngang phù hợp thì vẫn được chọn Ta sẽ loại bỏ
những vùng này bằng điều kiện thứ hai – diện tích vùng trắng
Đối với điều kiện thứ ba, nếu biển số nằm ngay ngắn thì tỉ số là 0.7 còn
nếu biển số bị nghiêng, sẽ xuất hiện pixel đen nên tỉ số này giảm còn 0.38
Hình 3.7 Biển số sau khi nhị phân
3.4 Cắt vùng chứa biển số
Sau khi xác định được vùng nào chứa biển số,ta tiến hành cắt biển số trên ảnh màu RGB.do sự tương đồng của ảnh nhị phân và ảnh màu RGB nên tọa độ 1 pixcel trên ảnh tương ứng tọa độ trên ảnh màu RGB.Do đó khi xác định được tọa độ trên ảnh nhị phân.Ta dùng tọa độ này để cắt ảnh RGB
Khi ta cắt biển số ra khỏi ảnh mà biển số bị nghiêng thì ta tiến hành cắt theo hình chữ nhật lớn hơn hình chữ nhật lớn thực sự một lượng biên an toàn để tránh việc mất thông tin biển số
Trang 18Hình 3.8 Hình thể hiện vùng ảnh cần tách ra với biên an toàn
Trong chương trình, ta chọn vùng biên an toàn là 100 pixel
Trong bước này, ta không cắt biển số ra khỏi ảnh ngay mà chỉ cắt vùng chứa biển số Việc cắt này có thể xem như là cắt thô
Hình 3.9: Ảnh chụp ban đầu
Hình 3.10: Ảnh sau khi cắt thô
Trang 19Ở đây, chúng ta có thể thấy các điều kiện trên chưa chặt chẽ, vì vậy ta lưu tất cảcác thông số “ x, y, W, H ” của vùng chứa biển số vào biến “ r ”.
Và sau đây là thuật giải của bước xác định vùng chứa biển số và cắt thô:
Hình 3.11: Sơ đồ thuật giải của bước xác định vùng chứa biển số và cắt thô
Trang 203.5 Tìm góc nghiêng và xoay:
3.5.1 Biến đổi Radon:
3.5.1.1 Tổng quan về biến đổi Radon:
Dùng để biến đổi các ảnh trong không gian 2 chiều với các đường thẳng thành miền Radon, trong đó mỗi đường thẳng trong ảnh sẽ cho 1 điểm trong miền Radon
Công thức toán học của biến đổi Radon:
A(ρcosθ sinθ,ρsinθ cosθ)
Phương trình trên biểu diễn việc lấy tích phân dọc theo đường thẳng s trên
ảnh, trong đó ρ là khoảng cách của đường thẳng so với gốc tọa đô O, và θ là góc
lệch so với
phương ngang
Hình 3.12: Phương pháp biến đổi Radon
Trong xử lý ảnh số, biến đổi Radon tính toán hình chiếu của ma trận ảnh dọc theo 1 hướng xác định Hình chiếu của 1 hàm số 2 chiều là f(x,y) la tập hợp các tích phân đường Hàm Radon tính toán tích phân đường dọc theo các tia song song theo các phương khác nhau ( bằng cách xoay hệ trục tọa độ xung quanh O
theo các giá trị θ khác nhau ), chiều rộng của các tia là 1 pixel Hình dưới đây biểu diễn 1 hình chiếu đơn giản theo 1 giá trị của góc θ
Trang 21Hình 3.13: Hình chiếu đơn giản theo góc θ
Công thức tổng quát trên có thể viết lại
như sau:
Hình sau sẽ biễu diễn phương pháp biến đổi Radon dưới dạng hình học:
Hình 3.13: Phương pháp biến đổi Radon dưới dạng hình học
3.5.1.2 Các bước thực hiện:
b Biến đổi ảnh về ảnh nhị phân
Trang 22b Thực hiện biến đổi Radon trên ảnh biên với θ = 0:179
Giá R của biến đổi Radon được biểu diễn như sau:
c Tìm giá trị lớn nhất của R trong biến đổi Radon
Vị trí các giá trị lớn nhất này tương ứng với các giá trị của đường thẳng trongảnh ban đầu
3.5.2 Tìm góc nghiêng và xoay:
Biển số được chụp với nhiều góc nghiêng khác nhau, do đó ta phải tìm góc nghiêng và xoay về phương thẳng Đây là việc rất quan trọng, vì nếu không quay về phương thẳng thì khi cắt biển số sẽ bị phạm vào biển số Chúng ta xác định góc nghiêng bằng phương pháp biến đổi Radon
Trước khi biến đổi Radon, ảnh chứa biển số được biến đổi thành ảnh được tách biên nhị phân
Trang 23Hình 3.14: Ảnh được tách biên biên
Sau đó, ta tiến hành biến đổi Radon để tìm góc xoay Thực hiện biến đổi
Radon với góc θ chạy trong khoảng 0: 180, ta sẽ được một ma trận với các điểm R(θ) với từng góc θ và tọa độ pixel tương ứng.
Sau khi biến đổi Radon, chúng ta xác định được góc Rmax, ứng với Rmax thì ta
có được θ max và góc lệch là 90o - θ max Sau đó ta sử dụng hàm Rotate trong MATLAB để xoay ảnh với góc lệch tìm được
Hình 3.15: Ảnh biển số sau khi xoay về phương thẳng đứng.
Trang 24Và đây là thuật giải của bước này:
Hình 3.16: Thuật giải tìm góc nghiêng biển số
3.6.Cắt biển số chính xác
Sau khi xoay biển số về phương thẳng đứng ta thực hiện việc cắt biển số Đây là một việc rất quan trọng, kết quả của nó quyết định tới kết quả của hệ thống nhận dạng biển số
Ta thực hiện lại việc chọn vùng biển số nhưng với biên là 0 pixel và 3 điều kiện chính xác hơn:
1600 < diện tích vùng trắng < 6100
0.73 < width/height < 0.77
0.6 < số pixel trắng / số pixel đen < 0.7
Hình 3.17: Biển số sau khi cắt hoàn chỉnh
Trang 25Dưới đây là giải thuật :
Hình 3.18: Thuật giải cắt biển số chính xác
Trang 26CHƯƠNG 4:PHÂN ĐOẠN VÀ NHẬN DẠNG KÝ TỰ
4.1 Tổng quan về phân đoạn ký tự:
Kết quả của trích biển số là một ảnh màu RBG có chứa biển số xe Để nhận dạng các ký tự trong biển số, ta tiến hành phân đoạn ký tự trong biển số Phân đoạn ký tự là việc cắt các ký tự trong biển số xe
Sau khi nhận kết quả, khối phân đoạn ký tự bắt đầu tiến hành tách từng ký tự trong biển số Trước khi phân đoạn ký tự, ảnh của biển số được chuyển thành ảnh nhị phân Ảnh nhị phân được chuẩn hóa về kích chuẩn, sau đó tiến hành cắt các ký tự Kết quả của quá trình phân đoạn là một ma trận chứa các ảnh đen trắng của ký tự
Hình 4.1: Sơ đồ khối phân đoạn ký
tự
4.2 Nhị phân biển số xe:
Đây là bước quan trọng để nhận dạng biển số xe Bước này sẽ tìm mức ngưỡng tối ưu, sau đó tiến hành nhị phân hóa ảnh với ngưỡng vừa tìm được
Trang 27Hình 4.2: Ảnh sau khi được nhị phân.
Hình 4.3: Giải thuật nhị phân biển số
4.3 Chuẩn hóa biển số
Biển số được chuẩn hóa về kích thước [50 150], sau đó được lấy bù
Hình 4.4: Ảnh biển số sau khi được chuẩn hóa
Trang 28Hình 4.5: Thuật giải chuẩn hóa biển số
4.4.Phân đoạn ký tự:
Ma trận nhị phân của biển số, chính là ngõ vào của chương trình phân vùng
ký tự Trước khi phân vùng ký tự, ta chia ma trận ảnh biển số thành từng hàng và lần lượt đưa từng hàng vào chương trình phân vùng Tuy nhiên, ở đây, chỉ tiến hành nhận dạng ký tự của hàng 2 nên ta chỉ ngỏ vào của chương trình phân vùng ký tự là ma trận của hàng 2
Để phân chia thành nhiều ma trận ký tự từ ma trận biển số, ta dựa vào tổng sốpixel mức 1 (mức 1 là màu trắng, mức 0 là màu đen).Với ma trận của hàng 2 sau khi đã chia đôi, giữa 2 ký tự có rất ít pixel có mức 1 Như vậy khi cộng giá trị các pixel theo từng cột, như hình sau, ta thấy gía trị tại các vùng giữa 2 ký tự rất thấp ( đây cũng là tổng số pixel mức 1) Từ đó, giải thuật phân vùng sẽ những vùng này dựa vào giá trị của nó nhỏ hơn những vùng lân cận và sẽ phân chia thành từng vùng
Ở đây, ta sẽ tìm 4 phân vùng tương ứng với 4 ký tự