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

Nghiên cứu thiết kế và chế tạo robot vượt địa hình, bám đối tượng sử dụng công nghệ xử lý ảnh

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 (3.68 MB, 124 trang )

( Word to PDF - Unregistered ) />Word to PDF - UnRegistered
/>1
MỤC LỤC
CHƯƠNG 1. GIỚI THIỆU CHUNG………………………………………………… 5
1.1. Giới thiệu chung về rô bốt…………………………………………………… 6
1.2. Giới thiệu rô bốt bám đối tượng…………………………………………… 6
1.3. Mục tiêu của đồ án………………………………………………………… 9
1.4. Giới hạn của đồ án………………………………………………………… 10
CHƯƠNG 2. TỔNG QUAN VỀ XỬ LÝ ẢNH VÀ THƯ VIỆN OPENCV……… 11
2.1. Giới thiệu về xử lý ảnh 12
2.1.1. Định nghĩa xử lý ảnh………………………………………………… 12
2.1.2. Các khái niệm liên quan……………………………………………… 12
2.2. Thế nào là thị giác máy…………………………………………………… 16
2.3. Thư viện OpenCV………………………………………………………… 16
2.3.1. OpenCV là gì? 16
2.3.2. Vì sao lựa chọn OpenCV? 17
2.3.3. Cấu trúc và nội dung OpenCV như thế nào? 18
2.3.4. Các hàm I/O trong OpenCV………………………………………… 19
2.3.5. Các hàm thực hiện xử lý ảnh………………………………………… 21
2.3.6. Các hàm Histograms and Matching………………………………… 22
2.3.7. Hàm Contours………………………………………………………….22
2.3.8. Cơ sở toán học của thuật toán CamShift………………………………22
CHƯƠNG 3. LÝ THUYẾT LIÊN QUAN……………………………………………24
3.1. Cơ bản về Atmega32………………………………………………………….25
3.1.1. Atmega32 là gì? 25
3.1.2. Sơ đồ chân của ATmega32…………………………………………….26
3.1.3. Giới thiệu về Timer/Counter 0 của ATmega32……………………… 30
3.1.4. Bộ truyền nhận dữ liệu USART……………………………………… 32
( Word to PDF - Unregistered ) />Word to PDF - UnRegistered
/>2
3.2. Giao tiếp RS232…………………………………………………………… 39


CHƯƠNG 4. THIẾT KẾ VÀ CHẾ TẠO ROBOT…………………………………… 41
4.1. Phương án thiết kế 1:………………………………………………………… 42
4.1.1. Hình thể hiện…………………………………………………………….42
4.1.2. Ưu điểm……………………………………………………………… 42
4.1.3. Nhược điểm…………………………………………………………… 42
4.2. Phương án thiết kế 2:………………………………………………………… 42
4.1.1. Hình thể hiện…………………………………………………………….42
4.1.2. Ưu điểm………………………………………………………………….43
4.1.3. Nhược điểm…………………………………………………………… 43
4.3. Chọn phương án thiết kế và kết quả thi công………………………………… 43
CHƯƠNG 5. XÂY DỰNG PHẦN MỀM ĐIỀU KHIỂN……………………………….45
5.1. Thị giác máy điều khiển rô bốt di động bám đối tượng……………………… 46
5.2. Thuật toán tính hướng và kích cỡ của đối tượng cần theo dõi…………………47
5.2.1. Thuật toán chung………………………………………………………… 47
5.2.2. Nhận dạng và bám mục tiêu di động……………………………………….47
5.2.3. Chuyển đổi không gian màu từ RGB đến HSV…………………………….49
5.2.4. Histogram………………………………………………………………… 50
5.2.5. Lọc nhiễu Filter…………………………………………………………… 51
5.2.6. Thuật toán CamShift……………………………………………………… 51
5.2.7. Thiết kế hoàn chỉnh phần mềm điều khiển……………………………… 54
CHƯƠNG 6. XÂY DỰNG MẠCH PHẦN CỨNG…………………………………… 57
6.1. Sơ đồ mạch dùng trong đồ án……………………………………………………58
6.1.1. Khối điều khiển trung tâm………………………………………………….58
6.1.2. Khối nguồn…………………………………………………………………59
6.1.3. Khối truyền thông RS232………………………………………………… 59
( Word to PDF - Unregistered ) />Word to PDF - UnRegistered
/>3
6.1.4. Khối điều khiển động cơ……………………………………………………59
6.2. Tập lệnh điều khiển rô bốt……………………………………………………….61
CHƯƠNG 7. KẾT QUẢ THỰC HIỆN………………………………………………….63

7.1. Kết quả thực nghiệm với sự linh động của rô bốt trên một số địa hình 64
7.2. Thực nghiệm với phần xử lý ảnh ứng dụng điều khiển rô bốt 67
7.2.1. Kết quả thử nghiệm với môi trường tĩnh….………………………………………67
7.2.2. Kết quả thử nghiệm với môi môi trường động….……………………………… 69
KẾT LUẬN…………………………………………………………………………… 73
PHỤ LỤC A. CHƯƠNG TRÌNH XỬ LÝ ẢNH……………………………………… 75
PHỤ LỤC B. CHƯƠNG TRÌNH ĐIỀU KHIỂN ROBOT…………………………… 89
PHỤ LỤC C. CHƯƠNG TRÌNH TRUYỀN THÔNG RS232…………………………101
TÀI LIỆU THAM KHẢO…………………………………………………………… 107
DANH SÁCH HÌNH VẼ
Hình 1.1: PANrobot (nguồn: mobilerobot.org)………………………………………… 7
Hình 1.2: Rô bốt MIDbo (nguồn: telepresenceoptions.com)……………………………8
Hình 1.3: Rô bốt Pops (nguồn: slashgear.com)………………………………………… 8
Hình 1.4: Rô bốt thám hiểm sao hoả (nguồn: robotics.youngester.com)……………… 9
Hình 2.1. Lân cận các điểm ảnh của tọa độ (x,y) ……………………………………….14
Hình 2.1. Lân cận các điểm ảnh của tọa độ (x,y)……………………………………… 15
Hình 2.3. Thể hiện sự chuyển đổi……………………………………………………… 16
Hình 2.4: Quá trình phát triển của OpenCV…………………………………………… 17
Hình 2.5: Cấu trúc cơ sở của OpenCV………………………………………………… 18
Hình 3.1: Sơ đồ chân của ATmega32……………………………………………………27
Hình 3.2: Sơ đồ khối của Timer/Counter0………………………………………………30
Hình 3.3. Giản đồ thời gian của chế độ PWM………………………………………… 32
Hình 3.5: Cổng giao tiếp RS232………………………………………… 41
Hình 5.1:Sơ đồ khối tổng quát hệ thống điều khiển rô bốt 47
( Word to PDF - Unregistered ) />Word to PDF - UnRegistered
/>4
Hình 5.2: Sơ đồ thuật toán chung…………………………………………………… 48
Hình 5.3: Mặt phẳng ảnh……………………………………………………………… 49
Hình 5.4: Biểu diễn đối tượng di chuyển trên mặt phẳng ảnh………………………… 50
Hình 5.5: Chuyển đối không gian màu RGB đến HSV………………………………….51

Hình 5.5: Histogram…………………………………………………………………… 51
Hình 5.7: Kết quả trước và sau khi lọc nhiễu……………………………………………52
Hình 5.8: Sơ đồ thuật toán CamShift…………………………………………………….53
Hình 5.9:Kết quả tính toạ độ tâm bằng thuật toán CamShift……………………… 54
Hình 5.10: Kết quả bước đầu theo dõi đối tượng bằng thuật toán CamShift……………54
Hình 5.11: Giao diện phần mềm thiết kế hoàn chỉnh……………………………………56
Hình 5.12:Kết quả thử nghiệm với phần mềm………………………………………… 57
Hình 6.1: Sơ đồ khối điều khiển trung tâm………………………………………………59
Hình 6.2: Sơ đồ khối nguồn…………………………………………………………… 60
Hình 6.3: Sơ đồ khối truyền thông RS232…………………………………………… 60
Hình 6.4: Sơ đồ phần cứng hoàn chỉnh………………………………………………… 61
Hình 6.5: Sơ đồ nguyên lý mạch điều khiển động cơ………………………………… 62
Hình 7.1: Rô bốt vượt chướng ngại vật (lề đường) 64
Hình 7.2: Rô bốt leo cầu thang 65
Hình 7.2: Rô bốt vượt địa hình nghiêng 66
DANH SÁCH BIỂU ĐỒ
Biểu đồ 1: Giá trị toạ độ tâm đối tượng môi trường tĩnh (160x120)……………………68
Biểu đồ 2: Giá trị toạ độ tâm đối tượng môi trường tĩnh (176x144)……………………68
Biểu đồ 3: Giá trị toạ độ tâm đối tượng môi trường tĩnh (320x240)……………………69
Biểu đồ 4: Giá trị toạ độ tâm đối tượng môi trường tĩnh (640x480)……………………69
Biểu đồ 5: Giá trị toạ độ tâm đối tượng môi trường động (160x120)………………… 70
Biểu đồ 6: Giá trị toạ độ tâm đối tượng môi trường động (176x144)………………… 70
( Word to PDF - Unregistered ) />Word to PDF - UnRegistered
/>5
Biểu đồ 7: Giá trị toạ độ tâm đối tượng môi trường động (320x240)………………… 71
Biểu đồ 8: Giá trị toạ độ tâm đối tượng môi trường động (640x480)………………… 71
Biểu đồ 9: Giá trị toạ độ tâm đối tượng môi trường động tốc độ không đổi…………….72
CHƯƠNG 1
GIỚI THIỆU CHUNG
( Word to PDF - Unregistered ) />Word to PDF - UnRegistered

/>6
1.1. Giới thiệu chung về rô bốt
Rô bốt hay người máy là một loại máy có thể thực hiện những công việc một cách
tự động bằng sự điều khiển của máy tính.
Rô bốt là một tác nhân cơ khí, nhân tạo, thường là một hệ thống cơ khí-điện tử. Với
sự xuất hiện và chuyển động của mình, rô bốt gây cho người ta cảm giác rằng nó giác
quan giống như con người. Từ "rô bốt" (người máy) thường được hiểu với hai nghĩa: rô
bốt cơ khí và phần mềm tự hoạt động. Về lĩnh vực người máy, Nhật Bản là nước đi đầu
thế giới về lĩnh vực này.
Ngày nay rô bốt đang là tâm điểm của một cuộc cách mạng lớn sau Internet. Rô
bốt ngày càng được sử dụng rộng rãi trong lĩnh vực công nghiệp, y tế, giáo dục đào tạo,
giải trí, an ninh quốc phòng, thám hiểm không gian.
Rô bốt là sản phẩm công nghệ có độ phức tạp cao, chứa hàm lượng tri thức vô
cùng phong phú về tất cả các lĩnh vực của khoa học và công nghệ.
( Word to PDF - Unregistered ) />Word to PDF - UnRegistered
/>7
Ngày nay, người ta vấn còn đang tranh cãi về vấn đề “Một loại máy như thế nào thì
đủ tiêu chuẩn để được gọi là một rô bốt ?” Một cách gần chính xác, rô bốt phải có một vài
(không nhất thiết phải đầy đủ) các đặc điểm sau đây:
· Không phải là tự nhiên, tức là do con người sáng tạo ra.
· Có khả năng nhận biết môi trường xung quanh.
· Có thể tương tác với những vật thể trong môi trường.
· Có sự thông minh, có khả năng đưa ra các lựa chọn dựa trên môi trường và được
điều khiển một cách tự động theo những trình tự đã được lập trình trước.
· Có khả năng điều khiển được bằng các lệnh để có thể thay đổi tùy theo yêu cầu của
người sử dụng.
· Có thể di chuyển quay hoặc tịnh tiến theo một hay nhiều chiều.
· Có sự khéo léo trong vận động.
1.2. Giới thiệu rô bốt bám đối tượng
Hệ thống điều khiển rô bốt có thị giác được sử dụng để theo dõi mục tiêu di động

trong các ứng dụng công nghiệp, quốc phòng và xã hội. Hệ thống thị giác có thể được
phân thành 2 lớp, theo như cấu trúc của hệ, đó là hệ có camera gắn cố định và hệ có
camera gắn trên tay máy (eye-in-hand). Trong hệ camera cố định, camera được gắn cố
định so với hệ toạ độ thực, thu thập ảnh của cả mục tiêu và cả môi trường. Mục tiêu của
hệ này là cung cấp tín hiệu điều khiển sao cho tay máy đạt được vị trí mong muốn. Mục
đích của cấu trúc eye-in-hand là điều khiển tay máy sao cho ảnh của mục tiêu cố định hay
di động luôn được duy trì ở vị trí mong muốn trên mặt phẳng ảnh thu được. Trên cơ sở
ảnh thu được từ camera, được số hoá và tích hợp trong vòng điều khiển phản hồi, hệ
thống điều khiển các khớp của tay máy.
Các nghiên cứu của môi trường động bị bỏ khá xa so với của môi trường tĩnh do bị
ảnh hưởng khá lớn của tốc độ tính toán cũng như độ chính xác của việc phân tích ảnh. Do
vậy có nhiều thuật toán để cải thiện tốc độ xử lý và xem xét đến các quà trình nhiễu tác
động lên quá trình thu thập hình ảnh.
( Word to PDF - Unregistered ) />Word to PDF - UnRegistered
/>8
Một thách thức của thị giác máy là việc phân loại đối tượng. Một rô bốt có thể phải
đối mặt với nhiều đối tượng khác nhau, trong khi đó chỉ có một mục tiêu quan tâm, còn
các đối tượng khác thì không.
Để nhận biết được thông tin về vị trí của mục tiêu trong môi trường động, các đặc
trưng của mục tiêu rất quan trọng. Các điểm lỗ, các góc cạnh, các đặc điểm hình học của
mục tiêu được phân tích qua quá trình nhận dạng. Đặc tính về trọng tâm của mục tiêu có
thể tính dễ dàng qua moment bâc nhất trong môi trường tĩnh, nhưng trong môi trường
động việc này rất khó vì chi phí thời gian tính toán lớn.
Bài toán bám mục tiêu di động với quỹ đạo không biết trước yêu cầu phải giữ được
đối tượng ở một vị trí nhất định trên mặt phẳng ảnh. Thuật toán CamShift được sử dụng
để tính toán toạ độ trọng tâm của đối tượng.
Hình 1.1: PANrobot (nguồn: mobilerobot.org
( Word to PDF - Unregistered ) />Word to PDF - UnRegistered
/>9
Hình 1.2: Rô bốt MIDbo (nguồn: telepresenceoptions.com)

Hình 1.3: Rô bốt Pops (nguồn: slashgear.com)
( Word to PDF - Unregistered ) />Word to PDF - UnRegistered
/>10
Hình 1.4: Robot thám hiểm sao hỏa (nguồn: robotics.youngester.com)
1.3. Mục tiêu của đồ án
Mục tiêu nghiên cứu của đồ án có thể chia thành ba phần như sau:
Thứ nhất: Thiết kế và chế tạo rô bốt có kết cấu phù hợp với một số loại địa hình
như: bậc cầu thang, những mặt phẳng nghiêng và có độ dốc lớn….
Thứ hai: Xây dựng phần mềm rô bốt di động bám đối tượng sử dụng OpenCV.
Thuật toán được lựa chọn để sử dụng trong đồ án là thuật toán CamShift.
Thứ ba: Xây dựng khối phần cứng để kiểm nghiệm giải thuật của thuật toán đã xây
dựng sử dụng vi điều khiển Atmega32.
Như vậy công việc chính của đồ án là:
· Chế tạo rô bốt và cho thử nghiệm trên một số địa hình nghiêng, ghồ ghề
· Tìm hiểu thư viện OpenCV.
· Tìm hiểu về thuật toán CamShift.
( Word to PDF - Unregistered ) />Word to PDF - UnRegistered
/>11
· Lập trình điều khiển rô bốt di động sử dụng thuật toán CamShift.
· Thiết kế mạch phần cứng và lập trình điều khiển động cơ sử dụng Atmega32.
· Lập trình truyền thông nối tiếp RS232.
1.4. Giới hạn của đồ án
- Đồ án tập trung chủ yếu vào xây dựng phần mềm điều khiển sử dụng thư viện
OpenCV.
- Việc chế tạo rô bốt bằng tay nên không được chính xác như ý muốn.
- Rô bốt chỉ thực hiện việc bám đối tượng trong một số môi trường và đối tượng
nhất định mà ít bị ảnh hưởng của nhiễu.
- Mạch phần cứng và thuật toán điều khiển động cơ chỉ thực hiện việc điều khiển
hướng của rô bốt, nghĩa là không điều khiển tốc độ của rô bốt.
( Word to PDF - Unregistered ) />Word to PDF - UnRegistered

/>12
CHƯƠNG 2. TỔNG QUAN VỀ XỬ LÝ ẢNH VÀ THƯ
VIỆN OPENCV
( Word to PDF - Unregistered ) />Word to PDF - UnRegistered
/>13
2.1. Giới thiệu về xử lý ảnh
2.1.1. Tổng quan về xử lý ảnh
Xử lý ảnh là một lĩnh vực mang tính khoa học và công nghệ. Nó là một ngành khoa
học mới mẻ so với nhiều ngành khoa học khác nhưng tốc độ phát triển của nó rất nhanh,
kích thích các trung tâm nghiên cứu, ứng dụng, đặc biệt là máy tính chuyên dụng riêng
cho nó.
Xử lý ảnh được đưa vào giảng dạy ở bậc đại học ở nước ta khoảng chục năm nay.
Nó là môn học liên quan đến nhiều lĩnh vực và cần nhiều kiến thức cơ sở khác. Đầu tiên
phải kể đến xử lý tín hiệu số là một môn học hết sức cơ bản cho xử lý tín hiệu chung, các
khái niệm về tích chập, các biến đổi Fourier, biến đổi Laplace, các bộ lọc hữu hạn… Thứ
hai, các công cụ toán như đại số tuyến tính, sác xuất, thống kê. Một số kiến thứ cần thiết
như trí tuệ nhân tao, mạng nơ ron nhân tạo cũng được đề cập trong quá trình phân tích và
nhận dạng ảnh.
Các phương pháp xử lý ảnh bắt đầu từ các ứng dụng chính: nâng cao chất lượng ảnh
và phân tích ảnh. Ứng dụng đầu tiên được biết đến là nâng cao chất lượng ảnh báo được
truyền qua cáp từ Luân đôn đến New York từ những năm 1920. Vấn đề nâng cao chất
lượng ảnh có liên quan tới phân bố mức sáng và độ phân giải của ảnh. Việc nâng cao chất
lượng ảnh được phát triển vào khoảng những năm 1955. Điều này có thể giải thích được
vì sau thế chiến thứ hai, máy tính phát triển nhanh tạo điều kiện cho quá trình xử lý ảnh
sô thuận lợi. Năm 1964, máy tính đã có khả năng xử lý và nâng cao chất lượng ảnh từ
mặt trăng và vệ tinh Ranger 7 của Mỹ bao gồm: làm nổi đường biên, lưu ảnh. Từ năm
1964 đến nay, các phương tiện xử lý, nâng cao chất lượng, nhận dạng ảnh phát triển
không ngừng. Các phương pháp tri thức nhân tạo như mạng nơ ron nhân tạo, các thuật
( Word to PDF - Unregistered ) />Word to PDF - UnRegistered
/>14

toán xử lý hiện đại và cải tiến, các công cụ nén ảnh ngày càng được áp dụng rộng rãi và
thu nhiều kết quả khả quan.
2.1.2. Các khái niệm liên quan
a. Đ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ý bằng
máy tính (số), ảnh cần phải được số hoá. Số hoá ả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 (Pixel) là một phần tử của ảnh số tại toạ độ (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 phần tử trong ma trận được gọi là một phần tử ảnh.
b. Độ 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àn hình
rộng hơn thì độ mịn (liên tục của các điểm)
kém hơn.
c. Mức xám của ảnh :
Một điểm ảnh (pixel) 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 xử
lý ảnh.
· Đị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 giá trị 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 (8 bit) để biểu diễn mức xám:
Mức xám dùng 1 byte biểu diễn: 2^8 =256 mức, tức là từ 0 đến 255).
( Word to PDF - Unregistered ) />Word to PDF - UnRegistered
/>15
· Ả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ó 2 mức đen trắng phân biệt tức dùng 1 bit mô tả 2 1 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 ba 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) =2^( 24) ≈ 16,7 triệu màu.
d. Định nghĩa ảnh số :
Ả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.
e. Quan hệ giữa các điểm ảnh :
Một ảnh số giả sử được biểu diễn bằng hàm f(x, y). Tập con các điểm ảnh là S; cặp
điểm ảnh có quan hệ với nhau ký hiệu là p, q. Chúng ta nêu một số các khái niệm sau.
· Các lân cận của điểm ảnh (Image Neighbors) :
* Giả sử có điểm ảnh p tại toạ độ (x, y). p 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, y+1); (x+1, y)} = N 4 (p)
trong đó: số 1 là giá trị logic; N 4 (p) tập 4 điểm lân cận của p.
Đông x Tây
Nam
(x -1, y-1) (x, y-1) (x+1, y-1)

y (x -1, y) (x, y) (x+1, y)
(x-1, y+1) (x, y+1) (x+1, y+1)
Bắc
Hình 2.1. 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 N P (p) (Có thể coi lân cận chéo la 4
hướng: Đông-Nam, Đông-Bắc, Tây-Nam, Tây-Bắc)
N p (p) = { (x+1, y+1); (x+1, y-1); (x-1, y+1); (x-1, y-1)}
* Tập kết hợp: N 8 (p) = N 4 (p) + N P (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.
( Word to PDF - Unregistered ) />Word to PDF - UnRegistered
/>16
· Các mối liên kết điểm ảnh :
Các mối liên kết được sử dụng để 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, … , 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 q thuộc N 4 (p)
* Liên kết 8: Hai điểm ảnh p và q nằm trong một các lân cận 8 của p, tức q thuộc N 8
(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 N 4 (p) hoặc
2. q thuộc N P (p)
f. Biến đổi ảnh (Image Transform) :
Trong xử lý ảnh do số điểm ảnh lớn các tính toán nhiều (độ phức tạp tính toán cao)
đòi hỏi dung lượng bộ nhớ lớn, thời gian tính toán lâu. Các phương pháp khoa học kinh

điển áp dụng cho xử lý ảnh hầu hết khó khả thi. Người ta sử dụng các phép toán tương
đương hoặc biến đổi sang miền xử lý khác để dễ tính toán. Sau khi xử lý dễ dàng hơn
được thực hiện, dùng biến đổi ngược để đưa về miền xác định ban đầu, các biến đổi
thường gặp trong xử lý ảnh gồm:
- Biến đổi Fourier, Cosin, Sin
- Biến đổi (mô tả) ảnh bằng tích chập, tích Kronecker (theo xử lý số tín hiệu [3])
- Các biến đổi khác như KL (Karhumen Loeve), Hadamard
Một số các công cụ sác xuất thông kê cũng được sử dụng trong xử lý ảnh. Do khuôn
khổ tài liệu hướng dẫn có hạn, sinh viên đọc thêm các tài liệu [1, 2, 3, 4, 5] để nắm được
các phương pháp biến đổi và một số phương pháp khác được nêu ở đây.
g. Nén ảnh :
Ảnh dù ở dạng nào vẫn chiếm không gian nhớ rất lớn. Khi mô tả ảnh người ta đã đưa
kỹ thuật nén ảnh vào. Các giai đoạn nén ảnh có thể chia ra thế hệ 1, thế hệ 2. Hiện nay,
các chuẩn MPEG được dùng với ảnh đang phát huy hiệu quả.
h. Không gian màu HSV :
Không gian màu HSV ( Hue , Saturation , Value ) thường được sử dụng bởi những
người cần phải lựa chọn màu sắc ( chẳng hạn để in hoặc vẽ ) từ một đĩa màu vì vậy nó
tương ứng tốt hơn ( kinh nghiệm màu sắc ) không gian màu RGB đem lại . Hàm rgb2hsv
và hsv2rgb chuyển đổi ảnh giữa các không gian màu RGB và HSV .
( Word to PDF - Unregistered ) />Word to PDF - UnRegistered
/>17
Khi giá trị Hue nằm trong khoảng 0 và 1 thì màu tương ứng sẽ biến đổi từ red,
yellow , green , cyan , blue , magenta và black sang red . Vì vậy , giá trị thực của red là từ
0 đến 1 . Cũng vậy , khi saturation biến thiên từ 0 đến 1 , màu tương ứng ( hues ) biến đổi
từ chưa bão hoà đến hoàn toàn bão hoà ( unsaturated to fully saturated ) . Cuối cùng , nếu
value ( hay độ sáng ) biến đổi từ 0 đến 1 , màu tương ứng sẽ càng sáng hơn .
Hình
2.2. Minh họa
không gian màu
HSV.

- Hàm rgb2hsv chuyển đổi bản đồ màu hoặc ảnh RGB sang không gian màu HSV . Hàm
hsv2rgb thi hành thao tác ngược lại
( Word to PDF - Unregistered ) />Word to PDF - UnRegistered
/>18
Hình 2.3. Thể hiện sự chuyển đổi
2.2. Thế nào là thị giác máy
Thị giác máy là một lĩnh vực đa dạng và đang rất phát triển. Khái niệm thị giác
máy (Computer vision) có liên quan tới nhiều ngành học và hướng nghiên cứu khác nhau.
Từ những năm 1970 khi mà năng lực tính toán của máy tính ngày càng trở nên mạnh mẽ
hơn, các máy tính lúc này có thể xử lý được những tập dữ liệu lớn như các hình ảnh, các
đoạn phim thì khái niệm và kỹ thuật về thị giác máy ngày càng được nhắc đến và nghiên
cứu nhiều hơn cho tới ngày nay. Hiện tại, lĩnh vực này được các chuyên gia đánh giá là
vẫn còn mới mẻ và sẽ có rất nhiều thay đổi trong thời gian tới.
Lĩnh vực nghiên cứu của thị giác máy rất rộng, và đặc điểm chung là các bài toán về
thị giác máy tính đều không có một đề bài chung và cách giải duy nhất. Mỗi giải pháp giải
quyết vấn đều được một kết quả nhất định cho những trường hợp cụ thể. Ta có thể thấy sự
tương quan giữa thị giác máy với các lĩnh khác.
( Word to PDF - Unregistered ) />Word to PDF - UnRegistered
/>19
2.3. Thư viện OpenCV
2.3.1. OpenCV là gì ?
OpenCV viết tắt của Open Source Computer Vision Library. Nó chứa hơn 500
hàm sử dụng trong thị giác máy.
OpenCV là một thư viện mã nguồn mở (open source) Thư
viện được viết bằng ngôn ngữ C và C++ có thể chạy trên các hệ điều hành Linux,
Window và Mac OS X. OpenCV được thiết kế để nâng cao hiệu suất tính toán và nhấn
mạnh đến hệ thống thời gian thực. Một điều tuyệt vời của OpenCV là nó đưa ra một hệ
thống đơn giản, dễ sử dụng giúp mọi người nhanh chóng xây dựng các ứng dụng trong thị
giác máy, kể cả các hệ thống kiểm tra trong nhà máy, bức ảnh trong lĩnh vực y học, bảo
mật, rô bốt học v v. Nó chứa các lập trình xử lý ảnh rất đơn giản, kể cả thực thi các hàm

bậc cao như dò tìm khuôn mặt, theo dõi khuôn mặt, nhận dạng khuôn mặt, lọc Kalman.
Kể từ khi được giới thiệu vào tháng 1 năm 1999, OpenCV đã được sử dụng trong rất
nhiều ứng dụng, các sản phẩm và các nghiên cứu. Ví dụ trong lĩnh vực hàng không vũ trụ,
bản đồ web, sử dụng giảm nhiễu trong y học, phân tích đối tượng, an ninh, hệ thống dò
tìm, theo dõi tự động và hệ thống bảo mật, quản lý hệ thống sản xuất, xử lý camera, ứng
dụng trong quân sự, hệ thống hàng không không người lái, trên mặt đất, các tàu ngầm.
Ngoài ra, nó còn được sử dụng trong nhận dạng âm thanh. OpenCV còn là một chìa khóa
quan trọng trong các rô bốt sử dụng thị giác máy như Stanford, Asimo.
( Word to PDF - Unregistered ) />Word to PDF - UnRegistered
/>20
Hình 2.4: Quá trình phát triển của OpenCV
2.3.2. Vì sao lựa chọn OpenCV ?
- Thị trường thị giác máy đang ngày càng mở rộng và liên tục phát triển.
- Thư viện tiêu chuẩn sẽ tạo ra các ứng dụng mới và các giải pháp xử lý dễ dàng
hơn.
- Đặc biết tối ưu khi sử dụng cấu trúc của Intel.
- Tạo ra các mẫu ứng dụng bằng các thư viện được cập nhật thường xuyên và thực
hiện được các thuật toán rất nặng như dò tìm khuôn mặt.
- Có rất nhiều công nghệ hiện đại và các công ty lớn sử dụng thư viện OpenCV
trong ứng dụng của mình (điển hình như Intel, Microsoft, IBM, Siemens, Google v v.) và
các trung tâm nghiên cứu như (Stanford, MIT, CMU, Cambridge, INRIA…).
- Hơn 14000 thành viên trên forum OpenCVyahoogroups.com với trung bình 10 đến
20 bức thông điệp được trao đổi hàng ngày.
- Điều đó có thể khẳng định OpenCV thực sự đã góp phần vô cùng lớn trong lĩnh
vực thị giác máy.
( Word to PDF - Unregistered ) />Word to PDF - UnRegistered
/>21
2.3.3. Cấu trúc và nội dung OpenCV như thế nào?
Để hiểu OpenCV làm việc như thế nào chúng ta bắt đầu từ sự phân chia cấu trúc và
nội dung của OpenCV ở 5 phần. Cấu trúc của OpenCV được chia thành 5 phần chính, 4

trong số đó được chỉ ra trong hình 6.
CV (computer vision) là thành phần chứa những xử lý ảnh cơ sở và thuật toán thị
giác máy ở mức cao.
MLL (machine learning library) là thư viện machine learning, cái này bao gồm rất
nhiều lớp thống kê và gộp các công cụ xử lý.
HighGUI chứa các thủ tục vào ra và các hàm dùng cho việc lưu trữ và tải ảnh video.
CXCore chứa cấu trúc và nội dung dữ liệu cơ sở.
Hình 2.5: Cấu trúc cơ sở của OpenCV
2.3.4. Các hàm I/O trong OpenCV
OpenCV cung cấp các hàm mà cho phép chúng ta tương tác trực tiếp với hệ điều
hành, các file hệ thống, các phần cứng như Webcam. Các hàm này nằm trong thư viện
HighGUI, HighGUI cho phép mở một window, hiển thị bức ảnh, đọc các file liên quan
đến đồ hoạ (ảnh, video) các file ảnh như jpg, bmp v v. các file video như avi, wma, mp4,
dat v v. Ngoài ra nó còn xử lý các sự kiện chuột, bàn phím, OpenCV còn cho phép chúng
( Word to PDF - Unregistered ) />Word to PDF - UnRegistered
/>22
ta lựa chọn thuật toán linh động hơn bằng cách cung cấp các hàm tạo thanh trượt slider,
switch v v. Để làm việc với OpenCV trước hết phải học các hàm trong thư viện này.
Thư viện HighGUI có thể chia thành 3 phần: phần cứng, phần file hệ thống và phần
GUI (Graphical User Interface) chúng ta có thể xem xét các phần trong thư viện HighGUI
như sau.
Phần cứng: là phần thiết yếu nhất, liên quan đến hoạt động của Camera, trong phần
lớn hệ điều hành việc tương tác với phần cứng rất khó khăn và thực sự rất khó nhưng
OpenCV cung cấp hàm đơn giản để thực hiện việc tương tác này ví dụ:
cvCaptureFromCAM().
Phần file hệ thống: là khái niệm liên quan đến việc tải và lưu ảnh, một đặc điểm rất
tuyệt vời trong thư viện HighGUI là cho phép chúng ta làm việc với ảnh tương tự khi làm
việc với video. Vì vậy chúng ta có thể nhanh chóng tiếp cận với việc xử lý ảnh mà không
mất nhiều thời gian cho việc tải, lưu ảnh, video.
Phần GUI: là hệ thống cửa sổ (Window), thư viện cung cấp một số hàm đơn giản mà

cho phép chúng ta mở một window hiển thị ảnh trên window này. Ngoài ra nó còn cho
phép chúng ta thực thi các sự kiện nhận được từ chuột và bàn phím.
Một số hàm đơn giản thường xuyên sử dụng trong thư viện HighGUI như sau:
· Đầu tiên chúng ta cần học cách làm thế nào để đọc và viết các files ảnh, chụp
video chuyển đổi giữa các định dạng màu, và truy cập dữ liệu điểm ảnh tất cả qua
giao diện OpenCV.
· Đọc và viết một bức ảnh.
· Bức ảnh vào/ra thì rất dễ dàng trong OpenCV, để đọc một file ảnh, đơn giản gọi
hàm cvLoadImage(tên file). OpenCV hỗ trợ hầu hết các định dạng phổ biến kể cả
JPEG, PNG và BMP. Bạn không cần cung cấp thông tin định dạng.
cvLoadImage() tự động quyết định dạng file thông qua file header này.
· Để viết một bức ảnh đến một file, ta dùng hàm cvSaveImage(). Hàm này cũng tự
quyết định file định dạng, để sử dụng từ tên file mở rộng.
· Cả cvLoadImage và cvSaveImage đều nằm trong module HighGUI .
· Khi sử dụng xong bức ảnh đầu vào nhận được từ cvLoadImage(), loại bỏ nó bằng
hàm cvReleaseImage(). Hàm này đưa ra một địa chỉ của con trỏ giống đầu vào của
( Word to PDF - Unregistered ) />Word to PDF - UnRegistered
/>23
nó bởi việc nó làm là loại bỏ an toàn (Safe Release). Nó chỉ loại bức ảnh này khi
bức ảnh là non-null. Sau khi loại bỏ xong nó đặt giá trị con trỏ về 0.
· Làm việc với Video tương tự như là việc với ảnh.
· Nhận các frame từ một webcam, hay các thiết bị video số khác thì dễ dàng như tải
nó lên từ một file có sẵn. Để nhận một khung từ camera ta chỉ việc thay
cvCreateFileCapture() bằng hàm cvCreateCameraCapture().
· Chúng ta có thể tạo cvCapture*Object với cvCreateFileCapture(). Chúng ta sử
dụng cvQueryFrame () để nhận từng frame và cvWaitkey(33) để chờ 33ms giữa
từng frame. Chúng ta sử dụng cvReleaseCapture() để loại bỏ capture khi ngừng sử
dụng.
· Copy một bức ảnh.
· Lưu trữ bức ảnh trong OpenCV.

· OpenCV lưu bức ảnh giống cấu trúc C, IplImage, Ipl viết tắt của image processing
library.
Kiểu dữ liệu IplImage được định nghĩa trong CXCORE. Thêm vào dữ liệu ảnh
thực, nó chứa một số đặc điểm để mô tả như sau:
· Width - độ rộng bức ảnh tính theo pixel.
· Height - độ cao bức ảnh tính theo pixel.
· Depth - một kiểu tiền định nghĩa chỉ rõ lượng bits/pixel/channel.
Ví dụ : Depth=IPL_DEPTH_8U, dữ liệu cho mỗi pixel kênh ảnh được lưu giữ như
8-bits không dấu.
· nChannel – số lượng của dữ liệu channel ảnh (từ 1- 4). Mỗi một channel chứa một
kiểu của pixel dữ liệu.
ví dụ: bức ảnh RGB có 3 kênh R (đỏ), G (xanh lá cây), B (xanh da trời).
· Grayscale là bức ảnh chỉ chứa một kênh điểm ảnh sáng nhất.
· Truy cập giá trị điểm ảnh.
· Chúng ta có thể tạo ra rất nhiều hàm truy cập điểm ảnh mà không cần tác động trực
tiếp đến dữ liệu ảnh thô.
( Word to PDF - Unregistered ) />Word to PDF - UnRegistered
/>24
Cách dễ nhất để đọc từng điểm ảnh riêng lẻ là sử dụng hàm cvGet2D.
· cvScalar cvGet2D(const *CvArr, int row, int col).
· Hàm này có 3 thuộc tính: một pointer trỏ đến dữ liệu chứa trong CvArr*, một
mảng chỉ rõ vị trí hàng và cột. Hàng topmost của điểm ảnh là row=0, và
bottommost là row=height-1.
2.3.5. Các hàm thực hiện xử lý ảnh
Thư viện HighGUI chỉ cung cấp các hàm thực hiện vào ra bức ảnh tuy nhiên vấn đề
xử lý ảnh mới thực sự là quan trọng và khó khăn. OpenCV cung cấp các hàm thực hiện
xử lý ảnh nằm trong thư viện cv. Một bức ảnh không chỉ đơn giản là một mảng giá trị
màu sắc. khi chúng ta đề cập đến xử lý ảnh thì nó đã bao gồm các hàm xử lý liên quan
đến cấu trúc của bức ảnh.
Một số hàm xử lý ảnh thường xuyên sử dụng như sau:

· Smoothing (làm mịn).
Smoothing hay còn gọi là blurring nó là một thuật toán xử lý ảnh đơn giản và
thường xuyên sử dụng. Có rất nhiều nguyên nhân chúng ta dùng đến smoothing nhưng nó
thường dùng để loại bỏ nhiễu do máy ảnh sinh ra. Smoothing quan trọng khi bạn muốn
giảm độ phân giải của một bức ảnh theo rất nhiều cách khác nhau.
Bằng việc thay thế kiểu smooth và các thông số sẽ có các bức ảnh tương đối khác
nhau tuy theo mục đích sử dụng nhưng thường dùng nhất vẫn là CV_GAUSSIAN.
· Image morphology (hình thái học bức ảnh).
OpenCV cung cấp hàm chuyển đổi morphology nhanh chóng và tiện lợi khi làm
việc với bức ảnh. Cơ bản của morphology là dilation (giãn) và erosion (co) chúng ngày
càng được sử dụng rộng rãi trong việc loại bỏ nhiễu, cô lập những thành phần riêng rẽ, và
liên kết các thành phần với nhau.
· Theshold (ngưỡng).
Chúng ta thường làm rất nhiều bước xử lý ảnh khác nhau và đưa ra những quyết
định cuối cùng về điểm ảnh trên một bức ảnh hay nói cách khác là loại bỏ giá trị phía trên
hoặc dưới một ngưỡng nào đó giữ lại nhưng điểm ảnh nằm trong khoảng giá trị mong
muốn lúc đó ta dùng hàm threshold.
( Word to PDF - Unregistered ) />Word to PDF - UnRegistered
/>25
2.3.6. Các hàm Histograms and Matching
· Histogram.
Trong việc phân tích hình ảnh thông tin về đối tượng và video, chúng ta thường
muốn biểu diễn chúng giống như là một histogram. Histogram có thể sử dụng để biểu
diễn rất nhiều dạng khác nhau như phân bố màu của đối tượng, độ dốc mẫu cạnh của một
đối tượng, hay xác suất phân bố vị trí của đối tượng.
Tìm histogram được sử dụng rất nhiều trong các chương trình ứng dụng thị giác
máy tính. Histogram được sử dụng để dò tìm sự thay đổi giữa các cảnh trong video bằng
cách đánh dấu khi cạnh và màu sắc thay đổi từ khung này đến khung khác. Chúng sử
dụng để nhận dạng nhưng điểm quan tâm trên một bức ảnh bằng cách gán mỗi điểm ảnh
một “tag” chứa những Histogram của những đặc điểm gần nhất. Histogram của cạnh,

màu, góc và rất nhiều đặc điểm khác. Một chuỗi các màu sắc, cạnh có thể dùng để xác
nhận dù có hay không một video đã được copy trên web.
· Ghép mẫu template matching.
Hàm ghép cvMatchTemplate() không dựa trên histogram, hơn nữa, hàm này ghép
một bức ảnh thực đến một bức ảnh đầu vào bằng cách “Sliding” đường dẫn qua bức ảnh
đầu vào này sử dụng thao tác ghép mô tả trong phần này.
2.3.7. Hàm Contours
Mặc dù thuật toán như dò tìm cạnh candy có thể sử dụng để tìm ra cạnh pixel để
phân bức ảnh thành các phần khác nhau. Bước tiếp theo là xây dựng các cạnh này thành
contours.
2.3.8. Cơ sở toán học của thuật toán CamShift
Camshift viết gọn của “Continuously Adaptive Mean Shift” là cơ sở của thuật toán
theo dõi khuôn mặt trong OpenCV. Nó bao gồm thuật toán cơ sở Mean Shift với thích
ứng các bước thay đổi kích cỡ của vùng. Nhân là một hàm step đơn giản nằm trong một
bản đồ vỏ xác suất (skin-probability). Vỏ xác suất của mỗi một điểm ảnh được tính toán
dựa trên màu sắc bằng cách sử dụng một phương pháp gọi là Histogram backprojection.
Màu sắc được đưa ra như Hue từ mô hình màu HSV.

×