Source code nhỏ về đề tài nhận dạng biển số xe, với input đầu vào là 1 biển số xe và output là số biển
Trang 2LỜI NÓI ĐẦU
Xử lý và nhận dạng là một lĩnh vực từ lâu được nhiều người quan tâm Nó
đã được ứng dụng vào nhiều lĩnh vực như:
Trong y học, cải thiện ảnh X-quang và nhận dạng đường biên mạch máu
từ ảnh chụp bằng tia X , ứng dụng vào các xét nghiệm lâm sang như phát hiện
và nhận dạng u não, nội soi cắt lớp
Trong thiên văn học, hệ thống chụp hình gắn trên tàu vũ trụ hạn chế vềkích thước và trọng lượng, do đó chất lượng hình ảnh nhận được bị giảm chấtlượng như bị mờ, méo hình học và nhiễu nền Các hình ảnh đó được xử lý bằngmáy tính
Trong các lĩnh vực công nghiệp, người máy ngày càng đóng vai trò quantrọng Chúng thực hiện các công việc nguy hiểm, đòi hỏi có tốc độ và độ chínhxác cao vượt quá khả năng con người Người máy sẽ trở nên tinh vi hơn và thịgiác máy tính đóng vai trò quan trọng hơn Người ta sẽ không chỉ đòi hỏi ngườimáy phát hiện và nhận dạng các bộ phận công nghiệp mà còn phải “ hiểu ” đượcnhững gì chúng “ thấy ” và đưa ra hành động phù hợp Xử lý ảnh sẽ tác độngđến thị giác của máy tính
Ngoài ra, xử lý và nhận dạng còn được ứng dụng trong lĩnh vực khác ítđược nói đến hơn Công an giao thông thường hay chụp ảnh trong môi trườngkhông thuận lợi, ảnh thường bị nhòe nên cần được xử lý và nhận dạng để có thểnhìn thấy biển số xe Trong báo cáo này người thực hiện xin trình bày một phầntrong ứng dụng của xử lý và nhận dạng số là CẮT BIỂN SỐ TRONG NHẬNDẠNG BIỂN SỐ XE
Trang 3LỜI CẢM ƠN!
Em xin gửi lời cảm ơn chân thành và sự tri ân sâu sắc tới thầy Đàm ThanhPhương đã nhiệt tình hướng dẫn em hoàn thành tốt nhiệm vụ trong thời gianthực tập
Trong quá trình thực tập, cũng như là trong quá trình làm bài báo cáo thựctập, khó tránh khỏi sai sót rất mong các thầy cô bỏ qua Đồng thời do trình độ lýluận cũng như kinh nghiệm thực tiễn còn hạn chế nên bài báo cáo không thểtránh khỏi những thiếu sót, em rất mong nhận được ý kiến đóng góp của thầy, cô
để em học thêm được nhiều kinh nghiệm và sẽ hoàn thành tốt hơn bài báo cáotốt nghiệp sắp tới
Em xin chân thành cảm ơn!
Trang 4NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
Thái Nguyên, ngày tháng năm 2019
Giáo viên hướng dẫn
Trang 5MỤC LỤC
Trang 6CHƯƠNG I – CƠ SỞ LÝ THUYẾT 1.1 Tổng quan về ngôn ngữ lập trình MATLAB
MATLAB được tích hợp nhiều lệnh và các hàm toán học, giúp ngườidùng thực hiện tính toán các con số, vẽ đồ thị và thực hiện các phương pháp số
1.1.1 Các Phép Tính Toán Của MATLAB
MATLAB được sử dụng rộng rãi trong mọi khía cạnh tính toán Dưới đây
là một số phép tính toán MATLAB được sử dụng phổ biến nhất:
Trang 7- Hồi quy.
- Các hàm đặc biệt khác
1.1.2 Các Tính Năng Của MATLAB
Dưới đây là các tính năng cơ bản của MATLAB:
- MATLAB là ngôn ngữ lập trình cao cấp, cho phép tính toán các con số, hình dung và phát triển ứng dụng
- Cung cấp môi trường tương tác để khảo sát, thiết kế và giải quyết các vấn đề
- Cung cấp thư viện lớn các hàm toán học cho đại số tuyến tín, thống kê, phân tích Fourier, bộ lọc, tối ưu hóa, tích phân và giải các phương trình vi phân bình thường
- MATLAB cung cấp các đồ thị được tích hợp sẵn để hiển thị hình ảnh dữ liệu và các công cụ để tạo đồ thị tùy chỉnh
- Giao diện lập trình của MATLAB cung cấp các công cụ phát triển để nâng cao khả năng bảo trì chất lượng mã và tối đa hóa hiệu suất
- Cung cấp các công cụ để xây dựng các ứng dụng với các giao diện đồ họa tùy chỉnh
- Cung cấp các hàm để tích hợp các thuật toán dựa trên MATLAB với các ứng dụng bên ngoài và các ngôn ngữ khác như C, Java, NET và Microsoft
Excel
1.1.3 Sử Dụng MATLAB
MATLAB được sử dụng rộng rãi như công cụ tính toán trong các lĩnh vựckhoa học và kỹ thuật, bao gồm các lĩnh vực vật lý, hóa học, toán học và côngnghệ MATLAB được sử dụng trong một loạt các ứng dụng bao gồm:
- Xử lý tín hiệu và truyền thông
1.2 Các kiểu ảnh trong matlab
Image Processing Toolbox của MATLAB hỗ trợ bốn kiểu biểu diễnhình ảnh cơ bản, gồm: ảnh chỉ số (indexed images), ảnh độ sáng (grayscale
Trang 8Ma trận dữ liệu có thể thuộc kiểu unit8, unit16 hoặc double Giá trị củamột phần tử trong ma trận dữ liệu cho biết màu của điểm ảnh đó là màu nằm ởhàng nào trong ma trận màu
Nếu ma trận dữ liệu thuộc kiểu double, giá trị thứ nhất sẽ tương ứng vớihàng thứ nhất trong bảng màu, giá trị thứ hai tương ứng với màu ở hàng thứhai, Nếu ma trận dữ liệu thuộc kiểu unit8 hoặc unit16 giá trị 0 ứng với hàng
1, giá trị 1 ứng với hàng 2, Riêng với kiểu unit16 MATLAB không hỗ trợ đủcác phép toán so với kiểu unit8 nên khi cần xử lý ta cần chuyển sang kiểu dữ
liệu uint8 hoặc double bằng các hàm imapprox hoặc im2double.
Hình 1.1 Minh họa cách biểu diễn ảnh theo chỉ số
1.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ủamỗi phần tử cho biết độ sáng (hay mức xám) của điểm ảnh đó Ma trận này cóthể là một trong các kiểu uint8, uint16 hoặc double Ảnh biểu diễn theo kiểu nàycòn gọi là ảnh “trắng đen”
Trang 10Hình 1.5 Ma trận màu ảnh RGB
1.3 Các hàm xử lý ảnh cơ bản của MATLAB
1.3.1 Hàm đọc dữ liệu ảnh “imread”
Lệnh imread() sẽ đọc một file ảnh thành một ma trận Matlab trợ giúp rất
nhiều định dạng đồ hoạ thông dụng chẳng hạn: BMP, GIF, JPEG, PNG, TIFF …
Cú pháp: a = imread(‘filename.fmt’) trong đó:
- filename là tên của ảnh
- fmt là định dạng ảnh
Ví dụ: a = imread(‘sun-flower.jpg’);
Trang 11Hình 1.6 Hàm imread()
Ví dụ trên đọc một file ảnh có tên “car.jpg” bằng hàm imread() sẽ có kết
quả là một ma trận 526x350 với 3 thành phần màu cơ bản RGB
1.3.2 Hàm hiển thị ảnh imshow() và imagesc()
Để hiển thị hình ảnh trong matlab ta dùng 2 lệnh imshow() và imagesc() Lệnh imshow() cho chúng ta một hình ảnh trong định dạng tiêu chuẩn là 8-bit, giống như trong một trình duyệt web Lệnh imagesc() hiển thị các hình ảnh trên
các trục đồ thị với giá trị min là màu đen và giá trị max là màu trắng
Trang 13Hình 1.7 Hiển thị ảnh bằng lệnh imshow()
Hình 1.8 Hiển thị ảnh bằng lệnh imagesc()
Trang 141.3.3 Hàm rgb2gray()
Lệnh rgb2gray() chuyển đổi hình ảnh RGB thành ảnh trắng đen bằng
cách loại bỏ các thông tin màu sắc và độ bão hòa nhưng vẫn giữ độ sáng
Cú pháp: a = imread(‘x.png’);
gray = rgb2gray(a);
imshow(gray);
Hình 1.9 Trước (trái) và sau (phải) khi dùng lệnh rgb2gray()
1.3.4 Hiển thị các thành phần RGB riêng của hình ảnh
Trang 16CHƯƠNG II – QUY TRÌNH XỬ LÝ CẮT BIỂN SỐ 2.1 Tổng quan về tách biển số
Tách biển số là một bước rất quan trọng trong quá trình nhận dạng biển số
xe Quá trình tách biển số xe được chia làm 2 giai đoạn chính:
Giai đoạn 1: Định vị vị trí của biển số từ ảnh đầu vào
Giai đoạn 2: Dùng các giải thuật để cắt biển số xe ra khỏi ảnh đã cho
Hình 2.1 Tổng quan các bước tách biển số
Việc định vị 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ướcchiề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òndự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
Phần tách biển số sử dụng giải thuật và phương pháp xử lý đối với ảnh
số như sơ đồ sau đây:
Trang 17Hình 2.2 Sơ đồ các bước cắt biển số xe
2.2 Làm loãng ảnh
Vì biển số màu trắng nên người thực hiện sẽ nhị phân hóa ảnh bằng cáchgắn giá trị cho các pixel trắng là 1, còn ngược lại là 0 Đầu tiên, chúng ta sẽ biếnđổi ảnh gốc thành ảnh xám (có mức sáng từ 0 đến 255), sau đó loại bỏ các thànhphần nhiễu đề thu được ảnh gần giống với ảnh nhị phân nhất
Làm loãng ảnh
Trang 18Dưới đây là sơ đồ thuật giải của bước tìm và loại bỏ nhiễu(làm loãng ảnh):
Hình 2.3 Sơ đồ các bước làm loãng ảnh
2.3 Xử lý ngang, dọc thông qua các bộ lọc và ngưỡng
2.3.1 Bộ lọc thông thấp (Low Pass Filter)
Khái niệm bộ lọc trong miền tần số tương tự như khái niệm mặt nạ trongmiền không gian Sau khi chuyển ảnh sang miền không gian, ta áp dụng một số
bộ lọc trong quy trình lọc ảnh nhằm làm mờ ảnh, nhiễu ảnh, làm nét ảnh
Các bộ lọc ảnh thấp thông dụng:
Lọc thông thấp Ideal
Lọc thông thấp Gauss
Lọc thông thấp Butterworth
Trang 192.3.1.1 Lọc thông thấp Ideal
Là phép lọc 2 chiều đi qua tất cả tần số mà không làm giảm chúng trongbán kính đường tròn tính từ tâm phép lọc và “chặt cụt” tất cả tần số bên ngoàihình tròn này
Bộ lọc này xác định như sau:
Output: ảnh sau khi dùng bộ lọc thông thấp Ideal
1 %khai báo ảnh vào, biến kiểu double
Trang 2012 h(i,j)=1;
15 end
Ảnh của bộ lọc thông thấp Ideal:
Hình 2.5 Ảnh của bộ lọc thông thấp Ideal trong miền không gian
Hình 2.6 Tần số của ảnh trước (trái) và sau (phải) khi lọc Ideal
Nhận xét: Hình 2.6 cho thấy sau khi lọc, tần số của ảnh đã được kéo giãn
ra, điều đó có nghĩa nhiều tần số cao đã được kéo xuống
2.3.1.2 Lọc thông thấp Gauss
Đặc trưng cho nhiễu đó là hàm mật độ xác suất thể hiện sự phân bố củanhiễu Ta sử dụng hàm phân phối Gauss làm bộ lọc nhằm làm mờ ảnh và giảmnhiễu Trong trường hợp 1 chiều, phân phối Gauss có công thức:
Trang 21(CT 2.3)
với là độ lệch chuẩn của phân phối, ta giả sử phân phối này có trung bình là 0
Hình 2.7 Đồ thị phân phối Gauss
Khi xử lý ảnh, ta sẽ sử dụng hàm phân phối Gauss cho 2 chiều, hình thànhbằng tích của 2 hàm Gauss 1 chiều x và y
(CT 2.4)
Bộ lọc thông thấp Gauss có dạng:
(CT 2.5)
với D(u,v) là khoảng cách từ điểm (u,v) đến tâm hình
Ta sẽ xử lý ảnh sau với phép lọc thông thấp Gauss
Trang 22Input: ảnh cần lọc
Output: ảnh sau khi dùng bộ lọc thông thấp Gauss
1 P = size(f,1); %tạo bộ lọc có kích thước bằng với ảnh
Trang 23Hình 2.9 Ảnh qua bộ lọc thông thấp Gauss Hình 2.10 Tần số ảnh trước (trái) và sau (phải) khi lọc Gauss
Nhận xét: Độ biến thiên tần số của ảnh sau khi lọc bằng phương pháp
Gauss ít hơn ảnh gốc, đồng thời các giá trị tần sô ảnh sau khi lọc cao hơn ảnhgốc Phép lọc thông thấp Gauss này cho ảnh mượt hơn phép lọc thông thấpIdeal
Trang 24Bây giờ, ta sử dụng bộ lọc này để lọc ảnh sau:
Trang 25Khi đó, ta được ảnh sau khi dùng bộ lọc trong miền không gian và miềntần số là:
Hình 2.12 Bộ lọc Butterworth trong miền không gian (trái) chuyển sang miền
tần số (phải)
Sử dụng thuật toán (CT 2.6), ta tích chập ảnh gốc trong miền tần số và bộ
lọc trong miền tần số, sau đó lấy chuyển đổi ngược Ta được hình ảnh sau khi
lọc là:
Hình 2.13 Ảnh sau khi dùng bộ lọc Butterworth
Trang 26Hình 2.14 So sánh tần số của ảnh trước (trái) và sau (phải) khi lọc bằng
Butterworth
Nhận xét: Với bộ lọc này, ảnh sau khi lọc có độ biến thiên tần số ít hơn, không
làm tăng giá trị tần số, hiệu ứng chuông ảnh hưởng không đáng kể
2.3.2 Ngưỡng (Threshold)
Một đặc điểm cơ bản khi chuyển đổi là tạo ngưỡng Ngưỡng tạo ra mộthình ảnh nhị phân từ ảnh xám hoặc ảnh màu bằng cách thiết lập các giá trị điểmảnh 1 hoặc 0 tùy thuộc vào việc giá trị đó ở trên hoặc dưới giá trị ngưỡng Việcnày thường được sử dụng để tách hay phân đoạn một khu vực, đối tượng tronghình ảnh dựa trên các giá trị điểm ảnh của nó, thể hiện trong hình dưới đây:
Hình 2.15 Ảnh trước (trái) và sau (phải) khi tạo ngưỡng
Ngưỡng được tạo ra trong MATLAB như sau:
Trang 27Hình 2.18 Kết quả sau khi tạo ngưỡng bằng im2bw() (trái)
Hàm im2bw() chuyển đổi các hình ảnh màu xám sang một hình nhị phân
Hay tạo một ảnh nhị phân từ một ảnh cường độ, ảnh chỉ số hay ảnh RGB trên cơ
sở của ngưỡng ánh sáng
Trong nhiều ứng dụng để chúng ta dùng những biến thể của ngưỡng để phù hợp với yêu cầu:
- Sử dụng hai ngưỡng để tách các giá trị điểm ảnh trong một phạm vi nhất định;
- Sử dụng nhiều ngưỡng cho kết quả là một hình ảnh được gắn nhãn với một phần nhãn 0 đến N;
- Giữ lại các thông tin ban đầu điểm ảnh cho các giá trị được lựa chọn, còn các giá trị khác sẽ được set thành màu đen
2.4 Cắt biển số
Sau khi áp dụng các bộ lọc và tạo ngưỡng ta tiến hành tìm kiếm các khuvực có khả năng chứa biển số Sau đó, kiểm tra từng khu vực nếu không phải là
Trang 28Dưới đây là sơ đồ trình tự cắt biển số:
Hình 2.19 Cắt biển số
Trang 29CHƯƠNG III – DEMO BÀI TOÁN 3.1 Làm loãng ảnh
3.1.1 Chuyển ảnh từ dạng RGB sang Grayscale
Trang 30Hình 3.2 Ảnh Grayscale
3.1.2 Làm loãng ảnh từ ảnh Grayscale
Hình 3.3 Ảnh Grayscale
Trang 323.2.2 Xử lý dọc
Hình 3.6 Biểu đồ xử lý dọc áp dụng bộ lọc thông thấp và ngưỡng động
3.3 Cắt biển số
3.3.1 Tìm những khu vực có khả năng là biển số
Hình 3.7 Những vùng có khả năng chứa biển số
Trang 333.3.2 Cắt chính xác biển số
Hình 3.8 Biển số được cắt
CHƯƠNG IV - TỔNG KẾT
4.1 Những điểm đã thực hiện được
Trong quá trình thực hiện đề tài thực tập chuyên ngành TIỀN XỬ LÝẢNH TRONG NHẬN DẠNG BIỂN SỐ XE (CẮT BIỂN SỐ) em đã tìm hiểu vànghiên cứu được:
Tổng quan về các kiểu ảnh và các hàm xử lý ảnh trong MATLAB
Quá trình xử lý ảnh và cắt biển số
Áp dụng các hàm xử lý ảnh trong MATLAB để cắt biển số xe
4.2 Những giới hạn của đề tài
Việc có nhiều biển số xe với định dạng, độ sáng và góc nghiêng khácnhau gây khó khăn cho 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 chụp 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 người thực hiện giới
hạn các biển số và điều kiện như sau:
Biển số có chữ đen, nền trắng, có 2 hàng, số ký tự là 8
Trang 34 Hình chụp biển số không bị mờ, ký tự biển số còn phân biệt, nhận dạng được bằng trực quan.
Không bị nhiễu bởi ánh sáng làm ảnh chụp bị chói