1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Lập trình xử lý ảnh trên nền nhúng

185 990 3

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 185
Dung lượng 4,07 MB

Nội dung

• 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

Trang 1

Khóa học

Lập trình xử lý ảnh trên nền nhúng

GV: 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

Trang 2

• 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

Trang 3

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

Trang 4

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/

Trang 6

Lập trình xử lý ảnh trên nền nhúng 6

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ý

Trang 8

• 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.

Trang 9

Phân tích ảnh

Đối sánh Nhận dạng

Hệ quyết định

Lưu trữ

Lưu trữ

Trang 10

Image 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

Trang 12

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,

Trang 13

Lập trình xử lý ảnh trên nền nhúng

Ứng dụng xử lý ảnh

Trang 14

Lập trình xử lý ảnh trên nền nhúng

Ứng dụng tăng cường chất lượng

Trang 15

Lập trình xử lý ảnh trên nền nhúng

Hiệu ứng panorama

Trang 16

Lập trình xử lý ảnh trên nền nhúng

Ứng dụng nhận dạng khuôn mặt

Trang 17

Lập trình xử lý ảnh trên nền nhúng

Nhận dạng người chuyển động

Trang 18

Lập trình xử lý ảnh trên nền nhúng

Nhận dạng đối tượng chuyển động

Trang 19

Lập trình xử lý ảnh trên nền nhúng

Nhận dạng chữ viết tay

Trang 20

Lập trình xử lý ảnh trên nền nhúng

Nhận dạng vân tay

Trang 21

Lập trình xử lý ảnh trên nền nhúng

Nhận dạng mống mắt (iris)

Trang 22

Lập trình xử lý ảnh trên nền nhúng

Mô hình hóa 3D & AR (Augmented Reality)

KINECT

Trang 23

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

Trang 24

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

Trang 25

Lập trình xử lý ảnh trên nền nhúng

Thư viện OpenCV

Trang 26

Lập trình xử lý ảnh trên nền nhúng

Kiến trúc thư viện OpenCV

Trang 27

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

Trang 28

Lập trình xử lý ảnh trên nền nhúng

28

Thảo luận

Trang 30

Lập trình xử lý ảnh trên nền nhúng 30

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

Trang 31

Lập trình xử lý ảnh trên nền nhúng 31

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

Trang 32

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

Trang 33

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

Trang 34

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

Trang 35

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

Trang 37

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" );

Trang 39

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);

Trang 40

Lập trình xử lý ảnh trên nền nhúng

Demo

Trang 41

Lập trình xử lý ảnh trên nền nhúng

Demo hiển thị file ảnh

Trang 42

Lập trình xử lý ảnh trên nền nhúng

Demo kết nối camera

Trang 43

Lập trình xử lý ảnh trên nền nhúng

43

Thảo luận

Trang 44

Lập trình xử lý ảnh trên nền nhúng 44

Bài số 3

Các phép biến đổi cơ bản

Trang 45

Lập trình xử lý ảnh trên nền nhúng 45

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

Trang 46

Lập trình xử lý ảnh trên nền nhúng 46

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

Trang 47

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

Trang 49

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

Trang 51

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

Trang 52

Lập trình xử lý ảnh trên nền nhúng

Demo chuyển sang ảnh đa mức xám

Trang 54

Lập trình xử lý ảnh trên nền nhúng

Histogram

Ảnh tối

54

Trang 55

Lập trình xử lý ảnh trên nền nhúng

Histogram

Ảnh sáng

55

Trang 56

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

Trang 57

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

Trang 58

– 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

Trang 60

Lập trình xử lý ảnh trên nền nhúng

Demo tính Histogram của ảnh

Trang 61

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

Trang 63

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

Trang 66

Lập trình xử lý ảnh trên nền nhúng

Demo cân bằng Histogram

Trang 67

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

Trang 68

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

Trang 69

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

Trang 70

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)

Trang 71

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

Trang 72

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)

Trang 73

Lập trình xử lý ảnh trên nền nhúng

Demo chuyển sang ảnh nhị phân

Trang 74

Lập trình xử lý ảnh trên nền nhúng

74

Thảo luận

Trang 75

Lập trình xử lý ảnh trên nền nhúng 75

Bài số 4

Lập trình ứng dụng bộ lọc số

Trang 76

Lập trình xử lý ảnh trên nền nhúng 76

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

Trang 78

Lập trình xử lý ảnh trên nền nhúng

4.1 Tổng quan về lọc số

Trang 82

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

Trang 83

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

Trang 85

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ụ :

Trang 87

Lập trình xử lý ảnh trên nền nhúng

Lọc trung vị

Trang 89

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)

Trang 90

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

Trang 92

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)

Trang 93

Lập trình xử lý ảnh trên nền nhúng

Phép Dilation

• Mở rộng vùng ảnh

Trang 94

Lập trình xử lý ảnh trên nền nhúng

Phép Erosion

• Thu hẹp vùng ảnh

Trang 95

Lập trình xử lý ảnh trên nền nhúng

Phép Opening

• Thu nhỏ trước – Phóng to sau

Trang 96

Lập trình xử lý ảnh trên nền nhúng

Phép Closing

• Phóng to trước – Thu nhỏ sau

Trang 97

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

Trang 99

Lập trình xử lý ảnh trên nền nhúng

Demo

Trang 100

Lập trình xử lý ảnh trên nền nhúng

Demo tính tích chập

Trang 101

Lập trình xử lý ảnh trên nền nhúng

Demo lọc trung bình

Trang 102

Lập trình xử lý ảnh trên nền nhúng

Demo lọc trung vị

Trang 103

Lập trình xử lý ảnh trên nền nhúng

Demo lọc Gaussian

Trang 104

Lập trình xử lý ảnh trên nền nhúng

104

Thảo luận

Trang 105

Lập trình xử lý ảnh trên nền nhúng 105

Bài số 5

Trích chọn đặc trưng của ảnh

Trang 106

Lập trình xử lý ảnh trên nền nhúng 106

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

Trang 107

Lập trình xử lý ảnh trên nền nhúng 107

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

Trang 108

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

Trang 109

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

Trang 110

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)

Trang 111

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)

Trang 112

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ổ

Ngày đăng: 03/05/2015, 17:44

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w