slide_xu_ly_anh
DESCRIPTION
Slide xử lý ảnhTRANSCRIPT
![Page 1: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/1.jpg)
1
Khóa học
Lập trình xử lý ảnh trên nền nhúngGV: Phạm Văn Thuận, Phạm Ngọc Hưng, Hoàng Văn Hiệp
Bộ môn Kỹ thuật Máy tính
Viện CNTT&TT- ĐH BKHN
![Page 2: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/2.jpg)
Lập trình xử lý ảnh trên nền nhúng 2
Mục tiêu khóa học
Sau khi kết thúc môn học này, sinh viên có thể
• Trình bày mô hình hệ thống xử lý ảnh
• Nắm vững các kỹ thuật cơ bản về xử lý ảnh
• Cài đặt được các thuật toán xử lý ảnh trên môi trường nhúng ARM trên Linux sử dụng thư viện mã nguồn mở OpenCV và nền tảng QT Framework
• Có cách tiếp cận tốt cho các bài toán ứng dụng xử lý ảnh trong thực tiễn cuộc sống và sản xuất
![Page 3: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/3.jpg)
Lập trình xử lý ảnh trên nền nhúng
Nội dung khóa học
3
Bài 1. Tổng quan về xử lý ảnh và ứng dụng
Bài 2. Lập trình xử lý ảnh trên KIT nhúng micro2440
Bài 3. Các phép biến đổi cơ bản trên ảnh
Bài 4. Lập trình ứng dụng bộ lọc số
Bài 5. Trích chọn đặc trưng của ảnh
Bài 6. Lập trình nhận dạng khuôn mặt
Bài 7. Lập trình nhận dạng mã Auto ID
Bài 8. Các kỹ thuật nâng cao tốc độ xử lý ảnh
![Page 4: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/4.jpg)
Lập trình xử lý ảnh trên nền nhúng 4
Tài liệu tham khảo
Tài liệu tham khảo chính:
• Micro2440 User Manual
• Beginning Linux Programming
• Advanced Linux Programming
• C++ GUI programming with QT
• Learning OpenCV
• Website:
http://homepages.inf.ed.ac.uk/rbf/HIPR2/
![Page 5: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/5.jpg)
Lập trình xử lý ảnh trên nền nhúng5
Bài số 1
Tổng quan
Xử lý ảnh và ứng dụng
Model
Ứng dụng
QT & OpenCV
![Page 6: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/6.jpg)
Lập trình xử lý ảnh trên nền nhúng6
Mục tiêu bài học số 1
Sau khi kết thúc bài học này, sinh viên có thể
• Trình bày được các khái niệm cơ bản về xử lý
ảnh và ứng dụng
• Trình bày mô hình tổng quát hệ thống thu nhận
và xử lý ảnh
• Trình bày được các thành phần cơ bản của thư
viện OpenCV và nền tảng QT
![Page 7: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/7.jpg)
Lập trình xử lý ảnh trên nền nhúng7
Nội dung bài học
1.1. Tổng quan về xử lý ảnh
1.2. Giới thiệu nền tảng QT và thư viện OpenCV
![Page 8: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/8.jpg)
Lập trình xử lý ảnh trên nền nhúng
1.1. Tổng quan xử lý ảnh
Khái niệm xử lý ảnh
• Nâng cao chất lượng hình ảnh theo một tiêu chí
nào đó (Cảm nhận của con người)
• Phân tích ảnh để thu được các thông tin đặc
trưng giúp cho việc phân loại ảnh (image
classification), nhận dạng ảnh (image
recognition).
• Hiểu ảnh đầu vào để có những mô tả về ảnh ở
mức cao hơn, sâu hơn.
![Page 9: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/9.jpg)
Lập trình xử lý ảnh trên nền nhúng
Mô hình hệ thống xử lý ảnh
Camera
Sensor
Thu nhận
ảnhSố hóa
Phân tích
ảnh
Đối sánh
Nhận dạng
Hệ
quyết địnhLưu trữ
Lưu trữ
![Page 10: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/10.jpg)
Lập trình xử lý ảnh trên nền nhúng
Các bài toán xử lý ảnh
Image
Acquisition
Image
EnhancementImage
Restoration
Image
Compression
Image
Segmentation
Representation
& Description
Recognition &
Interpretation
Knowledge Base
Các kỹ thuật tiền xử lý-mức thấp
Image
Coding
Morphological
Image Processing
Wavelet
Analysis
Xử lý mức cao
![Page 11: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/11.jpg)
Lập trình xử lý ảnh trên nền nhúng
Các bài toán xử lý ảnh
• Thu nhận ảnh, số hóa ảnh (image aquisition)
– Hệ thống chụp ảnh, tín hiệu ảnh
– Hệ thống số hóa ảnh: Các phương pháp lấy mẫu,
lượng tử hóa
• Cải thiện ảnh, khôi phục ảnh, lọc nhiễu (tiền
xử lý – image pre-processing)
– Các phép xử lý điểm ảnh
– Các phép xử lý trên miền không gian
– Các phép xử lý trên miền tần số
1
1
![Page 12: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/12.jpg)
Lập trình xử lý ảnh trên nền nhúng
Các bài toán xử lý ảnh
• Phân tích ảnh
– Trích chọn đặc trưng (feature extraction)
– Biểu diễn, mô tả ảnh (image representation,
image description)
– Phân lớp ảnh (image classification)
– Nhận dạng ảnh (image recognition)
– …
• Mã hóa, nén ảnh
– Các phương pháp nén ảnh, các chuẩn nén ảnh
• Truyền thông ảnh: các kỹ thuật streaming1
2
![Page 13: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/13.jpg)
Lập trình xử lý ảnh trên nền nhúng
Ứng dụng xử lý ảnh
![Page 14: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/14.jpg)
Lập trình xử lý ảnh trên nền nhúng
Ứng dụng tăng cường chất lượng
![Page 15: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/15.jpg)
Lập trình xử lý ảnh trên nền nhúng
Hiệu ứng panorama
![Page 16: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/16.jpg)
Lập trình xử lý ảnh trên nền nhúng
Ứng dụng nhận dạng khuôn mặt
![Page 17: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/17.jpg)
Lập trình xử lý ảnh trên nền nhúng
Nhận dạng người chuyển động
![Page 18: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/18.jpg)
Lập trình xử lý ảnh trên nền nhúng
Nhận dạng đối tượng chuyển động
![Page 19: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/19.jpg)
Lập trình xử lý ảnh trên nền nhúng
Nhận dạng chữ viết tay
![Page 20: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/20.jpg)
Lập trình xử lý ảnh trên nền nhúng
Nhận dạng vân tay
![Page 21: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/21.jpg)
Lập trình xử lý ảnh trên nền nhúng
Nhận dạng mống mắt (iris)
![Page 22: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/22.jpg)
Lập trình xử lý ảnh trên nền nhúng
Mô hình hóa 3D & AR (Augmented Reality)
KINECT
![Page 23: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/23.jpg)
Lập trình xử lý ảnh trên nền nhúng
1.2. Tổng quan về QT và OpenCV
• Nền tảng QT: tương thích đa nền tảng
![Page 24: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/24.jpg)
Lập trình xử lý ảnh trên nền nhúng
Giới thiệu OpenCV
• OpenCV: Open Computer Vision Library
– Tập hợp các hàm C và một số lớp C++ giải quyết
các bài toán, thuật toán cơ bản trong xử lý ảnh
– Đa nền tảng, đã porting được trên rất nhiều nền
tảng khác nhau: Windows, Linux, Embedded
Linux, iOS, Android…
http://opencvlibrary.sourceforge.net
![Page 25: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/25.jpg)
Lập trình xử lý ảnh trên nền nhúng
Thư viện OpenCV
![Page 26: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/26.jpg)
Lập trình xử lý ảnh trên nền nhúng
Kiến trúc thư viện OpenCV
![Page 27: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/27.jpg)
Lập trình xử lý ảnh trên nền nhúng
Kiến trúc thư viện OpenCV
• CV: chứa các hàm cơ bản và nâng cao thực thi
các bài toán thị giác máy (computer vision)
• ML (Machine Learning): thư viện học máy với
các công cụ phân lớp (classifier) và phân cụm
(clustering).
• HighGUI: các hàm vào ra và các hàm lưu trữ,
nạp và hiển thị ảnh và video
• CXCore: chứa các kiểu dữ liệu cơ bản, một số
thuật toán cơ bản và các hàm vẽ, có hỗ trợ XML
![Page 28: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/28.jpg)
Lập trình xử lý ảnh trên nền nhúng28
Thảo luận
![Page 29: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/29.jpg)
Lập trình xử lý ảnh trên nền nhúng29
Bài số 2
Lập trình xử lý ảnh
Trên KIT nhúng micro2440
OpenCV
Thu nhận
Hiển thị
![Page 30: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/30.jpg)
Lập trình xử lý ảnh trên nền nhúng30
Mục tiêu bài học số 2
Sau khi kết thúc bài học này, sinh viên có thể
• Cài đặt môi trường phát triển cho QT
• Cài đặt môi trường phát triển OpenCV trên
Desktop và trên KIT nhúng
• Lập trình cơ bản với OpenCV để tiến hành thu
nhận ảnh/video từ file và webcam
![Page 31: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/31.jpg)
Lập trình xử lý ảnh trên nền nhúng31
Nội dung bài học
2.1. Cài đặt môi trường phát triển QT
2.2. Cài đặt thư viện OpenCV
2.3. Lập trình đọc và hiển thị ảnh từ file
2.4. Lập trình đọc và hiển thị video từ webcam
![Page 32: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/32.jpg)
Lập trình xử lý ảnh trên nền nhúng
2.1. Cài đặt nền tảng QT
• Bước 1: Cài đặt nền tảng QT trên máy host
(Linux Desktop)
• Bước 2: Cài đặt nền tảng QT Everywhere để
biên dịch cho ứng dụng QT trên KIT
• Chi tiết: Xem tài liệu hướng dẫn cài đặt
![Page 33: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/33.jpg)
Lập trình xử lý ảnh trên nền nhúng
2.2. Cài đặt thư viện OpenCV
• Bước 1: Cài đặt thư viện OpenCV trên máy host
(Linux Desktop)
• Bước 2: Biên dịch chéo, cài đặt thư viện
OpenCV để biên dịch cho các ứng dụng trên KIT
• Chi tiết: Xem tài liệu hướng dẫn cài đặt
![Page 34: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/34.jpg)
Lập trình xử lý ảnh trên nền nhúng
2.3. Tích hợp OpenCV và QT
• Khai báo trong file .pro của dự án QT: thêm các
dòng lệnh sau vào cuối file .pro
![Page 35: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/35.jpg)
Lập trình xử lý ảnh trên nền nhúng
Tích hợp OpenCV và QT
• Khai báo các thư viện sẽ được sử dụng: để ứng
dụng linh hoạt, tạo file global.h chứa include tới
các thư viện của OpenCV
![Page 36: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/36.jpg)
Lập trình xử lý ảnh trên nền nhúng36
2.4. Lập trình đọc ảnh và hiển thị
• Các kiểu dữ liệu cơ bản trong OpenCV
cvArr
cvMat
IplImage
CvCapture
![Page 37: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/37.jpg)
Lập trình xử lý ảnh trên nền nhúng
Đọc ảnh và hiển thị
Hàm đọc ảnh: cvLoadImage
• Tham số đầu vào: đường dẫn tới file ảnh
• Tham số đầu ra: dữ liệu ảnh lưu theo kiểu dữ liệu
con trỏ của IplImage
Ví dụ:
IplImage* img = cvLoadImage("/home/oto.jpeg" );
![Page 38: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/38.jpg)
Lập trình xử lý ảnh trên nền nhúng
2.5. Lập trình kết nối webcam
• Hàm mở webcam:
CvCapture* capture=cvCreateCameraCapture(0)
• Hàm mở file video:
![Page 39: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/39.jpg)
Lập trình xử lý ảnh trên nền nhúng 39
Lập trình kết nối Webcam
Bước 1: mở kết nối với Camera mặc định
CvCapture* camera = cvCreateCameraCapture(0);
Bước 2: lấy về từng Frame ảnh của camera
IplImage* preImage=cvQueryFrame(camera);
Bước 3: giải phóng đối tượng camera
cvReleaseCapture(&camera);
![Page 40: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/40.jpg)
Lập trình xử lý ảnh trên nền nhúng
Demo
![Page 41: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/41.jpg)
Lập trình xử lý ảnh trên nền nhúng
Demo hiển thị file ảnh
![Page 42: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/42.jpg)
Lập trình xử lý ảnh trên nền nhúng
Demo kết nối camera
![Page 43: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/43.jpg)
Lập trình xử lý ảnh trên nền nhúng43
Thảo luận
![Page 44: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/44.jpg)
Lập trình xử lý ảnh trên nền nhúng44
Bài số 3
Các phép biến đổi cơ bản
![Page 45: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/45.jpg)
Lập trình xử lý ảnh trên nền nhúng45
Mục tiêu bài học số 3
Sau khi kết thúc bài học này, sinh viên có thể
• Trình bày được các bước chuyển đổi ảnh từ ảnh
màu sang ảnh đa mức xám và ảnh nhị phân
• Cách thức xây dựng và ứng dụng của biều đồ
phân bố mức xám của ảnh
• Ứng dụng cân bằng độ tương phản cho ảnh
![Page 46: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/46.jpg)
Lập trình xử lý ảnh trên nền nhúng46
Nội dung bài học
3.1. Tìm hiểu cách thức biểu diễn ảnh
3.2. Biến đổi ảnh màu sang ảnh đa mức xám
3.3. Xây dựng phân bố Histogram của ảnh
3.4. Lập trình dãn độ tương phản
3.5. Lập trình cân bằng độ tương phản
3.6. Biến đổi ảnh đa mức xám sang ảnh nhị phân
![Page 47: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/47.jpg)
Lập trình xử lý ảnh trên nền nhúng
3.1. Cách thức biểu diễn ảnh
• Khái niệm ảnh số: là ảnh thu được từ ảnh liên
tục bằng phép lấy mẫu và lượng tử hóa
pixel
Gray level
Original picture Digital image
f(x, y) I[i, j] or I[x, y]
x
y
![Page 48: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/48.jpg)
Lập trình xử lý ảnh trên nền nhúng
Ảnh số
• Một ảnh số thường được biểu diễn như một ma
trận các điểm ảnh
• Trong đó mỗi điểm ảnh có thể được biểu diễn
bằng
– 1 bit (ảnh nhị phân)
– 8 bit (ảnh đa mức xám)
– 16, 24 bit (ảnh màu)
![Page 49: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/49.jpg)
Lập trình xử lý ảnh trên nền nhúng
Cách thức biểu diễn ảnh
Ảnh màu (Color image)
• Chứa thông tin màu của ảnh
• Không gian màu thường sử dụng: RGB, CMYK
• Ảnh RGB 3 kênh màu, mỗi kênh sử dụng 8 bit
Ảnh đa mức xám (Grayscale image)
• Ảnh đa mức xám là ảnh có sự chuyển dần mức xám từ
trắng sang đen.
• Sử dụng 8 bit để biểu diễn mức xám
Ảnh nhị phân (Binary image)
• Chỉ có hai màu đen, trắng (tương đương giá trị 1,0)
49
![Page 50: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/50.jpg)
Lập trình xử lý ảnh trên nền nhúng
3.2. Chuyển ảnh màu -> đa mức xám
Sử dụng công thức:
Gray scale= 0.2989*R+ 0.5870*G + 0.1140*B;
50
![Page 51: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/51.jpg)
Lập trình xử lý ảnh trên nền nhúng
Chuyển ảnh màu -> đa mức xám
Hàm chuyển ảnh màu sang ảnh đa mức xám:
• Bước 1: Tạo 1 ảnh trắng (chưa có dữ liệu) định dạng ảnh
đa mức xám
IplImage *grayimage = cvCreateImage( cvSize( colorimg-
>width, colorimg->height ), IPL_DEPTH_8U, 1 );
• Bước 2: Chuyển đổi ảnh màu sang đa mức xám
cvCvtColor( img, grayimage, CV_RGB2GRAY );
51
![Page 52: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/52.jpg)
Lập trình xử lý ảnh trên nền nhúng
Demo chuyển sang ảnh đa mức xám
![Page 53: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/53.jpg)
Lập trình xử lý ảnh trên nền nhúng
3.3. Histogram
Biều đồ này đơn giản cho chúng ta biết số điểm
ảnh (pixel) trong một ảnh đa mức xám có một
giá trị mức xám tương ứng.
Thông số: số bins (=256 với ảnh đa mức xám)
53
![Page 54: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/54.jpg)
Lập trình xử lý ảnh trên nền nhúng
Histogram
Ảnh tối
54
![Page 55: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/55.jpg)
Lập trình xử lý ảnh trên nền nhúng
Histogram
Ảnh sáng
55
![Page 56: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/56.jpg)
Lập trình xử lý ảnh trên nền nhúng
Hàm tính Histogram
• Cấu trúc CvHistogram: lưu các thông tin về phân
bố Histogram của ảnh
![Page 57: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/57.jpg)
Lập trình xử lý ảnh trên nền nhúng
Hàm tính Histogram
• Bước 1: Sử dụng hàm cvCreateHist khởi tạo
cấu trúc CvHistogram để chuẩn bị chứa kết quả
– Dims: số chiều của Histogram
– Sizes: số lượng bins
– Type: định dạng dữ liệu (thường sử dụng
CV_HIST_ARRAY)
– Ranges: Dải các khoảng giá trị để tính Histogram
![Page 58: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/58.jpg)
Lập trình xử lý ảnh trên nền nhúng
Hàm tính Histogram
• Bước 2: Tính Histogram sử dụng hàm
cvCalcHist
– Image: Ảnh cần tính Histogram
– Hist: lưu kết quả tính Histogram
– Accumulate: tùy chọn tích lũy, cho phép tính
Histogram từ nhiều ảnh
– Mask: xác định phạm vi các pixel sẽ được sử
dụng để tính Histogram, mặc định tính toàn ảnh
![Page 59: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/59.jpg)
Lập trình xử lý ảnh trên nền nhúng
Hàm tính Histogram
• Bước 3: Vẽ phân bố Histogram
• Bước 4: Giải phóng bộ nhớ sử dụng hàm
cvClearHist
![Page 60: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/60.jpg)
Lập trình xử lý ảnh trên nền nhúng
Demo tính Histogram của ảnh
![Page 61: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/61.jpg)
Lập trình xử lý ảnh trên nền nhúng
3.4. Dãn độ tương phản
Đây là một kỹ thuật tăng cường chất lượng ảnh
thông dụng, nó có tác dụng làm tăng độ tương phản
của ảnh bằng cách giãn dải gía trị mức xám của
ảnh. Các bước thực hiện
• Tìm ra giới hạn mức xám nhỏ nhất (a) và lớn nhất (b)
của ảnh. Với ảnh đa mức xám thường a=0 và b=255.
• Tìm giá trị mức xám nhỏ nhất (c) và lớn nhất (d) trong
các điểm ảnh
• Xác định giá trị mức xám mới theo công thức
61
![Page 62: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/62.jpg)
Lập trình xử lý ảnh trên nền nhúng
Dãn độ tương phản
62
Ảnh trước và sau khi tiến hành dãn độ tương phản
![Page 63: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/63.jpg)
Lập trình xử lý ảnh trên nền nhúng
3.5. Cân bằng Histogram
Cân bằng histogram là một phương pháp thay đổi
độ tương phản của ảnh bằng cách thay đổi lược đồ
phân bố mức xám của chúng.
Mục đích làm thay đổi biểu đồ phân bố mức xám từ
phân bố ban đầu sang sự phân bố hướng tới đều.
Tác dụng nhằm phát hiện những đối tượng bi che
khuất trong ảnh ban đầu. Phép biến đổi này rất có ý
nghĩa đối với những bức ảnh chụp trong bóng đêm,
đối tượng thường bị mờ, hay bị che khuất bởi bóng
tối, áp dụng cân bằng histogram có thể làm nổi rõ
đối tượng hơn.
63
![Page 64: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/64.jpg)
Lập trình xử lý ảnh trên nền nhúng
Cân bằng Histogram
Công thức thực hiện:
bk = (bmax – bmin)
Trong đó bmin, bmax là những giá trị được chọn, pi là
xác suất xuất hiện giá trị mức xám i trong ảnh ban
đầu, với i [amin, amax]
64
![Page 65: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/65.jpg)
Lập trình xử lý ảnh trên nền nhúng
Hàm cân bằng Histogram
• Sử dụng hàm cvEqualizeHist
– Src: ma trận ảnh gốc
– Dst: ma trận ảnh sau khi đã cân bằng Histogram
![Page 66: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/66.jpg)
Lập trình xử lý ảnh trên nền nhúng
Demo cân bằng Histogram
![Page 67: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/67.jpg)
Lập trình xử lý ảnh trên nền nhúng
3.6. Chuyển sang ảnh nhị phân
Chuyển đổi dựa trên phân ngưỡng
• Phân ngưỡng cố định (fixed threshold): sử dụng
khi Histogram phân bố rõ ràng hai vùng sáng, tối
với hai đỉnh rõ rệt
67
![Page 68: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/68.jpg)
Lập trình xử lý ảnh trên nền nhúng
Chuyển sang ảnh nhị phân
Phân ngưỡng thích nghi (adaptive threshold)
• Trong trường hợp lược đồ mức xám của ảnh có tới >=3
đỉnh chóp, ví dụ trong ảnh dưới đây tương ứng với số
điểm ảnh có giá trị mức xám tương ứng là 50, 110 và 180.
68
![Page 69: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/69.jpg)
Lập trình xử lý ảnh trên nền nhúng
Chuyển sang ảnh nhị phân
Phân ngưỡng thích nghi:
• Sử dụng ngưỡng động cho các điểm ảnh khác
nhau
• Kỹ thuật này cho phép chúng ta có thể điều tiết,
thích nghi với sự thay đổi về điều kiện sáng của
ảnh ví dụ như ảnh có sử dụng các hiệu ứng rọi
sáng (illumination) hay đổ bóng(shadow).
69
![Page 70: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/70.jpg)
Lập trình xử lý ảnh trên nền nhúng
Chuyển sang ảnh nhị phân
70
Kết quả
(Sử dụng ngưỡng cứng)
Kết quả
(Sử dụng ngưỡng thích nghi)
![Page 71: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/71.jpg)
Lập trình xử lý ảnh trên nền nhúng
Hàm chuyển sang ảnh nhị phân
• Phân ngưỡng cứng
– Src: Ảnh ban đầu, dst: ảnh kết quả
– Threshold: ngưỡng được chọn
– maxValue: giá trị lớn nhất
– thresholdType: kiểu phân ngưỡng
![Page 72: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/72.jpg)
Lập trình xử lý ảnh trên nền nhúng
Hàm chuyển sang ảnh nhị phân
• Phân ngưỡng thích nghi
– Src: ảnh ban đầu, dst: ảnh kết quả
– maxValue: giá trị lớn nhất
– adaptiveMethod: phương pháp tính ngưỡng thích
nghi (CV_ADAPTIVE_THRESH_MEAN_C hay
CV_ADAPTIVE_THRESH_GAUSSIAN_C)
![Page 73: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/73.jpg)
Lập trình xử lý ảnh trên nền nhúng
Demo chuyển sang ảnh nhị phân
![Page 74: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/74.jpg)
Lập trình xử lý ảnh trên nền nhúng74
Thảo luận
![Page 75: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/75.jpg)
Lập trình xử lý ảnh trên nền nhúng75
Bài số 4
Lập trình ứng dụng bộ lọc số
![Page 76: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/76.jpg)
Lập trình xử lý ảnh trên nền nhúng76
Mục tiêu bài học số 4
Sau khi kết thúc bài học này, sinh viên có thể
• Trình bày được các khái niệm căn bản về lọc số
và ứng dụng của bộ lọc số trong xử lý ảnh
• Lập trình một số kỹ thuật cơ bản trong xử lý ảnh
ứng dụng các bộ lọc trung bình, trung vị,
Gaussian
![Page 77: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/77.jpg)
Lập trình xử lý ảnh trên nền nhúng
Nội dung bài 4
4.1. Tổng quan về lọc số
4.2. Bộ lọc trung bình
4.3. Bộ lọc trung vị
4.4. Bộ lọc Gaussian
4.5. Các phép xử lý hình thể (morphology)
4.6. Dò tìm đường thẳng
![Page 78: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/78.jpg)
Lập trình xử lý ảnh trên nền nhúng
4.1. Tổng quan về lọc số
![Page 79: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/79.jpg)
Lập trình xử lý ảnh trên nền nhúng
Công thức nhân chập (convolution)
• Công thức nhân chập
• Trong đó
– X(m,n) là ma trận ban đầu của ảnh kích thước
mxn
– H(k,l) là ma trận hạt nhân của phép nhân chập
hay còn gọi là mặt nạ
– Y(m,n) là ma trận đầu ra của phép nhân chập
giữa X và H
( , ) ( , )* ( , ) ( , ) ( , )r r
k r l r
Y m n X m n H k l X m k n l H k l
![Page 80: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/80.jpg)
Lập trình xử lý ảnh trên nền nhúng
Hàm tính nhân chập của OpenCV
• Src: ảnh gốc, dst: kết quả
• Kernel: mặt nạ nhân chập
• Anchor: điểm neo, điểm mốc để đặt mặt nạ nhân
chập
![Page 81: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/81.jpg)
Lập trình xử lý ảnh trên nền nhúng
4.2. Bộ lọc trung bình
Ý tưởng bộ lọc trung bình: thay thế giá trị tại mỗi
pixel bằng trung bình các giá trị pixel trong mặt
nạ lân cận
• loại bỏ những pixel biến đổi lớn so với lân cận
(nhiễu)
• những pixel nằm trên biên cũng có sự biến đổi
lớn so với lân cận làm mờ
![Page 82: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/82.jpg)
Lập trình xử lý ảnh trên nền nhúng
Bộ lọc trung bình
• Lọc trung bình với mặt nạ (kernel) kích thước
3x3
![Page 83: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/83.jpg)
Lập trình xử lý ảnh trên nền nhúng
Kết quả bộ lọc trung bình
• Kết quả bộ lọc trung bình sử dụng nhiều kích
thước mặt nạ khác nhau
![Page 84: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/84.jpg)
Lập trình xử lý ảnh trên nền nhúng
Thực thi bộ lọc trung bình
• Sử dụng hàm cvSmooth với tham số smoothtype
là CV_BLUR
– Src: ảnh gốc, dst: kết quả
– Param1, param2, param3, param4: các tham số
tùy thuộc vào bộ lọc
– Param1 và param 2 quy định kích thước mặt nạ
nhân chập
![Page 85: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/85.jpg)
Lập trình xử lý ảnh trên nền nhúng
4.3. Bộ lọc trung vị
• Lọc trung vị cho kết quả tốt hơn và cho phép giữ lại
nhiều chi tiết hữu ích trên ảnh hơn so với lọc trung
bình. Để thực hiện lọc trung vị, chúng ta cũng dùng
một cửa sổ như lọc trung bình nhưng thay vì đơn
giản thay thế giá trị mức xám hiện tại với trung bình
giá trị mức xám của các điểm lân cận bao bởi cửa
sổ, chúng ta phải thực hiện các bước như sau:
– Sắp xếp tất cả các giá trị mức xám trong phạm vi cửa sổ
thành một chuỗi.
– Thay thế giá trị mức xám của điểm đang xét với giá trị
mức xám ở giữa. Ví dụ :
![Page 86: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/86.jpg)
Lập trình xử lý ảnh trên nền nhúng
Lọc trung vị
• Xét vùng ảnh 5x5 và sử dụng mặt nạ 3x3
• Bước 1: Sắp xếp các giá trị trong mặt nạ
90, 111, 120, 123, 132, 142, 137, 179, 198
• Bước 2: Lựa chọn giá trị mới thay thế cho giá trị 90, ở đây là
132
![Page 87: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/87.jpg)
Lập trình xử lý ảnh trên nền nhúng
Lọc trung vị
![Page 88: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/88.jpg)
Lập trình xử lý ảnh trên nền nhúng
Thực thi bộ lọc trung vị
• Sử dụng hàm cvSmooth với tham số smoothtype
là CV_MEDIAN
– Src: ảnh gốc, dst: kết quả
– Param1, param2, param3, param4: các tham số
tùy thuộc vào bộ lọc
– Param1 và param 2 quy định kích thước mặt nạ
nhân chập
![Page 89: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/89.jpg)
Lập trình xử lý ảnh trên nền nhúng
4.4. Bộ lọc Gaussian
Phân bố Gaussian
Mặt nạ xấp xỉ
phân bố Gaussian
(sigma=1.0)
![Page 90: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/90.jpg)
Lập trình xử lý ảnh trên nền nhúng
Bộ lọc Gaussian
• Kết quả áp dụng bộ lọc Gaussian
![Page 91: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/91.jpg)
Lập trình xử lý ảnh trên nền nhúng
Thực thi bộ lọc GAUSSIAN
• Sử dụng hàm cvSmooth với tham số smoothtype
là CV_GAUSSIAN
– Src: ảnh gốc, dst: kết quả
– Param1, param2, param3, param4: các tham số
tùy thuộc vào bộ lọc
– Param1 và param 2 quy định kích thước mặt nạ
nhân chập
![Page 92: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/92.jpg)
Lập trình xử lý ảnh trên nền nhúng
4.5. Các phép xử lý hình thể
• Phép mở rộng vùng ảnh: Dilation
• Phép thu hẹp vùng ảnh: Erosion
• Phép thu nhỏ-phóng to: Opening (Thực hiện
erosion trước, Dilation sau)
• Phép phóng to-thu nhỏ: Closing (Thực hiện
Dilation trước, erosion sau)
![Page 93: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/93.jpg)
Lập trình xử lý ảnh trên nền nhúng
Phép Dilation
• Mở rộng vùng ảnh
![Page 94: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/94.jpg)
Lập trình xử lý ảnh trên nền nhúng
Phép Erosion
• Thu hẹp vùng ảnh
![Page 95: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/95.jpg)
Lập trình xử lý ảnh trên nền nhúng
Phép Opening
• Thu nhỏ trước – Phóng to sau
![Page 96: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/96.jpg)
Lập trình xử lý ảnh trên nền nhúng
Phép Closing
• Phóng to trước – Thu nhỏ sau
![Page 97: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/97.jpg)
Lập trình xử lý ảnh trên nền nhúng
Thực thi các phép xử lý hình thể
Phép Erosion
Phép Dilation
![Page 98: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/98.jpg)
Lập trình xử lý ảnh trên nền nhúng
4.6. Dò tìm đường thẳng
• Sử dụng mặt nạ nhân chập phù hợp theo các
hướng đường thẳng muốn trích chọn
![Page 99: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/99.jpg)
Lập trình xử lý ảnh trên nền nhúng
Demo
![Page 100: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/100.jpg)
Lập trình xử lý ảnh trên nền nhúng
Demo tính tích chập
![Page 101: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/101.jpg)
Lập trình xử lý ảnh trên nền nhúng
Demo lọc trung bình
![Page 102: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/102.jpg)
Lập trình xử lý ảnh trên nền nhúng
Demo lọc trung vị
![Page 103: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/103.jpg)
Lập trình xử lý ảnh trên nền nhúng
Demo lọc Gaussian
![Page 104: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/104.jpg)
Lập trình xử lý ảnh trên nền nhúng104
Thảo luận
![Page 105: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/105.jpg)
Lập trình xử lý ảnh trên nền nhúng105
Bài số 5
Trích chọn đặc trưng của ảnh
![Page 106: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/106.jpg)
Lập trình xử lý ảnh trên nền nhúng106
Mục tiêu bài học số 5
Sau khi kết thúc bài học này, sinh viên có thể
• Trình bày được các đặc trưng cơ bản của ảnh
• Lập trình trích chọn các đặc trưng về biên ảnh và
đặc trưng cục bộ trong ảnh
![Page 107: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/107.jpg)
Lập trình xử lý ảnh trên nền nhúng107
Nội dung bài học
5.1. Tổng quan về các đặc trưng của ảnh
5.2. Lập trình dò biên ảnh
5.3. Lập trình trích chọn đặc trưng cục bộ SURF
![Page 108: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/108.jpg)
Lập trình xử lý ảnh trên nền nhúng
5.1. Tổng quan các đặc trưng ảnh
• Đặc trưng của ảnh là những thông tin phân biệt
ảnh này với ảnh khác, giúp cho các bài toán về
phân lớp, tìm kiếm … ảnh được thực hiện dễ
dàng và chính xác. Đặc trưng ảnh được phân
làm hai nhóm
– Đặc trưng toàn cục (global feature): đặc trưng
biểu diễn cho toàn ảnh
– Đặc trưng cục bộ (local feature): đặc trưng biểu
diễn cho từng vùng của ảnh
![Page 109: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/109.jpg)
Lập trình xử lý ảnh trên nền nhúng
Đặc trưng toàn cục
• Đặc điểm của đặc trưng cục bộ
– Cho phép biểu diễn, tổng quát hóa toàn bộ ảnh
thành dạng một vector
• Ưu điểm
– Tốc độ tính toán nhanh
• Nhược điểm
– Độ phân biệt (distinctive factor) không cao
• Ví dụ: Histogram màu, Histogram mức xám,
contour, texture
![Page 110: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/110.jpg)
Lập trình xử lý ảnh trên nền nhúng
Đặc trưng cục bộ
• Đặc điểm của đặc trưng cục bộ
– Cho phép biểu diễn ảnh một cách chi tiết hơn, mỗi một
ảnh được biểu diễn bởi nhiều vector đặc trưng cục bộ
• Ưu điểm
– Độ phân biệt (distinctive factor) cao hơn đặc trưng toàn
cục
• Nhược điểm
– Thời gian tính toán,trích chọn sẽ lâu hơn
• Ví dụ: SIFT (Scale Invariant Feature Transform),
SURF (Speed up robust feature)
![Page 111: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/111.jpg)
Lập trình xử lý ảnh trên nền nhúng
5.2. Lập trình dò biên ảnh
• Giới thiệu về dò biên
– Biên là các điểm mà ở đó có sự thay đổi lớn về
giá trị màu/mức xám.
– Dò biên sẽ giảm đáng kể lượng dữ liệu, lọc bỏ
các thông tin không cần thiết trong khi vẫn giữ
được các đặc tính quan trọng về cấu trúc của
ảnh.
• Phân loại
– Phương pháp dựa trên gradient(đạo hàm cấp 1)
– Phương pháp dựa trên Laplacian(đạo hàm cấp 2)
![Page 112: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/112.jpg)
Lập trình xử lý ảnh trên nền nhúng
Dò biên Sobel dựa trên gradient
• Phương pháp gradient dò biên bằng cách tìm các
điểm cực đại và cực tiểu của đạo hàm cấp 1 của
ảnh.
• Do ảnh số được lưu trữ trên miền rời rạc, 2 chiều,
do đó chúng ta phải sử dụng các ma trận xấp xỉ đạo
hàm, gọi là các cửa sổ.
![Page 113: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/113.jpg)
Lập trình xử lý ảnh trên nền nhúng
Dò biên Sobel dựa trên gradient
• Với hai cửa sổ này, chúng ta sẽ tính được gradient theo hai
hướng bằng cách tích chập ảnh với từng cửa sổ. Giả sử
gradient thu được theo 2 hướng là các ma trận Gx, Gy (kích
thước bằng kích thước ảnh). Sau đó, chúng ta cần tính độ
lớn Gradient tại một điểm ảnh, có hai cách tính thông dụng
đó là:
Sau đó, ta sẽ tìm một ngưỡng phù hợp để lọc biên. Ta ký
hiệu ngưỡng này là T. nếu Gradient tại điểm đó lớn hơn
hoặc bằng T, ta sẽ thiết lập nó bằng 1 (tương ứng với
điểm biên), nếu không, ta thiết lập nó bằng 0 (nền).
![Page 114: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/114.jpg)
Lập trình xử lý ảnh trên nền nhúng
Kết quả dò biên sobel
![Page 115: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/115.jpg)
Lập trình xử lý ảnh trên nền nhúng
Thực thi dò biên Sobel
• Hàm dò biên sobel: cvSobel
– Src: ảnh gốc, dst: kết quả
– Xorder: cấp đạo hàm theo trục X
– Yorder: cấp đạo hàm theo trục Y
– apertureSize: kích thước mặt nạ nhân chập
![Page 116: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/116.jpg)
Lập trình xử lý ảnh trên nền nhúng
Demo dò biên Sobel
![Page 117: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/117.jpg)
Lập trình xử lý ảnh trên nền nhúng
Demo dò biên Canny
![Page 118: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/118.jpg)
Lập trình xử lý ảnh trên nền nhúng
Thực thi dò biên Canny
• Hàm dò biên sobel: cvCanny
– Src: ảnh gốc, edges: kết quả
– Threshold1: ngưỡng 1
– Threshold2: ngưỡng 2
– apertureSize: kích thước mặt nạ nhân chập
![Page 119: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/119.jpg)
Lập trình xử lý ảnh trên nền nhúng
5.3. Trích chọn đặc trưng SURF
• Đặc tính kỹ thuật của SURF
– Sử dụng bộ phát hiện đặc trưng Hessian blob detector
– Sử dụng biến đổi Haar wavelet 2 chiều
– Sử dụng kỹ thuật tích phân ảnh (integral image) để tăng
tốc độ tính toán
• Có nhiều điểm tương đồng với SIFT nhưng tốc độ
trích chọn đặc trưng nhanh hơn SIFT
• Ứng dụng: nhận dạng vật thể (Object Recognition)
hay mô hình hóa 3D (3D recontruction)
![Page 120: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/120.jpg)
Lập trình xử lý ảnh trên nền nhúng
Trình tự trích chọn đặc trưng SURF
• Bước 1: Xác định các điểm đáng quan tâm
(interest point) sử dụng Hessian blob detector.
SURF áp dụng kỹ thuật tính phân ảnh để tăng
tốc công đoạn này
• Bước 2: Trích chọn và biểu diễn đặc trưng.
Ở bước này sẽ duyệt lại các đặc trưng đã tìm
ra ở bước 1 và chỉ lọc ra các đặc trưng tốt
nhất (bất biến về tỷ lệ và góc quay). Mỗi đặc
trưng sẽ được biểu diễn bởi một vector 128
phần tử
![Page 121: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/121.jpg)
Lập trình xử lý ảnh trên nền nhúng
Đặc trưng SURF
• Mỗi hình tròn biểu
diễn cho một interest
point tìm được
(keypoint)
• Bán kính hình tròn
biểu diễn tỷ lệ của
keypoint
![Page 122: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/122.jpg)
Lập trình xử lý ảnh trên nền nhúng
Thực thi trích chọn đặc trưng SURF
• Sử dụng hàm cvExtractSURF
– Image: Ảnh đa mức xám
– Keypoints: danh sách các điểm bất biến theo góc
quay và tỉ lệ
– Descriptors: các vector mô tả cho các Keypoints
– Storage: vùng nhớ lưu trữ các Keypoints và các
Descriptor của nó
![Page 123: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/123.jpg)
Lập trình xử lý ảnh trên nền nhúng
Demo trích chọn đặc trưng SURF
![Page 124: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/124.jpg)
Lập trình xử lý ảnh trên nền nhúng
Ứng dụng tìm kiếm, đối sánh ảnh
• Yêu cầu bài toán: Đầu vào là 2 ảnh khác nhau.
Mục tiêu là cần đánh giá hai ảnh đấy có biểu
diễn cùng một đối tượng, vật thể hay không
• Bước 1: Trích chọn đặc trưng SURF của cả hai
ảnh
• Bước 2: Sử dụng các hàm tính độ tương đồng
để đánh giá các cặp Interesed point tương đồng
giữa hai ảnh
• Bước 3: Đánh giá hai ảnh có tương đồng hay
không dựa trên số cặp interested point tương
đồng
![Page 125: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/125.jpg)
Lập trình xử lý ảnh trên nền nhúng
Demo: đối sảnh ảnh sử dụng SURF
![Page 126: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/126.jpg)
Lập trình xử lý ảnh trên nền nhúng126
Thảo luận
![Page 127: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/127.jpg)
Lập trình xử lý ảnh trên nền nhúng127
Bài số 6
Lập trình
Nhận dạng khuôn mặtMachine learning
Haar
Face detection
![Page 128: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/128.jpg)
Lập trình xử lý ảnh trên nền nhúng128
Mục tiêu bài học số 6
Sau khi kết thúc bài học này, sinh viên có thể
• Trình bày được các kiến thức tổng quan về học
máy
• Giới thiệu kỹ thuật nhận dạng khuôn mặt sử
dụng bộ lọc Haar
• Lập trình nhận dạng khuôn mặt
![Page 129: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/129.jpg)
Lập trình xử lý ảnh trên nền nhúng129
Nội dung bài học
6.1. Tổng quan về học máy
6.2. Tổng quan về bài toán nhận dạng khuôn mặt
6.3. Đặc trưng Haar
6.4. Phương pháp Ada boost
6.5. Lập trình nhận dạng khuôn mặt
![Page 130: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/130.jpg)
Lập trình xử lý ảnh trên nền nhúng
6.1. Tổng quan về học máy
• Học máy (Machine Learning) là một ngành khoa
học nghiên cứu các thuật toán cho phép máy tính
có thể học được các khái niệm (concept) từ đó hỗ
trợ đưa ra các quyết định trong nhiều bài toán ứng
dụng khác nhau:
– Xử lý ngôn ngữ tự nhiên: xử lý tiếng nói, văn bản
– Nhận dạng (Pattern Recognition): nhận dạng chữ
viết, nhận dạng vân tay …
– Tìm kiếm (Search Engine): tìm kiếm ảnh, video
– Công nghệ robot
– Game: đánh cờ, đá bóng …
![Page 131: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/131.jpg)
Lập trình xử lý ảnh trên nền nhúng
Phân loại học máy
• Có hai phương pháp chính
– Phương pháp quy nạp: Máy học/phân biệt các
khái niệm dựa trên dữ liệu đã thu thập được
trước đó. Phương pháp này cho phép tận dụng
được nguồn dữ liệu rất nhiều và sẵn có.
– Phương pháp suy diễn: Máy học/phân biệt các
khái niệm dựa vào các luật. Phương pháp này
cho phép tận dụng được các kiến thức chuyên
ngành để hỗ trợ máy tính.
![Page 132: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/132.jpg)
Lập trình xử lý ảnh trên nền nhúng
Các nhóm giải thuật học máy
• Học có giám sát: Máy tính được xem một số
mẫu gồm đầu vào (input) và đầu ra (output)
tương ứng trước (có sự hỗ trợ của con người để
ra quyết định). Sau khi học xong các mẫu này,
máy tính quan sát một đầu vào mới và cho ra kết
quả.
• Học không giám sát: Máy tính chỉ được xem các
mẫu không có đầu ra, sau đó máy tính phải tự
tìm cách phân loại các mẫu này và các mẫu mới.
![Page 133: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/133.jpg)
Lập trình xử lý ảnh trên nền nhúng
Các nhóm giải thuật học máy
• Học nửa giám sát: Một dạng lai giữa hai nhóm
giải thuật trên.
• Học tăng cường (Học có phản hồi): Máy tính đưa
ra quyết định hành động (action) và nhận kết
quả phản hồi (response/reward) từ môi trường
(environment). Sau đó máy tính tìm cách chỉnh
sửa cách ra quyết định hành động của mình.
![Page 134: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/134.jpg)
Lập trình xử lý ảnh trên nền nhúng
6.2. Bài toán nhận dạng khuôn mặt
134
Khuôn MătKhông phai
măt
![Page 135: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/135.jpg)
Lập trình xử lý ảnh trên nền nhúng
Các phương pháp giải quyết
135
Dưa trên đăc
trưng bất biên
Phát hiên
khuôn măt
Dưa trên
tri thức
Dưa trên so
sánh mâu
Dưa trên
diên mao
Luật
Luật
Luật
![Page 136: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/136.jpg)
Lập trình xử lý ảnh trên nền nhúng
Các phương pháp giải quyết
• Dựa trên tri thức: mã hóa hiểu biết của con người
về các loại khuôn mặt và tạo ra các tập luật để xác
định khuôn mặt
• Dựa trên đặc trưng bất biến: mục tiêu các thuật
toán tìm ra các đặc trưng mô tả cấu trúc khuôn mặt
người (đặc trưng bất biến với tư thế,vị trí ,độ sáng
tối…)
• Dựa trên so mâu: Sử dụng một mẫu chuẩn hay đặc
trưng của khuôn mặt người, tính giá trị tương quan
• Dựa trên diện mạo: Huấn luyện một tập ảnh chứa
mặt và 1 tập ảnh ko chứa mặt => luật
![Page 137: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/137.jpg)
Lập trình xử lý ảnh trên nền nhúng
6.3. Đặc trưng Haar
• Các đặc trưng Haar được dùng để tính độ chênh
lệch giữa các giá trị điểm ảnh trong các vùng kề
nhau. Dùng các đặc trưng trên, ta tính được giá trị
của đặc trưng Haar-like là sự chênh lệch tổng của
các pixel của các vùng đen và vùng trắng bằng công
thứ sau: f(x) = tổng vùng đên (các mức xám của
pixel) – tổng vùng trắng (các mức xám của pixel)
• Các cửa sổ để tính đặc trưng Haar
(a) (b) (c) (d)(a) (b) (c) (d) (e) (f) (g) (h)
![Page 138: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/138.jpg)
Lập trình xử lý ảnh trên nền nhúng
Đặc trưng Haar
• Các đặc trưng Haar sử dụng trong bài toán nhận
dạng khuôn mặt
![Page 139: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/139.jpg)
Lập trình xử lý ảnh trên nền nhúng
Tính đặc trưng Haar
• Để tính các giá trị đặc trưng Haar-like ta tính
tổng của các vùng pixel trên ảnh. Nhưng để tính
toán các giá trị của các đặc trưng Haar-like cho
tất cả các vị trí trên ảnh đòi hỏi chi phí tính toán
rất lớn nên sẽ không đáp ứng được cho các ứng
dụng mang tính thời gian thực->Khái niệm
Integral Image (ảnh tích phân) được đưa ra
![Page 140: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/140.jpg)
Lập trình xử lý ảnh trên nền nhúng
Ảnh tích phân (Integral Image)
• Ảnh tích phân: mảng 2 chiều với kích thước bằng
kích thước ảnh cần tính các đặc trưng Haar-like
• Mỗi phần tử của mảng này được tính bằng cách tính
tổng của điểm ảnh phía trên và bên trái của nó. Bắt
đầu từ vị trí trên bên trái đến vị trí phía dưới bên
phải ảnh.
![Page 141: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/141.jpg)
Lập trình xử lý ảnh trên nền nhúng
6.4. Phương pháp Ada boots
Nguyên tắc:•Kết hợp các bộ lọc yếu
để tạo thành một bộ lọc
mạnh
•Thực hiện như một hệ
thống thác lọc
![Page 142: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/142.jpg)
Lập trình xử lý ảnh trên nền nhúng
6.5. Mô hình nhận dạng khuôn mặt
• Thuật toán AdaBoost là thuật toán máy học,vì
vậy hệ thống thường chia làm 2 quá trình:
Quá trình học: thực hiện với nhiều mẫu(có mặt
và không có mặt). Kết thúc quá trình học thông
thường cho ra kết quả là một bộ tham số, một mô
hình (model) ... Trong OpenCV sẽ lưu dưới dạng
file XML (haarcascade_frontalface_alt_tree.xml,
haarcascade_frontalface_default.xml,..)
Quá trình chạy: cho ra kết quả trực tiếp căn cứ
vào giá trị mô hình đã có
![Page 143: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/143.jpg)
Lập trình xử lý ảnh trên nền nhúng
6.5. Lập trình nhận dạng khuôn mặt
![Page 144: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/144.jpg)
Lập trình xử lý ảnh trên nền nhúng
Mô hình nhận dạng khuôn mặt
• Từ một ảnh ban đầu, tính Integral Image
• Các vùng ảnh con này sẽ được đưa qua các
hàm Haar cơ bản để ước lượng đặc trưng, kết
quả ước lượng sẽ được đưa qua bộ điều chỉnh
AbaBoost để loại bỏ nhanh các đặc trưng không
có khả năng là đặc trưng khuôn mặt người
• Tập nhỏ đặc trưng khuôn mặt người được
chuyển sang cho bộ quyết định kết quả. Bộ
quyết định kết quả sẽ tổng hợp kết quả là khuôn
mặt người nếu kết quả của các bộ phân loại yếu
trả về khuôn mặt người.
![Page 145: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/145.jpg)
Lập trình xử lý ảnh trên nền nhúng
Mô hình thác lọc (cascade)
Stage
Tree
Node
Feature
![Page 146: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/146.jpg)
Lập trình xử lý ảnh trên nền nhúng
Quá trình lọc
146
Stage 0
Tree 0
Root note
<_>2 7 16 4 -
1.</_>
<_>2 9 16 2
2.</_>
Ngưỡng
Không phải mặtStage1
![Page 147: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/147.jpg)
Lập trình xử lý ảnh trên nền nhúng
Nhận dạng khuôn mặt trên OpenCV
• Bước 1: Thu nhận video stream từ
camera/webcam, trích chọn các Frame theo một
tần suất nhất định, khoảng 10 hình/s (sử dụng
Timer)
• Bước 2: Sử dụng hàm cvHaarDetectObjects
để detect khuôn mặt
– 1) Load bộ phân lớp có được qua quá trình học
máy sử dụng hàm cvLoad
– 2) Sử dụng hàm cvHaarDetectObjets dựa trên
bộ phân lớp ở trên
![Page 148: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/148.jpg)
Lập trình xử lý ảnh trên nền nhúng
Demo
![Page 149: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/149.jpg)
Lập trình xử lý ảnh trên nền nhúng
Demo nhận dạng khuôn mặt
![Page 150: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/150.jpg)
Lập trình xử lý ảnh trên nền nhúng150
Thảo luận
![Page 151: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/151.jpg)
Lập trình xử lý ảnh trên nền nhúng151
Bài số 7
Lập trình
Nhận dạng mã Auto ID
![Page 152: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/152.jpg)
Lập trình xử lý ảnh trên nền nhúng152
Mục tiêu bài học số 7
Sau khi kết thúc bài học này, sinh viên có thể
• Trình bày về mã Auto ID và ứng dụng
• Trình bày được chuẩn định dạng Barcode và QR
code
• Lập trình nhận dạng mã vạch Barcode
• Lập trình nhận dạng mã QR code
![Page 153: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/153.jpg)
Lập trình xử lý ảnh trên nền nhúng153
Nội dung bài học
7.1. Tổng quan mã Auto ID và ứng dụng
7.2. Chuẩn định dạng Barcode và QR code
7.3. Giới thiệu thư viện zbar
7.4. Lập trình đọc mã Barcode
7.5. Lập trình đọc mã QR code
![Page 154: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/154.jpg)
Lập trình xử lý ảnh trên nền nhúng
7.1. Tổng quan về Auto ID và ứng dụng
• Auto ID (Automatic Identification) là các phương
pháp, kỹ thuật cho phép xác định và lấy về thông
tin của các đối tượng một cách nhanh chóng, tự
động
• Một số công nghệ AutoID
– Thẻ từ
– Thẻ thông minh (RFID, NFC)
– Barcode, QRcode
![Page 155: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/155.jpg)
Lập trình xử lý ảnh trên nền nhúng
7.2. Chuẩn định dạng Barcode và QRcode
• Barcode: biểu diễn dữ liệu bằng cách thay đổi
độ rộng của các vạch đen và khoảng trắng
![Page 156: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/156.jpg)
Lập trình xử lý ảnh trên nền nhúng
Chuẩn định dạng Barcode
• Các chuẩn phổ biến
– UPC
– Code 39
– Code 128
– EAN-8, EAN-13
![Page 157: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/157.jpg)
Lập trình xử lý ảnh trên nền nhúng
Format của chuẩn UPC
• Phiên bản UPC-A
– Tuân thủ format: SLLLLLLMRRRRRRE (S: Start, M:
Middle, E: End, L: Left, R: Right)
– Xác định độ rộng cơ sở (x-dimension)=0.33mm
– Xác định các thành phần khác dựa trên độ rộng cơ sở
![Page 158: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/158.jpg)
Lập trình xử lý ảnh trên nền nhúng
Format của chuẩn UPC
• Mỗi số được biểu diễn bởi 2 vạc đen (bars) và 2
vùng trắng (spaces), kích thước khác nhau
• Tổng bề rộng của 1 số luôn luôn 7 modules (mỗi
module có bề rộng là 1 x-dimension)
• Tổng bề rộng của toàn bộ mã là 95 modules, 84
modules cho nội dung và 11 modules cho S,E và M
![Page 159: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/159.jpg)
Lập trình xử lý ảnh trên nền nhúng
Quy trình phát hiện và đọc Barcode
• Bước 1: Phát hiện vùng chứa Barcode
• Bước 2: Đọc dữ liệu tùy theo từng phiên bản mã
hóa của mã vạch
![Page 160: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/160.jpg)
Lập trình xử lý ảnh trên nền nhúng
Chuẩn QR code
• QR code (Quick Response Code): một dạng mã
vạch hai chiều, có thể lưu trữ nhiều loại dữ liệu
(số, ký tự, dữ liệu nhị phân, ký tự trong bảng mã
Kanji)
![Page 161: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/161.jpg)
Lập trình xử lý ảnh trên nền nhúng
Đặc tính kỹ thuật của QR code
![Page 162: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/162.jpg)
Lập trình xử lý ảnh trên nền nhúng
Đặc tính kỹ thuật của QR code
![Page 163: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/163.jpg)
Lập trình xử lý ảnh trên nền nhúng
Các phiên bản QR code khác nhau
![Page 164: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/164.jpg)
Lập trình xử lý ảnh trên nền nhúng
Các phiên bản QR code khác nhau
![Page 165: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/165.jpg)
Lập trình xử lý ảnh trên nền nhúng
Quy trình phát hiện và đọc QR code
![Page 166: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/166.jpg)
Lập trình xử lý ảnh trên nền nhúng
Quy trình phát hiện và đọc QR code
• Bước 1: Phát hiện Position Detection Patterns
– Phát hiện các Patterns có format 1-1-3-1-1
![Page 167: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/167.jpg)
Lập trình xử lý ảnh trên nền nhúng
Quy trình phát hiện và đọc QR code
• Bước 2: Xác định phiên bản sử dụng
• Bước 3: Gỡ bỏ mặt nạ để lấy về dữ liệu thô
• Bước 4: Đọc các cell data và các cell sửa lỗi để
trích rút dữ liệu cần thiết
![Page 168: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/168.jpg)
Lập trình xử lý ảnh trên nền nhúng
7.3. Giới thiệu thư viện zbar
• Zbar là thư viện mã nguồn mở cho phép
– Nhận dạng barcode, qrcode từ nhiều nguồn khác
nhau như ảnh, luồng video hoặc dữ liệu thô từ
cảm biến ảnh
– Hỗ trợ nhiều định dạng khác nhau như EAN-
13/UPC-A, UPC-E, EAN-8, Code 128, Code 39,
QR code
– Kiến trúc linh hoạt, có tính khả chuyển cao, có
thể porting lên nhiều nền tảng khác nhau
![Page 169: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/169.jpg)
Lập trình xử lý ảnh trên nền nhúng
Mô hình thư viện ZBar
![Page 170: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/170.jpg)
Lập trình xử lý ảnh trên nền nhúng
7.4. Lập trình đọc mã Barcode
![Page 171: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/171.jpg)
Lập trình xử lý ảnh trên nền nhúng
7.5. Lập trình đọc mã QRcode
![Page 172: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/172.jpg)
Lập trình xử lý ảnh trên nền nhúng172
Thảo luận
![Page 173: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/173.jpg)
Lập trình xử lý ảnh trên nền nhúng173
Bài số 8
Các kỹ thuật
Nâng cao tốc độ xử lý ảnh
![Page 174: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/174.jpg)
Lập trình xử lý ảnh trên nền nhúng174
Mục tiêu bài học số 8
Sau khi kết thúc bài học này, sinh viên có thể
• Trình bày được các khó khăn thực tế trong quá
trình triển khai phần mềm xử lý ảnh trên hệ
nhúng
• Biết cách sử dụng kỹ thuật lập trình đa luồng và
triển khai ứng dụng theo mô hình client – server
để đáp ứng thời gian xử lý
• Nắm bắt ưu điểm của công nghệ xử lý sử dụng
bộ xử lý đồ họa chuyên dụng GPU
![Page 175: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/175.jpg)
Lập trình xử lý ảnh trên nền nhúng175
Nội dung bài học
8.1. Kỹ thuật lập trình đa luồng
8.2. Triển khai ứng dụng theo mô hình client-server
8.3. Giới thiệu kỹ thuật xử lý hình ảnh hiệu năng
cao trên GPU
![Page 176: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/176.jpg)
Lập trình xử lý ảnh trên nền nhúng
8.1. Kỹ thuật xử lý đa luồng
• Nguyên lý: tách công việc cần xử lý ra thành
nhiều luồng chạy độc lập
• Ưu điểm: tăng đáng kể tốc độ xử lý
• Nhược điểm: khó khăn trong việc đồng bộ dữ
liệu giữa các luồng
– Cách khắc phục: Cần phân chia các luồng xử lý
một cách hợp lý (độc lập, hạn chế chia sẻ tài
nguyên, dữ liệu)
![Page 177: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/177.jpg)
Lập trình xử lý ảnh trên nền nhúng
Kỹ thuật xử lý đa luồng
• Ví dụ: Bài toán nhận đầu vào là một ảnh, yêu cầu
tìm ra các ảnh tương tự trong cơ sở dữ liệu
• Cách 1(Không sử dụng đa luồng)
– Tính đặc trưng SURF của ảnh đầu vào với tất cả các ảnh
trong cơ sở dữ liệu
– Đo độ tương đồng giữa ảnh đầu vào với từng ảnh trong
cơ sở dữ liệu
• Cách 2(Sử dụng đa luồng)
– Chia tập ảnh trong cơ sở dữ liệu ra thành các nhóm khác
nhau (tương ứng với số luồng)
– Thực hiện 1 luồng để đo độ tương đồng với các ảnh đã
tính toán xong đặc trưng
![Page 178: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/178.jpg)
Lập trình xử lý ảnh trên nền nhúng
8.2. Mô hình client-server
• Nguyên lý: máy tính nhúng (Client) (khả năng
xử lý thấp hơn) chỉ thu nhận đầu vào/tiền xử lý
còn các công việc phức tạp hơn sẽ đẩy lên
Server (có khả năng tính toán cao hơn) xử lý và
trả kết quả về
• Ưu điểm: tận dụng tài nguyên của Server,giảm
tải cho client, tăng tốc độ tính toán
• Nhược điểm:
– Yêu cầu kết nối mạng giữa client-server phải đủ
nhanh và thông suốt
– Server phải giải quyết bài toán cân bằng tải
![Page 179: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/179.jpg)
Lập trình xử lý ảnh trên nền nhúng
Mô hình client-server
• Ví dụ: Đầu vào là một ảnh, yêu cầu tìm ra các
ảnh tương tự trong cơ sở dữ liệu tương đối
lớn -> ko lưu trữ được trên máy client, máy
client ko đủ năng lực tính toán
• Giải pháp:
– Client thu nhận ảnh, đẩy lên Server
– Server tìm kiếm ảnh trong cơ sở dữ liệu, trả kết
quả về cho client hiển thị
![Page 180: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/180.jpg)
Lập trình xử lý ảnh trên nền nhúng
8.3. Xử lý ảnh sử dụng GPU
• Giới thiệu về GPU (Graphics Processing Unit)
– Mục đích đầu tiên tập trung vào xử lý đồ họa,
thiết kế theo kiến trúc đa lõi
– GPU phổ biến sử dụng từ 16->512 lõi
– Tối ưu hóa các kiến trúc lập trình song song->
tăng tốc độ xử lý lên rất cao
![Page 181: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/181.jpg)
Lập trình xử lý ảnh trên nền nhúng
Kiến trúc GPU
![Page 182: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/182.jpg)
Lập trình xử lý ảnh trên nền nhúng
Lập trình tối ưu hóa GPU
• Sử dụng thư viện CUDA (Compute Unified
Device Architecture - Kiến trúc thiết bị tính toán
hợp nhất)
– Là một kiến trúc tính toán song song
– Hỗ trợ nhiều ngôn ngữ lập trình
– Giúp các thành phần trong GPU có thể dễ dàng
thực hiện các công việc tương tự CPU
– CUDA SDK hỗ trợ cả Windows và Linux, cung
cấp các hàm API
![Page 183: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/183.jpg)
Lập trình xử lý ảnh trên nền nhúng
Mô hình xử lý của CUDA
1. Sao chép dữ liệu từ bộ
nhớ chính vào bộ nhớ
GPU
2. CPU chỉ lệnh để xử lý
tại GPU
3. GPU thực thi song
song ở mỗi nhân
4. Sao chép kết quả từ
bộ nhớ GPU sang bộ
nhớ chính.
![Page 184: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/184.jpg)
Lập trình xử lý ảnh trên nền nhúng184
Thảo luận
![Page 185: Slide_Xu_ly_anh](https://reader036.vdocuments.pub/reader036/viewer/2022081801/54a1c64cac7959b5708b48ee/html5/thumbnails/185.jpg)
Lập trình xử lý ảnh trên nền nhúng
Phụ lục A – Website quan trọng
http://www.friendlyarm.net //download
http://www.thaieasyelec.com/FriendlyARM
//mua KIT, download tài liệu
http://qt.nokia.com //Hỗ trợ QT SDK
185