NHẬN DẠNG BIỂN số XE (có code)

39 2.5K 42
NHẬN DẠNG BIỂN số XE (có code)

Đ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

NHẬN DẠNG BIỂN số XE (có code) ........................................... NHẬN DẠNG BIỂN số XE (có code) ........................................... NHẬN DẠNG BIỂN số XE (có code) ........................................... NHẬN DẠNG BIỂN số XE (có code) ...........................................

Trang 1/33 NHẬN DẠNG BIỂN SỐ XE Nhận dạng biển số xe Trang 2/33 MỤC LỤC DANH MỤC CÁC HÌNH VẼ .vii DANH MỤC CÁC TỪ VIẾT TẮT viii CHƯỚNG TỔNG QUAN VỀ ĐỀ TÀI 1.1 GIỚI THIỆU ĐỀ TÀI 1.1.1 Đặt vấn đề .1 1.1.2 Khái quát xử lý ảnh nhận dạng biển số 1.1.3 Phân loại ứng dụng nhận dạng biển số xe 1.2 PHẦM MỀM VISUAL STUDIO VÀ THƯ VIỆN EMGUCV 1.2.1 Phần mềm Visual Studio 2015 1.2.2 Thư viện xử lý ảnh EmguCV CHƯƠNG PHƯƠNG PHÁP NHẬN DẠNG BIỂN SỐ XE 2.1 MỘT SỐ KHÁI NIỆM CƠ BẢN 2.1.1 Ảnh điểm ảnh .6 2.1.2 Các cách phân loại ảnh 2.1.3 Các giai đoạn xử lý ảnh 2.2 XÁC ĐỊNH VÙNG CHỨA BIỂN SỐ XE 2.2.1 Phân ngưỡng tìm vùng đối tượng .8 2.2.2 Một số đặc điểm biển số xe Việt Nam 2.2.3 Phát vùng chứa biển số 2.2.4 Nhận dạng kí tự 11 CHƯƠNG KẾT QUẢ MÔ PHỎNG .13 3.1 THIẾT KẾ WINDOW FORMS .12 3.2 KẾT QUẢ NHẬN DẠNG .13 CHƯƠNG KẾT LUẬN 13 4.1 NHẬN XÉT .14 4.2 HƯỚNG PHÁT TRIỂN 14 Nhận dạng biển số xe Trang 3/33 TÀI LIỆU THAM KHẢO 15 PHỤ LỤC .16 Nhận dạng biển số xe Trang 4/33 DANH MỤC CÁC HÌNH VẼ HÌNH 1-1 QUẢN LÝ BÃI GIỮ XE BẰNG NHẬN DẠNG BIỂN SỐ HÌNH 1-2 GIAO DIỆN CỦA VISUAL STUDIO 2015 HÌNH 2-1 ẢNH MÀU, ẢNH MỨC XÁM VÀ ẢNH NHỊ PHÂN HÌNH 2-2 CÁC BƯỚC XỬ LÝ ẢNH CƠ BẢN HÌNH 2-3 MỘT SỐ LOẠI BIỂN SỐ XE THƠNG DỤNG HÌNH 2-4 CÁC BƯỚC PHÁT HIỆN VÙNG CHỨA BIỂN SỐ XE 10 HÌNH 3-1 GIAO DIỆN CHƯƠNG TRÌNH CHÍNH 12 HÌNH 3-2 CƠNG CỤ DEBUG .12 HÌNH 3-3 KẾT QUẢ NHẬN DẠNG BIỂN SỐ 13 HÌNH 3-4 CÁC LOẠI BIỂN KHƠNG NHẬN DẠNG ĐỦ KÍ TỰ 13 Nhận dạng biển số xe Trang 5/33 DANH MỤC CÁC TỪ VIẾT TẮT ANPR Automatic number Plate Recognition OCR Optical Character Recognition RGB Red Green Blue CHƯƠNG 1:TỔNG QUAN VỀ ĐỀ TÀI 1.1.GIỚI THIỆU ĐỀ TÀI 1.1.1 Đặt vấn đề Nhận dạng biển số xe Trang 6/33 Ngày giới bên cạnh việc tăng trưởng kinh tế phát triển ngành khoa học kỹ thuật nói chung, mà ngành cơng nghiệp sản xuất phương tiện giao thơng lại ngành có tốc độ phát triển cực nhanh Sự phát triển ấy, thể rõ ràng thơng qua hình ảnh phương tiện giao thông giới ngày tăng cao đa dạng Tuy nhiên,điều lại gây áp lực người quan cấp quản lý,làm cho công tác quản lý giám sát khó khăn Và vấn nạn Việt Nam Công tác quản lý phương tiện giao thơng nói chung quản lý ôtô, xe máy vô phức tạp…cũng công tác phát hiện, xử phạt hành vi vi phạm giao thông, chống trộm,…sẽ tốn nhiều thời gian công sức Để làm giảm áp lực cơng tác quản lý, kiểm sốt phương tiện giao thơng, giới nhanh chóng xây dựng hệ thống giám sát tự động phương tiện giao thông Và hệ thống giám sát lấy biển số xe mục tiêu giám sát Để xây dựng hệ thống quản lý giao thơng tự động “ Bài toán nhận dạng biển số xe” tiền đề để xây dựng mơ hình quản lý Hệ thống sử dụng rộng rãi nhiên Việt Nam lĩnh vực mẻ Nhận dạng biển số xe Trang 7/33 Hình 1-1 Quản lý bãi giữ xe nhận dang biển số 1.1.2 Khát quát xử lý ảnh nhận dạng biển số: Xử lý ảnh mảng quan trọng kỹ thuật thị giác máy tính, tiền đề cho nhiều nghiên cứu thuộc lĩnh vực Hai nhiệm vụ trình xử lý ảnh nâng cao chất lượng thơng tin hình ảnh xử lý số liệu cung cấp cho q trình khác có việc ứng dụng thị giác vào điều khiển Quá trình việc thu nhận ảnh nguồn (từ thiết bị thu nhận ảnh dạng số tương tự) gửi đến máy tính Dữ liệu ảnh lưu trữ định dạng phù hợp với trình xử lý Người lập trình tác động thuật toán tương ứng lên liệu ảnh nhằm thay đổi cấu trúc ảnh phù hợp với ứng dụng khác Hệ thống nhận dạng biển số xe hệ thống có khả phân tích hình ảnh xác định biển số xe, thơng qua video, thiết bị ghi hình hình ảnh Sau xác định thông tin như: chủ sở hữu xe, theo dõi xe với tốc độ chậm, Nhận dạng biển số xe Trang 8/33 1.1.3 Phân loại ứng dụng nhận dạng biển số xe: Ứng dụng nhận dạng biển số xe ứng dụng có khả phân tích hình ảnh xác định biển số xe từ hình ảnh chụp từ thiết bị thu hình Nguồn hình ảnh cho ứng dụng có nhiều Và phát triển, hình ảnh trực tiếp thu nhận từ camera Trong đề tài dừng lại mức xác định biển số xe (xác định chữ) từ ảnh Có nhiều cách thức khác để phân loại ứng dụng nhận dạng biển số xe Một cách đơn giản phân loại ứng dụng nhận dạng biển số xe thông qua mục đích sử dụng Có thể chia ứng dụng nhận dạng biển số xe thành hai loại sau: *Loai 1: Giơi han vung nhin: -Đầu vào: Ảnh thu trực tiếp từ thiết bị ghi nhận ảnh kỹ thuật số Ảnh ghi nhận thường giới hạn vùng có biển số xe -Nguyên lý hoạt động: Các phương tiện giao thông phải chạy với tốc độ đủ chậm để máy ghi nhận hình ảnh co thể thu ảnh vùng biển số xe *Loại 2: Không giới hạn vùng nhìn: -Đầu vào: Ảnh đầu vào thu từ thiết bị ghi hình tự động, khơng phụ thuộc vào góc độ, đối tượng xung quanh, ảnh không cần bắt buộc chụp vùng chứa biển số xe, mà ảnh tổng hợp chứa them đối tượng người, cây, đường phố , miễn vùng biển số xe phải đủ rõ để thực nhận dạng ký tự vùng -Ngun lý hoạt động: Do đặc tính khơng giới hạn vùng nhìn mà ảnh đầu vào thu từ thiết bị ghi hình (camara, máy ảnh…) Và đó, cơng việc dò tìm ảnh, để xác định vùng biển số xe Sau đó, thực tách vùng nhận dạng Vì khơng phụ thuộc vào hình ảnh thu nên dùng ứng dụng nhiều nơi Nhận dạng biển số xe Trang 9/33 1.2 PHẦN MỀM VISUAL STUDIO 2015 VÀ THƯ VIỆN EMGUCV 1.2.1 Phần mềm Visual studio 2015 Visual Studio mơi trường tích hợp từ Microsoft Nó sử dụng để phát triển chương trinh máy tính cho Microsoft Windows, trang web, ứng dụng web dịch vụ web Visual Studio hỗ trợ nhiều ngôn ngữ lập trinh khác cho phép lập trinh viên biên tập mã gỡ lỗi để hỗ trợ (mức độ khác nhau) v hầu h ết ngôn ngữ lập trinh, cung cấp dịch vụ ngôn ngữ cụ thể tồn tai Ứng dụng xây dựng ngơn ngữ bao gồm C, C ++,VB,C# Tính chương trình Visual Studio biên tập code, sửa lỗi thiết kế Window Forms… Hình 1-2 Giao diện Visual Studio 2015 1.2.2 Thư viện xử lý ảnh EmguCV OpenCV (Open Computer Vision) thư viện mã nguồn mở chuyên dung để xử lý vấn đề liên quan đến thị giác máy tính Nhờ hệ th ống gi ải thuật chuyên biệt, tối ưu cho việc xử lý thị giác máy tính, vi v ậy tính ứng d ụng OpenCV lơn EmguCV cross flatform.NET, thư viện xử lý Nhận dạng biển số xe Trang 10/33 hinh ảnh manh dành riêng cho ngôn ngữ C#, cho phép g ọi chức OpenCV từ NET Lợi cua EmguCV viết hoàn toàn C# ,có thể chay tảng hỗ trợ Tính ứng dụng EmguCV lơn, có th ể kể đến nhận dang ảnh ( nhận dang khuôn mặt, vật thể …),xử lý ảnh (khử nhiễu, ều chỉnh độ sáng … ),nhận dang cử nhiều ứng dụng khác Nhận dạng biển số xe Trang 25/33 // } // for (int i = 0; i < count; i++) // { // for (int j = i + 1; j < count; j++) // { // if( (listR[j].X < (listR[i].X + listR[i].Width) && listR[j].X > listR[i].X) // && (listR[j].Y < (listR[i].Y + listR[i].Width) && listR[j].Y > listR[i].Y) ) // { // listR.RemoveAt(j); // count ; // j ; // } // else if( (listR[i].X < (listR[j].X + listR[j].Width) && listR[i].X > listR[j].X) // && (listR[i].Y < (listR[j].Y + listR[j].Width) && listR[i].Y > listR[j].Y)) // { // listR.RemoveAt(i); // count ; // i ; // break; // // } } // } Nhận dạng biển số xe Trang 26/33 //} #endregion #region tim gia tri thresh de co so ky tu lon nhat //Image bi2 = new Image(grayImage.Width, grayImage.Height); //Image color2 = new Image(colorImage); //double thr = cout_avg_new(grayImage); double thr = 0; if (thr == 0) { thr = grayImage.GetAverage().Intensity; } //double thr = 50; //double = 0, max = 255; //if (thr - 80 > 0) //{ // = thr - 80; //} //if (thr + 80 < 255) //{ // max = thr + 80; //} //List list_best = null; Rectangle[] li = new Rectangle[9]; Image color_b = new Image(colorImage); ; Image src_b = grayImage.Clone(); Nhận dạng biển số xe Trang 27/33 Image bi_b = bi.Clone(); Image color2; Image src; Image bi2; int c = 0, c_best = 0; //IntPtr a = color_b.Ptr; //CvInvoke.cvReleaseImage(ref a); for (double value = 0; value 80 && rect.Height < 180 && ratio > 0.1 && ratio < 1.1 && rect.X > 20) { c++; CvInvoke.cvDrawContours(color2, contours, new MCvScalar(0, 255, 255), new MCvScalar(255), -1, 3, Emgu.CV.CvEnum.LINE_TYPE.EIGHT_CONNECTED, new Point(0, 0)); color2.Draw(contours.BoundingRectangle, new Bgr(0, 255, 0), 2); bi2.Draw(contours, new Gray(255), -1); listR.Add(contours.BoundingRectangle); } contours = contours.HNext; } } //IntPtr a = color_b.Ptr; Nhận dạng biển số xe Trang 29/33 //CvInvoke.cvReleaseImage(ref a); double avg_h = 0; double dis = 0; for (int i = 0; i < c; i++) { avg_h += listR[i].Height; for (int j = i + 1; j < c; j++) { if ((listR[j].X < (listR[i].X + listR[i].Width) && listR[j].X > listR[i].X) && (listR[j].Y < (listR[i].Y + listR[i].Width) && listR[j].Y > listR[i].Y)) { //avg_h -= listR[j].Height; listR.RemoveAt(j); c ; j ; } else if ((listR[i].X < (listR[j].X + listR[j].Width) && listR[i].X > listR[j].X) && (listR[i].Y < (listR[j].Y + listR[j].Width) && listR[i].Y > listR[j].Y)) { avg_h -= listR[i].Height; listR.RemoveAt(i); c ; i ; break; Nhận dạng biển số xe Trang 30/33 } } } avg_h = avg_h / c; for (int i = 0; i < c; i++) { dis += Math.Abs(avg_h - listR[i].Height); } if (c && c > c_best && dis 50 && rect.Width < 150 && rect.Height > 80 && rect.Height < 150) { lsR.Add(rect); } contours = contours.HNext; } } for (int i = 0; i < lsR.Count; i++) { Nhận dạng biển số xe Trang 33/33 Bitmap tmp = src.ToBitmap(); Bitmap tmp2 = tmp.Clone(lsR[i], tmp.PixelFormat); Image tmp3 = new Image(tmp2); d += tmp3.GetAverage().Intensity / lsR.Count; } return d; } private double cout_avg_new(Image src) { double d = 0; List lsR = new List(); Image grayImage = new Image(src.Width, src.Height); CvInvoke.cvAdaptiveThreshold(src, grayImage, 255, Emgu.CV.CvEnum.ADAPTIVE_THRESHOLD_TYPE.CV_ADAPTIVE_THRES H_MEAN_C, Emgu.CV.CvEnum.THRESH.CV_THRESH_BINARY, 21, 2); grayImage = grayImage.Dilate(3); grayImage = grayImage.Erode(3); using (MemStorage storage = new MemStorage()) { Contour contours = grayImage.FindContours(Emgu.CV.CvEnum.CHAIN_APPROX_METHOD.CV_C Nhận dạng biển số xe Trang 34/33 HAIN_APPROX_SIMPLE, Emgu.CV.CvEnum.RETR_TYPE.CV_RETR_LIST, storage); while (contours != null) { Rectangle rect = contours.BoundingRectangle; if (rect.Width > 50 && rect.Width < 150 && rect.Height > 80 && rect.Height < 150) { lsR.Add(rect); } contours = contours.HNext; } } for (int i = 0; i < lsR.Count; i++) { Bitmap tmp = src.ToBitmap(); Bitmap tmp2 = tmp.Clone(lsR[i], tmp.PixelFormat); Image tmp3 = new Image(tmp2); int T = 0; int T0 = 128; { T = T0; int m = 0, M = 0; int = 0, max = 0; for (int y = 0; y < tmp3.Rows; y++) Nhận dạng biển số xe Trang 35/33 for (int x = 0; x < tmp3.Cols; x++) { int value = (int)tmp3.Data[y, x, 0]; if (value || T0 - T > 1); d += (double)T0 / (double)lsR.Count; } return d; } private Image search(double thr, Image grayImage, double min, double max , out List list_out, out int count, Image color, out Image color_out, Nhận dạng biển số xe Trang 36/33 Image bi, out Image bi_out) { List listR = null, list_best = null; Image color2 = color; Image src = grayImage; Image bi2 = bi; int c = 0, c_best = 0; for (double value = min; value 20 && rect.Width < 150 Nhận dạng biển số xe Trang 37/33 && rect.Height > 80 && rect.Height < 150) { c++; CvInvoke.cvDrawContours(color2, contours, new MCvScalar(0, 255, 255), new MCvScalar(255), -1, 3, Emgu.CV.CvEnum.LINE_TYPE.EIGHT_CONNECTED, new Point(0, 0)); color2.Draw(contours.BoundingRectangle, new Bgr(0, 255, 0), 2); bi2.Draw(contours, new Gray(255), -1); listR.Add(contours.BoundingRectangle); } contours = contours.HNext; } for (int i = 0; i < c; i++) { for (int j = i + 1; j < c; j++) { if ((listR[j].X < (listR[i].X + listR[i].Width) && listR[j].X > listR[i].X) && (listR[j].Y < (listR[i].Y + listR[i].Width) && listR[j].Y > listR[i].Y)) { listR.RemoveAt(j); c ; Nhận dạng biển số xe Trang 38/33 j ; } else if ((listR[i].X < (listR[j].X + listR[j].Width) && listR[i].X > listR[j].X) && (listR[i].Y < (listR[j].Y + listR[j].Width) && listR[i].Y > listR[j].Y)) { listR.RemoveAt(i); c ; i ; break; } } } } if (c c_best) { list_best = listR; c_best = c; if (c == 8) { color_out = color2; bi_out = bi2; list_out = list_best; count = c_best; return src; } Nhận dạng biển số xe Trang 39/33 } } color_out = color2; bi_out = bi2; list_out = list_best; count = c_best; return src; } } } Nhận dạng biển số xe ... trình Nhận dạng biển số xe Trang 18/33 Hình 3-2 Cơng cụ Debug 3.2 KẾT QUẢ NHẬN DẠNG Ví dụ với biển số xe 62A 00222 Hình 3-3 Kết nhận dạng biển số xe Kết nhận dạng thấy xác Tuy nhiên có số biển số. .. Hình 2-3 Một số loại biển số xe thông dụng 2.2.3 Phát vùng chứa biển số Nhận dạng biển số xe Trang 15/33 Sơ đồ bước phát vùng chứa biển số xe Hình 2-4 Các bước phát vùng chứa biển số xe Bước 1:... không Nếu khơp vơi tiêu chuẩn thi vung biển số có khả biển số xe cao Tách riêng ký tự đ ể nhận dang 2.2.2 Một số đặc diểm biển số xe Việt Nam Nhận dạng biển số xe Trang 14/33 Ở nươc thường có tiêu

Ngày đăng: 21/01/2018, 16:48

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan