Để có thể thu nhận ảnh trên Window, ta phải thực hiện một số hàm API để giao tiếp với driver của Camera như sau xin tham khảo tài liệu [9], [10] và bộ MSDN:// chú ý là để dùng được các h
Trang 1TỔNG QUAN
1.1 KHÁI NIỆM VỀ ROBOT VISION
Bài toán tránh vật cản là một bài toán rất quen thuộc trong điều khiển cácloại xe hoặc Robot tự hành Có rất nhiều cách giải quyết bài toán này như sửdụng các cảm biến hồng ngoại, siêu âm,… để xác định vị trí vật cản rồi sử dụnggiải thuật tránh vật cản cục bộ để di chuyển Tuy nhiên với sự phát triển rấtnhanh của kỹ thuật điện tử và khoa học máy tính, hiện nay còn có một hướngtiếp cận khác là sử dụng Camera kết hợp với máy tính tốc độ cao để đưa raphương án tránh vật cản một cách tối ưu hơn Hướng tiếp cận này làm xuất hiệnmột khái niệm mới trong lĩnh vực Robotic là Robot Vision nhằm mô tả các đốitượng là các Robot sử dụng Camera như một loại cảm biến chính trong quá trìnhlàm việc hoặc giao tiếp với con người
Hiện nay phương pháp dùng Camera cho các Robot tự hành vẫn đang tronggiai đoạn phát triển Tại Việt Nam phương pháp này còn tương đối mới, tuynhiên đây là hướng tiếp cận duy nhất có thể đưa các loại Robot nói chung trởnên thông minh, thân thiện và gần gũi với con người hơn
Trang 2Sau đây là một số lĩnh vực ứng dụng của Robot Vision:
Công nghiệp sản xuất: như các tay máy tự động, các hệ thống phânloại tốc độ cao,…
Công nghiệp giải trí: như chú chó Robot Aibo…
Nghiên cứu khoa học: như xe tự hành thám hiểm saohỏa, Robot thăm dò các nơi nguy hiểm như đáy biển…
Cuộc sống: như hệ thống nhận dạng khuôn mặt tạicác sân bay, các hệ thống phân biệt mống mắt…
Trở ngại lớn nhất của phương pháp chính là tốc độ xử lý của máy tính Bởi
vì Camera thực chất cũng chỉ là một loại cảm biến cao cấp được tích hợp trênmật độ diện tích nhỏ cho nên kết quả nhận được từ Camera sẽ là một dạng matrận Vector trong đó mỗi Vector sẽ biểu diễn một điểm ảnh (pixel) Kích thướccủa Vector này sẽ được phản ánh bằng số bit màu của ảnh BITMAP trênWindow Để xử lý chính xác các thông tin của môi trường ta phải tăng số lượngđiểm ảnh xử lý (ảnh thông thường có kích thuớc 320x240 điểm ảnh hoặc640x480 điểm ảnh) và điều này sẽ làm giảm tốc độ xử lý thông tin Do đó để tốcđộ xử lý chấp nhận được ta thường phải giảm số điểm ảnh, bỏ bớt một số côngđoạn xử lý hoặc thường gặp nhất là giảm số bit màu của một điểm ảnh bằngcách chuyển ảnh xuống mức xám để xử lý
Dưới đây là hình ảnh một số Robot tự hành sử dụng Camera
Trang 3Hình 1.1 Robot tự hành sử dụng 2 Camera
Trang 4Hình 1.2 Walking Robot sử dụng Camera và các cảm biến đo khoảng cách
Trang 51.2 ƯU NHƯỢC ĐIỂM CỦA PHƯƠNG PHÁP
Sau đây là một số các ưu điểm cũng như khuyết điểm của phương pháp này
so với các phương pháp dùng cảm biến:
Ưu điểm:
Có được biên dạng liên tục của toàn vật thể
Có thể phân biệt được sự thay đổi nhỏ về màu sắc và biên dạng
Có thể phân loại được các vật thể khác nhau dựa trên hình dáng và màusắc
Có thể phát hiện và phân tích các chuyển động (motion analysis andobject tracking)
Có tính tương tác tốt với con người như có thể nhận dạng và phân biệtđược khuôn mặt con người (face recognition)
Giải quyết được bài toán 3D
Hình 1.3 Robot tự hành sử dụng wireless Camera.
Trang 6 Giải quyết được bài toán toàn cục và tối ưu theo một tiêu chí cụ thể (nhưbài toán tìm đường đi ngắn nhất).
Nhược điểm:
Đòi hỏi máy tính có tốc độ cao
Quá trình xử lý phức tạp nên dễ phát sinh lỗi
1.3 HỆ THỐNG XỬ LÝ ẢNH
Nhận biết môi trường là quá trình rất quan trọng trong lĩnh vực Robotic vànhiều lĩnh vực khác Trang bị một hệ thống xử lý ảnh tốt sẽ nâng cao khả nănglinh hoạt cho hệ thống tự động, do đó các máy thông minh như Robot nên có hệthống xử lý ảnh để chúng có thể thực hiện nhiều nhiệm vụ như con người, chẳnghạn lắp ráp, kiểm tra, và đi lại Hơn nữa hệ thống xử lý ảnh còn có thể cung cấpnhững thông tin giúp các máy thông minh có thể thu nhận và học thêm từ môitrường mà nó đang hoạt động, chứ không chỉ giới hạn trong khả năng hiểu biếtmà người lập trình cung cấp cho nó
Hệ thống xử lý ảnh thực hiện các nhiệm vụ gồm (tài liệu [6]): thu nhậnchuyển đổi (transformation), phân tích (analysis), và nhận biết các hình ảnh ánhsáng (image understanding) Cụ thể:
Chuyển đổi hình ảnh là quá trình biến đổi hình ảnh ánh sáng thànhhình ảnh điện tử có thể sử dụng trong máy tính Vì vậy, chuyển đổihình ảnh đòi hỏi số hoá điện tử hình ảnh ánh sáng Một khi đã đượcsố hoá, các hình ảnh này sẽ được phân tích bằng phần mềm
Sau quá trình chuyển đổi là quá trình phân tích ảnh để rút ra nhữngthông tin cần thiết cho bước hiểu ảnh tiếp theo (ví dụ như tìm cácgờ cạnh hay màu sắc của đối tượng trong ảnh)
Cuối cùng một khi hình ảnh đã được phân tích, hệ thống vision phảilàm sáng tỏ hay hiểu (understanding) hình ảnh vừa được thu nhậnthể hiện cái gì trong giới hạn hiểu biết về môi trường của nó Saugiai đoạn này, tùy theo mục đích của ứng dụng, các quyết định sẽđược đưa ra
Sau đây ta sẽ trình bày dưới dạng sơ đồ các giai đoạn chính của quá trìnhxử lý ảnh được thực hiện trong Luận Án
Trang 7Với mô hình này thì sau khi ra quyết định, hệ thống xử lý ảnh sẽ đóng thêmvai trò thu nhận hình ảnh phản hồi để quá trình điều khiển được chính xác hơn(điều khiển vòng kín).
Các chương tiếp theo sẽ trình bày theo thứ tự các quá trình như đã nêu trên
Hình 1.4 Các giai đoạn chính của quá trình xử lý ảnh
Phân tích ảnh
Lưu trữ
Hệ ra quyết định
Trang 82 THU NHẬN ẢNH VÀ
TIỀN XỬ LÝ ẢNH
Quá trình xử lý ảnh sẽ nhận ảnh từ Camera như là INPUT của toàn bộ quá trình xử lý Chuơng này sẽ trình bày hai quá trình sau:
Thu nhận ảnh từ Camera.
Tiền xử lý ảnh nhận được (đưa ảnh nhận được về mức xám và tăng cường chất lượng ảnh này).
Trước tiên ta sẽ tìm hiểu sơ lược về quá trình nhận ảnh từ Camera trên hệ điều hành Window.
Trang 9…), hay chuyển ảnh sang một không gian khác để xử lý rồi biến đổi ngược trở lại(như biến đổi Fourier,Wavelet…).
Mô hình minh họa của đề tài sử dụng một WebCam của D-Link với driverhỗ trợ chuẩn bắt hình VfW (Video for Window) ở độ phân giải (tương ứng vớikích thước của ma trận ảnh) 320x240
Window có hổ trợ một chuẩn mới nhanh hơn chuẩn VfW là chuẩn WDM(Windows Driver Model) tuy nhiên vì driver của hãng sản xuất gặp một số lỗikỹ thuật nên chuẩn này chỉ làm việc được trên một số máy có cấu hình phù hợp.Dưới đây là cấu trúc driver nhận ảnh từ Camera trên Window:
Trang 102.2 ĐỊNH DẠNG ẢNH BITMAP VÀ CÁC BƯỚC THU NHẬN ẢNH
Do chương trình minh họa được viết trên nền Window nên tín hiệu từCamera sau khi được driver xử lý sẽ được chuyển sang một định dạng chuẩn củaWindow là DIB
Sau đây là sơ lược về cấu trúc của file BMP: file lưu trữ định dạng DIBtrên Window
2.2.1 Cấu trúc file BITMAP
Các khái niệm:
DDB (Device Dependent Bitmap): Bitmap phụ thuộc vào thiết bị cụ thể,nên không thể sử dụng ở một thiết bị khác sao cho hình ảnh không thay đổi.DIB (Device Independent Bitmap): Bitmap có thể sử dụng trên nhiều thiết
bị khác nhau do có thêm những thông tin như số màu sử dụng, cách thức nén, Hiện nay, các file BMP đều là loại bitmap DIB
Hình 2.1 Cấu trúc của driver nhận ảnh từ Camera
Trang 11} BITMAPFILEHEADER;
// Bitmapinfoheader
typedef struct tagBITMAPINFOHEADER{ // bmih
DWORD biSize; // Kích thước BITMAPINFOHEADER LONG biWidth; // Chiều rộng bitmap theo pixels
LONG biHeight; // Chiều cao bitmap theo pixels,
WORD biPlanes; // Color planes, luôn bằng 1
WORD biBitCount // Color bits per pixel (1, 4, 8, 24, 32) DWORD biCompression; // Kiểu nén
DWORD biSizeImage; // Tổng số bytes hình ảnh bitmap
trong tập tin LONG biXPelsPerMeter; // Độ phân giải theo chiều ngang LONG biYPelsPerMeter; // Độ phân giải theo chiều dọc DWORD biClrUsed; // Số màu sử dụng trong ảnh DWORD biClrImportant; // Số màu quan trọng
Trang 12Để có thể thu nhận ảnh trên Window, ta phải thực hiện một số hàm API để giao tiếp với driver của Camera như sau (xin tham khảo tài liệu [9], [10] và bộ MSDN):
// chú ý là để dùng được các hàm này ta phải khai báo thêm header Vfw.h
// và lib vfw32.lib vào chương trình
name = new char[200];
ver = new char[200];
if (capDriverConnect(capWindow,i)) {
capIndex = i;
capPreviewRate(capWindow,66);
capGetStatus(capWindow,&CapStatus, sizeof (CAPSTATUS));
// lay cac thong so cua Camera
Trang 13Kết quả của hàm trên sẽ được lưu giữ trong các biến toàn cục sau:
capIndex sẽ chứa số thứ tự của Camera mà Window nhận biết được
capName và capVer sẽ chứa thông tin mô tả về Camera chứa trongdriver
Và cuối cùng capWindow chính là HANDLE của Camera mà Windowtrả về để ta có thể tiến hành các thao tác giao tiếp với Camera
Để lấy về một ảnh ta sử dụng các lệnh sau:
capGrabFrameNoStop(capWindow);
capEditCopy(capWindow);
Hai lệnh trên sẽ gởi thông điệp báo cho Camera là ta cần lấy một ảnh ngaythời điểm hiện tại và cất ảnh này vào Clipboard của Window Nhưng để thực sựtruy cập được vào vùng dữ liệu của ảnh ta phải thực hiện thêm một số hàm sau:
Trang 14hDC = CreateCompatibleDC(dc->GetSafeHdc());
SelectObject(hDC,bm);
BitBlt(dc->GetSafeHdc(),3,3,Width,Height,hDC,0,0,SRCCOPY); DeleteObject(SelectObject(hDC,bm));
DeleteDC(hDC);
m_disp.ReleaseDC(dc);
// xoa clipboard EmptyClipboard();
Trên đây chỉ là các bước căn bản để thu nhận ảnh từ Camera, chi tiết cáchàm còn lại liên quan đến Camera xin xem trong MSDN phần VfW
Tiếp theo đây là một số các phương pháp tiền xử lý ảnh
2.3 CÁC BƯỚC TIỀN XỬ LÝ ẢNH ĐƯỢC SỬ DỤNG TRONG BÀI TOÁN
Trang 152.3.1 Chuyển ảnh sang mức xám
Theo Camera sử dụng, ảnh nhận được là ảnh 24 bit màu, để giảm bớt khốilượng tính toán ta sẽ đưa ảnh về ảnh mức xám (Gray Scale) 8 bit (nghĩa là mỗipixel sẽ được biểu diễn bằng 1 byte hay 256 cấp độ xám) theo công thức:
Trang 162.3.2 Cân bằng Histogram (Histogram equalization)
Histogram của một ảnh với các mức xám trong khoảng [0, L-1] là một hàmrời rạc:
Trong đó fk là giá trị xám thứ k (k = 0, 1, ., L-1), n k là số pixel với mức
xám đó, và n là tổng số pixel của ảnh
Nói một cách chính xác hơn Histogram p(f k ) chính là xác suất của biến cố giá trị xám thứ k, xác suất này có giá trị trong khoảng [0,1]
Ta cũng có thể biểu diễn Histogram của một ảnh bằng số lần xuất hiện của
mỗi mức xám, ta có p(f k ) = n k
Đồ thị hàm p(f k ) biểu diễn hình dạng Histogram của một ảnh sẽ cho biết
ảnh đó thuộc loại ảnh nào Như vậy hình dạng Histogram của một ảnh mang đếncho chúng ta những thông tin hữu ích về độ tương phản của ảnh
Hình sau biểu diễn bốn loại ảnh cơ bản tương ứng bốn Histogram củachúng
Hình 2.3 Hình minh họa công thức chuyển đổi mức xám (2-2)
Trang 17Trong cân bằng Histogram, điều mong muốn nhất là ảnh kết quả sẽ có đượcmột Histogram phân bố đều Để cân bằng Histogram, ta sẽ biến đổi xác suất
p(f k ) của từng giá trị xám sao cho chúng phân bố đều, cụ thể là:
Dưới đây là mô hình của giải thuật cân bằng Histogram:
Hình 2.4 Các Histogram tương ứng với bốn loại ảnh.
Trang 18Bước lượng tử hóa đều này rất cần thiết cho việc sửa lại các giá trị xám củaảnh Bước này được thực hiện như sau: gọi hmin là giá trị xám nhỏ nhất trongHistogram, g là giá trị xám của ảnh kết quả, hk là giá trị Histogram ứng với giátrị xám thứ k, ta có:
gk = (hk – hmin)*(L –1)/(1 – hmin) + 0.5 (2-5)
với L là số giá trị xám cực đại
Để minh họa kỹ thuật và áp dụng của nó trong quá trình tăng cường chấtlượng ảnh ta xét một ảnh cụ thể sau:
Hình 2.5 Ảnh nhận được từ Camera
gk
Trang 19Ảnh này tuy vẫn chưa tốt nhưng rõ ràng là dễ phân biệt biên dạng vật thểhơn Do đó quá trình câm bằng Histogram của ảnh nhận được từ Camera là cầnthiết vì nó làm tăng độ chính xác khi xử lý ảnh.
Hình 2.6 Histogram của ảnh
Hình 2.7 Ảnh sau khi điều chỉnh Histogram
Trang 202.3.3 Tăng cường độ tương phản (Contrast stretching)
Phương pháp này được dùng cho ảnh có độ tương phản thấp do sự chiếusáng kém, hay do đặt sai độ mở thấu kính trong quá trình thu ảnh Ý tưởng củakỹ thuật này là làm tăng các giá trị xám trong một tầm vực ảnh đang được xử lý
Các vị trí (f1,g1) và (f2,g2) quyết định hình dáng hàm biến đổi này Nếu f1=g1
và f2=g2 thì hàm biến đổi này trở thành một hàm tuyến tính mà hàm này khônglàm thay đổi các giá trị xám của ảnh
Còn nếu f1=f2, g1=0 và g2=L-1 thì hàm này trở thành một hàm Thresholdingđược mô tả qua hình vẽ mà hàm này tạo ra một ảnh nhị phân Các giá trị tức thời(f1,g1) và (f2,g2) tạo ra các mức độ dãn rộng mức xám khác nhau, vì vậy ảnhhưởng đến độ tương phản của nó
Tóm lại, việc chọn f1 f2 và g1 g2 là có chủ ý để hàm này tăng đơn điệuvà vì vậy hàm này không làm thay đổi trật tự các mức xám và không phát sinhthêm các mức xám mới dư thừa nào
(a) Hàm dãn rộng
độ tương phản.
Trang 21hình vẽ trên Cắt xén thích hợp cho các trường hợp giảm nhiễu khi tín hiệu vàonằm giữa [f1, f2].
Sử dụng lại ảnh trên, sau khi điều chỉnh Histogram ta se có kết quả sau(chú ý hình dạng của Histogram trước (hình 2.6) và sau (hình 2.9) khi xử lý):
Hình 2.9 Histogram sau khi co dãn độ tương phản.
Hình 2.10 Ảnh sau khi co dãn độ tương phản.
Trang 22Rõ ràng là ảnh sau khi qua hai quá trình can thiệp vào Histogram đã trở nêndễ quan sát hơn Tuy nhiên ảnh ở giai đoạn này vẫn chưa đưa qua bước tách biênbởi vì trong ảnh vẫn còn chứa nhiễu Các nhiễu này nếu không được khử tốt sẽlàm quá trình nhận biên bị sai lạc Ở đây có hai phương pháp được xem xétnhằm làm đồng đều hóa bề mặt ảnh (san phẳng nhiễu) là bộ lọc Mean và bộ lọcMedian Sau đây ta sẽ lần lượt xem xét từng bộ lọc:
2.3.4 Bộ lọc Mean và Median
2.3.4.1 Lọc Mean
Ý tưởng của bộ lọc này là thay thế giá trị tại mỗi điểm ảnh bằng trung bìnhcộng của tất cả các điểm liên thông cục bộ của nó Số điểm liên thông thườngdùng là 8 (dùng mặt nạ 3x3) sẽ có giá trị như sau:
4
P5 P6
P7P8 P9
Trang 23Kết quả của phép lọc này là ảnh sẽ được làm trơn (smoothing filter), tuynhiên nó lại làm nhòe (blur) đường biên của vật và thường làm đứt những nétmảnh của biên dạng.
Tìm giá trị Median của dãy và thay thế giá trị pixel hiện tại
Đây là một loại bộ lọc đơn giản nhưng rất hiệu quả trong việc loại bỏ nhiễuhạt tiêu (pepper noise) và nhiễu hạt muối (salt noise)
Các chấm nhỏ bị liền lại sau khi lọc
Hình 2.11 Mean filter.
Trang 24Qua hình minh họa của hai bộ lọc trên, ta chọn bộ lọc Median cho quá trìnhlọc của bài toán vì bộ lọc này không làm mờ (Blur) biên dạng của đối tượng.
2.3.5 Các phép toán Morphology và ứng dụng
Lọc Median tuy tác động rất tốt lên các ảnh bị nhiễu hạt tiêu (peppernoise) nhưng nếu các nhiễu có kích thước lớn thì lọc Median sẽ khônghiệu quả Sau đây ta sẽ tìm hiểu một số toán tử Morphology và các phépbiến đổi của chúng nhằm loại bỏ nhiễu một cách hiệu quả hơn nữa
Morphology là các toán tử xử lý trên ảnh nhị phân Toán tử này sử dụngmột phần tử có cấu trúc (structuring element), sau đó áp dụng các phépgiao, phép hợp, phép bù,… với phần tử này lên ảnh gốc nhằm thu đượcảnh kết quả có sự biến đổi về hình dáng biên dạng phù hợp
Các phép biến đổi cơ bản của Morphology là Erode và Dilate ([14]).Kết hợp hai phép biến đổi này ta sẽ có thêm Open và Close ([14]) Cácứng dụng của phép biến đổi này là khử nhiễu trong xử lý ảnh, xử lý biêndạng trong nhận dạng chữ viết, xử lý biên dạng trong computer vision…
2.3.5.1 Erode
Hình 2.12 Bộ lọc Median và kết quả.
Trang 25 Để có được kết quả này Erode sử dụng một phần tử (structuring
2 _
)}
0 , 0 {(
I I
(2-9)Sau đó lấy giao của hai tập con I_1 và I_2 để có kết quả và ta định nghĩa:
X I
Hình 2.13 Phép toán Erode.
Hình 2.14 Aùp dụng phép toán Erode trên ảnh nhị phân
Trang 26 Hình ví dụ trên: (a) cho ta thấy 2 vật thể khi được thu nhận bị xác nhập làm một (nguyên nhân có thể là do bóng hay nhiễu) Tuy nhiên phần bị xác nhập có bề dày biên nhỏ nên ta chỉ cần áp dụng một lần phép toán Erode lên ảnh gốc là đã có thể thu được kết quả như hình (b).
2.3.5.2 Dilate
Đây là một phép biến đổi cơ bản của Morphology, phép biến đổi này cótác dụng làm dầy(Dilate) biên dạng vật thể và kết quả là vật thể to racòn các lỗ rỗng thì nhỏ lại
Một ví dụ của phép toán này là:
Để có được kết quả này Dilate sử dụng một phần tử (structuringelement)
X = {(0,0),(0,1)} (2-11)Và lấy giao với ma trận I là ma trận của ảnh:
)}
1 , 0 {(
2 _
)}
0 , 0 {(
I I
(2-12)Sau đó lấy hợp của hai tập con I_1 và I_2 để có kết quả và ta định nghĩa:
X I I
Hình 2.15 Phép toán Dilate và kết quả.
Trang 27Chú ý là các lỗ nhỏ bên trong các hình của hình bên trái đã bị làm biến mất
do biên dạng bị dày ra và điền đầy Tuy nhiên nếu trong ảnh có nhiễu đốm thìcác nhiễu này cũng sẽ bị làm lớn thêm tương ứng Để khắc khục nhược điểmnày, người ta đã đưa ra một khái niệm mới là Open và Close
2.3.5.3 Open
Theo định nghĩa Erode và Dilate như trên ta đưa ra phép Open là kếthợp giữa Dilate và Erode (chú ý dil và er tương ứng là viết tắt củaDilate và Erode):
nghĩa là ảnh sau khi Erode sẽ được thực hiện thêm phép Dilate một lầnnữa
Để minh họa cách sử dụng phép toán này trong quá trình xử lý ảnh ta sẽxem một số ví dụ minh họa:
Hình 2.17 Phép Open.
Trang 28 Ví dụ trên cho thấy rằng Open có thể làm tăng chất lượng biên dạng, cóthể loại bỏ nhiễu hạt tiêu trong ảnh Quá trình này có thể tách ra làm 2giai đoạn:
- Giai đoạn đầu khi áp dụng phép Erode, các nhiễu có biên dạngtách rời nhau sẽ bị biến mất
- Giai đoạn kế tiếp khi áp dụng phép Dilate lên ảnh vừa thu được, docác nhiễu tách rời đã biến mất nên chỉ có phần biên dạng liên tục(biên dạng gần với biên dạng thực nhất) mới bị làm đầy
Kết quả của 2 phép biến đổi này kích thước trung bình và hình dáng củabiên dạng không bị thay đổi nhiều nhưng nhiễu lại bị khử đi một cách hiệu quả.Tuy nhiên ở đây có một chú ý là khi dùng phép Open thì biên dạng sẽ cókhuynh hướng bị thu hẹp lại khác với Close Vùng trắng trong hình sau cho thấybiên dạng bị thu hẹp lại như thế nào:
2.3.5.4 Close
Theo định nghĩa Erode và Dilate như trên ta đưa ra phép Close là kếthợp giữa Dilate và Erode (chú ý dil và er tương ứng là Dilate và Erode):
Hình 2.18 Kết quả của phép Open lên ảnh nhị phân.
Hình 2.19 Kết quả của Open.
Trang 29nghĩa là ảnh sau khi Dilate sẽ được thực hiện thêm phép Erode một lầnnữa.
Để minh họa cách sử dụng phép toán này trong quá trình xử lý ảnh ta sẽxem một số ví dụ minh họa:
Ví dụ trên cho thấy rằng Close cũng có thể làm tăng chất lượng biên dạng,có thể loại bỏ nhiễu hạt tiêu trong ảnh Tuy nhiên sự khác nhau giữa Open vàClose là Close sẽ có xu hướng mở rộng biên dạng còn Open thì thu hẹp biêndạng:
Hình 2.20 Phép Close.
Hình 2.21 Kết quả của Close lên ảnh nhị phân.
Trang 302.3.5.5 Các áp dụng của Morphology trong Computer vision
Thông thường các phép toán Morphology không được áp dụng riêng rẽmà chúng thường kết hợp với các phép toán khác như phép lọc, cácphép toán đại số để có được kết quả theo yêu cầu
Trong giới hạn của bài toán đã đặt ra phép toán Morphology chỉ được sửdụng trong phần tiền xử lý ảnh nhằm hai mục đích:
- Làm liền biên dạng: biên dạng sinh ra do các hiệu ứng ánh sángtác động lên các gờ cạnh của vật thể và được Camera thu nhận lại
Vì môi trường thu nhận không thể hoàn toàn đồng nhất (như do bụibẩn) nên ảnh thu nhận có thể bị đứt nét Ta có thể sử dụng một bộnội suy để làm liền biên dạng nhưng ở đây ta sử dụng một cách đơngiản hơn là áp dụng toán tử Dilate lên ảnh để làm đầy các vùngbiên dạng bị đứt nét do nhiễu
- Tách các nhiễu đốm nhỏ ra khỏi ảnh: các nhiễu này thường do điềukiện sáng không tốt sinh ra, nhiễu loại này phân bố đều trên ảnhvà khi kết hợp với bóng dễ sinh ra biên dạng giả
Hình 2.21 Close mở rộng biên dạng
Aùp dụng phép Dilate
Trang 31Từ ảnh 24 bit màu với nhiễu của môi trường nhận được từ Camera, cuốibước tiền xử lý ảnh này ta đã có một ảnh 8 bit màu rõ ràng hơn thông qua cácquá trình như đã nêu ở trên.
Chương kế tiếp ta sẽ nêu một số các bước phân tích ảnh nhận được từ quátrình tiền xử lý này nhằm thu thập dữ liệu từ ảnh để đưa ra các quyết định choRobot
3 CÁC KỸ THUẬT PHÂN
Trang 32 Phân lớp đối tượng (cụ thể là các đối tượng sẽ được phân thành hai lớp là lớp vật cản và lớp Robot)
Truyền hai lớp trên cho bước tiếp theo là bước đưa ra đường di chuyển cho Robot.
Để thực hiện được hai yêu cầu trên, bước này sẽ phải thực hiện tuần tự các bước nhỏ sau đây:
Trong các bước trên, bước Threshold (phân ngưỡng) giữ vai trò quan trọng nhất vì nó quyết định độ chính xác chính của toàn bộ quá trình Lý thuyết chương này xin tham khảo trong các tài liệu [1], [8], [13], [14], [15].
3.1 PHÂN NGƯỠNG (Thresholding)
Quá trình đầu tiên của bước phân tích ảnh là quá trình Threshold Thực chấtcủa quá trình này là đưa giá trị tại mỗi pixel của ảnh mức xám về 0 (tương ứngvới mức logic 0) hay 255 (tương ứng với mức logic 1) theo một giá trị được gọi làngưỡng Quá trình này rất quan trọng vì nó có thể làm mất thông tin của ảnh đamức xám nếu chọn ngưỡng không thích hợp Sau đây ta sẽ xem xét một phươngpháp chọn ngưỡng từ Histogram
3.1.1 Các khái niệm về phân nguỡng
Phân ngưỡng là một bước của quá trình xử lý ảnh nhằm đưa ảnh từ ảnh
đa mức xám về ảnh nhị phân
Đây là quá trình bắt buộc đối với bài toán tìm đường vì quá trình làmmỏng biên hay tạo đường đi từ ảnh ma trận (ảnh Raster) là các quá trìnhxử lý trên ảnh nhị phân
Sau đây là hình ảnh của một số dạng thay đổi mức xám:
Threshold
Tách biên
Phân lớp đối tượng
Hình 3.1 Các bước phân tích ảnh.
Trang 33 Công thức của quá trình phân ngưỡng là:
Biểu thức sau thể hiện quá trình phân ngưỡng:
x i
T y x i y
x i
) , ( : 1
) , ( : 0 ) ,
Giá trị T được gọi là ngưỡng, ngưỡng này dùng để phân biệt xem mộtđiểm ảnh thuộc nền (background) hay thuộc về vật cản (obstacle)
3.1.2 Phân ngưỡng theo Histogram
Từ hình 3.1 ta thấy rằng việc chọn đúng ngưỡng là không đơn giản khimức độ thay đổi mức xám của ảnh thực không dứt khoát (step)
Nếu giá trị T chọn không thích hợp sẽ dẫn đến một trong hai trường hợplà:
- biên dạng có thể bị mất (lost), không liên tục (discontinue) haybiến dạng
- biên dạng có thể bị thừa, các biên dạng gần nhau sẽ bị nhập làm một dẫn đến hình dạng của vật sẽ bị sai lạc
Hình 3.1 Các dạng thay đổi mức xám của ảnh đa mức xám
Thông tin bị mất
Hình 3.2 Threshold ở T = 128
Trang 34 Để chọn giá trị T thích hợp, người ta đưa ra nhiều phương pháp, ở đây tadùng phương pháp chọn ngưỡng theo Histogram:
- tìm 2 điểm cực đại trên đường Histogram tương ứng là Imax1 và Imax2
n j
Theo (3-2) ta thấy ngưỡng được chọn có sự cân nhắc theo sự phân bố mứcxám của ảnh (Histogram của ảnh) cho nên phương pháp này được sử dụng làmphương pháp chọn ngưỡng cho bài toán
Sau quá trình Threshold ảnh đa mức xám lúc này đã trở thành ảnh nhị phân.Quá trình tách biên tiếp theo sau sẽ tách các biên dạng ra khỏi nền(background)
3.2 TÁCH BIÊN
Tách biên là một trong những bước quan trọng của quá trình xử lý ảnh.Theo định nghĩa, biên là phần chia tách nằm giữa 2 phần ảnh có sự khácbiệt về mức xám (gray-scale) Biên cũng được định nghĩa là các điểmảnh mà tại đó có sự thay đổi đột ngột về độ sáng (brightness)
Hình 3.3 Threshold ở T = 220
Biên dạng
bị nhập
Trang 353 Phương pháp Canny
3.2.1 Phương pháp Gradient
Phương pháp gradient là phương pháp dò biên cục bộ dựa vào cực đại củađạo hàm Theo định nghĩa thì gradient là một Vector có các thành phần biểu thịtốc độ thay đổi giá trị của điểm ảnh theo hai hướng x và y Các thành phần củagradient được tính bởi :
dx
y x f y dx x f fx x
y x
y x
dy y
f dr
dx x
f dr
Trang 36và dr đạt cực đại khi f xsin f ycos 0 Do vậy ta có thể xác định hướng cựcđại của nó:
) / (
tan 1
x y
ta gọi r là hướng của biên
Trong kỹ thuật gradient, người ta chia nhỏ thành hai kỹ thuật (do dùng haitoán tử khác nhau) : kỹ thuật gradient và kỹ thuật la bàn
Kỹ thuật gradient
Kỹ thuật gradient sử dụng một cặp mặt nạ H1 và H2 trực giao (theo haihướng vuông góc) Nếu định nghĩa g1 , g2 là gradient tương ứng theo hướng x, y,thì biên độ của gradient, ký hiệu là g, tại điểm (m,n) được tính theo công thức:
) , ( ) , ( )
,
2
2 1
) , ( / ) , ( tan ) , ( m n 1g2 m n g1 m n
Trước tiên chúng ta xét toán tử Robert Toán tử này do Robert đề xuất năm
1965 Nó áp dụng trực tiếp của công thức đạo hàm tại điểm (x,y) Với mỗi điểmảnh I[x,y] của ảnh I, đạo hàm theo x, theo y được ký hiệu tương ứng g1 , g2 đượctính:
fy
fx
Hình 3.4 Hướng biên
Trang 37Trong trường hợp tổng quát, giá trị gradient biên độ g và gradient hướng
r được tính theo công thức (3-7)
Trong kỹ thuật Sobel và Prewitt người ta sử dụng hai mặt nạ:
1 0 1
1 0 1
0 0 0
1 1 1
Trang 38Mặt nạ Sobel
2 0 2
1 0 1
0 0 0
1 2 1
2
Mặt nạ PrewittGradient được xấp xỉ bởi công thức: G x H x I và G y H yI
Ví dụ của toán tử Prewitt và Sobel trên ảnh thực là:
Hình 3.6 Kết quả nhân chập mặt nạ Prewitt theo 2 hướng x và y
Trang 39Thực tế cho thấy rằng, các toán tử Sobel và Prewitt tốt hơn toán tử Robert,bởi chúng ít nhạy cảm với nhiễu Ta cũng thấy rằng việc lấy đạo hàm một tínhiệu có xu hướng làm tăng nhiễu trong tín hiệu đó Độ nhạy cảm này có thể làmgiảm xuống nhờ thao tác lấy trung bình cục bộ trong miền phủ bởi mặt nạ Lưu ýrằng, toán tử Sobel và Prewitt dễ dàng chuyển đổi cho nhau bằng cách thay đổihệ số.
Kỹ thuật la bàn (Compass Operator)
Kỹ thuật la bàn chọn gradient theo một số hướng định trước Nếu ký hiệu gk
là gradient la bàn theo hướng k / 2 2k (k=0,1, ,7), thì ta có gradient theotám hướng ngược chiều kim đồng hồ, mỗi hướng cách nhau 45 như sau:
Hình 3.8 Mô hình 8 hướng Hình 3.7 Kết quả nhân chập mặt nạ Sobel theo 2 hướng x và y
Trang 40Có nhiều toán tử la bàn khác nhau Nhưng ở đây chúng ta chỉ nêu toán tửKirsh Toán tử này sử dụng mặt nạ 3x3:
3 0 3
5 5 5
5 0 3
5 5 3
5 0 3
5 3 3
5 0 3
3 3 3
3 0 3
3 3 3
3 0 5
3 3 3
3 0 5
3 3 5
3 0 5
3 5 5
8
H
Nếu ký hiệu Ai (i=1,2, ,8) là gradient thu được theo tám hướng bởi 8 mặtnạ, biên độ gradient tại (x,y) sẽ được tính theo công thức:
A(x,y)= Max(| g(x,y)|, i=1,2, ,8) (3-9)
Ngoài toán tử Kirsh, người ta còn sử dụng một số toán tử khác mà mặt nạ ởhướng 0 được định nghĩa tương ứng bởi:
1 2 1
1 1 1
1 2 1
1 1 1
0 0 0
1 2 1