Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 40 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
40
Dung lượng
1,33 MB
Nội dung
ĐỒ ÁN TỐT NGHIỆP NHẬNDIỆNKÍTỰDÙNGMATLAB DANH MỤC CÁC TỪ VIẾT TẮT R Red G Green B Blue BMP Microsoft Windows Bitmap JPEG Joint Photographic Experts Group PNG Portable Network Graphics TIFF Tagged Image File Format ĐỒ ÁN TỐT NGHIỆP Trang 1/35 NhậnDiệnKíTựDùngMatlab CHƯƠNG TỔNG QUAN ĐỀ TÀI 1.1 Giới thiệu: Hiện nay, cách mạng công nghiệp 4.0 diễn khắp nơi giới Cùng với phát triển chóng mặt kỹ thuật số, máy móc thiết bị lập trình tự động qua phần mềm dần thay người nhiều lĩnh vực sống Trong số đó, ngành khoa học xử lí ảnh ngày phát triển với đời hàng loạt chương trình, ứng dụng phân tích, nhậndiện ảnh Đề tài “Nhận diệnkítựdùng Matlab” chương trình xử lý ảnh giúp nhậndiệnkítự văn sử dụng nhiều phổ biến thực dựa phần mềm Matlab 1.2 Tổng quan xử lý ảnh: Xử lí ảnh với tín hiệu xử lí ảnh số, phân ngành xử lí số tín hiệu Đây ngành khoa học xây dựng nghiên cứu thông qua nhiều lĩnh vực cần nhiều kiến thức sở ngành khác Dựa kiến thức xử lí số tín hiệu, xử lí ảnh cần đến kiến thức phân ngành Toán học khác Đại số tuyến tính, Xác suất thống kê, … Các phương pháp xử lý ảnh xây dựng nâng cao chất lượng ảnh phân tích ảnh trước xử lí Tùy vào nhu cầu, mục đích đối tượng sử dụng mà phương pháp xử lý ảnh thiết kế nhiều phương pháp khác Qua q trình phân tích tổng hợp, hệ thống xử lí ảnh xây dựngtừ bước sau Hình 1-1: Hệ thống xử lý ảnh 1.3 Hướng nghiên cứu: Nghiên cứu phần mềm MATLAB Tìm hiểu ảnh số, lệnh xử lí ảnh MATLAB Thiết kế chương trình xử lý ảnh để nhậndiệnkítựdùng phần mềm Matlab Thiết kế lại chương trình để nhậndiệnkítự qua ảnh từ camera Mô phỏng, đánh giá kết hướng phát triển tối ưu, kết luận ưu nhược điểm hệ thống CHƯƠNG CƠ SỞ LÝ THUYẾT 2.1 Phần mềm MATLAB: 2.1.1 Giới thiệu: MATLAB (Matrix Laboratory) phần mềm cho phép tính tốn số lập trình cơng ty MathWorks thiết kế Được tích hợp tính tốn số với ma trận, MATLAB giúp người dùng thực tính tốn, lập trình ứng dụng, vẽ đồ thị hàm số hay biểu đồ, tạo giao diện người dùng liên kết với ngôn ngữ lập trình khác Với hệ thống liệu thư viện lập trình, người dùng : Sử dụng hàm có sẵn thư viện phép tính tốn học thơng thường.Tốc độ xử lí tương đối nhanh Lập trình ứng dụng tùy theo mục đích sử dụng Mơ lại mơ hình có sẵn thực tế Phân tích, khảo sát liệu hiển thị chúng với phần mềm đồ họa Giao tiếp, liên kết với mềm khác C++, Fortran MATLAB có nhiều ứng dụng sử dụng rộng rãi lĩnh vực khoa học kĩ thuật ngày : Xử lí hình ảnh, video, âm Hệ thống điều khiển tự động Tính tốn tài chính, sinh học Kiểm tra, đo lường, thống kê 2.1.2 Hệ thống MATLAB: Hình 2-1: Giao diệnMATLAB Hệ thống MATLAB bao gồm phần: Môi trường: gồm công cụ, cửa số giúp người dùng thao tác trực tiếp sử dụng lệnh file như: Desktop, Command Window, Command History, Browsers For Viewinghelp Thư viện: nơi chứa hàm toán học, phép tốn từ đơn giản đến phức tạp, kí tự, biểu tượng có sẵn MATLAB Ngơn ngữ: bao gồm ngôn ngữ bậc cao ma trận mảng; hàm, dòng lệnh để phục vụ cho việc lập trình người dùng Đồ họa: gồm hình ảnh, đồ họa mơi trường 2D 3D Giao tiếp,liên kết với ngôn ngữ lập trình khác C, Fortran, … Trong đó, cửa sổ đóng vai trò quan trọng q trình thao tác sử dụng người dùng Command Window: cửa sổ giao tiếp Matlab, nơi nhập biến, hiển thị giá trị, tính tốn biểu thức, thực thi hàm thư viện Command History: liệu nhập vào cửa sổ Command Window lưu giữ cửa sổ Command History, cho phép sử dụng lại cần Workspace: cửa sổ thể tên biến sử dụng với kích thước vùng nhớ, kiểu liệu Cho phép thay đổi giá trị sử dụng M-file: dùng để soạn thảo chương trình ứng dụng, thực thi chương trình 2.1.3 Cấu trúc liệu: MATLAB hệ thống tương giao, phần tử liệu thể dạng ma trận, mảng MATLAB đa dạng kiểu liệu, bao gồm: Kiểu Single: đòi hỏi nhớ liệu độ xác Kiểu Dounle: sử dụng phép tính số học Kiểu Spare, Char, Cell, Structure Kiểu Uint8, Uint16, Uint64,… 2.1.4 Giao diện GUIDE: Giao diện người dùng GUI (Graphical User Interface) MATLAB giao diện đồ họa điều khiển nhiều công cụ người lập trình tạo sẵn, cho phép tương tác người dùng chương trình Hình 2-2: Giao diện khởi tạo Guide GUI bao gồm đầy đủ công cụ hỗ trợ thực phép tốn logic, mơ 2D, 3D, đọc hiển thị liệu thông qua thực thi nút nhấn người lập trình giao diện thiết lập Hình 2-3: Giao diện Guide Với biểu tượng hỗ trợ sẵn, GUI giúp người dùng đơn giản hóa thao tác trình xây dựng sử dụng chương trình Select: trả trỏ văn Push Button: nút nhấnnhấn thực thi lệnh cấu trúc hàm callback người dùng lập trình Silder: trượt cho phép người dùng di chuyển trượt để thực thi lệnh Radio Button: sử dụng để tạo lựa chọn nhất, chọn số nhiều nút Xác định vùng chứa văn bản: tách lấy vùng chứa kítự văn bản, loại bỏ đối tượng nhiễu Dán nhãn tách kí tự: kítự tách biệt thành đối tượng để so sánh sau dán nhãn Trích xuất kí tự: mẫu kítự lưu sẵn trích xuất cách để so sánh với kítự văn So sánh tương quan kí tự: so sánh mức độ tương quan kítự mẫu kítự văn xác định Xuất kết quả: hiển thị kết kítựnhậndiện dạng chuỗi kítự 3.2 Giải thuật: 3.2.1 Xác định vùng chứa văn bản: Hình 3-2: Ảnh đầu vào Sau nhị phân hóa, ảnh gồm hai thành phần điểm ảnh (kí tự) (vùng trống) Hàm find dùng để xác định điểm ảnh mang giá trị khác mà Tất điểm ảnh xác định phân tích chiều ngang dọc ảnh, nhằm tìm điểm ảnh cuối theo chiều ngang chiều dọc Sau dùng hàm imcrop để cắt vùng chứa tất điểm ảnh xác định Hình 3-3: Ảnh sau xác định vùng chứa văn Tiếp theo, ta dùng phương pháp tượng tự kết hợp với vòng lặp sử dụng để xác định dòng văn bản, từ tìm kítự hàng Hình 3-4: Phân dòng văn 3.2.2 Tách kí tự: Cuối cùng, kítự tách biệt phương pháp dán nhãnkítự Phương pháp xây dựng sở xét tất điểm lân cận điểm ảnh Tất điểm ảnh lân cận có giá trị điểm ảnh xác định thành đối tượng dán nhãn để phân biệt với đối tượng lại Trong trường hợp này, đối tượng kítự văn xác định Hình 3-5: Tách kítự 3.2.3 Nhậndiệnkí tự: Các kítự sau xác định mang so sánh mức độ tương quan với mẫu kítự tạo sẵn Hàm corr2 sử dụng để tính hệ số tương quan kítự văn xác định mẫu kítự Kết nhậnkítự có giá trị hệ số tương quan cao với mẫu thử làm kítựnhậndiện Hình 3-6: So sánh tương quan CHƯƠNG MƠ PHỎNG Hình 4-1: Giao diện bắt đầu Hình 4-2: Giao diện 4.1 Ảnh lưu từ máy: Hình 4-3: Chọn ảnh đầu vào Hình 4-4: Hiển thị thơng số ảnh Hình 4-5: Nhậndiệnkítự 4.2 Ảnh chụp qua camera: Hình 4-6: Ảnh từ camera Hình 4-7: Hiển thị thơng số ảnh Hình 4-8: Nhậndiệnkítự 4.3 Kết mô phỏng: Ảnh đầu vào Số ảnh thử Từ máy tính Từ camera 20 20 Số ảnh nhậndiện 17 15 Số ảnh nhậndiện sai Tỉ lệ thành công 85% 75% Bảng 4-1: Kết mô Đối với ảnh từ máy tính, kết nhậndiện phụ thuộc vào chất lượng ảnh kiểu kítự văn hiển thị Đối với ảnh từ camera, kết nhậndiện phụ thuộc vào chất lượng camera, khoảng cách góc độ chụp CHƯƠNG KẾT LUẬN 5.1 Nhận xét: 5.1.1 Ưu điểm: Giao diện chương trình đơn giản, dễ làm quen sử dụng Tốc độ xử lí tương đối nhanh Hiển thị thơng tin ảnh đầu vào 5.1.2 Khuyết điểm: Kết nhậndiện phụ thuộc nhiều vào chất lượng ảnh đầu vào Chưa đáp ứng yêu cầu đa dạng phơng chữ, kiểu kítự Đối với ảnh chụp từ camera, kết nhậndiện phụ thuộc nhiều vào khoảng cách góc độ chụp 5.2 Hướng phát triển: Nâng cao độ xác chương trình Xây dựng tính tự động nâng cao chất lượng ảnh nhằm phục vụ cho trình nhậndiện Thiết kế thêm nhiều mẫu kítự phục vụ cho việc nhậndiện nhiều phông chữ, kiểu kítự khác TÀI LIỆU THAM KHẢO Tiếng Việt: [1] Tài liệu Xử Lý Ảnh Pgs.Ts Nguyễn Quang Hoan Học viện Cơng Nghệ Bưu Chính Viễn Thơng [2] Giáo trình Xử Lý Ảnh Gs Nguyễn Văn Ngọ ĐHQG Khoa Học Công Nghệ Tiếng Anh: [3] Optical Character Recognition form WIKIPEDIA PHỤ LỤC function pushbutton1_Callback(hObject, eventdata, handles) [filename, pathname] = uigetfile({'*.jpg';'*.bmp';'*.gif';'*.*'}, 'Chon Anh'); anh= strcat(pathname,filename); I= imread(anh); axes(handles.axes1); imshow(I); handles.I=I; guidata(hObject, handles); info = imfinfo(fullfile(pathname,filename)); set(handles.text6,'String',filename); set(handles.text13,'String',info.Format); set(handles.text14,'String',info.FileSize); set(handles.text15,'String',info.Height); set(handles.text16,'String',info.Width); set(handles.text17,'String',info.BitDepth); set(handles.text18,'String',info.ColorType); function nhandang_Callback(hObject, eventdata, handles) I=handles.I; anh=I; if size(anh,3)==3 anh=rgb2gray(anh); end nguong = graythresh(anh); anh =~im2bw(anh,nguong); anh = bwareaopen(anh,35); word=[ ]; a=[ ]; re= anh; load templates global templates num_letras=size(templates,2); while(1) [fl re]=lines(re); imgn=fl; [L,Ne] = bwlabel(imgn); for n=1:Ne [r,c] = find(L==n); n1=(imgn(min(r):max(r),min(c):max(c))); img_r=(imresize(n1,[42 24])); thu=read_thu(img_r,num_letras); word=[word thu]; a=[a img_r]; end axes(handles.axes3); imshow(a); set(handles.text1,'string',word); end fclose(fid); function thu=read_thu(imagn,num_letras) global templates comp=[ ]; for n=1:num_letras sem=(corr2(templates{1,n},imagn)); comp=[comp sem]; end vd=find(comp==max(comp)); %*-*-*-*-*-*-*-*-*-*-*-*-*if vd==1 thu='A'; elseif vd==2 thu='B'; elseif vd==3 thu='C'; elseif vd==4 thu='D'; elseif vd==5 thu='E'; elseif vd==6 thu='F'; elseif vd==7 thu='G'; elseif vd==8 thu='H'; elseif vd==9 thu='I'; elseif vd==10 thu='J'; elseif vd==11 thu='K'; elseif vd==12 thu='L'; elseif vd==13 thu='M'; elseif vd==14 thu='N'; elseif vd==15 thu='O'; elseif vd==16 thu='P'; elseif vd==17 thu='Q'; elseif vd==18 thu='R'; elseif vd==19 thu='S'; elseif vd==20 thu='T'; elseif vd==21 thu='U'; elseif vd==22 thu='V'; elseif vd==23 thu='W'; elseif vd==24 thu='X'; elseif vd==25 thu='Y'; elseif vd==26 thu='Z'; %*-*-*-*-* elseif vd==27 thu='1'; elseif vd==28 thu='2'; elseif vd==29 thu='3'; elseif vd==30 thu='4'; elseif vd==31 thu='5'; elseif vd==32 thu='6'; elseif vd==33 thu='7'; elseif vd==34 thu='8'; elseif vd==35 thu='9'; elseif vd==36 thu='0'; else thu=' '; end function [fl re]=lines(im_text) im_text=clip(im_text); num_filas=size(im_text,1); for s=1:num_filas if sum(im_text(s,:))==0 nm=im_text(1:s-1,:); rm=im_text(s:end,:); fl = clip(nm); re=clip(rm); break else fl=im_text; re=[ ]; end end function img_out=clip(img_in) [f c]=find(img_in); img_out=img_in(min(f):max(f),min(c):max(c)); function webcam_Callback(hObject, eventdata, handles) a=get(handles.webcam,'String'); axes(handles.axes1); dev_info = imaqhwinfo('winvideo',1); celldisp(dev_info.SupportedFormats); obj = videoinput('winvideo',1); set(obj, 'SelectedSourceName', 'input1'); src_obj = getselectedsource(obj); get(src_obj); preview(obj); w = waitforbuttonpress; I = getsnapshot(obj); imshow(I); delete(obj); handles.I=I; guidata(hObject, handles); imwrite(I,'vd.jpg','jpg'); info = imfinfo('vd.jpg'); set(handles.text6,'String',info.Filename); set(handles.text13,'String',info.Format); set(handles.text14,'String',info.FileSize); set(handles.text15,'String',info.Height); set(handles.text16,'String',info.Width); set(handles.text17,'String',info.BitDepth); set(handles.text18,'String',info.ColorType); function pushbutton9_Callback(hObject, eventdata, handles) close run giaodien.m ... tượng kí tự văn xác định Hình 3-5: Tách kí tự 3.2.3 Nhận diện kí tự: Các kí tự sau xác định mang so sánh mức độ tương quan với mẫu kí tự tạo sẵn Hàm corr2 sử dụng để tính hệ số tương quan kí tự. .. chứa kí tự văn bản, loại bỏ đối tượng nhiễu Dán nhãn tách kí tự: kí tự tách biệt thành đối tượng để so sánh sau dán nhãn Trích xuất kí tự: mẫu kí tự lưu sẵn trích xuất cách để so sánh với kí tự. .. sánh với kí tự văn So sánh tương quan kí tự: so sánh mức độ tương quan kí tự mẫu kí tự văn xác định Xuất kết quả: hiển thị kết kí tự nhận diện dạng chuỗi kí tự 3.2 Giải thuật: 3.2.1 Xác định vùng