Chương 8
Lập trình xử lý ảnh trên nền
nhúng
Lập trình nhúng ARM-Linux
202
Nội dung
8.1. Tổng quan về xử lý ảnh
8.2. Giới thiệu OpenCV
8.3. C|c phép biến đổi ảnh cơ bản
Lập trình nhúng ARM-Linux
203
8.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.
Lập trình nhúng ARM-Linux
Mô hình hệ thống xử lý ảnh
Lưu trữ
Camera
Thu nhận
ảnh
Số hóa
Phân tích
ảnh
Sensor
Lưu trữ
Lập trình nhúng ARM-Linux
Đối sánh
Nhận dạng
Hệ
quyết định
Các bài toán xử lý ảnh
Các kỹ thuật tiền xử lý-mức thấp
Image
Acquisition
Image
Enhancement
Image
Restoration
Image
Compression
Image
Coding
Morphological
Image Processing
Wavelet
Analysis
Knowledge Base
Lập trình nhúng ARM-Linux
Xử lý mức cao
Image
Segmentation
Representation
& Description
Recognition &
Interpretation
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ố
2
0
Lập trình nhúng ARM-Linux
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 streaming
2
0
Lập trình nhúng ARM-Linux
Ứng dụng xử lý ảnh
Lập trình nhúng ARM-Linux
Ứng dụng tăng cường chất lượng
Lập trình nhúng ARM-Linux
Hiệu ứng panorama
Lập trình nhúng ARM-Linux
Ứng dụng nhận dạng khuôn mặt
Lập trình nhúng ARM-Linux
Nhận dạng người chuyển động
Lập trình nhúng ARM-Linux
Nhận dạng đối tượng chuyển động
Lập trình nhúng ARM-Linux
Nhận dạng chữ viết tay
Lập trình nhúng ARM-Linux
Nhận dạng vân tay
Lập trình nhúng ARM-Linux
Nhận dạng mống mắt (iris)
Lập trình nhúng ARM-Linux
Mô hình hóa 3D & AR (Augmented
Reality)
KINECT
Lập trình nhúng ARM-Linux
8.2. 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…
Lập trình nhúng ARM-Linux
Thư viện OpenCV
Lập trình nhúng ARM-Linux
Kiến trúc thư viện OpenCV
Lập trình nhúng ARM-Linux
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
Lập trình nhúng ARM-Linux
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
Lập trình nhúng ARM-Linux
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
Lập trình nhúng ARM-Linux
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
Lập trình nhúng ARM-Linux
Đọc ảnh và hiển thị
• Các kiểu dữ liệu cơ bản trong OpenCV
cvArr
cvMat
IplImage
CvCapture
Lập trình nhúng ARM-Linux
226