Thay vì như trước đây, chúng ta phải mất từ năm đến mười phút cho một quy trình gửi xe thủ công, từ việc người nhân viên ghi biển số xe vào giấy gửi xe, rồi lấy một phần giấy gửi xe đó b
Trang 1đầu, thì việc mà chúng ta phải mất quá nhiều thời gian vào việc gửi xe tại các bãi giữ xe đã trở nên lãng phí, một sự lãng phí mà chúng ta có thể hoàn toàn bù đắp được bằng cách áp dụng sự tiến bộ của khoa học, và sự phát triển của công nghệ thông tin
Thay vì như trước đây, chúng ta phải mất từ năm đến mười phút cho một quy trình gửi xe thủ công, từ việc người nhân viên ghi biển số xe vào giấy gửi xe, rồi lấy một phần giấy gửi xe đó bấm vào xe của chúng ta, sau đó lại lấy một phần giấy gửi
xe mà chúng ta giữ so khớp với phần bấm trên xe của chúng ta khi ta lấy xe ra về, thì giờ đây công việc đó chỉ mất khoảng từ năm đến mười giây khi ta áp dụng công nghệ thông tin vào các bãi giữ xe, và các bãi giữ xe này được gọi là những bãi giữ
xe thông minh Và hiện tại các bãi giữ xe thông minh này đang được áp dụng một cách rộng rãi tại các trung tâm thương mại, siêu thị, nhà sách, trường học, bệnh viên, v.v…
Tuy nhiên đa phần những bãi giữ xe thông minh hiện nay, chỉ áp dụng một phần công nghệ thông tin chứ chưa hoàn toàn tự động hóa Điển hình là nhân viên giữ xe vẫn phải tự so khớp biển số xe lúc xe vào và lúc xe ra, những hệ thống này cũng chưa thể xác định được đâu là vùng biển số xe và chúng cũng chỉ hoạt động tốt trong một số điều kiện nhất định Chính vì vậy mà nhóm đã lựa chọn đề tài
“Nghiên cứu và áp dụng một số thuật toán xử lý ảnh vào việc xây dựng hệ thống bãi giữ xe thông minh” để làm khóa luận tốt nghiệp của mình Mục tiêu của đề tài
là khắc phục những hạn chế đang tồn đọng ở những bãi giữ xe thông minh hiện nay bằng cách nghiên cứu, cải tiến những thuật toán như thuật toán cắt khung biển số xe (thuật toán Canny), và thuật toán so khớp ảnh (OpenSurf) để tích hợp vào các bãi giữ xe thông minh để chúng hoạt động một cách tự động hóa cao hơn và mang lại hiệu quả, độ tin cậy, và độ chính xác tốt hơn Nội dung chính của đề tài khóa luận sẽ tập trung vào những chương chính sau:
Trang 2Chương 2: Cơ sở lý thuyết - chương này sẽ cung cấp cho chúng ta những kiến thức, những phân tích về những giải pháp kỹ thuật mà nhóm chúng tôi đã sử dụng
để giải quyết những vấn đề của đề tài, bao gồm: kỹ thuật xác định vùng ảnh chứa biển số xe, kỹ thuật Canny, kỹ thuật so khớp (SURF)
Chương 3: Cài đặt chương trình - chương này sẽ trình bày những nội dung như sau: môi trường phát triển ứng dụng, nền tảng phát triển ứng dụng, cũng như là phần thiết kế giao diện của chương trình
Chương 4: Kiểm nghiệm - đây là chương kiểm tra lại hiệu quả hoạt động của chương trình Chương trình sẽ chạy như thế nào, chạy trên những bộ dữ liệu nào, kết quả ra làm sao, v.v… Tất cả sẽ được trình bày chi tiết trong chương này
Chương 5: Kết luận – chương này sẽ tổng kết lại những gì mà nhóm đã làm được, chưa làm được, cũng như là những hướng phát triển của đề tài trong tương lai
Do thời gian nghiên cứu của đề tài quá ngắn mà các thuật toán về xử lý ảnh thì lại có độ phức tạp cao nên khóa luận của chúng em không thể tránh khỏi những sai sót, chúng em rất mong nhận được ý kiến đóng góp của quý thầy cô, cũng như là các bạn để đề tài của chúng em ngày càng được hoàn thiện hơn Chúng em xin chân thành cảm ơn
Trang 3nghiệp này, nhóm chúng tôi luôn nhận được sự quan tâm, giúp đỡ và hướng dẫn tận tình của giảng viên hướng dẫn TS Ngô Thanh Hùng Nhân dịp này nhóm chúng em xin gửi lời cảm ơn sâu sắc nhất đến với Thầy, chúc Thầy và gia đình luôn luôn dồi giàu sức khỏe, hạnh phúc và gặt hái được nhiều thành công trong công tác trồng người và đào tạo lớp trẻ
Chúng tôi cũng xin gửi lời cảm ơn sâu sắc nhất đến Ban giám hiệu Trường đại học Công Nghệ Thông Tin – Đại học Quốc Gia Thành Phố Hồ Chí Minh, tập thể giảng viên của khoa Công Nghệ Phần Mềm đã quan tâm, và giúp đỡ cho chúng tôi hoàn thành tốt luận văn này
Cuối cùng chúng con xin gửi lời cảm ơn cha mẹ đã động viên chúng con trên con đường học vấn, cảm ơn bạn bè luôn bên cạnh giúp đỡ chúng tôi Một lần nữa chúng tôi xin chân thành cảm ơn
Sinh viên thực hiện
Bùi Thiện Ân – Phạm Khương Duy
Trang 4
Trang 5
Trang 6
LỜI MỞ ĐẦU
LỜI CẢM ƠN
NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN
NHẬN XÉT CỦA GIẢNG VIÊN PHẢN BIỆN
MỤC LỤC
DANH MỤC CÁC KÍ HIỆU, CÁC CHỮ VIẾT TẮT
DANH MỤC CÁC BẢNG
DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ
Chương 1 – TỔNG QUAN VỀ ĐỀ TÀI 1
1.1 Thực trạng hiện nay 1
1.2 Hệ thống bãi giữ xe bán tự động 2
1.3 Hệ thống giữ xe tự động 3
1.4 Phạm vi nghiên cứu và giải pháp của đề tài 7
1.4.1Phạm vi nghiên cứu 7
1.4.2Giải pháp 8
Chương 2 – CƠ SỞ LÝ THUYẾT 10
2.1 Xác định vùng ảnh chứa biển số xe 10
2.1.1Kỹ thuật Canny 11
2.1.1.1 Làm trơn ảnh 11
2.1.1.2 Tìm gradient 12
2.1.1.3 Loại bỏ điểm ảnh không cực đại 13
Trang 72.1.2Rút trích biển số 16
2.2 So khớp biển số 17
2.2.1Sơ lược về thuật toán SURF 21
2.2.2Mô tả thuật toán SURF 22
2.2.2.1 Integral image 22
2.2.2.2 Dò tìm điểm quan tâm 23
2.2.3So khớp hai ảnh 31
Chương 3 – CÀI ĐẶT CHƯƠNG TRÌNH 33
3.1 Giới thiệu 33
3.1.1Sơ lược về thư viện OpenCV 33
3.1.2Sơ lược về thư viện EmguCV 34
3.1.3Ưu điểm của thư viện EmguCV 34
3.2 Ngôn ngữ, môi trường cài đặt và công cụ phát triển 34
3.3 Thiết kế giao diện chương trình 35
3.3.1Màn hình chính 35
3.3.2Màn hình Cắt biển số xe 38
3.3.3Màn hình So khớp biển số 39
3.3.4Màn hình Tìm biển số 40
Chương 4 – KIỂM NGHIỆM 42
4.1 Thiết bị kiểm nghiệm 42
4.2 Cơ sở dữ liệu ảnh 42
4.3 Kiểm nghiệm 43
Trang 84.3.3Nhận dạng ký tự với phần mềm SimpleLPR 46
4.4 Đánh giá 47
4.4.1Rút trích vùng biển số 47
4.4.2So khớp ảnh 48
4.4.3Nhận dạng ký tự trên SimpleLPR 48
Chương 5 – KẾT LUẬN 49
5.1 Kết quả đạt được 49
5.2 Những điều chưa đạt được 49
5.3 Hướng phát triển 50
PHỤ LỤC 51
TÀI LIỆU THAM KHẢO 64
Trang 9SIFT Scale Invariant Feature Transform
PCA-SIFT Principal Component Analysis - SIFT
ANPR Automatic Number Plate Recognition
Trang 10Bảng 2.2: So sánh độ co thay đổi 18
Bảng 2.3: So sánh ánh sáng thay đổi 20
Bảng 2.4: So sánh biến đổi afin 21
Bảng 2.5: Kết quả tổng hợp so sánh của ba phương pháp SIFT, PCA-SIFT và SURF 21
Bảng 3.1: Thông tin chương trình cài đặt 34
Bảng 4.1: Thông tin cấu hình máy thứ nhất 42
Bảng 4.2: Thông tin cấu hình máy thứ hai 42
Bảng 4.3: Thông tin cơ sở dữ liệu ảnh của bộ dữ liệu mẫu 43
Bảng 4.4: Kết quả kiểm nghiệm rút trích vùng biển số trên máy thứ nhất 43
Bảng 4.5: Kết quả kiểm nghiệm rút trích vùng biển số trên máy thứ hai 44
Bảng 4.6: Kết quả kiểm nghiệm khớp trên máy thứ nhất 45
Bảng 4.7: Kết quả kiểm nghiệm khớp trên máy thứ hai 45
Bảng 4.8: Kết quả kiểm nghiệm không khớp trên máy thứ nhất 45
Bảng 4.9: Kết quả kiểm nghiệm không khớp trên máy thứ hai 46
Bảng 4.10: Kết quả nhận dạng ký tự trên SimpleLPR 46
Trang 11Hình 1.2: Quy trình xử lý trong nhận diện biển số xe 5
Hình 1.3: Ảnh chụp từ camera 6
Hình 1.4: Ảnh sau khi đã được tiền xử lý ảnh 6
Hình 1.5: Vùng biển số xe được trích xuất 7
Hình 1.6: Khoanh vùng từng kí tự trong biển số xe 7
Hình 2.1 Tấm ảnh đầu vào và tấm ảnh đã làm trơn 12
Hình 2.2 Cường độ biên đã được tính so sánh với tấm ảnh được làm trơn 13
Hình 2.3 Phân loại và làm tròn hướng gradient 14
Hình 2.4 Ví dụ loại bỏ điểm ảnh không cực đại 14
Hình 2.5 Tấm ảnh cường độ biên so sánh với tấm ảnh được loại bỏ điểm ảnh không cực đại 15
Hình 2.6: Tấm ảnh bên trái là biên mạnh, tấm ảnh bên phải là biên yếu 15
Hình 2.7: Tấm ảnh với biên thực sự 16
Hình 2.8: So sánh xoay ảnh 19
Hình 2.9: So sánh làm mờ ảnh 20
Hình 2.10: Hình chữ nhật cần tính 23
Hình 2.11: Trọng số bộ lọc xấp xỉ 25
Hình 2.12: Ảnh gốc không đổ chỉ thay đổi kích thước bộ lọc 26
Hình 2.13: Kích thước bộ lọc sau phải khác biệt tối thiểu 6 để duy trì cấu trúc 27
Hình 2.14: Điểm ảnh đánh dấu X là cực đại nếu nó lớn hơn những điểm ảnh vòng tròn 28
Hình 2.15: Bộ lọc Haar wavelet theo hướng x và hướng y 29
Hình 2.16: Cách định hướng điểm quan tâm 30
Hình 2.17: Hình vuông màu xanh là một trong 16 vùng và vòng tròn màu xanh là những điểm mẫu 31
Hình 3.1: Màn hình chính 35
Trang 12Hình 3.5: Màn hình Cắt biển số 38
Hình 3.6: Màn hình So khớp biển số xe 39
Hình 3.7: Màn hình Tìm biển số 41
Hình 4.1: Ảnh biển số cut_input01_001.Png 45
Trang 13Chương 1 – TỔNG QUAN VỀ ĐỀ TÀI
1.1 Thực trạng hiện nay
Với nhu cầu ngày càng cao của đời sống xã hội về phương tiện đi lại, số lượng
xe máy và ô tô được nhiều người sử dụng trong sinh hoạt, đi học, đi làm, công tác, v.v… theo thời gian lại càng có xu hướng tăng lên đáng kể
Tuy nhiên, việc ghi vé và quản lý thủ công như hiện nay đã gây không ít khó khăn cho nhân viên cũng như gây ra sự thất thoát về tài chính cho chính chủ bãi giữ
xe Ngoài ra, cách giữ xe thông thường như: xé vé tay, ghi phấn lên xe, v.v…vừa gây mất mỹ quan cũng như không đảm bảo về tính bảo mật, thường xuyên xảy ra các sự cố mất xe với những thủ đoạn tinh vi của kẻ gian như tráo biển số, tráo vé bấm trên xe
Một số nơi đã sử dụng công nghệ in mã vạch là một bước tiến đáng kể đối với việc giữ xe bằng cách thủ công thông thường, nó nâng cao được hiệu quả với thời gian xử lý xe ra vào Song, nguồn giấy in nhiệt là không thể tái sử dụng, hết lượt xe của khách hàng, nó sẽ trở thành rác Ngoài ra, vào mùa mưa, những vé xe này sẽ bị thấm nước, dẫn đến tình trạng mờ mã vạch, máy quét không thể quét được
Để giải quyết những khó khăn trong việc quản lý bãi giữ xe trên, trên thị
trường đã xuất hiện những hệ thống giữ xe hiện đại hơn được gọi là: "Hệ thống bãi
giữ xe thông minh" Hệ thống với những tính năng ưu việt đã giải quyết một cách
triệt để những khó khăn trên, bằng cách sử dụng loại thẻ RFID (Radio Frequency Identification) và thẻ SmartCard để thay thế cho loại thẻ giấy sử dụng giấy in nhiệt Đây là một loại thẻ đặc biệt, có tính bảo quản cao, có thể tái sử dụng được, nên sẽ không tạo ra rác, góp phần nâng cao mỹ quan tại các bãi giữ xe Tuy nhiên, đa phần những hệ thống này vẫn là hệ thống bán tự động, vẫn còn phụ thuộc nhiều vào con người, cụ thể như là một số hệ thống vẫn chưa xác định được đâu là vùng biển số
xe, vẫn chưa nhận dạng được biển số xe, cũng như là nhân viên vẫn phải dùng mắt thường để so khớp ảnh xe vào và xe ra để xác định có đúng là xe của khách hàng
Trang 14hay không Và đó cũng là nguyên nhân mà nhóm chúng em lựa chọn đề tài này để giải quyết những vấn đề trên, và cải thiện quá trình tự động hóa của các hệ thống bãi giữ xe thông minh hiện nay
1.2 Hệ thống bãi giữ xe bán tự động
Hình 1.1: Quy trình giữ xe
Khi xe vào bãi (Lối vào): Khách hàng chạy xe vào vị trí vạch dừng tại lối
vào, nhân viên kiểm soát tại lối vào sẽ đưa thẻ chip vào vị trí phát sóng trên tủ kiểm soát, và nhấn nút kiểm soát ở lối vào, lúc này camera sẽ truyền tín hiệu hình ảnh của
xe như: thân xe, chủng loại xe, màu sắc và đặc biệt là biển số xe Ngay tức thì, hình ảnh sẽ được chụp và chương trình mã hóa hình ảnh vừa mới chụp lưu vào thẻ và hệ thống lưu trữ của máy tính Sau đó thẻ sẽ được đưa cho khách hàng giữ Mất khoảng 2s cho một tác vụ chụp hình, ghi vào thẻ và lưu trữ trong máy tính
Khi xe ra bãi (Lối ra): Khách hàng chạy xe vào vị trí vạch dừng tại lối ra,
đưa thẻ xe cho nhân viên kiểm soát đầu ra, tại đây thẻ được đặt lên khu vực phát sóng trên tủ kiểm soát, và nhấn nút kiểm soát thẻ Lúc này hình ảnh sẽ được mã hóa
Trang 15ngược lại và thể hiện trên màn hình máy tính (hình ảnh 1 trên màn hình máy tính) Đồng thời camera đầu ra sẽ chụp hình ảnh xe đang dừng (hình ảnh 2 trên màn hình máy tính) Lúc này nhân viên sẽ kiểm soát hai biển số xe bằng mắt thường Nếu xe đúng với hình ảnh ban đầu thì là hợp lệ, bảng đèn sẽ thể hiện số tiền cho khách hàng phải trả, còn lại nếu không đúng thì nhân viên sẽ xử lý theo quy định của bãi xe
1.3 Hệ thống giữ xe tự động
Khác với hệ thống bãi giữ xe bán tự động, hệ thống giữ xe tự động sẽ tự động nhận diện biển số xe lúc xe ra và lúc xe vào Một trong những hệ thống được áp
dụng nhiều nhất là Automatic Number Plate Recognition (ANPR) Đây là hệ
thống sử dụng hình ảnh được chụp từ camera để thực hiện việc kiểm tra, xác định biển số xe của phương tiện một cách tự động, từ đó có khả năng hỗ trợ truy vấn các thông tin chi tiết cấp cao hơn như: tên chủ phương tiện, thông tin đăng kí, v.v Hệ thống này được ứng dụng nhằm giải quyết các vấn đề liên quan tới an ninh, thống
kê khảo sát, giám sát và theo vết
Có rất nhiều giải pháp thiết kế hệ thống, thiết bị khác nhau để giải quyết các yêu cầu liên quan tới lĩnh vực này và tùy theo từng điều kiện áp dụng: ban đêm hay ban ngày, không gian mở hay đóng, ứng dụng chuyên trách (bãi giữ xe, ) hay ứng dụng kết hợp (giám sát giao thông, hệ thống theo dõi an ninh, ), ứng dụng cục bộ hay diện rộng trên phạm vị công cộng, tính địa phương, v.v Từ những phân loại yêu cầu cụ thể phong phú trên ta có thể rút ra những khó khăn mà một hệ thống ANPR thông thường phải vượt qua để đạt độ chính xác được chấp nhận đó là:
Điều kiện tự nhiên của không gian và thời gian áp dụng hệ thống: ánh
sáng, thời tiết, v.v Điều này rất dễ hiểu vì rõ ràng nhận diện biển số xe của một chiếc xe khi trời đang mưa bao giờ cũng khó khăn hơn khi trời nắng ráo
Điều kiện bối cảnh: Trong một nơi mà phông nền đơn giản chỉ với các mặt
phẳng thì bao giờ việc nhận diện cũng dễ hơn là một nơi mà khung cảnh hỗn độn, người xe tấp nập
Trang 16 Điều kiện quy định định dạng của biển số xe: cái này khác nhau tùy theo
quy định mỗi quốc gia, khu vực, nơi thì dùng hệ thống chữ tượng hình, nơi thì dùng chữ alphabet, nơi chỉ toàn số, nơi áp dụng cả số lẫn chữ, và nơi thì biển số xe hình chữ nhật một hàng, nơi hai hàng, rồi màu sắc của biển số
xe, v.v
Điều kiện hiện trạng của biển số xe: chúng ta nên nhớ rằng không phải
mọi biển số xe đều có hiện trạng mới ra lò, chúng có thể cong vênh, sơn có thể tróc, bạc màu, v.v
Điều kiện về cách thức bố trí thiết bị: cách lắp đặt camera sẽ cho bạn một
cơ hội hay thách thức trong quá trình chạy thuật toán Tốc độ di chuyển của
xe, tốc độ bắt hình của camera cũng tạo ra những vấn đề không nhỏ
Có quá nhiều điều kiện ảnh hưởng đến hệ thống của chúng ta, và vì vậy chúng
ta cần phải hạn chế lại phạm vi, và điều kiện hoạt động của hệ thống Có như vậy ta mới có thể loại bỏ bớt các thách thức, và tập trung vào giải quyết các vấn đề ảnh hưởng trực tiếp đến hệ thống Ở đây trong phạm vi đề tài luận văn này, ta sẽ chấp nhận những điều kiện lý tưởng nhất như là:
Ánh sáng phải vừa đủ, không quá sáng, cũng không quá tối
Bối cảnh phải cố định và không có quá nhiều những hình ảnh phía sau
Biển số xe ở đây là biển số xe ở Việt Nam và có hai loại:
o Xe máy: dạng hình chữ nhật, với hai hàng: hàng trên là mã tỉnh, mã khu vực, và hàng dưới là số xe
o Xe mô tô: biển trước: một hàng với mã tỉnh, kí hiệu khu vực và số xe
Hiện trạng của biển số xe: biển mới hoặc cũ nhưng vẫn nhìn thấy rõ bằng mắt thường, không có bất cứ một biến dạng nào hoặc có thì không đáng kể
Đó là phạm vi về môi trường mà ta sẽ triển khai để áp dụng hệ thống của chúng ta Tiếp theo chúng ta cần phải giới hạn lại phạm vi xử lý trong quy trình xử
lý nhận dạng biển số xe Vì đề tài chúng ta chỉ nghiên cứu một phần của quy trình
Trang 17hệ thống chứ không nghiên cứu và triển khai hệ thống nên chúng ta cần phải giới hạn phạm vi lại
Thông thường, quy trình của quá trình xử lý nhận diện biển số xe sẽ thông qua các bước như sau:
Hình 1.2: Quy trình xử lý trong nhận diện biển số xe
Trong đó:
1 Là quá trình chúng ta capture từng khung hình trong video stream liên tục từ camera Quá trình bắt hình được thực hiện tự động và liên tục, theo chu kì hay tùy vào sự quyết định của các điều kiện khác
Trang 18Hình 1.3: Ảnh chụp từ camera
2 Tại đây sẽ thực hiện các phép tiền xử lý ảnh như là: chuyển đổi không gian màu, khử nhiễu, cân bằng sáng,… được tiến hành để 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
Hình 1.4: Ảnh sau khi đã được tiền xử lý ảnh
3 Thuật toán dò tìm, trích xuất vùng tương ứng với biển số xe trên khung hình (License Plate Detection) Thuật toán này có thể dựa trên các đặc tính về màu sắc, diện tích, độ góc cạnh, đường thẳng để chọn
ra vùng có khả năng là biển số xe cao nhất
Trang 19Hình 1.5: Vùng biển số xe được trích xuất
4 Từ vùng biển số xe được trích xuất, ta tiếp tục phân vùng từng kí tự trong đó để chuẩn bị tiến hành nhận dạng
Hình 1.6: Khoanh vùng từng kí tự trong biển số xe
5 Nhận dạng kí tự - Optical Character recognition (OCR): Bộ nhận diện
kí tự nhận đầu vào là các ảnh có kí tự riêng lẽ và cho ra kí tự văn bản tương ứng Hiện nay mạng Neuron là hệ thống máy học được sử dụng phổ biến cho việc phân loại này, ngoài ra các giải thuật so khớp mẫu (Template Matching) cũng được áp dụng tùy theo tình huống
6 Từ kết quả nhận diện ở bước 5, ta đã thực hiện việc chuyển đổi từ hình ảnh của biển số xe sang giá trị văn bản Dựa vào giá trị văn bản
đã có thì việc tạo ra các câu truy vấn để truy xuất thông tin về biển số
xe đó trong cơ sở dữ liệu là xử lý hết sức dễ dàng
1.4 Phạm vi nghiên cứu và giải pháp của đề tài
1.4.1 Phạm vi nghiên cứu
Ở phần trên đã mô tả quy trình cơ bản để tiến hành nhận dạng một biển số xe thông thường mà bất cứ một ứng dụng nhận dạng biển số xe nào cũng phải trải qua
Trang 20Còn trong đề tài này sẽ đề xuất một giải pháp khác cho các hệ thống giữ xe thông minh tự động Ở giải pháp này ta sẽ áp dụng thuật toán tiền xử lý ảnh và xử lý trích xuất ảnh của vùng biển số chụp được lúc xe vào, sau đó dùng thuật toán so khớp ảnh để tìm ảnh này trong ảnh chụp được lúc xe ra Như vậy giải pháp này không cần sử dụng đến các thuật toán nhận dạng kí tự, vốn cũng rất phức tạp và tốn thời gian Cũng cần nói rõ thêm một điều ở đây nữa là việc nhận dạng kí tự đối với những biển số xe tại Việt Nam cũng không đạt một hiệu quả cao Cụ thể là nhóm đã tiến hành kiểm nghiệm một phần mềm nhận dạng kí tự biển số xe của nước ngoài (phần mềm SimpleLPR của Warelogic Inc) nhưng có hỗ trợ nhận diện biển số xe của Việt Nam, và với bộ ảnh dữ liệu đầu vào của nhóm dùng để kiểm tra thì cho kết quả không cao, đa số là không nhận được hoặc nhận được nhưng nhận nhầm Có thể
xem chi tiết tại Phụ lục A bên dưới hoặc trong chương 4 – Kiểm nghiệm
Như vậy mục tiêu của đề tài là: nghiên cứu, áp dụng các thuật toán tiền xử
lý ảnh, thuật toán cắt khung biển số xe, và thuật toán so khớp ảnh vào việc xây dựng hệ thống bãi giữ xe nhân tạo
Vì các yếu tố ảnh hưởng đến các thuật toán này là khá nhiều như đã mô tả ở mục trước (1.3), nên để thuận lợi cho việc nghiên cứu cũng như làm cơ sở cho việc xác định các trường hợp có thể triển khai hệ thống được phát triển trong khóa luận này, sau đây xin nêu ra các điều kiện thử nghiệm cũng như triển khai hệ thống: ánh sáng, nhiệt độ, thời tiết tốt, bối cảnh cố định và không có quá nhiều hình ảnh phía sau, biển số xe phải còn mới, ít bị biến dạng hoặc có biến dạng nhưng không đáng
Trang 21và cắt khung biển số xe, và thuật toán để so khớp biển số xe vừa mới cắt với biển số
xe được chụp lại khi xe ra khỏi bãi giữ xe
Giải pháp được đưa ra ở đây là như sau:
Sử dụng bộ thư viện xử lý ảnh EmgvCV để giải quyết các vấn đề về tiền xử lý ảnh
Sử dụng kĩ thuật Canny trong xử lý ảnh để xác định và cắt khung biển
số
Và sử dụng thuật toán SURF dùng để so khớp
Các ưu và nhược điểm, cũng như lý do sử dụng những giải pháp trên sẽ được trình bày chi tiết trong chương 2 – Cơ sở lý thuyết của luận văn này
Trang 22Chương 2 – CƠ SỞ LÝ THUYẾT
Dựa vào những gì khảo sát, hệ thống cần giải quyết hai bài toán riêng rẽ là: xác định
vị trí biển số xe và so khớp biển số đó với ảnh đầu ra
2.1 Xác định vùng ảnh chứa biển số xe
Mục đích: Từ bức ảnh chụp được trong bước thu nhận ả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 tích: Có khá nhiều phương pháp khác nhau để cắt khung biển số, trong
số đó thì chúng tôi đã xem xét qua hai phương pháp sau:
o Phương pháp hình thái học: đây là phương pháp dựa vào đặc trưng quan
trọng là biển số xe máy có độ sáng (tức là màu xám khi chuyển ảnh về dạng xám) là tương đối khác so với các vùng khác trong cùng một bức ảnh, cũng như là sự phân bổ mức xám là khá đồng đều trên biển số xe và vì vậy khi chúng được nhị phân hóa, thì vùng biển số sẽ trở thành một đối tượng có đặc thù hình thái, có thể dễ dàng phân biệt được so với các vùng khác
o Phương pháp dò biên: phương pháp này sẽ sử dụng những bộ lọc Gradient
để trích ra được các đặc trưng cạnh biên Từ những cạnh biên đó có thể rút trích ra được vùng biển số xe Tuy nhiên nhược điểm của nó là vùng biển số phải khác biệt với những vùng lân cận mới có thể xác định chính xác được
Do đặc thù biển số xe ở Việt Nam khá đa dạng về màu sắc, từ biển số trắng, biển số xanh, biển số đỏ, cũng như những biển số đã bị ngã màu, bám bẩn Vì vậy chúng ta cần phải lựa chọn một phương pháp cắt khung biển số mà không phụ thuộc vào màu sắc của biển số đó Do đó nếu mà chúng ta sử dụng phương pháp hình thái học thì chúng ta sẽ rất khó có thể xác định được mức xám với những biển số đa dạng màu sắc như vậy Vì vậy giải pháp được lựa chọn ở đây sẽ là phương pháp dò biên Các bước thực hiện sẽ được mô tả cụ thể bên dưới
Bước thực hiện: Trải qua hai bước chính:
Trang 23 Sử dụng kỹ thuật Canny để xác định đường biên mảnh và phát hiện chính xác điểm ảnh, điểm nhiễu
Rút trích biển số bằng cách gắn nhãn cho những đường biên tìm được Sau
đó trích ra các đường biên ứng viên theo tiêu chí diện tích, số cạnh, chiều dài, chiều rộng
2.1.1 Kỹ thuật Canny
Kỹ thuật Canny là một kỹ thuật dò biên sử dụng nhiều thuật toán để dò những biên có phạm vi rộng trong hình Nó được phát triển bởi John F Canny năm 1986
Kỹ thuật này được trải qua 5 bước cụ thể như sau:
o Làm trơn ảnh: ảnh trơn có thể giảm nhiễu
o Tìm gradient: những biên sẽ được dán nhãn ở những nơi có cường độ gradient lớn
o Loại bỏ điểm ảnh không cực đại: chỉ những điểm cực đại mới được dán nhãn là biên
o Phân ngưỡng: những điểm ảnh có khả năng là biên thì được xác định bởi phân ngưỡng
o Xác định biên thật sự: biên cuối cùng được xác định bằng cách loại bỏ tất
cả biên không liên thông tới biên mạnh
2.1.1.1 Làm trơn ảnh
Đối với những tấm ảnh được lấy từ camera thì luôn chứa một số lượng lớn nhiễu Để ngăn chặn việc nhiễu hiểu sai là biên, nhiễu phải được giảm bớt Vì thế tấm ảnh phải được làm trơn bởi bộ lọc Gaussian Nhân của bộ lọc Gaussian với độ lệch tiêu chuẩn σ = 1.4 như trong công thức 2.1 Trong hình 2.1, mô tả tấm ảnh đầu vào và tấm ảnh sau khi chuyển thành ảnh xám đã được làm trơn bởi bộ lọc này
Trang 24Hình 2.1 Tấm ảnh đầu vào và tấm ảnh đã làm trơn
2.1.1.2 Tìm gradient
Gradient của ảnh là sự thay đổi có hướng về cường độ hoặc màu trong ảnh Nó thường được sử dụng để rút trích thông tin từ ảnh Trong xử lý ảnh hai chiều thì gradient sẽ là một vectơ f(x,y) theo 2 hướng x và y
Kỹ thuật Canny cơ bản tìm kiếm biên nơi mà có cường độ mức xám thay đổi nhiều nhất Những vùng này được tìm thấy bằng cách xác định các gradient trong ảnh Các gradient tại mỗi điểm ảnh trong ảnh đã được làm trơn được xác định bằng cách áp dụng toán tử Sobel Đầu tiên ta lấy xấp xỉ gradient theo hướng x và y tương ứng bằng cách áp dụng 2 nhân như trong công thức 2.2
Độ lớn gradient (còn được biết như là cường độ biên) được xác định bởi khoảng cách Euclid và được tính bằng định lý Pytago như công thức 2.3 Nó thỉnh thoảng được đơn giản hóa bằng cách tính khoảng cách Manhattan như công thức
(2.1)
(2.2)
Trang 252.4 để giảm sự tính toán phức tạp Khoảng cách Euclid sẽ được áp dụng trong bài Cường độ biên đã được tính toán so sánh với tấm ảnh được làm trơn trong hình 2.2
Hình 2.2 Cường độ biên đã được tính so sánh với tấm ảnh được làm trơn
Cường độ gradient của một ảnh thường có thể chỉ ra những biên hoàn toàn rõ ràng Tuy nhiên, những biên rộng sẽ không được xác định chính xác Để khắc phục nhược điểm này, hướng của biên phải được xác định như công thức 2.5
2.1.1.3 Loại bỏ điểm ảnh không cực đại
Mục đích của bước này là chuyển đổi những biên nhòe trong tấm ảnh cường
độ gradient trở thành sắc nét Đơn giản bằng cách giữ lại tất cả điểm cực đại cục bộ trong tấm ảnh gradient và xóa những điểm còn lại Thuật toán được áp dụng cho từng điểm ảnh:
o Làm tròn hướng gradient θ theo hình 2.3, tương ứng với 8 vùng lân cận liên thông (8-connected neighborhood) Nếu hướng θ thuộc vùng màu vàng thì làm tròn thành 00 Nếu thuộc vùng màu xanh lá cây thì làm tròn thành 450 Nếu thuộc vùng màu xanh da trời thì làm tròn thành 900 Và cuối cùng là vùng màu đỏ thì làm tròn thành 1350
(2.3) (2.4)
(2.5)
Trang 26o So sánh cường độ biên của điểm ảnh hiện tại với cường độ biên của điểm ảnh hướng gradient dương và âm Ví dụ nếu hướng gradient là bắc (900
) thì
sẽ so sánh với điểm ảnh bắc và nam
o Nếu cường độ biên của điểm ảnh là lớn nhất, giữ lại giá trị đó Nếu không thì loại bỏ nó
Một ví dụ đơn giản về việc loại bỏ điểm ảnh không cực đại trong hình 2.4 Hầu hết các điểm ảnh có hướng gradient chỉ hướng bắc Chúng sẽ được so sánh với điểm ảnh phía trên và phía dưới Những điểm ảnh là cực đại được đánh dấu với đường viền màu trắng Tất cả điểm ảnh khác sẽ được loại bỏ
Hình 2.3 Phân loại và làm tròn hướng gradient
Hình 2.4 Ví dụ loại bỏ điểm ảnh không cực đại
Trang 27Hình 2.5 Tấm ảnh cường độ biên so sánh với tấm ảnh được loại bỏ điểm ảnh không cực đại
2.1.1.4 Phân ngưỡng
Những điểm ảnh biên còn lại sau bước loại bỏ điểm ảnh không cực đại được đánh dấu với cường độ của chúng Nhiều trong số chúng hầu như chắc chắn sẽ là biên thật sự trong ảnh, nhưng một số được gây ra bởi nhiễu hoặc thay đổi màu sắc
do bề mặt xù xì Cách đơn giản nhất để nhận biết trong số chúng là sử dụng ngưỡng, chỉ có những biên lớn hơn giá trị nào đó sẽ được giữ lại Kỹ thuật Canny
sử dụng ngưỡng kép Những điểm ảnh biên lớn hơn ngưỡng cao thì đánh dấu là mạnh, những điểm ảnh biên nhỏ hơn ngưỡng thấp thì bị loại bỏ và những điểm ảnh biên giữa hai ngưỡng thì đánh dấu là yếu
Hình 2.6: Tấm ảnh bên trái là biên mạnh, tấm ảnh bên phải là biên yếu
2.1.1.5 Xác định biên thật sự
Những biên mạnh thì được hiểu là những biên thật sự, và được bao gồm trong ảnh biên cuối cùng Biên yếu thì được bao gồm nếu và chỉ nếu chúng có liên thông với biên mạnh Nhiễu và những biến dạng nhỏ khác hứa hẹn sẽ không là kết quả
Trang 28trong biên mạnh (với sự điều chỉnh ngưỡng hợp lý) Vì vậy biên mạnh hầu như là biên thật sự trong ảnh gốc Những biên yếu có thể là biên thật sự hoặc cũng có thể
là nhiễu Biên yếu là biên thật sự sẽ có nhiều khả năng kết nối trực tiếp với biên mạnh
Hình 2.7: Tấm ảnh với biên thực sự
2.1.2 Rút trích biển số
Tiến hành duyệt ảnh từ trái qua phải từ trên xuống dưới để đánh nhãn dựa vào
8 điểm ảnh lân cận Sau khi đã đánh nhãn xong, chúng ta sẽ lấy được tập hợp các điểm ảnh tạo thành các biên đó Những điểm ảnh đó sẽ tạo thành hình nhiều nét (polyline) Tuy nhiên những hình nhiều nét đó chứa quá nhiều nét nên không thể phân biệt được đó là hình gì Vì thế chúng ta sẽ phải tìm xấp xỉ hình nhiều nét bằng cách sử dụng thuật toán cắt hình nhiều nét, thuật toán kết hợp từng đoạn hoặc kết hợp cả hai thuật toán với xấp xỉ cho trước Kết quả là chúng ta sẽ nhận được hình nhiều nét đã được giảm số đỉnh
Từ kết quả này, để áp dụng vào bài toán cắt khung biển số xe của đề tài thì những hình nhiều nét này cần phải thỏa mãn được những điều kiện dưới đây:
o Những hình nhiều nét này phải có 4 đỉnh để có thể lập thành một hình chữ nhật (hình dạng của khung biển số xe)
o Có diện tích lớn hơn 300 và nhỏ hơn 600, ta chỉ xét những hình nhiều nét
có diện tích nằm trong khoảng từ 300 đến 600, đối với những hình có diện tích nhỏ hơn 300 (xe nằm xa camera) hoặc lớn hơn 600 (gần camera) thì ta đều loại bỏ
Trang 29o 4 góc của hình phải lớn hơn 750 và nhỏ hơn 1050, đương nhiên 4 góc của hình chữ nhật phải là một góc vuông (900), ở đây để đạt được kết quả tốt hơn ta cho phép sai số trong khoảng 750
đến 1050
2.2 So khớp biển số
Mục đích: So khớp vùng biển số vừa tìm được ở bước trên với tấm ảnh đầu
ra
Phân tích: Nói về các phương pháp so khớp ảnh hiện này, chúng tôi được biết
có ba phương pháp so khớp ảnh mạnh mẽ là Scale Invariant Feature Transform (SIFT), Principal Component Analysis (PCA)-SIFT và Speeded Up Robust Feathures (SURF)
Chúng tôi sẽ không đi sâu vào chi tiết của cả ba phương pháp này mà chỉ dựa vào kết quả so sánh ba phương pháp với nhau để quyết định lựa chọn một phương pháp để sử dụng
Kết quả so sánh của chúng tôi được tham khảo từ International Journal of Image Processing (IJIP) của Luo Juan và Oubong Gwun [7] Những yếu tố được sử dụng để làm tiêu chí so sánh là: thời gian, biến đổi afin, độ co thay đổi, xoay ảnh, làm mờ ảnh, nén ảnh và ánh sáng thay đổi Dưới đây là chi tiết kết quả thực nghiệm những yếu tố được lựa chọn làm tiêu chí để so sánh của ba phương pháp so khớp ảnh
Thời gian: những yếu tố ảnh hưởng tới thời gian xử lý kích thước và chất
lượng của ảnh, kiểu ảnh và những thông số của thuật toán Thực nghiệm này sẽ sử
dụng dữ liệu Graffiti nằm trong nhóm A của hình trong phần Phụ lục B Kích thước
của ảnh là 300x240 pixel Thông số của ba thuật toán được tùy chỉnh giống nhau Thời gian thì được đếm cho đến khi xử lý hoàn thành, xử lý bao gồm hai chức năng
là dò tìm và so khớp Bảng 2.1 cho thấy rằng SURF là phương pháp nhanh nhất, SIFT thì chậm nhất nhưng tìm được nhiều điểm khớp hơn
Trang 30Độ co thay đổi: thực nghiệm này sẽ cho thấy sự hiệu quả của độ co bất biến,
sử dụng nhóm B và C của hình trong phần Phụ lục B Bảng 2.2 trình bày số lượng
điểm khớp của ba phương pháp Khi độ co thay đổi lớn, SIFT và SURF tốt hơn PCA-SIFT, vì thế kết quả của PCA-SIFT không ổn định
Xoay ảnh: thực nghiệm sử dụng ảnh nhóm D của hình trong phần Phụ lục B
Những ảnh này được xoay từ 50 tới 100 SIFT thì dò tìm được nhiều điểm khớp nhất
và ổn định SURF thì không tốt, nó tìm được ít nhất và ít ổn định nhất
Trang 32ổn định biến đổi afin được trình bày trong bảng 2.4 Dựa vào bảng cho thấy SURF
và SIFT có độ ổn định tốt khi góc nhìn thay đổi nhỏ, nhưng khi góc nhìn thay đổi lớn hơn, SURF tìm được 0 điểm và PCA-SIFT lại thể hiện tốt hơn
Trang 33Bảng 2.4: So sánh biến đổi afin
Dựa vào những kết quả thực nghiệm này, chúng ta sẽ có một bảng kết quả chi tiết
về việc so sánh ba phương pháp này
Bảng 2.5: Kết quả tổng hợp so sánh của ba phương pháp SIFT, PCA-SIFT và SURF
Cách thực hiện: Sử dụng thuật toán SURF (Speeded Up Robust Feature) 2.2.1 Sơ lược về thuật toán SURF
SURF là thuật toán mô tả và dò tìm ảnh mạnh mẽ, nó được trình bày lần đầu tiên bởi Herbert Bay và các đồng nghiệp của ông vào năm 2006 Nó được sử dụng trong những lĩnh vực thị giác máy tính (computer vision) như nhận diện vật thể hoặc dựng hình 3D Nó lấy một phần cảm hứng từ thuật toán SIFT Phiên bản tiêu chuẩn của SURF thực hiện nhanh hơn SIFT đến vài lần và theo tuyên bố của chính tác giả, thì nó vẫn có hiệu quả cao đối với những biến dạng lớn của ảnh SURF dựa
Trang 34vào tổng của Haar wavelet 2D và nó làm cho việc sử dụng integral image được hiệu quả hơn
Nó dùng một số nguyên xấp xỉ để dò tìm định thức Hessian, cái mà có thể tính toán nhanh chóng với một integral image (3 phép toán số nguyên) Đối với những đặc trưng, nó sử dụng tổng Haar wavelet xung quanh điểm quan tâm Một lần nữa
nó có thể tính toán nhờ vào integral image
2.2.2 Mô tả thuật toán SURF
Thuật toán SURF trải qua ba bước:
o Chuyển ảnh thường thành integral image
o Dò tìm điểm quan tâm
o Mô tả điểm quan tâm
2.2.2.1 Integral image
Integral image cho phép tính toán những bộ lọc dạng hộp nhanh chóng Nó là một mảng hai chiều với kích thước bằng với kích của ảnh cần tính, với mỗi phần tử của mảng này được tính bằng cách tính tổng của điểm ảnh phía trên (dòng-1) và bên trái (cột-1) của nó Bắt đầu từ vị trí trên, bên trái đến vị trí dưới, bên phải của ảnh, việc tính toán này đơn thuần chỉ dựa trên phép cộng số nguyên đơn giản, do đó tốc
độ thực hiện rất nhanh
Với việc sử dụng integral image, công việc tính toán vùng hình chữ nhật được rút gọn thành 4 phép toán Nếu chúng ta xem hình chữ nhật có 4 đỉnh A, B, C, D như hình 2.8, tổng cường độ điểm ảnh được tính bằng bằng công thức 2.7
(2.6)
Trang 35Hình 2.10: Hình chữ nhật cần tính
Khi thời gian tính toán không thay đổi khi thay đổi kích thước, phương pháp này đặc biệt hữu ích đối với vùng rộng lớn SURF sử dụng thuộc tính này để thực hiện với đa dạng kích thước bộ lọc dạng hộp với thời gian gần như không thay đổi
2.2.2.2 Dò tìm điểm quan tâm
Hessian
Bộ dò tìm của SURF dựa vào định thức ma trận Hessian Để có thể sử dụng
ma trận Hessian, chúng ta xem một hàm liên tục với 2 biến thì giá trị của hàm tại (
x, y) là f( x, y) Ma trận Hessian H, là ma trận đạo hàm riêng phần của hàm f
Định thức của ma trận ( biệt số) được tính bởi
(2.7)
(2.8)
Trang 36Giá trị của biệt số này được sử dụng để phân biệt điểm cực đại và điểm cực tiểu của hàm bằng cách xem đạo hàm bậc hai Vì định thức là kết quả của trị số đặc trưng của Hessian nên chúng ta có thể phân loại những điểm dựa vào dấu hiệu của kết quả Nếu định thức cho giá trị âm thì trị số đặc trưng có dấu hiệu khác biệt và vì thế điểm đó không phải là cực trị cục bộ Nếu nó có giá trị dương thì cả hai trị số đặc trưng là dương hoặc cả hai là âm thì cả hai trường hợp đó, điểm này được phân loại là một cực trị
Biến đổi lý thuyết này để làm việc với những tấm ảnh chứ không phải là hàm liên tục là công việc khá tầm thường Đầu tiên chúng ta thay thế những giá trị hàm f( x, y) bởi những cường độ điểm ảnh I( x, y) Kế đến chúng ta cần một phương pháp để tính đạo hàm riêng phần bậc hai của ảnh Chúng ta có thể tính toán những đạo hàm bằng cách tích chập với một nhân thích hợp Trong trường hợp của SURF,
bộ lọc tiêu chuẩn hóa độ co bậc hai Gaussian được lựa chọn Chúng ta xây dựng nhân cho Gaussian bằng cách tính toán 4 toán hạng của ma trận Hessian Sử dụng Gaussian cho phép chúng ta biến đổi số lượng làm trơn trong suốt bước tích chập để định thức được tính ở những độ co khác nhau Hơn nữa, khi Gaussian là một hàm đẳng hướng, tích chập với nhân cho phép bất biến xoay Bây giờ có thế tính ma trận
Hessian H, là một hàm 2 biến không gian x = ( x, y) và độ co σ
Lxx( x, σ) liên quan tới tích chập của đạo hàm bậc hai Gaussian
Trang 37Kể từ đây, chúng ta có thể tính định thức Hessian cho mỗi điểm ảnh và sử dụng giá trị đó để tìm điểm quan tâm
Herbert Bay đã để xuất xấp xỉ Laplacian của Gaussian bằng cách sử dụng đại diện bộ lọc của những nhân riêng biệt Tốc độ tăng đáng kể khi những bộ lọc này liên kết với integral image Để xác định số lượng khác nhau chúng ta có xem xét số lượng truy xuất và tính toán trong mảng đòi hỏi trong tích chập Đối với bộ lọc 9x9 chúng ta cần 81 lần truy xuất và tính toán mảng và chỉ có 8 đại diện bộ lọc Khi bộ lọc tăng kích thước, chi phí tính toán tăng đáng kể đối với Laplacian trong khi chi phí cho bộ lọc không phụ thuộc kích thước
Trong hình 2.9 trọng số áp dụng cho mỗi khu vực bộ lọc được giữ cho đơn giản Đối với bộ lọc Dxy thì vùng màu đen có trọng số là 1, vùng màu trắng là -1 và những vùng còn lại không có trọng số Bộ lọc Dxx, Dyy cũng tương tự nhưng vùng trắng là -1 còn vùng đen là 2 Trọng số đơn giản cho phép tính toán nhanh chóng các khu vực nhưng khi sử dụng trọng số này cần phải liên hệ tới sự khác nhau trong giá trị đáp ứng giữa nhân gốc với nhân xấp xỉ Herbert Bay đề xuất công thức xấp xỉ chính xác cho định thức Hessian sử dụng xấp xỉ Gaussian
Hình 2.11: Trọng số bộ lọc xấp xỉ
Xây dựng không gian co
Để có thể dò tìm điểm quan tâm sử dụng định thức Hessian, đầu tiên phải xem khái niệm của không gian co Không gian co là một hàm liên tục sử dụng tìm cực trị qua tất cả độ co có thể Trong thị giác không gian co được cài đặt như là tấm ảnh
(2.11)
Trang 38hình chóp nơi mà tấm ảnh đầu vào thì được tích chập lặp với nhân Gaussian mẫu phụ được lặp lại( giảm kích thước) Khi thời gian xử lý của nhân sử dụng trong SURF là độ lớn không đổi, không gian co có thể được tạo ra bằng cách áp dụng các nhân tăng kích thước cho tới khi bằng ảnh gốc Điều này cho phép nhiều lớp không gian co hình chóp được xử lý cùng một lúc và phủ nhận sự cần thiết mẫu phụ do đó cung cấp tăng hiệu suất
Hình 2.12: Ảnh gốc không đổ chỉ thay đổi kích thước bộ lọc
Không gian co phân chia thành nhiều quãng, mỗi quãng liên quan đến một dãy các bản đồ đáp ứng Trong SURF cấp thấp nhất của không gian co đạt được từ đầu
ra bộ lọc 9x9 Những bộ lọc này tương xứng σ = 1.2 Những lớp sau đạt được từ việc mở rộng bộ lọc trong khi vẫn duy trì tỷ lệ bố trí bộ lọc giống nhau Có thể tính
độ co bằng công thức
Khi xây dựng những bộ lọc lớn hơn, có một số nhân tố phải được xem xét Tăng kích thước thì bị hạn chế bởi kích thước của thùy âm và thùy dương của đạo hàm bậc hai Gaussian Trong bộ lọc xấp xỉ kích thước của thùy được lấy bằng 1/3 kích thước bộ lọc Khi chúng ta cần sự hiện diện của điểm ảnh trung tâm, kích
(2.12)