1. Trang chủ
  2. » Luận Văn - Báo Cáo

Cắt biển số xe bằng MATLABThực tập chuyên ngành

34 286 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 34
Dung lượng 3,55 MB
File đính kèm TTCN.rar (9 MB)

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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 2

LỜ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 3

LỜ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 4

NHẬ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 5

MỤC LỤC

Trang 6

CHƯƠ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 8

Ma 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 10

Hì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 11

Hì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 13

Hì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 14

1.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 16

CHƯƠ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 17

Hì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 18

Dướ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 19

2.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 20

12 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 22

Input: ả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 23

Hì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 24

Bây giờ, ta sử dụng bộ lọc này để lọc ảnh sau:

Trang 25

Khi đó, 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 26

Hì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 27

Hì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 28

Dưới đây là sơ đồ trình tự cắt biển số:

Hình 2.19 Cắt biển số

Trang 29

CHƯƠ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 30

Hình 3.2 Ảnh Grayscale

3.1.2 Làm loãng ảnh từ ảnh Grayscale

Hình 3.3 Ảnh Grayscale

Trang 32

3.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 33

3.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

Ngày đăng: 23/04/2019, 09:22

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w