Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 59 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
59
Dung lượng
1,46 MB
Nội dung
TRƯỜNG ĐẠI HỌC LẠC HỒNG KHOA ĐIỆN - ĐIỆN TỬ BÁO CÁO NGHIÊN CỨU KHOA HỌC ĐỀ TÀI: NHẬN DẠNG BIỂN SỐ XE NGUYỄN PHẠM ANH TUẤN BIÊN HÒA, THÁNG 12 NĂM 2010 TRƯỜNG ĐẠI HỌC LẠC HỒNG KHOA ĐIỆN - ĐIỆN TỬ BÁO CÁO NGHIÊN CỨU KHOA HỌC ĐỀ TÀI: NHẬN DẠNG BIỂN SỐ XE GVHD SVTH : Th.S PHAN NHƯ QUÂN : NGUYỄN PHẠM ANH TUẤN BIÊN HÒA, THÁNG 12 NĂM 2010 Lời cảm ơn Sau bốn năm đại học, thời điểm định thành học tập sinh viên.Và đề tài nghiên cứu khoa học bảng báo cáo cho thành học tập Để hồn thành tốt đề tài này, trước tiên, em xin chân thành cảm ơn thầy ban giám hiệu trường ĐH Lạc Hồng nói chung thầy cô khoa Điện – Điện tử nói riêng tạo điều kiện giúp đỡ chúng em trình học tập nghiên cứu Kế đến, em xin chân thành gửi lời cảm ơn đến thầy Phan Như Quân, giáo viên hướng dẫn người nhiệt tình bảo cho em suốt q trình hồn thành đề tài Cuối xin gửi lời cảm ơn đặc biệt đến gia đình ln chỗ dựa vững tạo điều kiện tốt cho em học tập Mục lục Trang bìa phụ Lời cảm ơn Mục lục Lời mở đầu Chương 1: GIỚI THIỆU VỀ ĐỀ TÀI 1.1.Lý chọn đề tài 1.2.Nội dung đề tài 1.3.Giới hạn đề tài 1.4 Mục tiêu Chương 2: CHỤP ẢNH BẰNG WEBCAM Chương 3: TÁCH BIỂN SỐ 3.1.Tổng quan tách biển số 3.2 Tìm vùng màu trắng 3.3.Xác định vùng chứa biển số 10 3.4.Cắt vùng chứa biển số 11 3.5 Tìm góc nghiêng xoay: 14 3.5.1 Biến đổi Radon: 14 3.5.1.1 Tổng quan biến đổi Radon 14 3.5.1.2 Các bước thực 15 3.5.2 Tìm góc nghiêng xoay 16 3.6.Cắt biển số xác 19 Chương 4: PHÂN ĐOẠN KÝ TỰ 21 4.1 Tổng quan phân đoạn ký tự 21 4.2 Nhị phân biển số xe 21 4.3 Chuẩn hóa biển số 23 4.4.Phân đoạn ký tự 23 4.4.1 Chương trình chia đơi biển số 26 4.4.2 Chương trình phân vùng ký tự: 26 4.4.2.1.Chương trình chọn phân vùng lớn 27 4.4.2.2 Chương trình phân vùng 27 4.4.2.3 Chương trình vitricuctieu 28 Chương 5: NHẬN DẠNG KÝ TỰ 30 5.1 Tổng quát nhận dạng ký tự 30 5.2 Lựa chọn phương pháp: 31 5.2.1.Phương pháp nhận dạng cổ điển: 31 5.2.2 Phương pháp ứng dụng mạng neural: 31 5.3 Giới thiệu mạng neural ( neural networks): 31 5.3.1.Khái niệm: 31 5.3.2 Mơ hình mạng neural nhân tạo 32 5.3.3 Thiết kế mạng Neural: 33 5.3.3.1 Thu thập liệu: 33 5.3.3.2 Các bước thực hiện: 33 5.3.4 Cơ sở ký thuyết giải thuật cho huấn luyện mạng lan truyền ngược 33 5.3.4.1 Cấu trúc mạng lan tryền ngược 33 5.3.4.2 Huấn luyện mạng lan truyền ngược 35 5.4 Ứng dụng mạng lan truyền ngược vào nhận dạng ký tự : 37 5.4.1 Thiết kế mạng lan truyền ngược 37 5.4.2 Quá trình nhận dạng 37 5.4.4 Phương pháp tăng khả tổng quát mạng 38 5.4.5 Huấn luyện mạng lan truyền ngược 39 Chương 6: MẠCH ĐIỀU KHIỂN 41 6.1 Sơ đồ nguyên lý 41 6.2 Nguyên lý hoạt động 42 KẾT LUẬN 43 Tài liệu tham khảo 44 Phụ lục 1: Code chương trình MATLAB 45 Phụ lục 2: Code vi điều khiển 89S52 52 Lời mở đầu Xử lý nhận dạng lĩnh vực từ lâu nhiều người quan tâm Nó ứng dụng vào nhiều lĩnh vực như: ¾ Trong y học, cải thiện ảnh X-quang nhận dạng đường biên mạch máu từ ảnh chụp tia X , ứng dụng vào xét nghiệm lâm sang phát 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 tàu vũ trụ hạn chế kích thước trọng lượng, chất lượng hình ảnh nhận bị giảm chất lượng bị mờ, méo hình học nhiễu Các hình ảnh xử lý máy tính ¾ Trong lĩnh vực cơng nghiệp, người máy ngày đóng vai trị quan trọng Chúng thực cơng việc nguy hiểm, địi hỏi có tốc độ độ xác cao vượt khả người Người máy trở nên tinh vi thị giác máy tính đóng vai trị quan trọng Người ta khơng địi hỏi người máy phát nhận dạng phận công nghiệp mà cịn phải “ hiểu ” chúng “ thấy ” đưa hành động phù hợp Xử lý ảnh tác động đến thị giác máy tính ¾ Ngồi ra, xử lý nhận dạng cịn ứng dụng lĩnh vực khác nói đến Cơng an giao thơng thường hay chụp ảnh môi trường không thuận lợi, ảnh thường bị nhòe nên cần xử lý nhận dạng để nhìn thấy biển số xe Trong luận văn người thực xin trình bày ứng dụng xử lý nhận dạng số NHẬN DẠNG BIỂN SỐ XE Chương 1: GIỚI THIỆU VỀ ĐỀ TÀI 1.1.Lý chọn đề tài: Cùng với phát triển khoa học kỹ thuật, nhu cầu lại người ngày tăng, lưu lượng giao thông ngày lớn Với số lượng phương tiện giao thơng ngày lớn cịn khơng ngừng tăng việc quản lý phương tiện giao thông gặp nhiều khó khăn cần có hệ thống tự động Một hệ thống hệ thống nhận dạng biển số xe Đó hệ thống có khả “đọc” “hiểu”các biển số xe cách tự động Trong luận văn này, người thực xây dựng hệ thống để quản lý bãi giữ xe bãi giữ xe cịn có vấn đề bất cập như: ¾ Tốn nhiều nhân cơng ¾ An tồn chưa cao, cịn xảy tượng xe ¾ Vé xe giấy, dễ bị hay nhàu nát 1.2.Nội dung đề tài: Cũng hệ thống khác, hệ thống yêu cầu có phần cứng phần mềm Phần cứng có phần WebCam để thu nhận hình ảnh phần mềm phân tích hình ảnh để lấy ký tự biển số xe Quá trình thu nhận biển số xe [5] thực theo sơ đồ sau: Phân đoạn ký tự Tách biển số Nhận Kếtát quảû biểnån sốá xe: 66K9 0434 Hình 1.1: Sơ đồ q trình nhận dạng dạng ký tự ¾ Tách biển số: khối có chức tách biển số từ ảnh chụp phương pháp xử lý ảnh Kết khối ảnh màu RBG (Red Green Blue) cắt từ ảnh chụp Đây cơng việc khó khăn ta khơng biết vị trí xác biển số Ngồi ra, phụ thuộc vào độ sáng ảnh chụp ¾ Phân đoạn ký tự: sau tách biển số, bắt đầu phân đoạn ký tự Khối thực tách kí tự có biển số, tạo thành tập ảnh riêng biệt ký tự phục vụ việc nhận dạng ký tự Ảnh ký tự ảnh trắng đen ¾ Nhận dạng ký tự: sau phân đoạn, tách ký tự biển số tạo thành chuỗi ký tự Chuỗi đưa vào khối nhận dạng dạng để tiến hành nhận dạng ký tự chuỗi 1.3.Giới hạn đề tài: Việc có nhiều biển số xe với định dạng độ sáng khác gây khó khăn cho việc nhận dạng Do trình nhận dạng dựa vào phương pháp xử lý ảnh trích xuất biển số từ ảnh chụp nên độ sáng khác làm tăng độ phức tạp trình nhận dạng Do thời gian thực đề tài không cho phép nên người thực giới hạn biển số điều kiện sau: ¾ Biển số có chữ đen, trắng, có hàng, số ký tự ¾ Biển số phải cịn ngun vẹn, khơng bị tróc sơn hay rỉ sét, khơng bị che khuất ¾ Góc nghiêng biển số khơng q 45 so với phương ngang ¾ Hình chụp biển số khơng bị mờ, ký tự biển số phân biệt, nhận dạng trực quan ¾ Không bị nhiễu ánh sáng làm ảnh chụp bị chói 1.4 Mục tiêu: Trong đề tài này, em đặt mục tiêu sau: ¾ Hạn chế vấn đề bất cập bãi giữ xe ¾ Xây dựng mơ hình hệ thống quản lý bãi giữ xe tự động Để đạt mục tiêu trên, em tiến hành công việc sau: ¾ Tìm hiểu q trình xử lý nhận dạng ảnh ¾ Tìm hiểu hệ thống bãi giữ xe áp dụng Việt Nam Chương 2: CHỤP ẢNH BẰNG WEBCAM Đây khâu quan trọng hệ thống ảnh chụp bị mờ hay nhiễu đưa vào nhận dạng khơng Để chụp ảnh ta sử dụng camera WebCam Khi lựa chọn thiết bị ta cần quan tâm tới thơng số định tới chất lượng ảnh như: ¾ Độ phân giải ( resolution) Độ phân giải lớn chất lượng hình ảnh nét Thường ứng dụng không cần thiết phải quan sát thật rõ nét độ phân giải 420 TV Lines hồn tồn chấp nhận ¾ Số điểm ảnh ( CCD Total Pixels ) Thơng số nói lên chất lượng hình ảnh, số điểm ảnh lớn chất lưọng hình ảnh tốt, nhiên, chất lượng hình ảnh tốt đồng nghĩa với dung lưọng ảnh lớn, tốn nhớ lưu trữ ảnh hưỏng đến tốc độ đường truyền ¾ Điều kiện hoạt động thiết bị: Cường độ ánh sáng nhỏ ( Minimum Illumination ):Thường tính Lux Thơng số nói lên rằng, WebCam(Camera) hoạt động cường độ ánh sáng lớn cường độ ánh sáng nhỏ Trong điều kiện q tối, khơng phải Camera có chức hồng ngoại khơng hoạt động o Ánh nắng mặt trời: 4000 lux, có mây: 1000lux o Ánh sáng đèn tuýp: 500 lux, có mây: 300lux o Ánh sáng đèn tuýp đỏ 500 lux, trắng (300 lux) trắng sáng 1lux o Đêm không trăng: 0.0001 Lux Xin ý đến loại Camera quan sát có chức Auto Iris (Tự động hiệu chỉnh ánh sáng) Đặc điểm Camera loại với nguồn sáng nhỏ, tự động khuyếch đại nguồn sáng lên để quan sát 40 Số lượng mẫu tập mẫu sau: ¾ Tập mẫu huấn luyện gồm 30 mẫu cho ký tự số từ đến ¾ Tập mẫu dùng để kiểm tra gồm mẫu cho ký tự ¾ Tập mẫu dùng để thử lại gồm mẫu cho ký tự Hình 5.15: Hàm lỗi ngừng học sớm để huấn luyện mạng 41 Chương 6: MẠCH ĐIỀU KHIỂN 6.1 Sơ đồ nguyên lý: 42 6.2 Nguyên lý hoạt động: Sau nhận dạng ký tự biển số xe ra, chương trình tiến hành so sánh chuỗi ký tự với liệu biển số xe vào lưu từ trước Máy tính truyền tín hiệu xuống vi điều khiển 89S52 làm sáng led, led green sáng, sai led blue sáng Tín hiệu từ chân số cổng COM vào chân Max232, sau tín hiệu từ chân Max232 vào chân 10 vi điều khiển 89S52 Vi điều khiển kiểm tra tín hiệu truyền xuống Nếu sáng led green, cịn sai sáng led blue Khi led green sáng, tín hiệu truyền xuống, làm quay động 4s sau, đèn Green tắt, động trở vị trí ban đầu 43 KẾT LUẬN Độ xác chương trình nhận dạng biển số xe phụ thuộc vào ánh sáng môi trường Tuy nhiên yếu tố ta điều chỉnh Việc nhận dạng ký tự cịn nhiều sai sót khơng có tập mẫu hồn chỉnh Chương trình viết MATLAB giải toán nhận dạng với dung lượng lớn thực tế, qua giải yêu cầu đề tài Để giải khó khăn đề tài, người thực xin đề xuất số ý kiến sau đây: ¾ Sử dụng camera chun dụng ¾ Thiết lập mơi trường ổn định xung quanh để làm tăng độ xác ảnh chụp ( xác định vị trí cố định để chụp ảnh) ¾ Thu thập nhiều mẫu ký tự để tăng tập mẫu qua tăng độ xác chương trình ¾ Sử dụng thẻ mã vạch để làm vé giữ xe 44 TÀI LIỆU THAM KHẢO [1] Amin Sarafraz (2004), “Detects lines in a binary image using common computer vision operation known as the Hough Transform”, University of Tehran, Iran [2] [Beal72] Beale, E M L., "A derivation of conjugate gradients," in F A Lootsma, ed., Numerical methods for nonlinear optimization, London: Academic Press, 1972 [3] [Caud89] Caudill, M., Neural Networks Primer, San Francisco, CA: Miller Freeman Publications, 1989 [4] [Cabu92] Caudill, M., and C.Butler, Understanding Neural Networks: Computer Explorations, vols and 2, cambridge, ma: the mit press, 1992 [5] Ondrej martinsky, “Algorithmic and mathematical principles of automatic number plate recognition systems ”, brno 2007 [6] Otsu, N (1979), “A Threshold Selection Method from Gray-Level Histograms”, IEEE Transactions on Systems, Man, and Cybernetics, Vol 9, No 1, pp 62-66 [7] www.Mathworks.com 45 Phụ lục 1: Code chương trình MATLAB 1.CHỤP VÀ LƯU ẢNH TỪ WEBCAM: obj = videoinput('winvideo', 1,'YUY2_640x480'); set(obj, 'ReturnedColorSpace','rgb'); src_obj = getselectedsource(obj); get(src_obj); vidRes = get(obj, 'VideoResolution'); nBands = get(obj, 'NumberOfBands'); hImage = image( zeros(vidRes(2), vidRes(1), nBands) ); preview(obj, hImage); pause(2); x=getsnapshot(obj); x=imresize(x,[480 640]); imwrite(x,'D:\NCKH\bai lam\x.jpg','Quality', 100); 2.CHƯƠNG TRÌNH TÁCH BIỂN SỐ: function [bienso,biensomau]=laybiensohoanchinh(pic1); XSIZE = 50; YSIZE = 150; white_pic=laybienso(pic1); [r]=lp_area_extraction_lap(white_pic,30); n=length(r)/4 for i=1:n x=r(4*i-3); x2=r(4*i-2); y=r(4*i-1); y2=r(4*i); lp_area = pic1(y:y2, x:x2, :); angle = find_angle(lp_area); pic = imrotate(white_pic(y:y2, x:x2), angle, 'bilinear'); [small_pic, xx, xx2, yy, yy2] = improved_lp_area(pic, angle); [image, RECTx, RECTy] = crop_lp(small_pic, lp_area, xx, xx2, yy, yy2, angle); end image = imrotate(lp_area, angle, 'bilinear'); image=image(yy:yy2,xx:xx2,:); cao = length(image(:,1,1)) ; rong=length(image(1,:,1)); if cao > rong image = imrotate(image, -90, 'bilinear'); end biensomau = image; [grayImage, quantImage, bw] = quantizeImage(image); quantImage = imadjust(grayImage, stretchlim(grayImage), [0 1]); bienso=bw; bienso = normalized_lp_contour(bienso, [XSIZE, YSIZE]); 46 return %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function [vungbienso]=laybienso(x) %CẮT THÔ mucxam=rgb2gray(x); mucxam=medfilt2(mucxam,[3 3]); threshold=graythresh(mucxam); bw = im2bw(mucxam,threshold); bw = bwareaopen(bw,5000); vungbienso = bw; return %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function [angle] = find_angle(rgb_image); %TÌM GĨC XOAY gray_image = rgb2gray(rgb_image); theta = (0:179)'; [R, xp] = radon(edge(gray_image), theta); i = find(R > (max(R(:)) - 25)); [foo, ind] = sort(-R(i)); [y, x] = ind2sub(size(R), i); t = -theta(x)*pi/180; r = xp(y); [r,c] = find(R == max(R(:))); thetap = theta(c(1)); angle = 90 - thetap; return; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function [pic, x1, x2, y1, y2] = improved_lp_area(image, angle); [x1,x2,y1,y2] = detect_lp_area(image, 0); pic = image(y1:y2, x1:x2); return; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function [x, x2, y, y2] = detect_lp_area (white_pic, spacing); LP_MIN_AREA = 15000; LP_MAX_AREA=74200; LP_MAX_RATIO = 0.8; LP_MIN_RATIO = 0.7; dilated_pic = imdilate(white_pic, strel( 'diamond', 5)); stat = imfeature(bwlabel(dilated_pic)); depth = -1; for i = : length([stat.Area]) if stat(i).BoundingBox(2) >= depth && stat(i).Area > LP_MIN_AREA && stat(i).BoundingBox(4) = (LP_MIN_RATIO)*stat(i).BoundingBox(3) && stat(i).Area >= max([stat.Area])/3.5 depth = stat(i).BoundingBox(2); end; end; 47 r = []; for i = : length([stat.Area]) if stat(i).BoundingBox(2) == depth && stat(i).Area > LP_MIN_AREA && stat(i).BoundingBox(4) = (LP_MIN_RATIO)*stat(i).BoundingBox(3) && stat(i).Area >= max([stat.Area])/3.5 r = [r stat(i).Area]; end; end; if(length(r) == 0) index = (find([stat.Area] == max([stat.Area]))); else index = (find([stat.Area] == max(r))); end; x = max(floor(stat(index).BoundingBox(1) - spacing), 1); y = max(floor(stat(index).BoundingBox(2) - spacing), 1); width = ceil(stat(index).BoundingBox(3) + 2*spacing); height = ceil(stat(index).BoundingBox(4) + 2*spacing); y2 = min(y + height, size(white_pic, 1)); x2 = min(x + width, size(white_pic, 2)); return; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function [image, RECTx, RECTy] = crop_lp(pic, lp_area, x1, x2, y1, y2, angle); rec = find_lp_location(pic); image = imrotate(lp_area, angle, 'bilinear'); image = image(y1:y2, x1:x2, :); RECTy = [rec(2), rec(2), rec(2) + rec(4), rec(2) + rec(4)]; RECTx = [rec(1), rec(1) + rec(3), rec(1) + rec(3), rec(1)]; image = imcrop(image, rec); return; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function [rec] = find_lp_location(im); p1 = sum(im); [x1, x2] = find_contours(p1); p2 = sum(im'); [y1, y2] = find_contours(p2); rec = [x1, y1, x2-x1, y2-y1]; return; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function [index1, index2] = find_contours(vec); avg = mean(vec); for j = : length(vec) if(vec(1,j) = val) && s(1) ~= 1) s = [1 s]; 50 end; if((t(1, length(t)) >= val) && s(length(s)) ~= length(t)) s = [s length(t)]; end; s = add(s, offset - 1); s = clean(s, 3); while bad_digit(s, digit_width) == for i = 1: (length(s) - 1) if (s(i + 1) - s(i)) > digit_width sub_vec = t(1, s(i) - offset + : s(i+1) - offset + 1); s = [s(1 : i) vitricuctieu(sub_vec, val + 1, s(i), digit_width) s(i+1 : length(s))]; end; end; end; return; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function [bool] = bad_digit(s, digit_width); if length(s) == bool = 0; return; end; tmp = s(1); bool = 0; for i = : length(s) if(s(i) - tmp) > digit_width bool = 1; return; end; tmp = s(i); end; return; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function [t] = clean(s, val); t = []; len = length(s); i = 2; j = 1; while i val t(j) = s(i-1); 51 j = j + 1; end; t(j) = s(i); j = j + 1; i = i + 1; end; return; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function [t] = add(s, val); len = length(s); t = []; for i = 1:len t(i) = s(i) + val; end; return; 4.NHẬN DẠNG KÝ TỰ: function number2 = nhandangsonoron2(hang2, seg2, netso) load 'netso.mat'; number2 = []; for i = 1:size(seg2, 1) input = hang2(:, seg2(i,1) : seg2(i,2), :); rec = nhandangsonoron(netso, input); number2 = strcat(number2, rec); end return; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function so = nhandangsonoron(net,input ) matranmau=[35 20]; input = imresize(input, matranmau, 'nearest'); input=bwareaopen(input,60); vec = double(im2col(input, size(input), 'distinct')); rslt = sim(net, vec); [Y,I] = max(rslt); num = I-1; so = char('0' + num); return; 52 Phụ lục 2: Code vi điều khiển 89S52 RS BIT P2.3 RW BIT P2.4 EN BIT P2.5 ORG 0000H LJMP MAIN ORG 0023H LJMP INT_SERIAL ORG 0030H MAIN: MOV IE,#10010000B MOV TMOD,#00100001B MOV PCON,#00000000B MOV SCON,#01010000B MOV TH1,#-3 SETB TR1 MOV R1,#0 MOV R0,#"D" MOV P2,#0FFh INT_SERIAL: JNB RI,EXIT_SERIAL MOV A,SBUF CJNE A,#"A",TTO CPL p2.2 LCALL TRANF LCALL DELAYHT CPL p2.2 CLR RI RETI TTO: CJNE A,#"B",EXIT_SERIAL CPL p2.3 53 LCALL TRANF LCALL DELAYHT CPL p2.3 CLR RI RETI EXIT_SERIAL: CLR TI RETI TRANF: CPL p2.4 CLR ES MOV SBUF,A JNB TI,$ CLR TI CPL p2.4 SETB ES RET DELAY: MOV 77H,#255 DJNZ 77H,$ RET DELAYHT: MOV 7CH,#16 MOV 7EH,#255 LCALL DELAY DJNZ 7EH,L DJNZ 7CH,K K: L: RET END ... định vị biển số xe, tiến hành cắt biển số xe Biển số xe cắt theo bước Bước cắt vùng rộng vùng chứa biển số Sau tìm góc nghiêng biển số thực xoay biển số phương thẳng đứng Bước hai cắt biển số khỏi... tự biển số xe Quá trình thu nhận biển số xe [5] thực theo sơ đồ sau: Phân đoạn ký tự Tách biển số Nhận Kếtát quảû biển? ?n số? ? xe: 66K9 0434 Hình 1.1: Sơ đồ trình nhận dạng dạng ký tự ¾ Tách biển. .. biển số xe Khối tách biển số xe chia làm giai đoạn chính: ¾ Giai đoạn 1: định vị trí biển số ảnh chụp từ webcam ¾ Giai đoạn 2: dùng giải thuật để cắt biển số xe khỏi ảnh chụp xoay biển số xe phương