Tải bản đầy đủ (.docx) (40 trang)

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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.27 MB, 40 trang )

ĐỒ ÁN TỐT NGHIỆP

NHẬN DIỆN KÍ 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 Kí Tự Dùng Matlab


CHƯƠ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.


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 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.


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ể :
 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ê.


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.
 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.


 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ưu
giữ 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.


Hì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.


Hì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.


Check 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ều
mụ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:


Đ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ên
dươ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.
8
Trong đó, mức thông dụng nhất là 256. Mức xám dùng 1 byte để biểu diễn: 2 =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


đ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.


Hì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.

Hình 2-8: Ma trận ảnh RGB.

2.2.3 Xử lí ảnh:
Xử lí ảnh là quá trình thao tác, chỉnh sửa ảnh đầu vào nhằm cho ra kết quả
như mong muốn tùy theo mục đích người dùng.
Thông thường, mục đích của xử lí ảnh dùng để:


 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 sau
cù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


như đ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 đặc
tí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:
2.3.1 Hàm đọc và hiển thị ảnh:
Hàm imshow: hiển thị ảnh như một image trên một figure. Hàm imshow tự
thiết lập giá trị của các đối tượng image, axes và figure để hiển thị ảnh.
Cú pháp:

imshow(filename)
imshow(I)


Ví dụ:

imshow('tdt.png')

Kết quả:

Hình 2-10: Hàm imshow.

Hàm imfinfo: xem các thông số của một bức ảnh. Các thông số bao gồm:
filename, filemoddate, size, format, formatversion, width, height, bitdepth,
colortype.
Cú pháp:

imfinfo(filename)

imfinfo(filename,fmt)
imfinfo(URL)

Ví dụ:
Kết quả:

imfinfo('tdt.png')


Hình 2-11: Hàm imfinfo.

Hàm imread: đọc một file ảnh thành một ma trận. File ảnh thường có các
định dạng (fmt) như: BMP, PNG, GIF, JPG, JPEG, TIFF,…
Cú pháp:

imread(filename)
imread(filename,fmt)

Ví dụ:

imread('tdt.png')

Kết quả:

Hình 2-12: Hàm imread.


Hà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ỳ.
Cú pháp:


imwrite(A,filename)

Ví dụ:

imread(A,’tdt.png’)

2.3.2 Hàm biến đổi ảnh:
Hàm rgb2gray: chuyển đổi ảnh màu RGB thành ảnh xám.
Cú pháp:

rgb2gray(filename)

Ví dụ:

rgb2gray('tdt.png')

Kết quả:

Hình 2-13: Hàm rgb2gray.

Hàm im2bw: tạo một ảnh nhị phân từ một ảnh màu RGB hoặc ảnh xám.
Cú pháp:

im2bw(filename)

Ví dụ:

im2bw('tdt.png')



Kết quả:

Hình 2-14: Hàm im2bw.

Hàm imresize: cho phép thay đổi kích thước ảnh với tỉ lệ kích thước theo ý
muốn người dùng.
Cú pháp:

imresize(I,scale)
imresize(I,[numrows numcols])

Ví dụ:

a= imread('tdt.png')
b= imresize(a,[180 90])

Kết quả:

Hình 2-15: Hàm imresize.


Hà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ả:


Hì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
100 255

Hàm imsubtract: trừ một hình ảnh hoặc trừ hằng số từ hình ảnh. Các giá trị
của kết quả không dưới 0.
Cú pháp:

imsubtract(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 0



0 0
Hàm immultiply: nhân hai hình ảnh hoặc nhân hình ảnh với hằng số.
Cú pháp:

immultiply(X,Y)

Hàm imdivide: chia một trong những hình ảnh cho nhau hoặc chia hình ảnh
với hằng số.
Cú pháp:

imdivide(X,Y)

2.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.


CHƯƠNG 3. GIẢI THUẬT
3.1 Sơ đồ khối:



Thu nhận ảnh

Nhị phân hóa ảnh

Xác định vùng chứa văn
bản

Dán nhãn và tách kí
tự

Trích xuất kí tự

So sánh tương quan
kí tự

Xuất kết quả
Hình 3-1: Sơ đồ khối.

Thu nhận ảnh: ảnh đầu vào từ 2 nguồn là ảnh chụp từ camera và ảnh được
lưu sẵn. Ảnh đầu vào có thể là ảnh màu RGB, ảnh xám hoặc ảnh nhị phân.
Nhị phân hóa ảnh: ảnh được chuyển sang ảnh nhị phân từ ảnh xám hoặc ảnh
màu RGB nhằm đơn giản hóa.


×