Professional Documents
Culture Documents
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.
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 ó.
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
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:
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.
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.
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.
Page 14 of 27
Hình 13. Xóa background bằng Grabcut
Page 15 of 27
Hình 15. Đối tượng sau khi tách background bằng Grabcut
Page 16 of 27
➢ Giao diện detect & matching object
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:
Page 18 of 27
Hình 23. SIFT 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:
Page 19 of 27
Hình 26. 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:
➢ Đánh giá:
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.
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.
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();
private:
Matching_Method matches;
};
Page 24 of 27
class Matching_Method
{
public:
Matching_Method();
};
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