Tải bản đầy đủ (.pdf) (58 trang)

Nhận dạng khuôn mặt người sử dụng OpenCV trong CSharp

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 (2.04 MB, 58 trang )

TRƯỜNG ĐẠI HỌC KỸ THUẬT CÔNG NGHIỆP
KHOA ĐIỆN TỬ
BỘ MÔN: TIN HỌC CÔNG NGHIỆP

ĐỒ ÁN MÔN HỌC
MÔN HỌC
CÔNG NGHỆ PHẦN MỀM
Giáo viên hướng dẫn : Ths Phùng Thị Thu Hiền
Nhóm sinh viên
: Trương Văn Khoan – DTK1151030245
Lớp
: K47KMT01

Thái Nguyên – 2014


ĐAMH Công nghệ phần mềm

GVHD Phùng Thị Thu Hiền

Nhận xét của giáo viên hướng dẫn
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
...........................................................................................................................................
.........................................................................................................................................

Thái Nguyên, Ngày Tháng
Năm 2014
Giáo Viên hướng dẫn
(Ký ghi rõ họ tên)



Nhận xét của giáo viên chấm
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
Thái Nguyên, Ngày Tháng Năm 2014
Giáo Viên hướng dẫn
(Ký ghi rõ họ tên)

Bộ môn Tin học công nghiệp

1


ĐAMH Công nghệ phần mềm

GVHD Phùng Thị Thu Hiền
MỤC LỤC

Mở đầu.
1. Lý do chọn đề tài.
2. Mục đích đề tài.
3. Đối tượng và phạm vi nghiên cứu.
Chương 1: Giới thiệu.
1.1. Bài toán nhận dạng mặt người và những khó khăn…………………………………………
1.1.1.
Bài toán nhận dạng mặt người………………………………………………………..
1.1.2.

Những khó khăn của hệ thống nhận dạng khuôn mặt……………………………..
1.2 . Tổng quan kiến trúc của một hệ thống nhận dạng mặt người…………………………….
1.2.1.
Ngôn ngữ lập trình……………………………………………………………………
Chương 2: Tổng quan về xử lý ảnh.
2.1. Xử lý ảnh, các vấn đề cơ bản trong xử lý ảnh…………………………………………………
2.1.1. Xử lý ảnh là gì?............................................................................................................
2.1.2. Các vấn đề cơ bản trong xử lý ảnh………………………………………………………….
2.2.. Một số khái niệm cơ bản………………………………………………………………………....
2.2.1. Quan hệ giữa các điểm ảnh…………………………………………………………………
 Tổng kết chương……………………………………………………………………..
Chương 3: Làm quen với thư viện OpenCV.
3.1. Giới thiệu về OpenCV………………………………………………………………………….
3.1.1. OpenCV là gì?
3.1.2. Cấu trúc tổng quan………………………………………………………………………
3.2. Hướng dẫn sử dụng các thư viện của OpenCV…………………………………………….
 Tổng kết chương……………………………………………………………………..
Chương 4: Bài toán phát hiện và nhận dạng mặt người
4.1.

Detection………………………………………………………………………………………
4.1.1. Bài toán xác định mặt người………………………………………………………...
4.1.2. Hướng tiếp cận dựa trên tri thức (knowledge-based)…………………………
4.1.3. Hướng tiếp cận dựa trên các đặc trưng không đổi (feature invariant)………..
4.1.4. Hướng tiếp cận dựa trên phương pháp đối sánh mẫu (template matching)…
4.1.5. Hướng tiếp cận dựa trên diện mạo (appearance-based)……………………….

4.2.

Recognition-Sử dụng Eigenfaces.

4.2.1. Thuật toán PCA và ứng dụng trong nhận dạng mặt người…………………….
4.2.2. Đi tìm Eigenfaces…………………………………………………………………..
4.2.3. So sánh khoảng cách-Compare Distance………………………………………..
 Tổng kết chương…………………………………………………………………….

Bộ môn Tin học công nghiệp

2


ĐAMH Công nghệ phần mềm

GVHD Phùng Thị Thu Hiền

Chương 5: Xây dựng chương trình-Mô phỏng.
Xây dựng chương trình……………………………………………………………….
5.1.1. Phân tích……………………………………………………………………..
5.2. Thiết kế hệ thống………………………………………………………………………
5.2.1. Xử lý ảnh đầu vào…………………………………………………………..
5.2.2. Phát hiện khuôn mặt trong ảnh……………………………………………
5.2.3. Xử lý đầu ra………………………………………………………………….
5.2.4. Thiết kế cơ sở dữ liệu………………………………………………………..
5.2.5. Thiết kế giao diện chương trình……………………………………………
5.3. Một số kết quả thực nghiệm…………………………………………………………
 Tổng kết chương………………………………………………………………………
Kết Luận.
5.1.

Bộ môn Tin học công nghiệp


3


ĐAMH Công nghệ phần mềm

GVHD Phùng Thị Thu Hiền
MỞ ĐẦU

1.

Lý do chọn đề tài.

Với sự phát triển không ngừng của khoa học và công nghệ, đặc biệt là với những chiếc
điện thoại thông minh (smartphone) ngày càng hiện đại và được sử dụng phổ biến trong đời sống
con người đã làm cho lượng thông tin thu được bằng hình ảnh ngày càng tăng. Theo đó, lĩnh vực
xử lý ảnh cũng được chú trọng phát triển, ứng dụng rộng rãi trong đời sống xã hội hiện đại.
Không chỉ dừng lại ở việc chỉnh sửa, tăng chất lượng hình ảnh mà với công nghệ xử lý ảnh hiện
nay chúng ta có thể giải quyết các bài toán nhận dạng chữ viết, nhận dạng dấu vân tay, nhận
dạng khuôn mặt…
Một trong những bài toán được nhiều người quan tâm nhất của lĩnh vực xử lý ảnh hiện
nay đó là nhận dạng khuôn mặt (Face Recognition). Như chúng ta đã biết, khuôn mặt đóng vai
trò quan trọng trong quá trình giao tiếp giữa người với người, nó mang một lượng thông tin giàu
có, chẳng hạn như từ khuôn mặt chúng ta có thể xác định giới tính, tuổi tác, chủng tộc, trạng thái
cảm xúc, đặc biệt là xác định mối quan hệ với đối tượng (có quen biết hay không). Do đó, bài
toán nhận dạng khuôn mặt đóng vai trò quan trọng trong nhiều lĩnh vực đời sống hằng ngày của
con người như các hệ thống giám sát, quản lý vào ra, tìm kiếm thông tin một người nổi
tiếng,…đặc biệt là an ninh, bảo mật. Có rất nhiều phương pháp nhận dạng khuôn mặt để nâng
cao hiệu suất tuy nhiên dù ít hay nhiều những phương pháp này đang vấp phải những thử thách
về độ sáng, hướng nghiêng, kích thước ảnh, hay ảnh hưởng của tham số môi trường.
Bài toán Nhận diện khuôn mặt (Face Recognition) bao gồm nhiều bài toán khác nhau

như: phát hiện mặt người (face detection), đánh dấu (facial landmarking), trích chọn (rút) đặc
trưng (feature extration), gán nhãn, phân lớp (classification). Trong thực tế, nhận dạng khuôn
mặt người (Face Recognition) là một hướng nghiên cứu được nhiều nhà khoa học quan tâm,
nghiên cứu để ứng dụng trong thực tiễn. Ở các trường đại học hàng đầu về Công Nghệ Thông
Tin như Massachusetts Institute of Technology (MIT), Carnegie Mellon University (CMU),
Standford, Berkeley và các công ty lớn như Microsoft, Apple, Google, Facebook đều có các
trung tâm về sinh trắc học (Biometrics Center) và nghiên cứu về nhận dạng khuôn mặt người và
nó đã trở thành một trong những lĩnh vực nghiên cứu chính cho đến nay. Gần đây, công ty
Hitachi Kokusai Electric của Nhật mới cho ra đời một camera giám sát, có thể chụp ảnh và tìm
ra 36 triệu khuôn mặt khác có nét tương tự trong cơ sở dữ liệu chỉ trong vòng một giây.
Có hai phương pháp nhận dạng phổ biến hiện nay là nhận dạng dựa trên đặc trưng của
các phần tử trên khuôn mặt như biến đổi Gabor Wavelet và mạng Neural, SVM,…và nhận dạng
dựa trên xét tổng thể toàn khuôn mặt như phương pháp PCA, LDA, LFA . Trong đó, PCA là
phương pháp trích rút đặc trưng nhằm giảm số chiều của ảnh tuy đơn giản nhưng mang lại hiệu
quả tốt. Hệ thống hoạt động ổn định và có tính thích nghi cao khi dữ liệu đầu vào thay đổi nhiều.

Bộ môn Tin học công nghiệp

4


ĐAMH Công nghệ phần mềm

GVHD Phùng Thị Thu Hiền

2. Mục đích của đề tài.
- Xây dựng một dự án phần mềm ứng dụng nhận dạng khuôn mặt.
- Tìm hiểu về thư viện OpenCv, phần mềm EmguCv.
- Nghiên cứu phương pháp trích chọn đặc trưng Eigenfaces.
- Tìm hiểu các phương pháp xác định khuôn mặt (Face Detection).

- Nghiên cứu phương pháp phân tích thành phần chính (Principal Component AnalysisPCA).
3. Đối tượng và phạm vi nghiên cứu đề tài.
a) Đối tượng:
- Các phương pháp, thuật toán phục vụ cho việc phát hiện và nhận dạng khuôn mặt người
trên ảnh.
- Bộ thư viện xử lý ảnh OpenCv và công cụ hỗ trợ EmguCv.
- Bộ CSDL chuẩn Yalefaces, ngoài ra có thêm bộ CSDL sinh viên tự thu thập.
b) Phạm vi nghiên cứu:
- Tập trung tìm hiểu nhận dạng khuôn mặt (Face Recognition) chứ không chú trọng tìm
hiểu phát hiện khuôn mặt (Face Detection).
- Việc xử lý ảnh, nhận dạng khuôn mặt thỏa mãn các điều kiện:
 Ánh sáng bình thường, ngược sáng, ánh sáng đèn điện. (Với bộ CSDL tự thu thập).
 Góc ảnh: Trực diện (frontal) hoặc góc nghiêng không quá 10o.
 Không bị che khuất (no occulusion).
 Ảnh có chất lượng cao (high quality images).

Bộ môn Tin học công nghiệp

5


ĐAMH Công nghệ phần mềm

GVHD Phùng Thị Thu Hiền
CHƯƠNG 1: GIỚI THIỆU

1.1 Bài toán nhận dạng mặt người và những khó khăn.
1.1.1 Bài toán nhận dạng mặt người.
Hệ thống nhận dạng mặt người là một hệ thống nhận vào là một ảnh hoặc một đoạn video
(một dòng các hình ảnh liên tục). Qua xử lý, tính toán hệ thống xác định được vị trí mặt người

(nếu có) trong ảnh và xác định là người nào trong số những người mà hệ thống đã được biết (qua
quá trình học) hoặc là người lạ.[1]

Hình 1. Hệ thống nhận dạng mặt người.

Bộ môn Tin học công nghiệp

6


ĐAMH Công nghệ phần mềm

GVHD Phùng Thị Thu Hiền

1.1.2. Những khó khăn của hệ thống nhận dạng khuôn mặt.[1]
Bài toán nhận dạng mặt người là bài toán đã được nghiên cứu từ những năm 70. Tuy nhiên,
đây là một bài toán khó nên những nghiên cứu hiện tại vẫn chưa đạt được những kết quả mong
muốn. Chính vì thế, vấn đề này vẫn đang được nhiều nhóm trên thế giới quan tâm nghiên cứu.
Khó khăn của bài toán nhận dạng mặt người có thể kể đến như sau:
a. Tư thế chụp, góc chụp: Ảnh chụp khuôn mặt có thể thay đổi rất nhiều bởi vì góc chụp
giữa camera và khuôn mặt. Chẳng hạn như: chụp thẳng, chụp chéo bên trái 45o hay chụp chéo
bên phải 45o, chụp từ trên xuống, chụp từ dưới lên, v.v… Với các tư thế khác nhau, các thành
phần trên khuôn mặt như mắt, mũi, miệng có thể bị khuất một phần hoặc thậm chí khuất hết.
b. Sự xuất hiện hoặc thiếu một số thành phần của khuôn mặt: Các đặc trưng như: râu mép,
râu hàm, mắt kính, v.v… có thể xuất hiện hoặc không. Vấn đề này làm cho bài toán càng trở nên
khó hơn rất nhiều.
c. Sự biểu cảm của khuôn mặt: Biểu cảm của khuôn mặt con người có thể làm ảnh hưởng
đáng kể lên các thông số của khuôn mặt. Chẳng hạn, cùng một khuôn mặt một người, nhưng có
thể sẽ rất khác khi họ cười hoặc sợ hãi, v.v…
d. Sự che khuất: Khuôn mặt có thể bị che khuất bởi các đối tượng khác hoặc các khuôn

mặt khác.
e. Hướng của ảnh (pose variations): Các ảnh khuôn mặt có thể biến đổi rất nhiều với các
góc quay khác nhau của trục camera. Chẳng hạn chụp với trục máy ảnh nghiêng làm cho khuôn
mặt bị nghiêng so với trục của ảnh.
f. Điều kiện của ảnh: Ảnh được chụp trong các điều kiện khác nhau về: chiếu sáng, về tính
chất camera (máy kỹ thuật số, máy hồng ngoại, v.v…), ảnh có chất lượng thấp ảnh hưởng rất
nhiều đến chất lượng ảnh khuôn mặt.
g. Aging condition: Việc nhận dạng ảnh mặt thay đổi theo thời gian còn là một vấn đề khó
khăn, ngay cả đối với khả năng nhận dạng của con người.
h. Các hệ thống cực lớn (very large scale systems): Các CSDL ảnh mặt được test bởi các
nhà nghiên cứu còn khá nhỏ (vài trăm tới vài chục nghìn ảnh mặt), tuy nhiên trên thực tế các
CSDL có thể rất lớn, ví dụ CSDL ảnh mặt của cảnh sát của một đất nước có thể chứa từ hàng
triệu tới hơn 1 tỉ ảnh…
1.2.
Tổng quan kiến trúc của một hệ thống nhận dạng mặt người.[1[2]]
Một hệ thống nhận dạng mặt người thông thường bao gồm bốn bước xử lý sau:
1. Phát hiện khuôn mặt (Face Detection).
2. Phân đoạn khuôn mặt (Face Alignment hay Segmentation).
3. Trích chọn đặc trưng (Feature Extraction).
4. Nhận dạng (Recognition) hay Phân lớp khuôn mặt (Face Clasaification).

Bộ môn Tin học công nghiệp

7


ĐAMH Công nghệ phần mềm

GVHD Phùng Thị Thu Hiền


Hình 2. Các bước chính trong một hệ thống nhận dạng khuôn mặt.
Phát hiện khuôn mặt dò tìm, định vị những vùng (vị trí) có thể là khuôn mặt xuất hiện
trong ảnh hoặc các frame video. Các vùng này sẽ được tách riêng để xử lý. Phân đoạn khuôn
mặt sẽ xác định vị trí mắt mũi, miệng và các thành phần khác của khuôn mặt và chuyển kết quả
này cho bước trích chọn đặc trưng. Ở bước trích chọn đặc trưng, bằng một phương pháp trích
chọn đặc điểm nào đó (mẫu nhị phân cục bộ-Local Binary Pattern-LBP, Gabor wavelets…) sẽ
được sử dụng với ảnh mặt để trích xuất các thông tin đặc trưng cho ảnh từ các thông tin về các
thành phần trên khuôn mặt, kết quả là mỗi ảnh sẽ được biểu diễn dưới dạng một vector đặc trưng
(feature vector). Những vecto đặc trưng này sẽ là dữ liệu đầu vào cho một mô hình đã được huấn
luyện trước để nhận dạng khuôn mặt (Face Recognition) hay phân lớp khuôn mặt (Face
Classifition), tức là xác định danh tính (identity) hay nhãn của ảnh-đó là ảnh của ai. Ở bước nhận
dạng khuôn mặt (Face Recognition), thường thì phương pháp k-láng giềng gần (k-nearest
neighbor:kNN) sẽ được sử dụng.
Bên cạnh những bước chính nêu trên, chúng ta còn có thể áp dụng thêm một số bước khác
như tiền xử lý, hậu xử lý nhằm làm tăng độ chính xác cho hệ thống. Ví dụ, sau bước phát hiện
khuôn mặt, ta có thể thực hiện bước tiền xử lý (Preprocessing) bao gồm các bước căn chỉnh ảnh
(face image alignment) và chuẩn hóa ánh sáng (illumination normalization).
Do một số thông số như: tư thế khuôn mặt, độ sáng, điều kiện ánh sáng, v.v… phát hiện
khuôn mặt được đánh giá là bước khó khăn và quan trọng nhất so với các bước còn lại của hệ
thống. Tuy nhiên, trong phạm vi đồ án này, không tập trung tìm hiểu bước phát hiện khuôn mặt
mà chỉ tập trung chủ yếu vào bước nhận dạng khuôn mặt.
Dữ liệu cho một hệ thống nhận dạng mặt được chia làm 3 tập: tập huấn luyện (training set),
tập tham chiếu (reference set haygallery set) và tập để nhận dạng (probe set hay query set, đôi
khi còn gọi là test set). Trong nhiều hệ thống, tập training trùng với tập reference. Tập training
gồm các ảnh được dùng để huấn luyện (hay học-learning), thông thường tập này được dùng để
sinh ra một không gian con (projection subspace) là một ma trận và phương pháp hay được sử
dụng là PCA (Principal Component Analysis), WPCA (Whitened PCA), LDA (Linear
Discriminant Analysis), KPCA (Kernel PCA). Tập reference gồm các ảnh đã biết danh tính được
chiếu (projected) vào không gian con ở bước training. Bước training nhằm 2 mục đích: giảm số
chiều (dimension reduction) của các vector đặc điểm (feature vector) vì các vector này thường


Bộ môn Tin học công nghiệp

8


ĐAMH Công nghệ phần mềm

GVHD Phùng Thị Thu Hiền

có độ dài khá lớn (vài nghìn tới vài trăm nghìn) nên nếu để nguyên thì việc tính toán sẽ rất rất
lâu, thứ hai là làm tăng tính phân biệt (discriminative) giữa các ảnh khác lớp (định danh khác
nhau), ngoài ra có thể làm giảm tính phân biệt giữa các ảnh thuộc về một lớp (tùy theo phương
pháp, ví dụ như Linear Discriminant Analysis LDA- còn gọi là Fisher Linear Discriminant
Analysis-Fisherface là một phương pháp làm việc với tập training mà mỗi đối tượng có nhiều
ảnh mặt ở các điều kiện khác nhau). Sau khi thực hiện chiếu tập reference vào không gian con,
hệ thống lưu lại kết quả là một ma trận với mỗi cột của ma trận là một vector tương ứng với ảnh
(định danh đã biết) để thực hiện nhận dạng (hay phân lớp). Nhận dạng (hay phân lớp) được thực
hiện với tập các ảnh probe, sau khi tiền xử lý xong, mỗi ảnh sẽ được áp dụng phương pháp trích
chọn đặc điểm (như với các ảnh thuộc tập training và reference) và được chiếu vào không gian
con. Tiếp đến việc phân lớp sẽ dựa trên phương pháp k-NN, định danh của một ảnh cần xác định
sẽ được gán là định danh của ảnh có khoảng cách (distance) gần với nó nhất. Ở đây cần lưu ý là
mỗi ảnh là một vector nên có thể dùng khái niệm hàm khoảng cách giữa hai vector để đo sự khác
biệt giữa các ảnh.
1.2.1. Ngôn ngữ lập trình.
Để giải quyết bài toán nhận dạng khuôn mặt sử dụng thư viện OpenCV, chúng ta có thể sử
dụng các ngôn ngữ lập trình như: .NET C#, VB, IronPython, Java, C++…
Trong đồ án này ngôn ngữ lập trình được sử dụng là .NET C#, viết trên phần mềm Visual
Studio 2013.


Bộ môn Tin học công nghiệp

9


ĐAMH Công nghệ phần mềm

GVHD Phùng Thị Thu Hiền

CHƯƠNG 2 : TỔNG QUAN VỀ XỬ LÝ ẢNH
2.1 Xử lý ảnh, các vấn đề cơ bản trong xử lý ảnh.
2.1.1 Xử lý ảnh (XLA) là gì ?
Con người thu nhận thông tin qua các giác quan, trong đó thị giác đóng vai trò quan trọng
nhất. Những năm trở lại đây với sự phát triển của phần cứng máy tính, XLA và đồ họa đã phát
triển một cách mạnh mẽ và có nhiều ứng dụng trong cuộc sống. XLA và đồ họa đóng vai trò
quan trọng trong tương tác người máy.[3]
Quá trình XLA được xem như là quá trình thao tác ảnh đầu vào nhằm cho ra kết quả
mong muốn. Kết quả đầu ra của một quá trình XLA có thể là một ảnh “tốt hơn” hoặc một kết
luận.

Hình 3. Quá trình xử lý ảnh.
Ảnh có thể xem là tập hợp các điểm ảnh và mỗi điểm ảnh được xem như là đặc trưng
cường độ sáng hay một dấu hiệu nào đó tại một vị trí nào đó của đối tượng trong không gian và
nó có thể xem như một hàm n biến P(c1, c2, …, cn). Do đó, ảnh trong XLA có thể xem như ảnh
n chiều. Sơ đồ tổng quát của một hệ thống XLA:

Hình 4. Các bước cơ bản trong một hệ thống xử lý ảnh.

Bộ môn Tin học công nghiệp


10


ĐAMH Công nghệ phần mềm

GVHD Phùng Thị Thu Hiền

Sơ đồ này bao gồm các phần sau[4]:
a. Phần thu nhận ảnh (Image Acquisition).
Ảnh có thể nhận qua camera màu hoặc đen trắng. Thường thì ảnh nhận qua camera là ảnh
tương tự (loại camera ống chuẩn CCIR với tần số 1/25, mỗi ảnh 25 dòng), cũng có loại camera
đã số hóa (như loại CCD-Change Coupled Device) là loại photodiot tạo cường độ sáng tại mỗi
điểm ảnh.
Camera thường dùng là loại quét dòng; ảnh tạo ra có dạng hai chiều. Chất lượng một ảnh
thu nhận được phụ thuộc vào thiết bị thu, môi trường (ánh sáng, thời tiết).
b. Tiền xử lý (Image Processing).
Sau bộ thu nhận, ảnh có thể bị 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õ, nét hơn.
c. Phân đoạn (Segmentation) hay phân vùng ảnh.
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 XLA 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.
d. 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 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 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.
e. Nhận dạng ảnh 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 suy 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…
f. 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

Bộ môn Tin học công nghiệp

11


ĐAMH Công nghệ phần mềm

GVHD Phùng Thị Thu Hiề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à XLA 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.
g. Mô tả (biểu diễn ảnh).
Từ hình 5, ảnh sau khi số hóa sẽ được lưu vào bộ nhớ, hoặc chuyển tiếp 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ớ cực 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). Một số phương pháp biểu
diễn thường dùng:
- Biểu diễn bằng mã chạy (Run-Length Code)
- Biểu diễn bằng mã xích (Chaine-Code)
- Biểu diễn bằng mã tứ phân (Quad-Tree Code)
Trên đây là các thành phần cơ bản trong các khâu XLA. Trong thực tế, các quá trình sử
dụng ảnh số không nhất thiết phải qua hết các khâu đó, tùy theo đặc điểm ứng dụng. Hình 5 cho
sơ đồ phân tích, XLA và lưu đồ thông tin giữa các khối một cách khá đầy đủ. Ảnh sau khi số
hóa, được nén, lưu lại để truyền qua các hệ thống khác sử dụng hoặc xử lý tiếp theo. Mặt khác,
ảnh sau khi số hóa có thể bỏ qua công đoạn nâng cao chất lượng (khi ảnh đủ chất lượng theo
một yêu cầu nào đó) để chuyển tới khâu phân đoạn hoặc bỏ tiếp khâu phân đoạn chuyển trực
tiếp tới khâu trích chọn đặc trưng. Hình 5 cũng chia các nhánh song song như: nâng cao chất
lượng ảnh có hai nhánh phân biệt: nâng cao chất lượng ảnh (tăng độ sáng, độ tương phản, lọc
nhiễu) hoặc khôi phục ảnh (hồi phục lại ảnh thật khi ảnh gốc bị hỏng) v.v…

Hình 5. Sơ đồ phân tích, xử lý ảnh và lưu đồ thông tin giữa các khối.

Bộ môn Tin học công nghiệp

12


ĐAMH Công nghệ phần mềm


GVHD Phùng Thị Thu Hiền

2.1.2 Các vấn đề cơ bản trong xử lý ảnh.[4]
2.1.2.1 Một số khái niệm cơ bản.
 Điểm ảnh (Picture Element).
Gốc của ảnh (ảnh tự nhiên) là ảnh liên tục về không gian và độ sáng. Để xử lý được bằng
máy tính (số), ảnh cần phải được số hóa. Số hóa ảnh là sự biến đổi gần đúng một ảnh liên tục
thành một tập điểm phù hợp với ảnh thật về vị trí (không gian) và độ sáng (mức xám). Khoảng
cách giữa các điểm ảnh đó được thiết lập sao cho mắt người không phân biệt được ranh giới giữa
chúng. Mỗi một điểm như vậy gọi là điểm ảnh (PEL: Picture Element) hay gọi tắt là Pixel. Trong
khuôn khổ ảnh hai chiều, mỗi pixel ứng với cặp tọa độ (x, y).
Định Nghĩa: Điểm ảnh (Pixcel) là một phần tử của ảnh số tại tọa độ (x, y) với độ xám hoặc
màu nhất định. Kích thước và khoảng cách giữa các điểm ảnh đó được chọn thích hợp sao cho
mắt người cảm nhận sự liên tục về không gian và mức xám (hoặc màu) của ảnh số gần như ảnh
thật. Mỗi một phần tử trong ma trận được gọi là một phần tử ảnh.
 Độ phân giải của ảnh.
Định nghĩa: Độ phân giải (Resolution) của ảnh là mật độ điểm ảnh được ấn định trên một
ảnh số được hiển thị.
Theo định nghĩa, khoảng cách giữa các điểm ảnh phải được chọn sao cho mắt người vẫn
thấy được sự liên tục của ảnh. Việc lựa chọn khoảng cách thích hợp tạo nên một mật độ phân bổ
đó chính là độ phân giải và được phân bố theo trục x và y trong không gian hai chiều.
Ví dụ: Độ phân giải của ảnh trên màn hình CGA (Color Graphic Adaptor) là một lưới điểm
theo chiều ngang màn hình: 320 điểm chiều dọc * 200 điểm ảnh (320*200). Rõ ràng, cùng màn
hình CGA 12 “ta nhận thấy mịn hơn màn hình CGA 17” độ phân giải 320*200. Lý do: cùng một
mật độ (độ phân giải) nhưng diện tích mà hình rộng hơn thì độ mịn (liên tục của các điểm) kém
hơn.
 Mức xám của ảnh.
Một điểm ảnh (pixcel) có hai đặc trưng cơ bản là vị trí (x, y) của điểm ảnh và độ xám của
nó. Dưới đây chúng ta xem xét một số khái niệm và thuật ngữ thường dùng trong XLA.


Định nghĩa: Mức xám của điểm ảnh là cường độ sáng của nó được gán bằng giá
trị số tại điểm đó.

Các thang mức xám thông thường: 16,32,64,128, 256 (Mức 256 là mức phổ dụng.
Lý do: từ kỹ thuật máy tính dùng 1 byte (8bit) để biểu diễn mức xám: Mức xám dùng 1 byte
biểu diễn: 28 = 256, tức là từ 0 đến 255).

Ảnh đen trắng: Là ảnh có hai màu đen, trắng (không chứa mầu khác) với mức xám
ở các điểm ảnh có thể khác nhau.

Ảnh nhị phân: Ảnh chỉ có hai mức đen trắng phân biệt, tức dùng 1 bit mô tả 21
mức khác nhau. Nói cách khác: mỗi điểm ảnh của ảnh nhị phân chỉ có thể là 0 hoặc 1.

Ảnh màu: Trong khuôn khổ lý thuyết 3 màu (Red, Blue, Green) để tạo nên thế
giới màu, người ta thường dùng 3 byte để mô tả mức màu, khi đó các giá trị màu: 2 8*3 = 224 ≈
16,7 triệu màu.
 Định nghĩa ảnh số.

Bộ môn Tin học công nghiệp

13


ĐAMH Công nghệ phần mềm

GVHD Phùng Thị Thu Hiền

Ảnh số là tập hợp các điểm ảnh với mức xám phù hợp dùng để mô tả ảnh gần với ảnh thật.
2.2.1. Quan hệ giữa các điểm ảnh.
a) Các lân cận của điểm ảnh (Image Neighbors).

Giả sử có điểm ảnh p tại tọa độ (x, y) có 4 điểm lân cận gần nhất theo chiều đứng và
ngang (có thể coi như lân cận 4 hướng chính: Đông, Tây, Nam, Bắc).
{( x-1,y); (x, y-1); (x+1, y); (x, y+1)}= N4(p)
Trong đó, số 1 là giá trị logic; N4(p): tập 4 điểm lân cận của p.

Hình 6. Lân cận các điểm ảnh của tọa độ (x, y).
- Các lân cận chéo: Các điểm lân cận chéo Np(P) (Có thể coi lân cận chéo là 4 hướng:
Đông-Nam, Đông-Bắc, Tây-Nam, Tây-Bắc)
Np(P) = {(x+1,y+1); (x+1, y-1); (x-1, y+1); (x-1, y-1)}
- Tập kết hợp: N8(p) = N4(p) + Np(p) là tập hợp 8 lân cận của điểm ảnh p.
- Chú ý: Nếu (x, y) nằm ở biên (mép) ảnh; một số điểm sẽ nằm ngoài ảnh.
b) Các mối liên kết điểm ảnh.
Các mối liên kết được xác định để xác định giới hạn (Boundaries) của đối tượng vật thể
hoặc xác định vùng trong một ảnh. Một liên kết được đặc trưng bởi tính liền kề giữa các điểm
và mức xám của chúng.
Giả sử V là tập các giá trị mức xám. Một ảnh có các giá trị cường độ sáng từ thang mức
xám từ 32 đến 64 được mô tả như sau:
V = {32, 33, 34, …, 63, 64}
Có 3 loại liên kết.
- Liên kết 4: Hai điểm ảnh p và q được nói là liên kết 4 với các giá trị cường độ sáng V
nếu q nằm trong một các lân cận của p, tức p thuộc N4(p).
- Liên kết 8: Hai điểm ảnh p và q nằm trong một các lân cận của p, tức q thuộc N8(p).
- Liên kết m (liên kết hỗn hợp): Hai điểm ảnh p và q với các giá trị cường độ sáng V được
nói là liên kết m nếu:
1. q thuộc N4(p) hoặc
2. q thuộc Np(p)
c) Đo khoảng cách giữa các điểm ảnh.
Định nghĩa: Khoảng cách D(p) giữa hai điểm ảnh p tọa độ (x, y), q tọa độ (s, t) là hàm
khoảng cách (Distance) hoặc Metric nếu:


Bộ môn Tin học công nghiệp

14


ĐAMH Công nghệ phần mềm

GVHD Phùng Thị Thu Hiền

1. D(p,q) ≥ 0 (Với D(p,q) = 0 nếu và chỉ nếu p = q)
2. D(p,q) = D (p, q)
3. D(p, z) ≤ D(p,q) + D(q, z); z là một điểm ảnh khác.
Khoảng cách Euclide: Khoảng cách Euclide giữa hai điểm ảnh p(x, y) và q(s, t) được định
nghĩa như sau:
De(p,q) = [(x - s)2 + (y – t)2] 1/2
Khoảng cách khối: Khoảng cách D4(p,q) được gọi là khoảng cách khối đồ thị (City-Block
Distance) và được xác định như sau:
D4(p,q) = |x - s| + |y - t|
Giá trị khoảng cách giữa các điểm ảnh r: giá trị bán kính r giữa điểm ảnh từ tâm điểm ảnh
đến tâm điểm ảnh q khác. Ví dụ: Màn hình CGA 12’’ (12’’*2,54cm = 30,48cm = 304,8mm) độ
phân giải 320*200; tỷ lệ 4/3 (chiều dài/chiều rộng). Theo định lý Pitago về tam giác vuông,
đường chéo sẽ láy tỷ lệ 5 phần (5/4/3: đường chéo/chiều dài/chiều rộng màn hình); khi đó độ dài
thật là (305/244/183) chiều rộng màn hình 183mm ứng với màn hình CGA 200 điểm ảnh theo
chiều dọc. Như vậy, khoảng cách điểm ảnh lân cận của CGA 12’’ là ≈ 1mm.
Khoảng cách D8(p,q) còn gọi là khoảng cách bàn cờ (Chess-Board Distance) giữa điểm
ảnh p, q được xác định như sau: D8(p,q) = max (|x – s|, |y – t|).
TỔNG KẾT CHƯƠNG
Các kiến thức cần nắm được:
- Khái niệm xử lý ảnh: Quá trình XLA được xem như là quá trình thao tác ảnh đầu
vào nhằm cho ra kết quả mong muốn. Kết quả đầu ra của một quá trình XLA có thể

là một ảnh “tốt hơn” hoặc một kết luận.
- Các bước cơ bản trong một hệ thống XLA.
o Phần thu nhận ảnh (Image Acquisition).
o Tiền xử lý (Image Processing).
o Phân đoạn (Segmentation).
o Biểu diễn ảnh (Image Representation).
o Nhận dạng ảnh và nội suy ảnh (Image Recognition and Interpretaion).
o Cơ sở tri thức (Knowledge Base).
o Mô tả (biểu diễn ảnh).
- Các khái niệm cơ bản trong XLA:
o Điểm ảnh.
o Độ phân giải của ảnh.
o Mức xám của ảnh.
o Ảnh số.
- Quan hệ giữa các điểm ảnh.
o Các lân cận của điểm ảnh (Image Neighbors).
o Các mối liên kết điểm ảnh.
o Đo khoảng cách giữa các điểm ảnh.

Bộ môn Tin học công nghiệp

15


ĐAMH Công nghệ phần mềm

GVHD Phùng Thị Thu Hiền

CHƯƠNG 3: LÀM QUEN VỚI THƯ VIỆN OPEN CV
 Giới thiệu về OpenCV.

 Hướng dẫn cách sử dụng.
 Tổng kết chương.
3.1 Giới thiệu về OpenCV.[5]
3.1.1 OpenCV là gì?
OpenCv (Open Source Computer Vision) là một thư viện mã nguồn mở về thị giác máy
với hơn 500 hàm và hơn 2500 các thuật toán đã được tối ưu về XLA, và các vấn đề liên quan tới
thị giác máy. OpenCv được thiết kế một cách tối ưu, sử dụng tối đa mạnh của các dòng chip đa
lõi… để thực hiện các phép tính toán trong thời gian thực, nghĩa là tốc độ đáp ứng của nó thể đủ
nhanh cho các ứng dụng thông thường.
OpenCv là thư viện được thiết kế để chạy trên nhiều nền tảng khác nhau (cross-platform),
nghĩa là nó có thể chạy trên hệ điều hành Window, Linux, Mac, iOS… Việc sử dụng thư viện
OpenCv tuân theo các quy định về sử dụng phần mềm mã nguồn mở BSD do đó bạn có thể sử
dụng thư viện này một cách miễn phí cho các mục đích phi thương mại lẫn thương mại.
Dự án về OpenCv được khởi động từ những năm 1999, đến năm 2000 nó được giới thiệu
trong một hội nghị của IEEE về các vấn đề trong thị giác máy và nhận dạng, tuy nhiên bản
OpenCV 1.0 mãi tới tận năm 2006 mới chính thức được công bố và năm 2008 bản 1.1 (prerelease) mới được ra đời. Tháng 10 năm 2009, bản OpenCV thế hệ thứ hai ra đời (thường gọi là
phiên bản 2.x), phiên bản này có giao diện của C++ (khác với phiên bản trước có giao diện của
C) và có nhiều điểm khác biệt so với phiên bản thứ nhất.
Thư viện OpenCV ban đầu được sự hỗ trợ từ Intel, sau đó được hỗ trợ bởi Willow Garage,
một phòng thí nghiệm chuyên nghiên cứu về công nghệ robot. Cho đến nay, OpenCV vẫn là thư
viện mở, được phát triển bởi nguồn quỹ không lợi nhuận (none-profit foundation) và được sự
hưởng ứng rất lớn của cộng đồng.
3.1.2. Cấu trúc tổng quan..[8]
Cấu trúc tổng quan của OpenCv bao gồm 5 phần chính. Hình vẽ dưới đây, mô tả 4 trong 5
thành phần đó.

Bộ môn Tin học công nghiệp

16



ĐAMH Công nghệ phần mềm

GVHD Phùng Thị Thu Hiền

Hình 7. Các thành phần của thư viện OpenCV.
Phần CV bao gồm các thư viện cơ bản về XLA và các giải thuật về thị giác máy tính. MLL
là bộ thư viện về các thuật toán học máy, bao gồm rất nhiều bộ phân cụm và phân loại thống kê.
HighGUI chứa đựng những thủ tục vào ra, các chức năng về lưu trữ cũng như đọc các file ảnh
và video. Phần thứ 4, Cxcore chứa đựng các cấu trúc dữ liệu cơ bản (ví dụ như cấu trúc XML,
các cây dữ liệu…). Phần cuối cùng là CvAux, phần này bao gồm cá thư viện cho việc phát hiện,
theo dõi và nhận dạng đối tượng (khuôn mặt, mắt…).
3.2. Hướng dẫn sử dụng các thư viện của OpenCV.
Để sử dụng các thư viện của OpenCV, có thể tải về một bản cài đặt OpenCV bằng cách
truy cập địa chỉ: để tải về phiên bản mới nhất. Sau
khi tải về, tiến hành cài đặt bình thường, với thư mục mặc định là C:\Emgu. Sau đó, cần tiến
hành tùy chỉnh để có thể làm việc với OpenCV qua hai IDE thông dụng là Microsoft Visual
Studio hoặc Eclipse CDT. Tuy nhiên, việc tùy chỉnh này có thể gây khó khăn cho một số người
mới bắt đầu, vì vậy, ở đây trình bày một cách khác để có thể sử dụng các thư viện của OpenCV.
Đó chính là sử dụng gói phần mềm EmguCV.
EmguCV là một gói bao bên ngoài (wrapper) thư viện xử lý ảnh OpenCV của Intel, cho
phép lập trình viên có thể gọi các hàm của OpenCV từ trong các ngôn ngữ .NET C#, VB,
IronPython… Gói này có thể được biên dịch trong Mono và chạy trên Linux / Mac OS X.
Việc sử dụng và lập trình với EmguCV cũng rất đơn giản, chỉ cần thêm các file DLL trong
thư mục cài đặt của EmguCV vào chương trình C# thì có thể gọi tất cả các thuộc tính của
EmguCV.

Bộ môn Tin học công nghiệp

17



ĐAMH Công nghệ phần mềm

GVHD Phùng Thị Thu Hiền

 Cấu trúc của EmguCV gồm hai lớp cơ bản:
o Lớp thứ nhất là các cấu trúc, thuộc tính, và các hàm dùng để xử lý hình ảnh, lấy ảnh…
o Lớp thứ hai là lớp cấp cao, với nhiều tính chất phức tạp dùng để nhận dạng hay xử lý
các ma trận, điểm ảnh…

Hình 8. Cấu trúc tổng quát của EmguCV.
Truy cập địa chỉ:
/>hoặc
/>để tải về bản cài đặt của EmguCV.

Bộ môn Tin học công nghiệp

18


ĐAMH Công nghệ phần mềm

GVHD Phùng Thị Thu Hiền

a) Hướng dẫn cài đặt EmguCV.[6]
Bước 1: Cài đặt EmguCV 2.4.9
- Tải phiên bản EmguCV 2.4.9. Cài đặt vào thư mục mặc định tại: C:\ không nên thay
đổi đường dẫn, sử dụng đường dẫn mặc định. “C:\Emgu\emgucv-windowsuniversal-gpu2.4.9.1847”.


-

Chọn tất cả các tùy chọn để cài đặt đầy đủ gói.

Bộ môn Tin học công nghiệp

19


ĐAMH Công nghệ phần mềm

GVHD Phùng Thị Thu Hiền

Bước 2: Thiết lập biến môi trường.

- Thiết lập 3 đường dẫn sau trong biến người dùng và hệ thống.
o C:\Emgu\emgucv-windows-universal-gpu 2.4.9.1847\bin;
o C:\Emgu\emgucv-windows-universal-gpu 2.4.9.1847\bin\x64;
o C:\Emgu\emgucv-windows-universal-gpu 2.4.9.1847\bin\x86;
Bước 3: Cấu Hình Visual Studio 2010 (Tương tự với bản 2013).
1. Tạo một project Window Application mới, đặt tên là “Two Layer”.
2. Trong Solution Explorer, click phải chuột vào References, chọn Add Reference…

Bộ môn Tin học công nghiệp

20


ĐAMH Công nghệ phần mềm


GVHD Phùng Thị Thu Hiền

3. Chọn tab Browser, duyệt tới thư mục: “C:\Emgu\emgucv-windows-universalgpu2.4.9.1847\bin”. Chọn 3 file: “Emgu.CV.dll”,”Emgu.CV.UI.dll”,”Emgu.Util.dll”
Sau đó click vào OK.

4.

Các tham chiếu hiển thị trong Solution Explorer.

Bộ môn Tin học công nghiệp

21


ĐAMH Công nghệ phần mềm

GVHD Phùng Thị Thu Hiền

5. Tiếp theo, khai báo các thư viện OpenCV mà chúng ta sử dụng trong mỗi class:
using
Emgu.CV;
using
Emgu.CV.Structure;
using Emgu.Util;
Sau khi thực hiện 5 bước trên, chúng ta có thể sử dụng các thư viện của OpenCv để lập
trình.
b) Thêm Control của EmguCV vào Toolbox.
Trong Toolbox, click phải chuột vào tab bất kì, chọn Add Tab, gõ tên EmguCV > Enter.
Click chuột phải lên tab EmguCV vừa tạo, chọn Choose Items…, sau khi hộp thoại hiển
thị, chọn tab .NET Framework Components. Click vào nút Browse, duyệt đến thư mục:

C:\Emgu\emgucv-windows-universal-gpu 2.4.9.1847\bin
Chọn tệp tin Emgu.CV.UI.dll. Nhấn Open. Trong ô Filter, gõ Emgu. Danh sách các
control của thư viện OpenCV sẽ hiển thị ra, chọn tất cả rồi nhấn OK.
Sử dụng Control:
Chọn tab EmguCV vừa tạo, chọn control cần sử dụng, kéo thả vào form. Đặt thuộc tính
Name và set Text cho control, rồi sử dụng bình thường như các control khác.

Bộ môn Tin học công nghiệp

22


ĐAMH Công nghệ phần mềm

GVHD Phùng Thị Thu Hiền

c) Một số ví dụ.
Khai báo biến chứa ảnh:
private Image<Bgr, Byte> MyImage;
Image là một lớp ảnh trong thư viện OpenCV, trong đó Color (Bgr) là hệ màu, Depth
(Byte) là độ sâu màu.
Dòng bên trên nghĩa là khai báo đối tượng MyImage, là một đối tượng thuộc lớp ảnh, có hệ
màu là RGN (red, green, blue) và độ sâu màu là Byte, tức là giá trị mỗi pixel nằm trong đoạn [0,
255].
Đối với ảnh xám (grayscale), ta khai báo như sau:
private Image<Gray, Byte> MyImage;
Trong đó giá trị mỗi pixel là độ sáng tại pixel đó, với 0 là tối (đen), và 255 là sáng nhất
(trắng).
Viết code cho sự kiện bấm nút sẽ hiển thị hộp thoại chọn ảnh, sau đó hiển thị ảnh vừa
chọn được lên ImageBox:

private void btnLoadImage_Click(object sender, EventArgs e)
{
// khai báo đối tượng OpenFileDialog để chuẩn bị mở hộp thoại //duyệt
file
OpenFileDialog OpenFile = new OpenFileDialog();
// khi hộp thoại hiển thị, nếu người dùng bấm OK
// thì nạp file ảnh lên control pictureBox1
if (OpenFile.ShowDialog() == DialogResult.OK)
{
// gán file hình do người dùng chọn cho biến MyImage
ImageByte>
MyImage
=
new
ImageByte>(OpenFile.FileName);
// hiển thị ảnh lên control pictureBox1
pictureBox1.Image = MyImage.ToBitmap();
}
}

Bộ môn Tin học công nghiệp

23


ĐAMH Công nghệ phần mềm

GVHD Phùng Thị Thu Hiền

 TỔNG KẾT CHƯƠNG 3

Nội dung chương 3 bao gồm các nội dung chính như sau:
- Giới thiệu về bộ thư viện xử lý ảnh-OpenCv.
- Giới thiệu, hướng dẫn cách cài đặt, sử dụng phần mềm EmguCv-là một phần mềm hỗ trợ
giúp người dùng có thể sủ dụng bộ thư viện OpenCV một cách dễ dàng.
- Hướng dẫn cách sử dụng bộ thư viện OpenCv trong Visual Studio (với hình minh họa là
Visual Studio 2010).
- Hướng dẫn cách lấy các Control của thư viện OpenCv thêm vào Toolbox.
- Một số đoạn code ví dụ, sử dụng thư viện OpenCv trong chương trình.

Bộ môn Tin học công nghiệp

24


×