You are on page 1of 29

ĐẠI HỌC BÁCH KHOA THÀNH PHỐ HỒ CHÍ MINH

BỘ MÔN ĐIỀU KHIỂN VÀ TỰ ĐỘNG HÓA

BÁO CÁO BÀI TẬP LỚN THỊ GIÁC MÁY


Đề tài: Detecting and Matching Object

Giáo viên hướng dẫn: Nguyễn Trọng Tài


Sinh viên thực hiện:
Châu Thanh Hải 1411037
Phạm Văn Thịnh 1413797

TP Hồ Chí Minh, tháng 12 năm 2017



Mục lục
I. Giới thiệu …………………………………………………………………...1
II. Ứng dụng trong nhận dạng đối tượng………………………………..2
1. Phương pháp tìm điểm Keypoint…………………………………………….2
a. SIFT (Scale-Invariant Feature Transform)……………………………..4
b. SURF (Speeded-Up Robust Features)……………………………….12
2. Phương pháp Matching………………………………………………………13
3. Thuật toán tăng độ chính xác Homography………………………………13
4. Tăng độ chính xác bằng phương pháp Grabcut…………………………14
5. Giao diện người dùng bằng phần mềm Qt………………………………..15
6. Kết quả và đánh giá…………………………………………………………...17
7. Thuật toán PCA – SIFT………………………………………………………..21
8. Một số lệnh thực thi quan trọng trong chương trình…………………...24

III. Kết luận…………………………………………………………………..26


IV. Tài liệu tham khảo……………………………………………………...27
I. Giới thiệu:
Trong kỷ nguyên công nghệ thông tin hiện nay, với sự phát triển nhanh
chóng của các công nghệ chế tạo thiết bị phần cứng ngày càng hiện đại, tinh vi
thì ngành công nghệ phần mềm cũng không ngừng mở rộng để phù hợp với các
yêu cầu của thực tế. Trong đó phải kể đến sự phát triển của các thiết bị thu nhận
hình ảnh từ thế giới thực, chẳng hạn như các hệ thống giám sát bằng camera,
song hành với nó là các vấn đề liên quan đến việc giám sát. Thách thức chính
cho công nghệ phần mềm trong lĩnh vực này chính là việc xử lý các hình ảnh
thu nhận được từ các hệ thống giám sát đó.
Matching Object là một giải thuật có tính ứng dụng cao không những có thể
dùng để nhận dạng đối tượng mà còn dùng trong các ứng dụng giám sát các vật
thể động và vật thể tĩnh hay chuyển động của đối tượng.
Giám sát là một vấn đề được rất nhiều nhà nghiên cứu quan tâm đặc biệt
bởi những ứng dụng thiết thực của nó cho đời sống xã hội. Chẳng hạn như các hệ
thống giám sát các hành vi khả nghi của tội phạm, khủng bố ở các địa điểm nhạy
cảm của các chính phủ. Hệ thống giám sát trong các viện bảo tàng, lưu trữ để
chống trộm cắp các di vật đang được trưng bày. Hệ thống giám sát các hiện tượng
bất bình thường, vi phạm pháp luật, tai nạn ở các điểm giao thông. Hệ thống giám
sát phòng chống hỏa hoạn. Các hệ thống giám sát trong các siêu thị, cửa hàng,
công ty để chống trộm cắp,…
Thách thức chính cho ngành công nghệ phần mềm là đưa ra các giải
pháp nhằm xây dựng một hệ thống giám sát tối ưu nhất nhằm giúp con người
phát hiện chính xác và kịp thời các hiện tượng bất thường để có biện pháp xử lý
nhanh chóng nhằm tránh các thiệt hại đáng tiếc cho xã hội.
Dữ liệu thu được từ hệ thống camera giám sát thường được lưu trữ dưới
dạng Video. Như vậy công việc hiện nay của chúng ta là nghiên cứu các vấn đề
liên quan đến việc xử lý Video.
Hiện nay trên thế giới đã có nhiều công trình nghiên cứu về xử lý Video và
cũng đã có nhiều ứng dụng đáng kể trong lĩnh vực này. Tuy nhiên, so với yêu cầu
thực tế thì như thế vẫn là chưa đủ.
Ở Việt Nam, xử lý Video là một vấn đề còn khá mới mẻ. Thực tế cho thấy
rằng, khi xã hội phát triển càng mạnh, yêu cầu về các thiết bị công nghệ càng cao.

Page 1 of 27
Như vậy, xử lý Video là một mảnh đất màu mỡ cho các trung tâm nghiên cứu, các
công ty đầu tư vào. Nhất là trong giai đoạn hệ thống nhúng đang phát triển và mở
ra một kỷ nguyên với cho ngành công nghệ phần mềm như hiện nay.
Một số công trình nghiên cứu khoa học ở Việt Nam hiện nay như:
“Ứng dụng phát hiện và ước lượng khoảng cách vật cản, ứng dụng trợ giúp
dẫn đường cho người khiếm thị”. Ứng dụng này được tích hợp vào camera của
robot thông minh. Camera sẽ bắt khung hình trực tiếp của môi trường tại hai thời
điểm khác nhau để đem đi so sánh và matching để xây dựng bản đồ chênh lệch,
từ đó ước lượng độ sâu của vật cản.
“Ứng dụng nhận dạng hành vi của khách hàng trong siêu thị”.Ứng dụng để
nhận dạng đối tượng khách hàng. Từ đó, xác định số lượng khách hàng quan tâm
đến gian hàng và đánh giá hiệu quả trưng bày. Với hình ảnh thu được từ camera
giám sát, hệ thống nhận dạng hầu hết các đối tượng đi vào vùng quan sát, theo
dõi họ để có được quỹ đạo đường đi và thời gian lưu lại vùng quan sát. Quỹ đạo
sẽ được phân đoạn và lấy tọa độ đại diện, sau đó dung giải thuật máy học vector
hỗ trợ để phân loại hoạt động của khách hàng gồm có quan tâm đến gian hàng và
ghé vào lựa chọn và một số hoạt động khác.
“Ứng dụng trong bài toán chính xác hóa trong theo dõi chuyển động của đối
tượng” trong giám sát tự động là một hướng mới và có nhiều triển vọng trong sự
phát triển tiếp theo của lĩnh vực nhận dạng và xử lý ảnh 2 chiều. Đồng thời,
đó cũng là một hướng đi cho mảng phần mềm thiết kế chuyên dụng cho các thiết
bị giám sát tự động. Việc phát hiện ra các đối tượng chuyển động trong Video nhờ
các kỹ thuật xử lý ảnh, trên cơ sở đó đoán nhận một số hành vi của đối tượng là
một việc làm có ý nghĩa khoa học và thực tiễn, nhất là trong hoàn cảnh Việt Nam
chưa có nhiều những nghiên cứu và ứng dụng theo hướng này.
II. Ứng dụng trong nhân diện đối tượng:
Do kiến thức về thị giác máy còn hạn hẹp, nên trong phần này nhóm sẽ trình
bày những hiểu biết và kết quả thực hiện của nhóm. Nếu có sai sót gì mong Thầy
và các bạn bỏ qua.
1. Phương pháp tìm điểm Keypoint:
Trong một bức ảnh thường sẽ có rất nhiều điểm đặc trưng cho một bức ảnh,
nhìn vào đó người ta có thể nhận diện được đối tượng trong bức ảnh là ai, vật thể
gì? Nhờ vào sự suy luận và sự tích lũy kiến thức trong bộ não của con người.

Page 2 of 27
Ta có thể dễ dàng nhận ra đây là hỉnh ảnh của toa tháp Bitexco với những
đặc trưng vốn có trong bức ảnh mà các tòa nhà khác không có được mà dù có
xoay hay nhìn từ góc độ nào ta vẫn nhận ra đây là tòa nhà Bitexco.
Vậy rõ ràng mỗi bức ảnh sẽ có cho mình những điểm đặc trưng. Tuy nhiên,
làm sao để máy tính có thể hiểu đó là những điểm đặc trưng hay không? Để làm
được điều đó, máy tính phải thực hiện thêm một bước nữa để tìm ra các điểm đặc
trưng đáng tin cậy hơn gọi là các Keypoint.
Keypoint sẽ được chia làm nhiều loại: Keypoint của mặt phẳng, Keypoint của
cạnh và Keypoint của góc.

Page 3 of 27
Hình 1. Keypoint của mặt phẳng - Keypoint của cạnh - Keypoint của góc
Để tìm được các Keypoint có rất là nhiều phương pháp: SIFT (Scale-Invariant
Feature Transform), SURF (Speeded-Up Robust Features), Fast Algorithm for
Corner Detection, BRIEF (Binary Robust Independent Elementary Features), ORB
(Oriented FAST and Rotated BRIEF).
Trong khuôn khổ bài báo cáo này chúng em xin chỉ trình bày hai phương
pháp SIFT và SURF. Vì đây là hai phương pháp được ưa chuộng nhất hiện nay
bởi độ chính xác cao của SIFT và tốc độ xữ lí nhanh của SURF.
a. SIFT (Scale-Invariant Feature Transform):
Trước khi thực hiện phương pháp SIFT, từ ảnh đầu vào người ta sẽ cho qua
một mặt nạ ma trận Hessian là ma trận đạo hàm bậc 2 để tìm các điểm đặc trưng
sơ khai của bức ảnh. Ta có giá trị ngưỡng λ của định thức ma trận Hessian, nếu
định thức của của trân Keypoint lớn hơn giá trị này nó sẽ là Keypoint sơ khai còn
nhỏ hơn thì bỏ qua.
Trong bước này, ta cần dò tìm các vị trí và các số đo (kích cỡ) mà chúng bất
biến trong các khung nhìn khác nhau của cùng một đối tượng. Các vị trí đó bất
biến về số đo có thể được dò tìm bằng cách tìm kiềm các đặc trưng ổn định trên
toàn bộ các số đo có thể. Từ bức ảnh đầu vào, SIFT sẽ thức hiện làm mờ bức ảnh
bằng thuật toán mờ Gaussian đồng thời thu nhỏ bức ảnh theo đơn vị octave – mỗi
octave thì kích thước ảnh giảm đi một nữa.

Page 4 of 27
Sau khi làm mờ và thu nhỏ ảnh, ta sẽ có tập hợp ảnh bao gồm ảnh gốc với
các ảnh bị làm mờ và các ảnh thu nhỏ tương ứng với các ảnh được làm mờ. Ta
thực hiện lấy vi sai của từng cặp ảnh trong một octave để được các điểm tiền đặc
trưng.

Page 5 of 27
Hình 2+3. Quá trình làm mờ và lấy các đặc trưng ảnh

Sau bước trên sẽ thu được rất nhiều điểm tiềm năng có thể làm điểm đặc biệt,
tuy nhiên một số trong chúng là không cần thiết. ở bước tiếp theo này sẽ loại bỏ các
điểm có độ tương phản kém (nhạy cảm với nhiễu) hoặc tính đặc trưng cục bộ ít hơn
các điểm khác hoặc có xu hướng là đường biên đối tượng. Bước thực hiện này gồm
3 công đoạn :

- Phép nội suy lân cận cho vị trí đúng của điểm tiềm năng:

Phép nội suy lân cận () sử dụng mở rộng Taylor (Taylor expansion) cho hàm
Difference-of-Gaussian D(x,y,ó) :

(2.2.1)

Page 6 of 27
Trong đó : D và đạo hàm của nó được tính tại một điểm tiềm năng và X =
(x,y,ó) là khoảng cách từ điểm đó. Vị trí của điểm cực trị được xác định bằng cách
lấy đạo hàm của hàm trên với đối số X và tiến dần đến 0 :

Hình 4 : Mô phỏng sử dụng công thức mở rộng của Taylor cho hàm DoG

Nếu > 0.5 theo một chiều nào đó thì nó có chỉ số cực trị không gần với các
điểm tiềm năng khác, nó sẽ bị thay đổi và phép nội suy sẽ thay thế vai trò của nó bằng
điểm khác gần nó.

Page 7 of 27
Hình 5. Minh họa các bước của quá trình lựa chọn các điểm keypoints. (a) là
ảnh gốc. (b) mô tả 832 điểm keypoints tìm được, các điểm keypoints được vẽ ở
dạng một vector thể hiện 3 thông tin : vị trí, hướng và độ dài. (c) sau khi đặt
ngưỡng tương phản tổi thiểu, ta giữ lại được 729 điểm. (d) Giữ lại 536 điểm sau
khi áp một ngưỡng nữa về hệ số độ cong.

- Loại trừ các điểm có tính tương phản kém:

Các điểm nhạy cảm với độ sáng và nhiễu thì không được trở thành điểm đặc
biệt và cần loại bỏ khỏi danh sách điểm tiềm năng. Trong khai triển Taylor mở rộng ở
trên, nếu điểm tiềm năng nào có giá trị < 0.03 thì điểm đó sẽ bị loại, ngược lại thì
nó được giữ lại theo vị trí mới (y+ ) và tùy biến ó, với y là vị trí cũ của nó cùng giá trị
biến ó.

- Loại bỏ các điểm dư thừa theo biên :

Sử dụng hàm DoG sẽ cho tác động mạnh đến biên khi vị trí của biên là khó xác
định và vì vậy các điểm tiềm năng trên biên sẽ không bất biến và bị nhiễu. Và để tăng

Page 8 of 27
sự ổn định cho các điểm sẽ được chọn làm điểm đặc biệt ta sẽ loại trừ các điểm tiềm
năng khó định vị (tức là vị trí dễ thay đổi khi có nhiễu do nằm ở biên).
Sau khi áp dụng hàm DoG sẽ làm đường biên ảnh không rõ ràng và độ cong
chính sẽ có giá trị lớn hơn nhiều so với độ cong dọc theo biên vì vậy cần loại bỏ bớt
các điểm đặc biệt dọc theo cùng một biên. Giải pháp cho việc này là sử dụng giá trị
của ma trận Hessian cấp 2 :

Các giá trị riêng của H tỉ lệ thuận với độ cong của D, các giá trị riêng â (giá trị
nhỏ) và á (giá trị lớn) có tỉ lệ r = á/â sẽ được sử dụng. Các phần tử của H là Dxx và
Dyy

Hình 6. Quá trình so sánh tìm ra điểm


có giá trị lớn nhất và nhỏ nhất

Hình 7. Kết quả tìm điểm có giá


trị lớn nhất và nhỏ nhất
Các Keypoint sau khi tìm được sẽ bao gồm Keypoint của mặt phẳng, Keypoint
của cạnh và Keypoint của góc. Trong tất các các Keypoint đã liệt kê trên thì Keypoint
góc sẽ là loại tốt nhất và dễ dàng nhận dạng nhất. Do đó, ta sẽ tập trung tìm ra trong

Page 9 of 27
số Keypoint đó Keypoint nào là Keypoint của một góc. Để giải quyết vấn đề này ta
thức hiện tìm góc bằng các thuật toán cho phép ta xác định các điểm nào là góc trong
một tấm ảnh, ta sẽ được tọa độ điểm góc đó rồi đem đi so sánh với các Keypoint vừa
tìm được để loại bớt đi các Keypoint không mong muốn. Có hai thuật toán tốt nhất để
tìm các điểm góc trong một bức ảnh: Harris và Shi-Tomasi.
Sau khi tìm được các Keypoint ta tiến hành đặt các vector tọa độ vào
các Keypoint tương ứng. Độ đo của các điểm đặc trưng được sử dụng để tìm ra một
ảnh đã lọc Gaussian L với kích thước gần nhất sao cho mọi tính toán sẽ được thực
hiện trong cùng một cách bất biến về độ đo. Với mỗi mẫu ảnh L(x,y) này, gọi m(x,y)
là biên độ gradient,  (x,y) là hướng. Hai giá trị cuối được tính toán như sau:

Hình 8. Biểu đồ phân bố Histogram theo độ

Page 10 of 27
Dựa vào hình trên ta sẽ tương ứng với mỗi vùng trong mà trân 4x4 sẽ lấy ra
những vector có biên độ cao nhất tương ứng với các góc theo nó. Ví dụ, trong hình
trên ta lấy các góc 10 - 19, 20 - 29, 40 - 49, 300 – 309…để tập hợp thành Keypoint
Descriptor.

Hình 9. Keypoint đã được gắn vector tọa độ


Bước cuối cùng là tạo ra các ma trận vector tọa độ từ biểu đồ Histogram ở trên
để có được tập hợp ma trận vector tọa độ của Keypoint. Ma trận này sẽ được dùng
để đem đi Matching.

Hình 10. Ma trận vector tọa độ của một Keypoint

Page 11 of 27
b. SURF (Speeded-Up Robust Features):
Một bất lợi lớn nhất của SIFT chính là tốc độ xữ lí chậm dù có độ chính xác
cao. SURF ra đời để khắc phục nhược điểm tốc độ chậm của SIFT. Về cơ bản phương
pháp SURF thực hiện gần giống như SIFT. Tuy nhiên, SURF khác SIFT ở chỗ cách
làm mờ bức ảnh, thay vì SIFT sẽ làm mờ toàn bức ảnh với thuật toán Gaussian thì
SURF sẽ dùng một mặt nạ để làm mờ tại những điểm Keypoint tương ứng. Điều này
giúp cho công việc tính toàn nhanh hơn bởi chương trình sẽ xử lí khá lâu với các hàm
phi tuyến của Gaussian.
Ngoài ta, SURF hơn hẵn với SIFT đó là cách xác định các Keypoint sơ khai,
thay vì SIFT phải đi tính định thức của ma trận đạo hàm bậc hai Hessian - điều này vô
cùng bấc lợi nếu gặp những bức ảnh kích thước lớn – thì SURF chỉ cần tính vết hay
trace của ma trận Hessian.

Hình 11. Mặt nạ làm mờ của SURF


SURF sẽ đánh số các vùng sau khi làm mờ, những vùng máu trắng sẽ được
đánh là số 1, màu đen sẽ là số -1 và nếu nhiều vùng gộp lại với nhau sẽ công các chỉ
số này lại. Và giống như SIFT, SURF cũng sẽ tính biểu đồ Histogram. Tuy nhiên, SIFT
sẽ tính Histogram cho tất cá các Keypoint, còn SURF không làm vậy, nó cài thiện tốc
độ bằng cách. Đối với những điểm có chỉ số là 0 thì SURF mới tính Histogram tại điểm
đó, còn các điểm nào là 1 thì nó sẽ bỏ qua.
Như vậy, rõ ràng ta thấy SURF nhanh hơn hẵn so với SIFT về mặt thuật toán.
Tuy nhiên, với việc loại bỏ các Keypoint không cần thiết của SURF đã phần nào làm
cho phương pháp này có độ chính xác không cao. Đặc biệt, với các bức ảnh đem đi
Matching bị xoay đi sẽ làm cho phương pháp này không còn chính xác nữa. Bởi ảnh
hưởng của chiếu sang và máu sắc xung quanh đối tướng bị thay đổi mà những đặc
trưng đó vô tình SURF đã loại bỏ hoặc hiểu nhầm.

Page 12 of 27
2. Phương pháp Matching:
Sau khi đã tìm ra các Keypoint đáng tin cậy bằng phương pháp SIFT hoặc
SURF ta sẽ tiến hành lấy một bức ảnh khác cũng thực hiện các bước thông qua SIFT
hoặc SURF để tìm các Keypoint của ảnh đó. Cuối cùng, ta sẽ thu được một tập hợp
ma trận vector tọa độ từ biểu đồ Histogram. Nhiệm vụ còn lại là ta sẽ so sánh các ma
trận này của ảnh tham chiếu và ảnh đem đi Matching, nếu kết quả này tương tự nhau
thì ta xác định hai Keypoint đấy là trùng nhau. Tính toàn số lượng điểm Keypoint
Matching được trên tổng số điểm Keypoint đem đi Matching cho ra một mức ngưỡng
nhất định. Nếu lớn hơn thi nó chính là vật thể mà ta mà ta đem đi tham chiếu và ngược
lại. Để thực hiện được việc này, ta có hai phương pháp: Brute-Force Matcher và Flann
Matcher.
Đối với Brute-Force Matcher, nó sẽ đem điểm mô tả đặc trưng của bức ảnh
tham chiếu với điểm đặc trưng của bức ảnh đem đi Matching để tính khoảng cách, nếu
khoảng các đó đủ gần so với mức ngưỡng đặt ra thì chúng trùng nhau và ngược lại.
Lưu ý, khoảng cách ở đây chính là độ sai lệch giữa hai điểm mô tả đặc trưng.
Đối với Flann Matcher, nó sẽ đem điểm mô tả đặc trưng của bức ảnh đem đi
Matching để sấp sỉ các ma trân đó. Sau đó, nó sẽ lấy mỗi điểm đặc trưng bên ảnh đem
đi tham chiếu để đem đi so sánh, nếu đặc trưng điểm đó thuộc vào khoảng xấp xỉ của
một trong những điể đặc trưng bên ảnh đem đi Matching thì xác định chúng trùng nhau.
Tương ta cũng có knnBrute-Force Matcher và knnFlann Matcher sẽ cho ra
các điểm Matching tốt nhất trong các điểm Matching được.
3. Thuật toán tăng độ chính xác của Matching – Homography:
Homography là một ma trận chuyển đổi 3x3:

Trong phương pháp này người ta sẽ lấy ra các một cần Matching bên ảnh
tham chiếu và một điểm ảnh đem đi Matching, ta liên kết chung lại thông qua ma
trận chuyển đổi Homography.

Page 13 of 27
Trong đó: x1, y1 là tọa độ điểm đặc trưng của ảnh tham chiếu
x2, y2 là tọa độ điểm đặc trưng của anh đem đi Matching
Ta sẽ tính như thế với tất cả các điểm của hai bức ảnh. Nhưng ảnh nào có
ma trân Homography xấp xỉ nhau sẽ là các điểm trung nhau.
Ngoài ra, ta có thể đơn giản hơn là ta sẽ làm một vài điểm để tím ra được ma
trận Homography đặc trưng chung. Sau đó dùng chính ma trận Homography đó
để chuyển đổi toàn bộ bức ảnh, lúc này việc Matching sẽ trỡ nên dễ dàng hơn.

Hình 12. Dùng Homography để căn chỉnh bức ảnh


4. Tăng độ chính xác bằng phương pháp Grabcut:
Để có thể loại bỏ các điểm đặc trưng không mong muốn và chỉ lấy nhưng đặc
trưng của vùng ảnh mong muôn. Ta sử dụng thuật toán Grabcut để loại bỏ
background của bức ảnh và chỉ để lại vùng ảnh mà mình mong muốn Matching
trước khi đưa vào thuật toán SIFT hoặc SURF để tìm đặc trưng
Grabcut hoạt động bằng cách dùng findContour để tìm các vùng ngăn cách
có kích thước lớn nhất trong bức ảnh. Sau đó sẽ xóa các vùng xung quanh nó chỉ
để lại vùng chưa kích thước lớn đó.

Page 14 of 27
Hình 13. Xóa background bằng Grabcut

5. Thiết kế giao diện người dùng bằng phần mềm Qt:

➢ Giao diện capture & segment đối tượng đầu vào


Giao diện này cho phép chúng ta capture đối tượng từ camera. Sau khi có
ảnh của đối tượng ta sử dụng phương pháp Grabcut để tách đối tượng mong muốn
và cuối cùng là lưu trữ nó.

Hình 14. Giao diện capture & segment đối tượng

Page 15 of 27
Hình 15. Đối tượng sau khi tách background bằng Grabcut

➢ Lưu trữ đối tượng

Hình 16. Giao diện dùng để lưu đối tượng

Hình 17. Lưu trữ đối tượng

Page 16 of 27
➢ Giao diện detect & matching object

Hình 18. Giao diện matching đối tượng

6. Kết quả và đánh giá:


➢ Đối với đối tượng bị Scale cả SIFT và SURF đều detect và matching
đúng:

Hinh 19. Detect và Matching dùng SIFT

Page 17 of 27
Hình 20. Detect và Matching dùng SURF
➢ Đối với đối tượng bị xoay thì SIFT đáp ứng tốt hơn so với SURF:

Hình 21. SIFT với đối tượng bị xoay

Hình 22. SURF với đối tượng bi xoay

Page 18 of 27
Hình 23. SIFT với đối tượng bị xoay

Hình 24. SURF với đối tượng bị xoay

➢ Đối với đối tượng bị phơi sáng thì SURF đáp ứng tốt hơn só với SIFT:

Hình 25. SIFT với đối tượng bị phơi sáng

Page 19 of 27
Hình 26. SURF với đối tượng bị phơi sang

Hình 27. SIFT với đối tượng bị phơi sáng

Hình 28. SURF với đối tượng bị phơi sang

Page 20 of 27
➢ Thử nghiệm đối với đối tượng là người:

Hình 29. Detect và Matching với đối tượng mặt người

➢ Đánh giá:

Hình 30. Bảng so sánh các thuật toán

7. Thuật toán PCA – SIFT:


a. Thuật toán PCA:
PCA là phương pháp biến đổi giúp giảm số lượng lớn các biến có tương quan
với nhau thành tập ít các biến sao cho các biến mới tạo ra là tổ hợp tuyến tính của
những biến cũ không có tương quan lần nhau. Ví dụ, chúng ta có 100 biến ban đầu
có tương quan tuyến tính với nhau, khi đó chúng ta sử dụng phương pháp PCA
xoay chiều không gian cũ thành chiều không gian mới mà ở đó chỉ còn 5 biến không
có tương quan tuyến tính mà vẫn dữ được nhiều nhất lượng thông tin từ nhóm biến
ban đầu.

Page 21 of 27
Hình 31. Góc nhìn khác nhau cho ta cách đánh giá khác nhau
Cùng là một chú lạc đà, tuy nhiên với các cách nhìn khác nhau (trục thông tin),
chúng ta lại có những cách thu nhận thông tin khác nhau và cho ta những kết luận
khác nhau.
Một số đặc tính của PCA được kể đến như:
1. Giúp giảm số chiều dữ liệu - Giúp visualization khi dữ liệu có quá nhiều chiều
thông tin.
2. Do dữ liệu ban đầu có số chiều lớn (nhiều biến) thì PCA giúp chúng ta xoay
trục tọa độ xây một trục tọa độ mới đảm bảo độ biến thiên của dữ liệu và giữ
lại được nhiều thông tin nhất mà không ảnh hưởng tới chất lượng của các mô
hình dự báo. (Maximize the variability).
3. Do PCA giúp tạo một hệ trục tọa độ mới nên về mặt ý nghĩa toán học, PCA
giúp chúng ta xây dựng những biến factor mới là tổ hợp tuyến tính của những
biến ban đầu.
4. Trong không gian mới, có thẻ giúp chúng ta khám phá thêm những thông tin
quý giá mới khi mà tại chiều thông tin cũ những thông tin quý giá này bị che
mất (Điển hình cho ví dụ về chú lạc đà phía trên).

Mô hình PCA:

Xét tập không gian (dữ liệu) k biến, k biến này được biểu qua j thành phần
chính sao cho (j < k). Xét thành phần chính đầu tiên có dạng:

PC1 = a1X1+a2X3+a4X5+...akXk

Thành phần chính đầu tiên chứa đựng hầu hết thông tin từ k biến ban đầu
(được hình thành là 1 tổ hợp tuyến tính của các biến ban đầu) và lúc này tiếp tục xét
thành phần chính thứ 2 được biểu diễn tuyến tính từ k biến ban đầu tuy nhiên thành
phần chính thứ 2 phải không trực giao với thành phần chính ban đầu hay (thành phần
chính thứ 2 không có mối tương quan tuyến tính với thành phần chính đầu tiên). Về
lý thuyết chúng ta có thể xây dựng nhiều thành phần chính từ nhiều biến ban đầu. Tuy
nhiên chúng ta cần tìm được trục không gian sao cho ít thành phần nhất mà có thể
biểu diễn được hầu hết thông tin từ những biến ban đầu.

Page 22 of 27
Hình 32. Kết quả chạy so sánh các thuật toán.

b. Áp dụng PCA vào thuật toán SIFT:


B1: Sau khi có được các điểm mô tả đặc trưng của ảnh tham chiếu, ta sẽ sắp
xếp chúng theo một ma trận hàng hoặc cột và ma trận này sẽ chứa các tọa độ của
các điểm Keypoint của ảnh tham chiếu.
B2: Ta tính trung bình của ma trận đó theo công thức:

B3: Tính ma trận phương sai bằng cách lấy ma trận mô tả đặc trưng của ảnh
tham chiếu trừ cho giá trị trung bình vừa tính ở trên.

B4: Tính ma trận hiệp phương sai

Trong đó:

Từ đó ta tính được trị riêng và vector riêng của ma trận C, ta suy ra được
vector riêng của ma trận chứa các tọa độ của các điểm Keypoint của ảnh tham chiếu.

Page 23 of 27
ui
B5: Sau đó, ta nên chuẩn hóa các vector ui ( ui  1 ), nghĩa là: ui 
ui
B6: Tìm M vector riêng tốt nhất tương ứng với K trị riêng lớn nhất vừa tính ở
trên.
B7: Sau khi đã chuyển hệ tọa độ của các Keypoint sang hệ tọa mới bằng
cách nhân các vector chứa các tọa độ của các điểm Keypoint của ảnh tham chiếu
với vector riêng. Được biễu diễn bằng:

Trong đó:
B8: Thu thập ảnh đầu vào, thực hiện lại B1, B2, B3 để có được ma trận

B9: Tìm

Nếu er < Tr (Tr là một mức ngưỡng nào đó để chấp nhận được) thì ta xác
nhận hai điểm đó trùng nhau.
8. Một số lệnh thực thi quan trọng trong chương trình:

class FindKeypoint_Method

public:

FindKeypoint_Method();

vector<KeyPoint> Surf_keypoint(Mat inputImage,int minHessian);

vector<KeyPoint> Sift_keypoint(Mat inputImage,int minHessian);

Mat Surf_descriptor(Mat inputImage,vector<KeyPoint> Keypoints);

Mat Sift_descriptor(Mat inputImage,vector<KeyPoint> Keypoints);

private:

Matching_Method matches;

};

Page 24 of 27
class Matching_Method
{

public:

Matching_Method();

Mat Brute_Force(Mat queryImg, Mat trainImg, vector<KeyPoint> queryKeypoints,


vector<KeyPoint> trainKeypoints, Mat queryDescriptors, Mat trainDescriptors,Rect rect);

Mat knnMatching(Mat queryImg, Mat trainImg, vector<KeyPoint> queryKeypoints,


vector<KeyPoint> trainKeypoints, Mat queryDescriptors, Mat trainDescriptors, int k,Rect rect);

Mat FlannMatching(Mat queryImg, Mat trainImg, vector<KeyPoint> queryKeypoints,


vector<KeyPoint> trainKeypoints, Mat queryDescriptors, Mat trainDescriptors,Rect rect);

};

H = findHomography( obj, scene, CV_RANSAC );

grabCut(*image, mask, rect, bgdModel, fgdModel, 1, GC_INIT_WITH_MASK);

grabCut(*image, mask, rect, bgdModel, fgdModel, 1, GC_INIT_WITH_RECT);

➢ Ảnh hưởng của các thông số:


Đối với phương pháp tìm điểm Keypoint thì thông số minHessian và
octaveLayers.
- Ma trận Hessian là ma trận đạo hàm bậc hai của ma trận bao quanh điểm
Keypoint, từ đó tính được định thức ma trận ta có được thông số Hessian.
Đem thông số đó so sánh với minHessian ta tìm được các Keypoint. Do đó,
mức ngưỡng hợp lí sẽ cho ta cac Keypoint chính xác. Thường sẽ chọn trong
khoảng 300 – 500.
- octaveLayer là số lần mà các bức ảnh bị giảm kích thước đi một phần hai, số
lượng octave cũng sẽ anh hưởng đến số Keypoint chính xác. Thường sẽ
chọn là 5.
Đối với phương pháp tăng độ chính xác để tìm Keypoint Grabcut thì sẽ có hai
loại mặt nạ. Một loại là mặt nạ hình chữ nhật và một loại là dạng hoạch định sẵn.
Tùy nhu cầu mà sử dụng cho phù hợp

Page 25 of 27
III. Kết luận:
1. Nhận xét:
- Qua kết quả tìm hiểu và thực hiện cho thấy chất lượng của thuật toán SIFT
dù tốt hơn so với SURF nhưng về tốc độ xữ lí hoàn toàn thua xa so với SURF. Như
vây đối với các ứng dụng đòi hỏi tốc độ xử lí nhanh hay real – time thì nên dung SURF
và nên kết hợp SURF với các phương pháp hay bộ lọc để tăng độ chính xác cho
SURF
- Về phương pháp Matching các điểm đặc trưng thì phương pháp Flann
Matcher hơn hẳn so với Brute – Frorce Matcher về độ chính xác cũng như tốc độ xữ
lí.
- Qua thực nghiệm kết quả Matching vẫn chưa chính xác như ý muốn, độ
chính xác vào tầm 80%. Nên đội khi nhận diện nhầm vật thể nếu đưa vật có đặc trưng
tương tự vào
- Kết quả Matching sẽ cho kết quả chính xác cao nếu đối tượng tham chiếu
rõ ràng và đủ lớn.
2. Hường phát triển:
- Với Matching thì người ta có thể Matching khảo sát được chuyển động của
vật thể
- Áp dụng huấn luyện mạng Neural vaò Matching
- Áp dụng thuật toán PCA vào Matching
- Thực hiện Matching vào đối tượng là con người để khảo sát chuyển động
con người cũng như số người người để thay thế mốt cách đáng tin cậy cho các loại
cảm biến phổ thông.
- Hệ thống chống trộm sử dụng Detect và Matching kết hợp với nhận dạng
khuôn mặt.

Page 26 of 27
IV. Tài liệu tham khảo:
[1] Lecture 6: Feature Detection and Matching
[2] https://phvu.net/2011/10/05/pca-principal-component-analysis/
[3] http://www.cs.cmu.edu/~yke/pcasift/
[4] http://www.aishack.in/tutorials/sift-scale-invariant-feature-transform-
introduction/
[5] https://docs.opencv.org/3.1.0/d5/d6f/tutorial_feature_flann_matcher.html
[6] https://www.learnopencv.com/homography-examples-using-opencv-python-c/
[7] [Kenneth_Dawson-Howe]_A_practical_introduction_to_(b-ok.org)
[8] [Prateek_Joshi,_Vinicius_Godoy,_David_Millan_Escri(b-ok.org)
[9] [Robert_Laganiere]_OpenCV_2_Computer_Vision_Applic(b-ok.org)
[10] https://docs.opencv.org/3.1.0/d8/d83/tutorial_py_grabcut.html

Page 27 of 27

You might also like