Phát hiện biên

Một phần của tài liệu Nhận diện biển số xe dùng Matlab (Full Code) (Trang 27)

/

2.3.3.4.Phát hiện biên

Từ định nghĩa toán học của biên người ta sử dụng hai phương pháp phát hiện biên như sau:

Phương pháp phát hiện biên trực tiếp: phương pháp này chủ yếu dựa vào sự biến thiên độ sáng của điểm ảnh để làm nổi biên bằng kỹ thuật đạo hàm :

 Nếu lấy đạo hàm bậc nhất của ảnh: ta có phương pháp Gradient.

 Nếu lấy đạo hàm bậc hai của ảnh: ta có phương pháp Laplace. Hai phương pháp này được gọi chung là phương pháp dò biên cục bộ.

Ngoài ra, người ta còn sử dụng phương pháp “đi theo đường bao” dựa vào công cụ toán học là nguyên lý quy hoạch động và được gọi là phương pháp dò biên tổng thể. Phương pháp dò biên trực tiếp có hiệu quả và ít bị tác động của nhiễu.

Phương pháp phát hiện biên gián tiếp: nếu bằng cách nào đấy, chúng ta thu được các vùng ảnh khác nhau thì đường phân cách giữa các vùng đó chính là biên. Nói cách khác, việc xác định đường bao của ảnh được thực hiện từ ảnh đã được phân vùng. Phương pháp dò biên gián tiếp khó cài đặt nhưng áp dụng tốt khi sự biến thiên độ sáng nhỏ.

2.3.3.5 Biến đổi Radon

Biến đổi Radon dùng để biến đổi ả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 trên ảnh sẽ cho một điểm trong miền Radon.

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 đó p khoảng cách của đường thẳng so với gốc tọa độ O, phi là góc lệch so với phương ngang.

Hình 2.6: Mô tả biến đổi Radon

Ứng dụng 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 một số hướng xác định. Hình chiếu của một hàm số 2 chiều f(x,y) là tập hợp các tích phân đường. Hàm Radon tính toán các tích phân đường dọc theo các tia (beam) song song theo các phương khác nhau (bằng cách xoay hệ trục tọa độ xung quanh gốc 0 theo các giá trị khác nhau), chiều rộng các tia là 1 pixel. Hình dưới đây biểu diễn một hình chiếu đơn giản theo một giá trị của góc .

Hình 2.7: Hình chiếu theo một góc cho trước trong biến đổi Radon

Công thức tổng quát phía trên có thể viết lại như sau:

Hình sau sẽ biểu diễn phép biến đổi Radon dưới dạng hình học.

Hình 2.8: Phép biến đổi Radon dưới hình dạng hình học

Các bước thực hiện phát hiện các đường thẳng trên ảnh bằng biến đổi Radon:

Hình 2.9: Biến đổi ảnh mức xám sang nhị phân

 Thực hiện biến đổi Radon trên ảnh biên với theta = 0:179. Giá trị R của biến đổi Radon được biểu diễn như sau:

Hình 2.10: Thể hiện miền Radon

Tìm các giá trị lớn nhất của R trong ma trận biến đổi Radon.

Vị trí các giá trị lớn nhất này tương ứng với vị trí của các đường thẳng trong ảnh ban đầu. Trong hình sau, giá trị lớn nhất của R ở vị trí =1 độ, x’=-80. Đường thẳng vuông góc với đường thẳng =1, ở vị trí x’=-80 chính là đường thẳng rõ nhất trong ảnh biên nhị phân (đường thẳng này được đánh dấu màu đỏ). Một đường thẳng khá rõ khác song song với đường thẳng màu đỏ cũng xuất hiện ở giá trị = 1 độ và đường thẳng vuông góc xuất hiện ở = 91 độ.

Hình 2.11: Thể hiện sự phát hiện các đường thẳng trong biến đổi Radon Ở đây chúng ta cần chú ý là giá trị max ứng với R max không phải giá trị góc lệch của đường thẳng mà chỉ là góc lệch của trục Ox’ so với trục Ox ban đầu. Quan sát hình vẽ sau ta sẽ thấy rõ vấn đề.

Trường hợp đường thẳng lệch xuống phía dưới. Giá trị góc lệch cần tìm sẽ bằng 90 - max , ta thấy > 0, nên ảnh được xoay theo chiều ngược chiều kim đồng hồ.

Hình 2.12: Trường hợp các đường thẳng lệch về phía dưới

Trường hợp đường thẳng lệch lên phía trên. Góc lệch : = 90 - max, ta thấy < 0, nên khi ảnh được xoay theo chiều thuận chiều kim đồng hồ.

Hình 2.13: Trường hợp các đường thẳng lệch về phía trên

CHƯƠNG 3

CHƯƠNG TRÌNH NHẬN DẠNG BIỂN SỐ XE

3.1 KHÁI QUÁT CHƯƠNG TRÌNH

Mục đích của đề tài là xây dựng một chương trình đọc biển số xe tại một vị trí cố định, ví dụ như ở lối vào của khu vực bãi đậu xe. Hệ thống xây dựng dựa vào một máy tính PC thông thường có giao tiếp với một máy ghi hình (camera hay webcam) nhằm đáp ứng trạng thái thực chụp lấy ảnh, hay một ảnh được chụp từ máy ảnh, để tạo một ảnh ( ảnh gốc) được đưa vào máy tính PC. Từ những hình ảnh thu được có chứa biển số xe thì phần mền sẽ xử lý nhận dạng và kết quả đưa ra biển số xe. Một khi biển số xe được phát hiện (nhận dạng), các chữ số của nó được đọc và xuất ra trên giao diện người dùng và đối chiếu lại với cơ sở dữ liệu. Quá trình nhận dạng biển số xe từ ảnh thu được thực hiện theo từng giai đoạn khác nhau, có thể tóm tắt theo sơ đồ khối như sau: (adsbygoogle = window.adsbygoogle || []).push({});

Hình 3.1: Sơ đồ khối chương trình nhận dạng biển số xe

Đối với xe 2 bánh ( xe gắn máy) biển số có 8 kí tự và chia làm 2 hàng mỗi hàng có 4 kí tự, theo qui định của nhà nước hiện hành.

Lưu đồ giải thuật chương trình nhận dạng biển số xe:

3.2 TRÍCH VÙNG BIỂN SỐ XE

Mục đích của phần này là trích được biển số xe từ ảnh đơn hay lấy ảnh từ máy quay (camera, webcam) rồi đưa vào máy tính (PC) làm cơ sở dữ liệu. Ảnh chụp được thường là ảnh màu, vậy ngõ ra của khối ảnh gốc sẽ là ảnh màu (RGB), sau đó ta tiến hành trích vùng biển số, tiếp tục chuyển ảnh màu thành ảnh trắng đen. Do đó vùng ảnh biển số xe là ảnh trắng đen, trước khi chuyển hóa thành ảnh nhị phân hóa rồi mới nhận dạng.

3.2.1 Xác định ngưỡng xám

Việc xác định ngưỡng xám rất quan trọng nó quyết định đến khả năng chọn đúng vùng biển số. Chọn chính xác vùng biển số thật sự rất khó ta chỉ có thể xác định chính xác trong một khoảng nào đó. Thông qua lược đồ xám ta nhận thấy vùng biển số thường sẽ có độ sáng tương đối lớn ( từ 100-140 ) vì vậy ta sẽ xác định lược đồ xám lớn nhất trong khoảng này và ngưỡng xám cần chọn sẽ thuộc vùng này nhờ đó ta sẽ giảm được thời gian lặp tìm ngưỡng xám. Kết quả này có được nhờ vào quá trình khảo sát thống kê trên nhiều ảnh và đây là kết quả tối ưu nhất mà ta có thể tìm được.

Ảnh nhị phân là ảnh mà giá trị của các điểm ảnh chỉ có hai giá trị là 0 và 1 (trắng và đen). Để chuyển từ ảnh xám về ảnh nhị phân ta đặt một ngưỡng thích hợp để so sánh. Mức xám của ảnh sẽ được dùng để so sánh với giá trị ngưỡng này. Biểu thức:

0 nếu u < T f(u) =

1 nếu u ≥ T

3.2.3 Chương trình tìm góc nghiêng

Thuật toán dùng kỹ thuật biến đổi Radon ( phần lý thuyết đã trình bày ở trên). Trong bước này ta sử dụng biến đổi Radon để tìm ra các đường thẳng trên hình vẽ. Như đã trình bày ở phần lý thuyết, trước khi thực hiện biến đổi Radon, ta biến đổi ảnh thành ảnh biên nhị phân. Sau đó tìm giá trị Rmax, ứng với Rmax ta có được θ

max, và góc lệch = 90 – θ max.

Trong trường hợp vì lý do nào đó các đường viền nằm ngang không hiện rõ, trong khi đó các đường viền nằm thẳng đứng hiện rõ. Nên giá trị Rmax không phải

là đường biên nằm ngang, mà là đường biên thẳng đứng do đó khi xoay biển số xe sẽ quay ngược. Để giải quyết vấn đề này khi lấy biên ta chọn mức ngưỡng tương đối thấp (0,08) để đảm bảo đường biên nằm ngang xuất hiện.

Trong đó: Theta là một vector gồm các góc quay cần tính biến đổi Radon. R là một ma trận mà mỗi cột của nó là biến đổi Radon R(x’) ứng với 1 góc quay theta.

Xp là vector chứa các tạo độ x’ tương ứng (Xp là như nhau đối với mọi góc quay theta).

Lưu đồ giải thuật chương trình xoay ảnh:

Hình 3.7: Lưu đồ giải thuật chương trình xoay ảnh

3.3 CÁCH LY CÁC KÝ TỰ TRONG BIỂN SỐ3.3.1 Chia biển số thành 2 hàng 3.3.1 Chia biển số thành 2 hàng

Sau đó tách biển số thành 2 hàng trên và dưới, mục đích cách làm này nhằm nhận dạng đúng thứ tự vị trí các ký tự nằm trên biển số. Vì khi biển số bị nghiêng so với thực tế, thuật toán ta chọn hoạt động theo trái qua phải và trên xuống dưới. Nếu không có giải pháp xử lý rất khó thực hiện đúng thứ tự trên biển số. Xây dựng 1 chương trình con dùng để thực hiện việc này.

Phương pháp này dựa vào cách tính điểm ảnh nhị phân trên cùng 1 hàng của ảnh. Nếu hàng đó có tổng các điểm ảnh bằng 0 ta tìm hàng từ trên xuống đến hàng có bằng 0 vậy ta đã có 1 hàng, hàng thứ 2 tìm tương tự như vậy.

Thuật toán:

Bắt đầu từ điểm ảnh ( x, y) đầu tiên (0,0), và đặt là dòng 0.

 Quét đến hết chiều ngang của ảnh trên một giá trị y của ảnh.

 Nếu là phát hiện điểm đen thì lưu giá trị y là đỉnh của hàng đầu tiên.

 Quét đến dòng thứ I mà không phát hiện điểm đen thì đó là dòng cuối. Ta tiến hành tách vùng ảnh từ dòng 0 đến dòng I. đó là hàng thứ nhất của biển số xe.

Hình 3.9: Lưu đồ giải thuật cắt biển số thành 2 hàng

3.3.2 Cắt các ký tự trong 2 hàng

Đòi hỏi cần phải cắt đủ các ký tự. Nếu không đủ các ký tự cần phải mở camera chụp lại biển số. (adsbygoogle = window.adsbygoogle || []).push({});

Hình 3.10: Lưu đồ giải thuật cắt các ký tự

Tiến hành lần lượt với từng hàng biển số dùng kỹ thuật quét ảnh và phân vùng ảnh, sau đó lựa chọn ra các đối tượng trong ảnh sao cho phù hợp với kích thước và diện tích. Chuẩn hóa kích thước các đối tượng sau đó lưu lại các đối tượng vào một mảng, theo thứ tự từ các đối tượng trong biển số từ trái qua phải và từ trên xuống dưới.

3.4 CHƯƠNG TRÌNH NHẬN DẠNG BIỂN SỐ3.4.1 Tạo các mẫu 3.4.1 Tạo các mẫu

Nhận dạng các ký tự có trong ảnh đối tượng. Mô hình nhận dạng biển số xe, dựa vào phương pháp đối sánh mẫu dựa trên đặc trưng.

Xây dựng các mẫu vào các lớp khác nhau, sau đó gắn nhãn cho các lớp này.

Trích chọn đặc trưng:

Đây là bước biểu diễn các mẫu bằng các đặc trưng của đối tượng. Trong quá trình số liệu ảnh sẽ được thu gọn lại. Điều này hết sức cần thiết cho việc tiết kiệm bộ nhớ trong việc lưu trữ và thời gian tính toán. Một phương pháp trích chọn

đặc trưng tốt nếu như nó trích chọn các đặc trưng của đối tượng mà các đặc trưng đó sẽ giúp cho việc phân biệt được các lớp mẫu khác nhau, đồng thời nó cũng biến đổi được các thuộc tính cố hữu của đối tượng hay do các thiết bị thu nhận ảnh tạo ra.

Việc trích chọn các đối tượng đặc trưng của đối tượng là việc lựa chọn ra các yếu tố hình học. Sự biến đổi từng yếu tố riêng có thể làm thay đổi trật tự các đại lượng, điều này có thể làm ảnh hưởng đến việc phân lớp. Vấn đề này thường được giải quyết bằng một phép biến đổi tuyến tính thích hợp đối với các thành phần của vector đặc trưng.

Phân lớp :

Đây là bước quyết định trong quá trình nhận dạng. Tất cả các bước trong quá trình xử lý nhằm mục đích cho việc phân tách các mẫu thành công. Quá trình phân lớp có thể hiểu là quá trình chuyển đổi các số liệu đầu vào định lượng và các số liệu đầu ra định tính. Đầu ra của phân lớp có thể là sự lựa chọn rời rạc một lớp trong số các lớp đã được định nghĩa, hoặc có thể là một vector giá trị thực biểu diễn các giá trị có thể thừa nhận mẫu đó được hình thành từ các lớp tương ứng.

3.4.2 Tiến hành nhận dạng các ký tự

Các ký tự sau khi đã cách ly ta mang chúng phân thành các lớp giống như cách tạo ra các lớp mẫu. Như vậy, ta lựa chọn các lớp ký tự này so sánh lần lượt với các lớp có trong mẫu. Kết quả của mỗi lần so sánh tìm ra hệ số tương quan sau đó tiến hành lưu chúng cùng các lớp khác. Sau khi hoàn tất xong ta tiếp tục chọn trong các lớp xem lớp nào có hệ số tương quan lớn nhất, lớp này có tên gì tương ứng với ký tự nào ta xuất ra màn hình ký tự đó.

Phương pháp này đòi hởi cần phải có hai ảnh cùng kích thước. Công thức xác định hệ số tương quan:

Trong đó Amn là giá trị pixel tại cột m và hàng n, Bmn là giá trị pixel tại cột m và hàng n. và là giá trị trung bình của ma trận A và B.

Ví dụ: A = B = C = 6 2 4 3 7 21 7 6 3 1 3 1 1 0 9 12 12 3 2 1 3 4 1 8 33 88 119 49 0 0 2 2 1 28 132 156 150 90 1 1 2 1 0 14 133 130 144 86 10 10 1 1 0 0 86 112 69 16 2 4 2 1 0 0 18 14 0 0 2 3 3 1 0 0 3 1 2 3 3 3 3 1 0 0 0 1 2 3 4 4 1 1 0 0 0 0 0 2 5 6 2 4 3 7 21 7 6 3 1 3 1 1 0 9 12 12 3 2 1 3 4 1 8 33 88 119 49 0 0 2 2 1 28 132 156 150 90 1 1 2 1 0 14 133 130 144 86 10 10 1 1 0 0 86 112 69 16 2 4 2 1 0 0 18 14 0 0 2 3 3 1 0 0 3 1 2 3 3 3 3 1 0 0 0 1 2 3 4

Corr2(A,B) =1 Corr2(A,C) =0.3677

CHƯƠNG 4

KẾT QUẢ MÔ PHỎNG

4.1 GIAO DIỆN CHƯƠNG TRÌNH4.1.1 Giao diện chương trình 4.1.1 Giao diện chương trình

0 5 11 11 10 7 5 4 4 1 1 5 2 4 3 4 16 4 5 1 1 2 4 18 21 11 5 1 3 2 1 2 27 91 127 56 3 2 3 2 0 7 130 158 146 95 0 2 2 1 0 1 118 140 140 97 4 3 1 1 2 0 63 96 40 8 8 6 2 1 3 1 0 3 4 14 1 0 2 1 2 1 0 12 23 18 0 2 3 1 1 0 0 2 9 5 1 3 2 1

Hình 4.1.1: Giao diện chương trình

Hình 4.1.2: Giao diện khi cặp nhật ảnh nhận dạng

Hình 4.1.3: Kết quả nhận dạng

4.2 QUY TRÌNH NHẬN DẠNG

Quá trình nhận dạng biển số xe được thực hiện theo quy trình sau:

- Bước 1: Ảnh dữ liệu đầu vào (ảnh màu) sẽ được đưa lên giao diện chính.

- Bước 2: Ảnh màu được chuyển thành ảnh trắng đen trước khi đưa vào nhận dạng. - Bước 3: Trích vùng biển số cần nhận dạng từ ảnh trắng đen vừa thu được.

- Bước 5: Lựa chọn và sắp xếp các ký tự của vùng biển số - Bước 6: Nhận dạng ký tự và xuất ra giao diện chương trình

KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN ĐỀ TÀI (adsbygoogle = window.adsbygoogle || []).push({});

KẾT LUẬN

Đồ án thực hiện được các yêu cầu đã đặt ra, nhận dạng đúng biển số xe, tốc độ xử lý tương đối, giao tiếp với phần cứng (camera, webcam). Trong đó vẫn còn nhiều thiếu sót: xử lý chưa chính xác khi biển số bị nghiên, trong các điều kiện ánh sáng…

Kết quả nhận dạng toàn bộ chương trình chỉ ở mức chấp nhận được, khả năng sai lớn nhất của chương trình trong quá trình chạy thử nghiệm là sai mất một kí tự trong các kí tự nhận dạng được. Chính vì vậy, khả năng nhận dạng của chương trình không thể chính xác tuyệt đối.

Các ký tự có độ chính xác không cao thường gặp như: - Chữ D cho ra kết quả số 0.

- Chữ Y cho ra kết quả chữ T. - Số 2 cho ra kết quả chữ Z.

Một phần của tài liệu Nhận diện biển số xe dùng Matlab (Full Code) (Trang 27)