Trong số đó, ngành khoa học xử lí ảnh ngày càng phát triển với sự ra đời của hàng loạt các chương trình, ứng dụng phân tích, nhận diện ảnh.. Đề tài “Nhận diện kí tự dùng Matlab” là một t
Trang 1ĐỒ ÁN TỐT NGHIỆP
NHẬN DIỆN KÍ TỰ DÙNG MATLAB
Trang 2DANH MỤC CÁC TỪ VIẾT TẮT
BMP Microsoft Windows Bitmap
JPEG Joint Photographic Experts Group
PNG Portable Network Graphics
TIFF Tagged Image File Format
Trang 3ĐỒ ÁN TỐT NGHIỆP Trang 1/35
Nhận Diện Kí Tự Dùng Matlab
Trang 4CHƯƠNG 1 TỔNG QUAN ĐỀ TÀI
1.1 Giới thiệu:
Hiện nay, cuộc cách mạng công nghiệp 4.0 đang diễn ra khắp mọi nơi trên thế giới Cùng với sự phát triển chóng mặt của kỹ thuật số, các máy móc thiết bị được lập trình tự động qua phần mềm đang dần thay thế con người trong nhiều lĩnh vực của cuộc sống Trong số đó, ngành khoa học xử lí ảnh ngày càng phát triển với
sự ra đời của hàng loạt các chương trình, ứng dụng phân tích, nhận diện ảnh Đề tài
“Nhận diện kí tự dùng Matlab” là một trong những chương trình xử lý ảnh giúp
nhận diện các kí tự trong văn bản được sử dụng nhiều khá phổ biến hiện nay được thực hiện dựa trên phần mềm Matlab
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
Trang 5Hì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 các về ảnh số, các lệnh xử lí ảnh trên MATLAB
Thiết kế một chương trình xử lý ảnh để nhận diện kí tự dùng phần mềm Matlab
Thiết kế lại chương trình để nhận diện kí tự qua ảnh từ camera
Mô phỏng, đánh giá kết quả và hướng phát triển tối ưu, kết luận ưu và nhượcđiểm của hệ thống
Trang 6CHƯƠ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ể :
Sử dụng các hàm có sẵn trong thư viện và các phép tính toán học thông thường.Tốc độ xử lí tương đối nhanh
Lập trình ra ứng dụng mới tùy theo mục đích sử dụng
Mô phỏng lại các mô hình có sẵn trong thực tế
Phân tích, khảo sát dữ liệu và hiển thị chúng với phần mềm đồ họa
Giao tiếp, liên kết với các mềm khác như C++, Fortran
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 :
Xử lí hình ảnh, video, âm thanh
Hệ thống điều khiển tự động
Tính toán tài chính, sinh học
Kiểm tra, đo lường, thống kê
Trang 7 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.
Ngôn ngữ: bao gồm các ngôn ngữ bậc cao về ma trận và mảng; các hàm, dòng lệnh để phục vụ cho việc lập trình của người dùng
Đồ họa: gồm các hình ảnh, đồ họa trong môi trường 2D và 3D
Giao tiếp,liên kết với các ngôn ngữ lập trình khác như C, Fortran, …
Trong đó, các cửa sổ đóng vai trò quan trọng trong quá trình thao tác khi sử dụng của người dùng
Trang 8 Command Window: cửa sổ giao tiếp chính của Matlab, nơi nhập các biến, hiển thị giá trị, tính toán biểu thức, thực thi các hàm trong thư viện.
Command History: các dữ liệu nhập vào cửa sổ Command Window được lưugiữ trong cửa sổ Command History, cho phép chúng ta sử dụng lại khi cần
Workspace: cửa sổ thể hiện tên các biến được sử dụng cùng với kích thước vùng nhớ, kiểu dữ liệu Cho phép thay đổi giá trị khi 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 dữ liệu:
MATLAB là một hệ thống tương giao, các phần tử dữ liệu được thể hiện dưới dạng ma trận, hoặc mảng MATLAB rất đa dạng về kiểu dữ liệu, bao gồm:
Kiểu Single: đòi hỏi ít bộ nhớ dữ liệu nhưng độ chính xác kém
Kiểu Dounle: sử dụng trong các 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) trong MATLAB là một giao diện đồ họa được điều khiển bởi nhiều thanh công cụ do người lập trình tạo sẵn, cho phép tương tác giữa người dùng và chương trình
Trang 9Hình 2-2: Giao diện khởi tạo Guide.
GUI bao gồm đầy đủ các công cụ hỗ trợ như thực hiện các phép toán logic,
mô phỏng 2D, 3D, đọc và hiển thị dữ liệu thông qua thực thi các nút nhấn được người lập trình giao diện thiết lập
Trang 10Hình 2-3: Giao diện chính của Guide.
Với các biểu tượng được hỗ trợ sẵn, GUI giúp người dùng đơn giản hóa thao tác trong quá trình xây dựng và sử dụng chương trình
Select: trả về con trỏ văn bản
Push Button: nút nhấn khi nhấn sẽ thực thi lệnh trong cấu trúc hàm callback được người dùng lập trình
Silder: thanh trượt cho phép người dùng di chuyển trượt để thực thi lệnh.Radio Button: được sử dụng để tạo sự lựa chọn duy nhất, chỉ được chọn một trong số nhiều nút
Trang 11Check Box: dùng để đánh dấu tích chọn, có thể chọn nhiều ô để cùng thực thi lệnh.
Edit Text: nơi nhập các kí tự từ người dùng, nội dung các kí tự tại đây có thể thay đổi được
Static Text: nơi hiển thị các kí tự thông qua hàm callback hoặc dùng làm nhãn cho các biểu tượng, nội dung các kí tự tại đây không thể thay đổi
Pop-up Menu: tạo một danh sách các lựa chọn cho người dùng và chỉ được chọn một trong số nhiều lựa chọn
Listbox: hộp thoại chứa danh sách nhiều mục, cho phép chọn một hoặc nhiềumục cùng lúc
Toggle Button: khi nhấn lần đầu, nút nhấn được giữ và lệnh được thực thi, khi nhấn lần hai, nút nhấn được nhả và lệnh được hủy bỏ
Table: tạo ra bảng tương tự excel
Axes: giao diện đồ họa dùng hiển thị hình ảnh 2D hoặc 3D
Panel: tạo một mảng nhóm các đối tượng lại với nhau giúp dễ kiểm soát và thao tác khi di chuyển
Button Group: quản lý các sự lựa chọn của Radio Button
Active Control: quản lý một nhóm các nút hoặc các chương trình có liên quan với nhau trong hoạt động
2.2 Khái niệm ảnh số và xử lí ảnh:
2.2.1 Các khái niệm cơ bản về ảnh:
Trang 12Điểm ảnh (Pixel - Picture Element) là một phần tử của ảnh số trong hệ trục toạ độ (x, y) với độ xám hoặc màu nhất định.
Mức xám là các giá trị có thể có của các điểm ảnh và chỉ mang giá trị nguyêndương.Thường mức xám có giá trị trong khoảng [0, 255] tuỳ thuộc vào giá trị mà mỗi điểm ảnh được biểu diễn Các thang giá trị mức xám: 16, 32, 64, 128, 256 Trong đó, mức thông dụng nhất là 256 Mức xám dùng 1 byte để biểu diễn: 2 8=256 mức, từ 0 đến 255
Độ phân giải (Resolution) của ảnh là mật độ điểm ảnh được ấn định trên một ảnh số và được phân bố theo trục x và y của hệ trục tọa độ hai chiều
Ví dụ: Bức ảnh số có độ phân giải 1366x768 nghĩa là chiều ngang có 1366 điểm ảnh (pixel), chiều dọc có 768 điểm ảnh và mỗi điểm ảnh được biểu diễn bằng một con số
Hình 2-4: Sơ đồ phân bố điểm ảnh.
Ảnh số là một tập hợp các điểm ảnh, sau khi số hóa ảnh thật, mỗi phần tử của
ma trận tương ứng với một điểm ảnh.Các điểm ảnh được gắn với với mức xám phù hợp dùng để mô tả ảnh gần với ảnh thật Số điểm ảnh xác định độ phân giải của ảnh Ảnh có độ phân giải càng cao thì càng thể hiện rõ nét các đặt điểm của ảnh và làm cho bức ảnh trở nên chân thực và sắc nét hơn
2.2.2 Các loại ảnh số:
Ảnh nhị phân (Binary image) hay ảnh trắng đen có giá trị xám của tất cả các
Trang 13điểm ảnh chỉ nhận giá trị 1 (đen) hoặc 0 (trắng), như vậy mỗi điểm ảnh trong ảnh nhị phân được biểu diễn bởi 1 bit.
Hình 2-5: Ảnh nhị phân
Ảnh xám (Gray image) là ảnh có giá trị xám của các điểm ảnh nằm trong khoảng [0, 255], mỗi điểm ảnh trong ảnh nhị phân được biểu diễn bởi 1 byte (8 bits) Khi xử lý ảnh trên máy tính thì người ta dùng ảnh xám để biểu diễn ảnh nhị phân và lúc này có 2 giá trị là 0 hoặc 255
Hình 2-6: Ảnh xám
Ảnh màu RGB (RGB image) còn được gọi là ảnh true-color, một pixel được biểu diễn bằng 3 giá trị (R, G, B) trong đó R (Red), G (Green), B (Blue) là một giá trị xám và được biểu biểu diễn bằng 1 byte Khi đó ta có một ảnh 24 bits
Trang 14Hình 2-7: Ảnh màu
Ảnh RGB được biểu diễn bởi một ma trận ba chiều m x n x 3, trong đó m x n
là kích thước ảnh Ma trận này định nghĩa các thành phần màu Red, Green, Blue cho mỗi điểm ảnh
Trang 15 Khảo sát đối tượng: xác định diểm khuyết, đo lường đối tượng, đo đạc khoảng cách từ đối tượng tới camera,
Nhận diện: bao gồm nhận diện biển số xe, nhận diện mặt người, nhận diện vân tay, nhận diện kí tự,
Phân loại: phân loại các đối tượng trong ảnh dựa trên màu sắc, kích cỡ,hình dạng, đặc điểm,…
Tối ưu: nâng cao chất lượng hình ảnh Thường dùng các phương pháp như nâng độ tương phản, độ sắc nét, cân bằng trắng, giảm nhiễu, … Mục đích saucùng để có được ảnh đầu ra có chất lượng hiển thị tốt hơn ảnh đầu vào
Dựa vào từng mục đích sử dụng, ta có thể tổng hợp các bước của một quá trình xử lí ảnh cơ bản như sau:
Hình 2-9: Các bước xử lí ảnh.
Thu nhận ảnh là bước biến đổi thông tin hình ảnh về các cấu trúc để lưu trữ trong máy tính Ảnh có thể được thu từ nhiều nguồn khác nhau như máy ảnh,
camera, điện thoại,…
Tiền xử lý là quá trình nâng cao chất lượng ảnh thông qua sử dụng các phương pháp xử lí ảnh tùy theo mục đích sử dụng Một số phương pháp thông dụng
Trang 16như điều chỉnh độ sáng, giảm nhiễu, điều chỉnh bộ lọc, chuẩn hóa kích thước ảnh,…Nhiệm vụ chính của bộ tiền xử lý là lọc nhiễu, nâng độ tương phản giúp ảnh rõ nét hơn phục vụ quá trình xử lí.
Phân đoạn là quá trình tách ảnh đầu vào thành các vùng thành phần để phân tích, nhận diện ảnh Chức năng chính là nhằm phân chia các đối tượng cần xử lí ra khỏi ảnh, phân tách các đối tượng liên tiếp thành các đối tượng riêng biệt
Biểu diễn và mô tả là giai đoạn chọn các tính chất, đặc tính của ảnh để thể hiện theo từng nhu cầu sử dụng cụ thể, nhằm phục vụ cho nhận dạng và nội suy Việc chọn các tính chất của ảnh gọi là trích chọn đặc trưng gắn với việc tách các đặctính của ảnh làm cơ sở để phân biệt đối tượng này với đối tượng khác
Nhận dạng và nội suy là bước cuối trong quá trình xử lí ảnh Nhận dạng là quá trình xác định ảnh, dựa trên kết quả có được từ các bước trước đó, ảnh được phán đoán, xác định trên cơ sở nhận dạng Nội suy là bước phán đoán theo ý nghĩa dựa trên cơ sở nhận dạng
Do ảnh là một đối tượng phức tạp và đa dạng, trong nhiều khâu phân tích và
xử lý ảnh người ta mong muốn bắt chước quy trình tiếp nhận và xử lý ảnh bằng trí tuệ của con người Chính vì vậy tất cả các bước phân tích và xử lí đều đòi hỏi cơ sở tri thức của con người
2.3 Các hàm xử lí ảnh cơ bản trên MATLAB:
Trang 17Cú pháp: imfinfo(filename)
imfinfo(filename,fmt)imfinfo(URL)
Ví dụ: imfinfo('tdt.png')
Kết quả:
Trang 19Hàm imwrite: lưu ảnh được biễu diễn bằng một ma trận thành file ảnh dưới định dạng ảnh bất kỳ.
Trang 20Hình 2-15: Hàm imresize.
Trang 21Hàm imrotate: cho phép xoay ảnh theo góc cần xoay Gồm 2 thông số cơ bản
là ảnh và góc xoay
Cú pháp: imrotate(I,angle)
Ví dụ: a= imread('tdt.png')
b= imrotate(a,90)Kết quả:
Hình 2-16: Hàm imrotate.
Hàm imcrop: giúp cắt ảnh theo một phạm vi sau khi xác định vùng cắt
Cú pháp: imcrop(I,[xmin ymin width height])
Ví dụ: a= imread('tdt.png')
b= imcrop(a,[10 20 150 250])Kết quả:
Trang 22Hình 2-17: Hàm imcrop.
2.3.3 Hàm toán số học trên ảnh:
Các phép toán số học trên ảnh bao gồm các phép cộng, trừ, nhân, chia MATLAB chỉ hổ trợ các phép toán này trên kiểu double nên cần chuyển đổi kiểu trước khi thực hiện
Hàm imadd: cộng hai ảnh hoặc cộng hằng số vào ảnh Các giá trị của kết quảkhông vượt quá 255
Cú pháp: imadd(X,Y)
Ví dụ: X= uint8([200 0;50 100]);
Y= uint8([0 100;50 200]);
Z= imadd(X,Y)Kết quả: Z = 200 100
Trang 232.3.4 Chuyển đổi kiểu dữ liệu:
MATLAB cung cấp hỗ trợ các định dạng ảnh sau:
BMP (Microsoft Windows Bitmap)
JPEG (Joint Photographic Experts Group)
PNG (Portable Network Graphics)
TIFF (Tagged Image File Format)
Tuy nhiên, trong quá trình thực hiện các phép tính toán trên ảnh, chúng ta cần chuyển về các kiểu dữ liệu sao cho thích hợp như: double, uint8, uint16
Để chuyển đổi ảnh sang các kiểu dữ liệu trên ta sử dụng các hàm sau:
im2double: chuyển ảnh về kiểu double
im2uint8: chuyển ảnh về kiểu uint8
im2uint16: chuyển ảnh về kiểu uint16
Trang 24CHƯƠNG 3 GIẢI THUẬT3.1 Sơ đồ khối:
Trang 26Xá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ỏ các đối tượng nhiễu.
Dán nhãn và tách kí tự: các kí tự được tách biệt thành từng đối tượng để so sánh sau khi dán nhãn
Trích xuất kí tự: các mẫu kí tự được lưu sẵn được trích xuất một cách lần lượt để so sánh với kí tự văn bản
So sánh tương quan kí tự: so sánh mức độ tương quan giữa kí tự mẫu và kí tựvăn bản được xác định
Xuất kết quả: hiển thị kết quả kí tự được nhận diện dưới 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 khi được nhị phân hóa, ảnh gồm hai thành phần điểm ảnh là 1 (kí tự) và
0 (vùng trống) Hàm find được dùng để xác định các điểm ảnh mang giá trị khác 0
mà ở đây là 1 Tất cả điểm ảnh được xác định sẽ được phân tích trên chiều ngang vàdọc của bức ảnh, nhằm tìm ra điểm ảnh đầu tiên và cuối cùng theo cả chiều ngang
Trang 27và chiều dọc Sau đó dùng hàm imcrop để cắt vùng chứa tất cả điểm ảnh xác định được.
Hình 3-3: Ảnh sau khi xác định vùng chứa văn bản.
Tiếp theo, ta dùng phương pháp tượng tự kết hợp với vòng lặp được sử dụng
để xác định dòng văn bản, từ đó tìm được kí tự trên cùng một hàng
Hình 3-4: Phân dòng văn bản.
3.2.2 Tách kí tự:
Cuối cùng, các kí tự được tách biệt bằng phương pháp dán nhãn kí tự
Phương pháp này được xây dựng trên cơ sở xét tất cả các điểm lân cận của một điểm ảnh Tất cả điểm ảnh lân cận nhau có cùng giá trị điểm ảnh sẽ được xác định
Trang 28thành một đối tượng và dán nhãn để phân biệt với các đối tượng còn lại Trong trường hợp này, mỗi đối tượng là một kí tự văn bản được xác định.
Trang 29Hình 4-1: Giao diện bắt đầu.
Hình 4-2: Giao diện chính.
4.1 Ảnh được lưu từ máy:
Trang 30Hình 4-3: Chọn ảnh đầu vào.
Hình 4-4: Hiển thị thông số ảnh.
Trang 31Hình 4-5: Nhận diện kí tự.
4.2 Ảnh chụp qua camera:
Hình 4-6: Ảnh từ camera.
Trang 32Hình 4-7: Hiển thị thông số ảnh.
Hình 4-8: Nhận diện kí tự.
Trang 33Đối với ảnh từ máy tính, kết quả nhận diện phụ thuộc vào chất lượng của ảnh
và kiểu kí tự trong văn bản hiển thị
Đối với ảnh từ camera, kết quả nhận diện phụ thuộc vào chất lượng camera, khoảng cách và góc độ khi chụp
Trang 34CHƯƠNG 5 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 và sử dụng
Tốc độ xử lí tương đối nhanh
Hiển thị được thông tin ảnh đầu vào
5.1.2 Khuyết điểm:
Kết quả nhận diện phụ thuộc nhiều vào chất lượng của ảnh đầu vào
Chưa đáp ứng được yêu cầu đa dạng về phông chữ, kiểu kí tự
Đối với ảnh được chụp từ camera, kết quả nhận diện phụ thuộc nhiều vào khoảng cách và góc độ chụp
5.2 Hướng phát triển:
Nâng cao độ chính xác của chương trình
Xây dựng tính năng tự động nâng cao chất lượng ảnh nhằm phục vụ cho quá trình nhận diện
Thiết kế thêm nhiều mẫu kí tự phục vụ cho việc nhận diện đối với nhiều phông chữ, kiểu kí tự khác nhau