NHẬN DIỆN kí tự DÙNG MATLAB (có code)

40 454 7
NHẬN DIỆN kí tự DÙNG MATLAB (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

ĐỒ ÁN TỐT NGHIỆP NHẬN DIỆN TỰ DÙNG MATLAB 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ận Diện Tự Dùng Matlab 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ận diện ảnh Đề tài “Nhận diện tự dùng Matlab” chương trình xử lý ảnh giúp nhận diện 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ựng từ 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ận diện tự dùng phần mềm Matlab  Thiết kế lại chương trình để nhận diện 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 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ện MATLAB 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, 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ấn nhấ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 tự văn bản, loại bỏ đối tượng nhiễu Dán nhãn tách tự: tự tách biệt thành đối tượng để so sánh sau dán nhãn Trích xuất tự: mẫu tự lưu sẵn trích xuất cách để so sánh với tự văn So sánh tương quan tự: so sánh mức độ tương quan tự mẫu tự văn xác định Xuất kết quả: hiển thị kết tự nhận diện dạng chuỗi 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 tự hàng Hình 3-4: Phân dòng văn 3.2.2 Tách tự: Cuối cùng, tự tách biệt phương pháp dán nhãn 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 tự văn xác định Hình 3-5: Tách tự 3.2.3 Nhận diện tự: Các tự sau xác định mang so sánh mức độ tương quan với mẫu tự tạo sẵn Hàm corr2 sử dụng để tính hệ số tương quan tự văn xác định mẫu tự Kết nhận tự có giá trị hệ số tương quan cao với mẫu thử làm tự nhận diệ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ận diện 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ận diện 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ận diện 17 15 Số ảnh nhận diệ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ận diện phụ thuộc vào chất lượng ảnh kiểu tự văn hiển thị Đối với ảnh từ camera, kết nhận diệ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ận diệ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 tự  Đối với ảnh chụp từ camera, kết nhận diệ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ận diện  Thiết kế thêm nhiều mẫu tự phục vụ cho việc nhận diện nhiều phông chữ, kiểu 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

Ngày đăng: 22/03/2019, 20:32

Từ khóa liên quan

Mục lục

  • DANH MỤC CÁC TỪ VIẾT TẮT

  • BMP Microsoft Windows Bitmap

  • JPEG Joint Photographic Experts Group

  • PNG Portable Network Graphics

  • CHƯƠNG 1. TỔNG QUAN ĐỀ TÀI

    • 1.1 Giới thiệu:

    • 1.2 Tổng quan xử lý ảnh:

    • Xử lí ảnh với tín hiệu xử lí là ảnh số, một phân ngành trong xử lí số tín hiệu. Đây là ngành khoa học được xây dựng và nghiên cứu thông qua nhiều lĩnh vực và cần nhiều kiến thức cơ sở ngành khác. Dựa trên kiến thức cơ bản của xử lí số tín hiệu, xử lí ảnh còn cần đến kiến thức đối với các phân ngành Toán học khác như Đại số tuyến tính, Xác suất thống kê, … Các phương pháp xử lý ảnh được xây dựng bắt đầu từ nâng cao chất lượng ảnh và phân tích ảnh trước khi xử lí. Tùy vào từng nhu cầu, mục đích của từng đối tượng sử dụng mà các phương pháp xử lý ảnh được thiết kế bằng nhiều phương pháp khác nhau. Qua quá trình phân tích tổng hợp, một hệ thống xử lí ảnh có thể xây dựng từ các bước căn bản sau.

    • Hình 1-1: Hệ thống xử lý ảnh.

    • 1.3 Hướng nghiên cứu:

    • CHƯƠNG 2. CƠ SỞ LÝ THUYẾT

      • 2.1 Phần mềm MATLAB:

      • 2.1.1 Giới thiệu:

      • MATLAB (Matrix Laboratory) là phần mềm cho phép tính toán số và lập trình do công ty MathWorks thiết kế. Được tích hợp tính toán số với ma trận, MATLAB giúp người dùng có thể thực hiện tính toán, lập trình các ứng dụng, vẽ đồ thị hàm số hay biểu đồ, tạo các giao diện người dùng và liên kết với những ngôn ngữ lập trình khác. Với hệ thống dữ liệu và thư viện được lập trình, người dùng có thể :

      • MATLAB có rất nhiều ứng dụng được sử dụng rộng rãi trong các lĩnh vực khoa học và kĩ thuật ngày nay : .

      • 2.1.2 Hệ thống MATLAB:

      • Hình 2-1: Giao diện MATLAB

      • Hệ thống MATLAB bao gồm 5 phần:

      • Môi trường: gồm các thanh công cụ, cửa số giúp người dùng thao tác trực tiếp khi sử dụng các lệnh và các file như: Desktop, Command Window, Command History, Browsers For Viewinghelp.

      • Thư viện: nơi chứa các hàm toán học, phép toán từ đơn giản đến phức tạp, các kí tự, biểu tượng được có sẵn trong MATLAB.

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

Tài liệu liên quan