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

Nhận dạng bảng chữ cái ngôn ngữ ký hiệu

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.08 MB, 41 trang )

BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC BÁCH KHOA TPHCM
KHOA ĐIỆN-ĐIỆN TỬ

ĐỀ TÀI: Nhận dạng bảng chữ cái ngôn ngữ ký hiệu
Giảng viên hướng dẫn : TS Hà Hoàng Kha


TPHCM 9-2016
LỜI MỞ ĐẦU
Tương tác người - máy là một lĩnh vực nghiên cứu thu hút nhiều sự quan tâm của các
nhà khoa học trên thế giới cũng như trong nước trong thời gian gần đây. Mục tiêu của các nghiên
cứu này nhằm hướng tới các hệ tương tác người – máy, nghĩa là có thể dùng các phương tiện
tương tác thông qua cử chỉ, điệu bộ, tiếng nói,… để tương tác giữa người và máy.
Hiện tại, con người chủ yếu tương tác với máy tính thông qua chuột và bàn phím. Với sự
phát triển nhanh chóng của công nghệ và khoa học máy tính, người ta muốn có những sự tương
tác mới dễ dàng hơn, nhanh hơn, tiện lợi hơn cho người sử dụng giống như sử dụng những cử
chỉ thông thường của con người hoặc bằng tiếng nói. Trên thực tế, một số kỹ thuật trong lĩnh vực
Thị giác máy tính và Học máy có thể cho phép máy tính biểu diễn và nhận dạng cử chỉ tay hay
giọng nói của con người.
Trong đồ án này, chúng em đã phát triển phương pháp sử dụng dữ liệu video độ sâu từ
kinect, sử dụng thông tin xương (Skeleton) để nhận dạng bảng chữ cái theo cử chỉ bàn tay.
Bài báo cáo đồ án này gồm 6 chương
Chương 1: Giới thiệu chung
Chương 2: Hệ thống xử lý ảnh
Chương 3: Nhận dạng với thuật toán Support Vector Machine
Chương 4: Khái quát về nhận dạng và trích chọn đặc trưng theo phương pháp PCA
Chương 5: Tìm hiểu và ứng dụng của Kinect
Chương 6: Xây dựng hệ thống nhận dạng bảng chữ cái theo ngôn ngữ ký hiệu
Để hoàn thành tốt đồ án này, chúng em xin chân thành cảm ơn tới thầy Hà Hoàng Kha,
đã tạo điều kiện thuận lợi và giúp đỡ chúng em trong suốt quá trình thực hiện.




MỤC LỤC


CHƯƠNG 1 GIỚI THIỆU CHUNG

CHƯƠNG 1
1.1

GIỚI THIỆU CHUNG

Bài toán phát hiện đối tượng

Từ xưa con người luôn mong muốn chế tạo một thiết bị "biết suy nghĩ và làm việc giống
như con người". Hiện nay trên thế giới, nhiều nước phát triển đã chế tạo được những con Robot
có khả năng "suy nghĩ" và "tự hoạt động độc lập" gần giống như con người. Để Robot có khả
năng như trên, ngoài các yêu cầu về phần cứng và phần mềm điều khiển thì yếu tố quan trọng
không thể thiếu đó là "thị giác máy tính (Computer Vision)". "Thị giác máy tính" tương tự như
"đôi mắt" của con người, nhờ đó Robot có thể "quan sát" được thế giới xung quanh chúng để có
thể đưa ra phản ứng với bên ngoài. Đây là hướng nghiên cứu đang được quan tâm hiện nay trên
thế giới cũng như ở Việt Nam.
Nhận dạng cử chỉ (Gesture Recognition) là một hướng nghiên cứu trong lĩnh vực Thị
giác máy tính với mục tiêu giúp máy tính có thể hiểu được cử chỉ con người thông qua việc sử
dụng các mô hình toán học. Cử chỉ có thể xuất phát từ chuyển động của nhiều bộ phận khác nhau
trên cơ thể, nhưng thường thấy nhất là từ gương mặt hoặc bàn tay.Ở nước ta, hoạt động nghiên
cứu và thiết kế các hệ thống nhận dạng đang có những bước đầu phát triển trong các trường đại
học. Các đề tài nghiên cứu khoa học và luận văn trước đây chủ yếu tập trung vào các mảng như
nhận dạng khuôn mặt và cảm xúc trên khuôn mặt, nhận dạng dấu vân tay để hỗ trợ điều khiển
trong các hệ thống an ninh… Tuy nhiên, các đề tài liên quan tới giao tiếp giữa người và máy tính

thông qua cử chỉ bàn tay vẫn còn chưa được phát triển đầy đủ.

Hình 1.1 Điều khiển máy tính từ xa bằng tay

GVHD: TS.HÀ HOÀNG KHA

Trang 4


CHƯƠNG 1 GIỚI THIỆU CHUNG

Nhận thấy đây là hướng phát triển mới và có tiềm năng ứng dụng cao, đồ án tốt nghiệp đã
tập trung vào việc kết hợp những kiến thức về thị giác máy tính và xử lí ảnh số để nhận dạng cử
chỉ bàn tay, từ đó sử dụng cho việc nhận dạng bảng chữ cái giúp người khuyết tật giao tiếp với
người bình thường.
Do ưu điểm nổi trội về tốc độ nhận dạng và độ chính xác cao, mô hình machine learning
dùng Principal Component Analysis (PCA) và Support Vector Machine (SVM) được chọn để
thực hiện bộ nhận dạng trong đồ án này. Đây là mô hình đủ mạnh để có thể dùng trong các ứng
dụng giao tiếp thời gian thực giữa người và máy tính, đồng thời cũng là mô hình được hỗ trợ đầy
đủ trong phần mềm MATLAB do công ty MathWorks cung cấp và phát triển. Đồng thời thiết bị
được sử dụng trong việc nhận dạng người trong môi trường thật là Kinect, đây là thiết bị cảm
biến ngoại vi thu chuyển động phát triển bởi Microsoft. Với dữ liệu chiều sâu, có thể lấy được
khung xương của một người khi đứng trước cảm biến. Với bộ khung xương đó có thể nhận biết
được cử chỉ của người sử dụng.

Hình 1.1 Thiết bị Kinect Xbox Version 1
1.2

Nhiệm vụ của đề tài


Tìm hiểu tổng quan về xử lý ảnh số, các thuật toán lọc nhiễu, bắt ảnh động cũng như phát
hiện chuyển động, xử lý và nhận dạng. Tìm hiểu thư viện xử lý ảnh dùng phần mềm MATLAB.
Nghiên cứu cơ sở lý thuyết của thuật toán nhận dạng PCA và thuật toán SVM cũng như
các quá trình xử lý ảnh số. Từ đó thu thập ảnh mẫu và huấn luyện bộ nhận dạng.
Tìm hiểu so sánh ưu, khuyết điểm của 2 thuật toán PCA và SVM trong nhận dạng cử chỉ tay.
Ý nghĩa thực tế và phạm vi ứng dụng.
Hiện nay vấn đề giúp người tàn tật hoà nhập cuộc sống là một vấn đề rất được xã hộ quan
tâm và ủng hộ. Với đề tài này, người câm có thể hoàn toàn giao tiếp với người bình thường thông
qua việc sử dụng ký hiệu ngôn ngữ tay để diễn đạt.

GVHD: TS.HÀ HOÀNG KHA

Trang 5


CHƯƠNG 1 GIỚI THIỆU CHUNG
Ngoài ra, nhận diện cử chỉ tay có thể được ứng dụng vào công nghiệp, ta có thể chế tạo
được các Robot có thể bám theo các cử động của bàn tay để hoạt động trong các môi trường
khắc nghiệt mà con người khó tiếp cận như khu vực có phóng xạ cao, khu vực dễ xảy ra tai nạn.
Trong lĩnh vực giải trí, ta có thể tích hợp công nghệ xử lý ảnh lên các Smart House, Smart TV,
Smart Phone, laptop, v.v… giúp chúng ta tương tác với các thiết bị này hay điều khiển các thiết
bị trong gia đình với các cử chỉ của bàn tay.
1.3

Tổng quát về bài toán nhận dạng ký hiệu bàn tay

Bài toán nhận dạng cử chỉ bàn tay có độ khó khá cao do bàn tay là một cấu trúc rất phức
tạp với nhiều đốt và khớp khác nhau. Điều này đặt ra nhiều thách thức cho quá trình xây dựng đề
tài.
Để tương tác hiệu quả với người dùng, hệ thống phải đạt được tốc độ nhận dạng đủ nhanh

để có thể hoạt động ở chế độ thời gian thực. Kết quả sẽ không được chấp nhận nếu người câm
phải chờ nhiều giây để cử chỉ của họ được hiện lên màn hình. Đáp ứng nhanh là một trong những
yêu cầu quan trọng nhất. Bài toán nhận dạng cử chỉ có thể phân thành hai loại chính là nhận dạng
cử chỉ tĩnh và nhận dạng cử chỉ động.


Cử chỉ tĩnh: Hình ảnh tĩnh của bàn tay tại một thời điểm, không liên quan đến quá trình



di chuyển của bàn tay.
Cử chỉ động: Là một chuỗi tuần tự các cử chỉ tĩnh liên kết lại trong quá trình di chuyển
liên tục của bàn tay trong một khoảng thời gian xác định.

Hệ thống nhận dạng cử chỉ bàn tay trong luận văn này được xây dựng để có khả năng nhận
dạng và phân loại các cử chỉ tĩnh khác nhau: trong phạm vi của đồ án hệ thống nhận dạng gồm
26 cử chỉ tương đương với 26 ký tự trong bảng chữ cái.

GVHD: TS.HÀ HOÀNG KHA

Trang 6


CHƯƠNG 1 GIỚI THIỆU CHUNG

Hình 1.2 Bảng chữ cái ngôn ngữ ký hiệu
1.3.1

Các đề tài trong nước


Ở nước ta, công trình thực hiện nhận dạng cử chỉ bàn tay còn chưa nhiều. Đáng chú ý nhất là
các đề tài:
"Tìm hiểu các kỹ thuật áp dụng cho bài toán nhận dạng kí hiệu người câm" của Đinh Bá
Thắng và Đặng Bác Văn.
Trong công trình của mình, họ đã áp dụng thuật toán AdaBoost để xây dựng được các bộ
nhận dạng cho 24 cử chỉ khác nhau.
Tuy nhiên, False Alarm của các bộ nhận dạng còn khá cao và đề tài trên chỉ dừng lại ở mức
tạo được các bộ phân loại cử chỉ riêng biệt trên ảnh tĩnh mà chưa kết hợp lại được để tạo thành
bộ phân loại chung có thể hoạt động ở chế độ thời gian thực với hình ảnh đầu vào từ webcam.
"Tìm hiểu kỹ thuật phát hiện người trong video để giám sát lớp học" của Nguyễn Xuân
Tường Huy và Nguyễn Hoàng Vũ.
Trong luận văn này, họ đã dùng nhiều phương pháp khác nhau như: rút trích đặc trưng,
phương pháp phát hiện màu để phát hiện có bàn tay đưa lên trong lớp học.

GVHD: TS.HÀ HOÀNG KHA

Trang 7


CHƯƠNG 1 GIỚI THIỆU CHUNG
1.3.2

Các đề tài trên thế giới

Ở các nước, các nhà nghiên cứu đã tiếp cận bài toán nhận dạng cử chỉ bàn tay theo rất nhiều
hướng khác nhau như dựa vào màu sắc bàn tay, hình dáng bàn tay hay công trình của Viola &
Jones dùng các đặc trưng Haar-like.
Công trình của J. Yao et al.
Ứng dụng này tập trung vào việc phát hiện chuyển động của cánh tay trong môi trường lớp
học. Đây là bài toán khó do phông nền phức tạp và bị tác động bởi nhiễu, điều kiện ánh sáng

thay đổi, vật thể cần nhận dạng có số lượng nhiều và kích thước nhỏ. Một hệ thống quan sát tinh
vi có khả năng phát hiện khi sinh viên đưa tay lên muốn đặt câu hỏi trong lớp được thực hiện
trong công trình này. Hệ thống thực hiện khá tốt chức năng phát hiện cánh tay đưa lên trong lớp
học, mặc dù cần nhiều cải tiến nữa để tăng độ tin cậy để áp dụng vào thực tế. Nhận dạng sai
thường rơi vào những trường hợp đặc biệt, ví dụ như sinh viên đứng lên hay đi lại trong lớp, hay
khi phông nền có những mảng màu trùng với màu da. Độ chính xác 80% còn khá thấp, khó ứng
dụng trong điều khiển.
Công trình của L. Bretzner et al.
Công trình giới thiệu các thuật toán và hệ thống dùng để nhận biết và theo dõi cử chỉ bàn tay.
Bàn tay được biểu thị thông qua sự phân tầng các đặc điểm màu sắc của hình ảnh ở những kích
thước khác nhau cùng những quan hệ về kích thước, vị trí và hướng. Với mỗi hình ảnh nhận vào,
hệ thống sẽ phân tích và phát hiện những đặc điểm màu sắc ở những kích thước khác nhau. Các
trạng thái của bàn tay được phát hiện đồng bộ và theo dõi dùng phương pháp lọc từng phần,
dùng kĩ thuật lấy mẫu theo lớp phân tầng. Tuy nhiên, công trình này vẫn còn tồn tại nhiều những
khuyết điểm chung của việc nhận dạng thông qua màu da giống như công trình của J. Yao et al
đã nêu ở trên.
Công trình của B. Ionescu et al.
Theo phương pháp được đề xuất bởi Freeman and Roth, những kí hiệu tĩnh dùng biểu đồ
định hướng cục bộ để phân loại những cử chỉ bàn tay khác nhau. Ở đây, ta cần thực hiện một số
thao tác huấn luyện, theo đó biểu đồ định hướng được tính toán trên tập huấn luyện có tối thiểu 3
mẫu cho mỗi kí hiệu bàn tay. Biểu đồ cử chỉ nhận vào sẽ được so sánh với thông số của tập huấn
luyện. Mỗi cử chỉ được biểu hiện thông qua một chuỗi những những hình ảnh. Những kí hiệu
động phản ánh những chuyển động và vị trí trong không gian của cử chỉ.

GVHD: TS.HÀ HOÀNG KHA

Trang 8


CHƯƠNG 1 GIỚI THIỆU CHUNG

Thuật toán cho kết quả nhận dạng 100%, nhưng chỉ làm việc được trong điều kiện đơn giản
hóa phông nền và tốc độ nhận dạng vẫn còn chậm.
Công trình của P. Viola et al.
Công trình này mô tả phương pháp nhận dạng vật thể có thể xử lí ảnh với tốc độ rất nhanh tỉ
lệ phát hiện đúng vật thể rất cao. Viola và Jones đã đề xuất 3 điểm nổi bật.
Thứ nhất là khái niệm "Integral Image" cho phép tính toán các đặc điểm nhận dạng rất
nhanh. Thứ hai là thuật toán AdaBoost cho phép lựa chọn những đặc điểm quan trọng và những
tầng phân loại hoạt động hiệu quả.
Cuối cùng là phương pháp kết hợp những bộ phân loại thành những tầng cho phép những vùng
phông nền không chứa vật thể bị loại nhanh ngay từ những tầng đầu và dành nhiều thời gian hơn
vào việc tính toán những vùng ảnh có khả năng chứa vật thể. Cách tiếp cận mới này cho phép
giảm thời gian tính toán trong khi vẫn đảm bảo được tỉ lệ nhận dạng cao khoảng gần 94%, tốc độ
tăng khoảng 15 lần so với các công trình trước đó. Do những đặc điểm nổi trội trên nên mô hình
có thể được áp dụng cho các ứng dụng nhận dạng thời gian thực.

GVHD: TS.HÀ HOÀNG KHA

Trang 9


CHƯƠNG 2 HỆ THỐNG XỬ LÝ ẢNH

CHƯƠNG 2
2.1

HỆ THỐNG XỬ LÝ ẢNH

Giới thiệu về hệ thống xử lý ảnh

Xử lý ảnh là một lĩnh vực mang tính khoa học và công nghệ. Nó là một ngành khoa học mới

mẻ so với các ngành khoa học khác nhưng tốc độ phát triển của nó rất nhanh, kích thích các
trung tâm nghiên cứu ứng dụng, đặc biệt là máy tính chuyên dụng cho nó.

Hình 2.1 Hệ thống xử lý ảnh


Phần thu nhận ảnh (Image Acquisition): ảnh có thể nhận qua camera màu hoặc đen trắng.



Thường ảnh nhận qua camera là ảnh tương tự, cũng có loại camera đã số hoá.
Tiền xử lý (Image Processing): sau bộ thu nhận, ảnh có thể nhiễu độ tương phản thấp nên
cần đưa vào bộ tiền xử lý để nâng cao chất lượng. Chức năng chính của bộ tiền xử lý là



lọc nhiễu, nâng độ tương phản để làm ảnh rõ hơn, nét hơn.
Phân đoạn (Segmentation): Phân vùng ảnh là tách một ảnh đầu vào thành các vùng thành
phần để biểu diễn phân tích, nhận dạng ảnh. Ví dụ: để nhận dạng chữ (hoặc mã vạch) trên
phong bì thư cho mục đích phân loại bưu phẩm, cần chia các câu, chữ về địa chỉ hoặc tên
người thành các từ, các chữ, các số (hoặc các vạch) riêng biệt để nhận dạng. Đây là phần
phức tạp khó khăn nhất trong xử lý ảnh và cũng dễ gây lỗi, làm mất độ chính xác của



ảnh. Kết quả nhận dạng ảnh phụ thuộc rất nhiều vào công đoạn này.
Biểu diễn ảnh (Image Representation) : đầu ra ảnh sau phân đoạn chứa các điểm ảnh của
vùng ảnh (ảnh đã phân đoạn) cộng với mã liên kết với các vùng lận cận. Việc biến đổi
các số liệu này thành dạng thích hợp là cần thiết cho xử lý tiếp theo bằng máy tính. Việc
chọn các tính chất để thể hiện ảnh gọi là trích chọn đặc trưng (Feature Selection) gắn với

việc tách các đặc tính của ảnh dưới dạng các thông tin định lượng hoặc làm cơ sở để phân
biệt lớp đối tượng này với đối tượng khác trong phạm vi ảnh nhận được. Ví dụ: trong


CHƯƠNG 2 HỆ THỐNG XỬ LÝ ẢNH
nhận dạng ký tự trên phong bì thư, chúng ta miêu tả các đặc trưng của từng ký tự giúp


phân biệt ký tự này với ký tự khác.
Mô tả ảnh(Description): ảnh sau khi số hóa sẽ được lưu vào bộ nhớ hoặc chuyển sang
các khâu tiếp theo để phân tích. Nếu lưu trữ ảnh trực tiếp từ các ảnh thô, đòi hỏi dung
lượng bộ nhớ rất lớn và không hiệu quả theo quan điểm ứng dụng và công nghệ. Thông
thường các ảnh thô đó được đặc tả (biểu diễn) lại (hay đơn giản là mã hóa) theo các đặc
điểm của ảnh được gọi là các đặc trưng ảnh (Image Features) như: biên ảnh (Boundary),



vùng ảnh (Region).
Nhận dạng và nội suy ảnh (Image Recognition and Interpretation): Nhận dạng ảnh là quá
trình xác định ảnh. Quá trình nà y thường thu được bằng cách so sánh với mẫu chuẩn đã
được học (hoặc lưu) từ trước. Nội suy là phán đoán theo ý nghĩa trên cơ sở nhận dạng. Ví
dụ: một loạt chữ số và nét gạch ngang trên phong bì thư có thể được nội su y thành mã
điện thoại. Có nhiều cách phân loại ảnh khác nhau về ảnh. Theo lý thuyết về nhận dạng,
các mô hình toán học về ảnh được phân theo hai loại nhận dạng ảnh cơ bản:
 Nhận dạng theo tham số
 Nhận dạng theo cấu trúc
Một số đối tượng nhận dạng khá phổ biến hiện nay đang được áp dụng trong khoa học và
công nghệ là: nhận dạng ký tự (chữ in, chữ viết tay, chữ ký điện tử), nhận dạng văn bản
(Text), nhận dạng vân tay, nhận dạng mã vạch, nhận dạng mặt người…




Cơ sở tri thức (Knowledge Base): Như đã nói ở trên, ảnh là một đối tượng khá phức tạp
về đường nét, độ sáng tối, dung lượng điểm ảnh, môi trường để thu ảnh phong phú kéo
theo nhiễu. Trong nhiều khâu xử lý và phân tích ảnh ngoài việc đơn giản hóa các phương
pháp toán học đảm bảo tiện lợi cho xử lý, người ta mong muốn bắt chước quy trình tiếp
nhận và xử lý ảnh theo cách của con người. Trong các bước xử lý đó, nhiều khâu hiện
nay đã xử lý theo các phương pháp trí tuệ con người. Vì vậy, ở đây các cơ sở tri thức
được phát huy.


CHƯƠNG 2 HỆ THỐNG XỬ LÝ ẢNH

Hình 2.2: Sơ đồ phân tích, xử lí ảnh và lưu đồ thông tin giữa các khối
Cơ bản về ảnh và các hàm xử lý ảnh cơ bản trong matlab

2.2
2.2.1

Các kiểu ảnh trong matlab

2.2.1.1

Ảnh index

Ảnh được biểu diễn bởi hai ma trận, một ma trận dữ liệu ảnh X và một ma trận màu (còn
gọi là bản đồ màu) map. Ma trận dữ liệu có thể thuộc kiểu uint8, uint16 hoặc double. Ma trận
màu là một ma trận kich thước m x 3 gồm các thành phần thuộc kiểu double có giá trị trong
khoảng [0 1]. Mỗi hàng của ma trận xác định thành phần red, green, blue của một màu trong tổng
số m màu được sử dụng trong ảnh. Giá trị của một phần tử trong ma trận dữ liệu ảnh cho biết

màu của điểm ảnh đó nằm ở hàng nào trong ma trận màu.


CHƯƠNG 2 HỆ THỐNG XỬ LÝ ẢNH

2.2.1.2

Hình 2.3: Ảnh index
Ảnh grayscale

Mỗi ảnh được biểu diễn bởi một ma trận hai chiều, trong đó giá trị của mỗi phần tử cho
biết độ sang (hay mức xám) của điểm ảnh đó. Ma trận này có thể một trong các kiểu uint8,
uint16 hoặc double. Ảnh biểu diễn theo kiểu này còn gọi là ảnh ‘trắng, đen’.

Hình 2.4 Ảnh xám


CHƯƠNG 2 HỆ THỐNG XỬ LÝ ẢNH
2.2.1.3

Ảnh nhị phân

Ảnh được biểu diễn bởi một ma trận hai chiều thuộc kiểu logical. Mỗi điểm ảnh chỉ có
thể nhận một trong hai giá trị là 0 (đen) hoặc 1 (trắng)

Hình 2.5 Ảnh nhị phân
2.2.1.4

Ảnh RGB


Còn gọi là ảnh “truecolor” do tính trung thực của nó. Ảnh này được biểu diễn bởi một ma
trận ba chiều kích thước m x n x 3, với m x n là kích thước ảnh theo pixels. 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, các phần tử của nó có thể thuộc
kiểu uint8, uint16 hoặc double.

Hình 2.6 Biểu diễn ảnh RGB


CHƯƠNG 2 HỆ THỐNG XỬ LÝ ẢNH

2.2.2

Các hàm xử lý ảnh

2.2.2.1

Đọc và ghi dữ liệu ảnh

 Hàm imread đọc các file ảnh với bất kỳ các định dạng ảnh đã biết hiện nay và lưu lại dưới dạng
một ma trận biểu diễn ảnh trong Matlab.
Cú pháp : A=imread(filename,fmt)
 Hàm imwrite cho phép lưu một ảnh biểu diễn bằng một ma trận trong Matlab thành một file ảnh
dưới một trong các định dạng đã biết.
Cú pháp : imwrite(A,filename,fmt)
 Hàm imfinfo dùng để xem các thông số của một file ảnh nào đó.
Cú pháp :imfinfo(filename,fmt) Các thông tin được cung cấp bởi hàm imfinfo là :
filename, filemoddate, filesize, format, formatversion, width, height, bitdepth, colortype.
2.2.2.2

Chuyển đổi giữ các kiểu dữ liệu, kiểu ảnh


 Chuyển đổi giữa các kiểu dữ liệu ảnh
Matlab cung cấp sẵn các hàm thực hiện chuyển kiểu cho các ma trận biểu diễn ảnh, bao
gồm : im2double, im2uint8 và im2uint16. Tuy nhiên, khi thực hiện chuyển kiểu giữa các dữ
liệu ảnh cần lưu ý một số điều sau:
Khi chuyển từ một kiểu dữ liệu dùng nhiều bit sang một kiểu dữ liệu dùng it bit hơn thì
một số thông tin chi tiết về bức ảnh ban đầu sẽ bị mất.
Không phải lúc nào cũng có thể chuyển đổi kiểu dữ liệu đối với kiểu ảnh indexed, vì các
giá trị của ma trận ảnh xác định một địa chỉ trong bản đồ màu chứ không phải là giá trị màu, do
đó không thể lượng tử hóa được.


CHƯƠNG 2 HỆ THỐNG XỬ LÝ ẢNH
2.2.2.3

Các hàm chuyển đổi giữa các kiểu ảnh

Tên hàm
Dither

Cú pháp
dither(RGB,map)
dither(I)

Gray2ind

[X,MAP] = gray2ind(I,N)
[X,MAP] =
gray2ind(BW,N)
X=grayslice(I,N)

X=grayslice(I,V

grayslice

ind2gray

bw = im2bw(i,level)
bw = im2bw(x,map,level)
bw = im2bw(rgb,level)
i = ind2gray(x,map)

ind2rgb

rgb = ind2rgb(x,map)

rgb2gray
rgb2ind

i = rgb2gray(rgb)
[x,map] =
rgb2ind(rgb,n)
x = rgb2ind(rgb,map)
[x,map] =
rgb2ind(rgb,tol)

Im2bw

Mô tả
Tạo ảnh nhị phân từ ảnh trắng đen I hoặc
tạo ảnh indexed từ ảnh RGB và ma trận

màu map bằng phương pháp dithering.
Chuyển đổi ảnh nhị phân BW hoặc ảnh
intensity thành ảnh index thông qua ma
trận màu tuyến tính gray(N)
Chuyển đổi ảnh trắng đen thành ảnh index
bằng cách lấy ngưỡng. Các giá trị ngưỡng
được xác định bởi vector V hoặc bởi N
(khi đó các giá trị ngưỡng là 1/n, 2/n, ... (n1)/n)
Chuyển đổi các loại ảnh trắng đen, ảnh
index, ảnh RGB thành nhị phân bằng cách
lấy ngưỡng bởi level
Chuyển đổi ảnh index I với ma trận màu
map thành ảnh trắng đen
Chuyển đổi ảnh index I với ma trận màu
map thành ảnh RGB
Chuyển đổi ảnh RGB thành ảnh trắng đen
Chuyển ảnh RGB rgb thành ảnh index
[x,map]:
TH1: N<=65535, số màu tối đa là N
TH2: mỗi pixel được xấp xỉ đến màu gần
giống nhất trong bản màu map
TH3: tol ∈ [0,1], số màu tối đa:
(floor(1/tol)+1)^3.


CHƯƠNG 2 HỆ THỐNG XỬ LÝ ẢNH

2.2.2.4

Thay đổi kích thước ảnh


Hàm imresize cho phép người sử dụng thay đổi kích thước của ảnh. Ngoài kích thước
ảnh mới, người sử dụng còn có thể xác định phương pháp nội suy sẽ dùng và loại bộ lọc dùng để
chống aliasing.
b = imresize(a,m,Method)
Dòng lệnh trên tạo ảnh mới b có kích thước gấp m lần ảnh gốc a. Method là một chuỗi
xác định phương pháp nội suy sẽ dùng: ‘nearest’ (lân cận gần nhất), ‘bilinear’ (song
tuyến tính) hoặc ‘bicubic’. Phương pháp mặc định là ‘nearest’. Thay vì xác định tỷ số m,
ta có thể xác định trực tiếp kích thước ảnh mới theo đơn vị pixel bằng cách dùng cú pháp:
b = imresize(a,[mrows mcols],method)
Trong đó mrows và mcols là số cột và số hàng của ảnh mới. Hoặc ta cũng có thể xác
định cụ thể bậc của bộ lọc chống aliasing (kích thước mặc định là 11x11) hoặc cung cấp cụ thể
đáp ứng xung h của bộ lọc theo các cú pháp dưới đây:
b = imresize(...,method,N) % Dùng bộ lọc kích thước NxN
b = imresize(...,method,h) % Dùng bộ lọc có đáp ứng xung h
Ví dụ: Tăng kích thước ảnh lên 1.25 lần dùng phương pháp bicubic với bộ lọc chống
aliasing bậc 5:
I = imread('circuit.tif');
J = imresize(I,1.25,’bicubic’,5);imshow(I)
figure, imshow(J)

Hình 2.7 Tăng kích thước ảnh


CHƯƠNG 2 HỆ THỐNG XỬ LÝ ẢNH
2.2.2.5

Phép quay ảnh

Để thực hiện các phép quay ảnh, ta có thể sử dụng hàm imrotate. Ngoài hai thông số cơ

bản là ảnh gốc và góc quay, người sử dụng cũng có thể xác định phương pháp nội suy sẽ dùng,
và kích thước của ảnh mới (đủ lớn để chứa ảnh mới hay chỉ bằng kích thước ảnh cũ).Thông số
mặc định là ‘nearest’ (lân cận gần nhất) và ‘loose’ (tăng kích thước nếu cần). Trong trường
hợp tăng kích thước, các điểm ảnh ở ngoải phần ảnh gốc sẽ được set về 0 (màu đen). Dưới đây là
cú pháp của hàm này, với Bbox là chuỗi xác định kích thước ảnh mới.
Cú pháp:
b = imrotate(a,angle,Method,Bbox)

2.2.2.6

Hình 2.8 Minh hoạ phép quay ảnh
Trích xuất ảnh

Khi cần trích xuất một phần của ảnh gốc, ta dùng hàm imcrop. Khi sử dụng hàm này,
người sử dụng có thể có hai lựa chọn: xác định cụ thể vị trí của phần ảnh cần trích (dưới dạng
hình chữ nhật) bằng cách cung cấp các thông số vị trí khi gọi hàm hoặc sử dụng mouse để chọn
phần ảnh cần trích xuất. Nếu chọn cách thứ nhất, ta dùng cú pháp như sau:
x2 = imcrop(x,map,rect) % Ảnh indexed
a2 = imcrop(a,rect) % Ảnh grayscale hoặc RGB
Trong đó rect = [Xmin Ymin width height], với (Xmin,Ymin) là toạ độ góc trên bên trái
của phần ảnh cần trích, width và height là chiều rộng và chiều cao của phần ảnh cần trích.
Nếu dùng cách thứ hai, ta không cần cung cấp thông số rect, khi thực hiện hàm này, con
trỏ sẽ chuyển sang dạng chữ thập, người dùng sẽ drag chuột để chọn phần ảnh cần trích sao đó
thả chuột. Hàm imcrop sẽ trả về phần ảnh nằm trong phạm vi xác định bởi mouse.


CHƯƠNG 2 HỆ THỐNG XỬ LÝ ẢNH
Nếu không cung cấp thông số ảnh gốc, hàm imcrop sẽ mặc định chọn ảnh trên hệ trục
tọa độ hiện hành. Ngoài ra, trong trường hợp xác định bằng mouse, người sử dụng có thể truy
xuất các thông tin về vị trí và kích thước của phần ảnh đã chọn bằng cách yêu cầu thêm các

output của hàm này:
[A2,rect] = imcrop(A)
[X2,rect] = imcrop(X,map)


CHƯƠNG 3 NHẬN DẠNG VỚI THUẬT TOÁN SUPPORT VECTOR MACHINE

CHƯƠNG 3
3.1

NHẬN DẠNG VỚI THUẬT TOÁN SUPPORT
VECTOR MACHINE

Bài toán phân lớp

Phân lớp (classification) là một tiến trình xử lý nhằm xếp các mẫu dữ liệu hay các đối
tượng vào một trong các lớp đã được định nghĩa trước. Các mẫu dữ liệu hay các đối tượng được
xếp vào các lớp dựa vào giá trị của các thuộc tính (attributes) cho một mẫu dữ liệu hay đối
tượng. Sau khi đã xếp tất cả các đối tượng đã biết trước vào các lớp tương ứng thì mỗi lớp được
đặc trưng bởi tập các thuộc tính của các đối tượng chứa trong lớp đó.
Quá trình phân lớp còn được gọi là quá trình gán nhãn cho các tập dữ liệu. Nhiệm vụ của
bài toán phân lớp dữ liệu là cần xây dựng mô hình (bộ) phân lớp để khi có một dữ liệu mới vào
thì mô hình phân lớp sẽ cho biết dữ liệu đó thuộc lớp nào. Có nhiều cách để biểu diễn một mô
hình phân lớp và có rất nhiều thuật toán giải quyết nó. Các thuật toán phân lớp tiêu biểu bao gồm
như mạng neural, cây quyết định, suy luận quy nạp, mạng Beyesian, Support V ector Machine
(SVM), … Trong các kỹ thuật đó, SVM được coi là công cụ mạnh, phổ biến và đặc biệt thích
hợp cho phân lớp dữ liệu lớn và nhiều chiều.
3.2

Bài toán phân 2 lớp cho SVM


Hình thức đơn giản của việc phân lớp là phân lớp nhị phân: phân biệt giữa các đối tượng
thuộc về một trong hai lớp: dương (+1) hoặc âm (-1). SVMs sử dụng hai khái niệm để giải quyết
vấn đề này: phân lớp biên rộng và hàm kernel. Ý tưởng của phân lớp biên rộng có thể được minh
họa bởi sự phân lớp của các điểm trong không gian hai chiều (Hình 1). Một cách đơn giản để
phân lớp các điểm này là sử dụng một đường thẳng để phân tách các điểm nằm ở một bên là
dương và các điểm bên kia là âm. Mục tiêu của SVM là xây dựng một siêu phẳng giữa hai lớp
sao cho khoảng cách từ nó tới các điểm gần siêu phẳng của hai lớp là cực đại.


CHƯƠNG 3 NHẬN DẠNG VỚI THUẬT TOÁN SUPPORT VECTOR MACHINE

Hình 3.1 Bài toán phân 2 lớp SVM
Cho tập mẫu D = {(x1, y1), (x2, y2), …, (x3, y3)} với xi ϵ ℝn, thuộc vào hai lớp nhãn :

yi

{-1,1} là hai lớp nhãn tương ứng của các xi (1 biểu thị lớp H1, -1 biểu thi lớp H2).
Ta có phương trình siêu phẳng chứa vector x trong không gian
F(x) =w.x + b = 0 (3.1)
Hàm f(x) là hàm của đầu vào x, f(x) được sử dụng để quyết định làm thế nào để phần lớp
x. Trong đó vector w được gọi là pháp vector của siêu phẳng, và b được gọi là độ dịch.
Trong không gian 2 chiều các điểm ứng với phương trình <w, x> tương ứng với đường
thẳng qua góc toạ độ, trong không gian 3 chiều thì nó là một mặt phẳng qua gốc toạ độ. Biến b sẽ
dịch chuyển mặt phẳng đi một lượng so với mặt phẳng qua gốc toạ độ.
Lúc đó những support vector xi thoả mãn:
o phương trình wxi + b = 1 thì nằm trên siêu phẳng H1,
o phương trình wxi + b = -1 thì nằm trên siêu phẳng H2.
Ranh giới giữa các vùng được phân lớp là dương và âm được gọi là ranh giới quyết định
của các phân lớp. Phân lớp với một ranh giới quyết định tuyến tính được gọi là phân lớp tuyến

tính.


CHƯƠNG 3 NHẬN DẠNG VỚI THUẬT TOÁN SUPPORT VECTOR MACHINE

3.2.1

SVM cho bài toán phân lớp tuyến tính

(H1)

(H2)
Hình 3.2 Phân lớp tuyến tính (H1) và (H2) bởi siêu phẳng
SVM biên cứng được áp dụng đối với dữ liệu khả tách tuyến tính và nó cho kết quả phân
lớp một cách chính xác với tất cả các dữ liệu dạng này.
Dựa vào biểu thức (3.1) ta có hai bất phương trình sau:
wxi + b ≥ 1 thuộc lớp yi = 1
wxi + b ≤ -1 thuộc lớp yi = -1
Từ 2 phương trình trên, ta có được:
yi.(xi.w + b) – 1 ≥ 0
Với khoảng cách giữa 2 siêu phẳng (H1) và (H2) là:
d= =


CHƯƠNG 3 NHẬN DẠNG VỚI THUẬT TOÁN SUPPORT VECTOR MACHINE
Do vậy, để cực đại khoảng cách giữa 2 siêu phẳng ta phải giải quyết bài toán:
2

w
 Minimize


2
 y . x .w + b ≥ 1
)
 i( i

Chúng ta có thể đơn đơn giản hóa phép tính bằng cách chuyển bài toán với điều kiện
Kuhn-Tucker tương đương với phương trình Lagrange kép. Phương trình Lagrange cho được
mô tả như sau:
n
1
L(w, b, α ) = (w.w) − ∑ α i [yi ((w i .xi ) + b) − 1]
2
i =1

Với

α

=(

α1

,…,

αM

) là bội số Lagrange.
α
Phương trình kép trên trở thành:cực tiểu L(w,b, )

Với ràng buộc

αi

≥0,i=1,...,M

Vi phân từng phần của 2.7 lần lượt với w và b ta được:
M
∂L
(w, b, α ) = w − ∑ yiα i xi = 0
∂w

i =1

M

∑ yα x
w=

i =1

i

i i

M
∂L
(w, b, α ) = ∑ yiα i = 0
∂b
i =1


Từ ta có bài toán tối ưu sau:
maximize

n

∑αi −
i =1

1 n n
α iα j yi y j xTi x j
∑∑
2 i =1 j =1

n

∑α y
Với ràng buộc:

i =1

i

i

=0


αi ≥ 0


Trong thực tế dữ liệu thường không phân chia tuyến tính.


CHƯƠNG 3 NHẬN DẠNG VỚI THUẬT TOÁN SUPPORT VECTOR MACHINE

Hình 3.3 Phân lớp tuyến tính có một số điểm nhiễu
Trong trường hợp này dữ liệu có thể phân chia tuyến tính được nhưng có nhiễu, nghĩa là:
Điểm có nhãn dương nhưng lại thuộc phía âm của siêu phẳng, điểm có nhãn âm nhưng lại thuộc
phía dương của siêu phẳng.
Từ các kết quả lý thuyết và thực nghiệm, ta sử dụng 1 biến biên mềm

ξi

≥ 0 (với i=0,1,2,

…,n) sao cho:
yi.(xi.w + b) ≥ 1-

ξi

Khi đó bài toán ta cần giải quyết:
2

n
w
 Minimize(
+ C ∑ ξi )

2
i =1


 yi . ( xi .w + b ) ≥ 1 − ξi

Hằng số C>0 thiết lập mức độ quan trọng của việc cực đại biên và giảm số lượng biến
phụ

ξi

. Công thức trên được gọi là SVM biên mềm
Ảnh hưởng của sự lựa chọn C được minh hoạ trong hình. Với một giá trị C lớn, hai điểm

gần siêu phẳng nhất ảnh hưởng đến siêu phẳng lớn hơn các điểm dữ liệu khác. Khi C giảm,
những điểm chuyển động bên trong lề, và hướng của siêu phẳng được thay đổi, dẫn đến một biên
lớn hơn cho dữ liệu.


CHƯƠNG 3 NHẬN DẠNG VỚI THUẬT TOÁN SUPPORT VECTOR MACHINE

Biên mềm với C=200
Biên mềm với C=2
Hình 3.4 Ảnh hưởng của hằng số biên mềm C trên ranh giới quyết định
3.2.2

SVM cho bài toán phân lớp phi tuyến

Trong nhiều ứng dụng, tập dữ liệu D không thể phân chia tuyến tính được, ta sẽ ánh xạ
các vector dữ liệu x từ không gian n chiều vào một gian gian m chiều( m>n), sao cho trong
không gian m chiều, D có thể phân chia tuyến tính được.

Tập dữ liệu D trong không gian n chiều


Tập dữ liệu D trong không gian m chiều

Hình 3.5 Tập dữ liệu không thể phân chia tuyến tính
Không gian m chiều được gọi là không gian được trưng bằng cách sử dụng hàm

φ

. Hàm

đó là :

φ

f(x) = <w, (x)> + b
SVM phân chia tập dữ liệu phi tuyến dựa trên hàm hạt nhân (kernel), nó chuyển đổi dữ liệu được
phần chia x ang một không gian mới, mà tại đó các mẫu dữ liệu này có thể phân chia một cách
tuyến tính. Không gian này được gọi là không gian đặc trưng. Bằng việc sử dụng hàm vector phi


×