Những ứng dụng liên quan đến camera đã triển khai có thể kể đến là: kiểm tra lỗi trong dây chuyền sản xuất ổ cứng máy tính, giám sát và điều khiển tín hiệu giao thông bằng camera thời gi
Trang 1Nghành: Công nghệ cơ-Điện tử MSSV: 48132294
Tên đề tài “Thiết kế và thi công mobile robot bám theo đối tượng dùng phương pháp xử lý ảnh”.(phần xử lý ảnh)
Số trang: 78
Hiện vật: Mô hình mobile robot, 02 quyển báo cáo, 02 đĩa CD
NHẬN XÉT
KẾT LUẬN:………
……… …
……… ……
……… ………
………
Nha Trang, ngày….tháng…năm……
GIÁO VIÊN HƯỚNG DẪN
(Kí, ghi rõ họ tên)
Trang 2Nghành : Công nghệ cơ-Điện tử MSSV: 48132294
Tên đề tài “Thiết kế và thi công mobile robot bám theo đối tượng dùng phương
pháp xử lý ảnh”(phần xử lý ảnh)
Số trang: 78
Hiện vật: Mô hình mobile robot, 02 quyển báo cáo, 02 đĩa CD
NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN
………
………
………
………
Kết luận: ………
………
………
………
ĐIỂM PHẢN BIỆN Bằng số Bằng chữ Nha Trang, Ngày… , tháng… , năm…
GIÁO VIÊN PHẢN BIỆN (kí, ghi rõ họ tên)
ĐIỂM CHUNG Bằng số Bằng chữ Nha Trang, ngày… , tháng……, năm……
CHỦ TỊCH HỘI ĐỒNG
(kí, ghi rõ họ tên)
Trang 3MỤC LỤC
Trang
MỤC LỤC i
LỜI MỞ ĐẦU 1
TÓM TẮT NỘI DUNG ĐỒ ÁN 2
CHƯƠNG 1 CƠ SỞ LÝ THUYẾT 3
1.1 Ảnh và hệ thống xử lý ảnh 4
1.1.1 Ảnh 4
1.1.2 Hệ thống xử lý ảnh 5
1.2 Các vấn đề cơ bản trong xử lý ảnh 6
1.2.1 Biểu diễn và mô hình hoá ảnh 6
1.2.2 Tăng cường chất lượng ảnh 7
1 2.3 Khôi phục ảnh 7
1.3 Giới thiệu Image Processing Toolbox và ứng dụng xử lý ảnh 8
1.3.1 Giới thiệu Image Processing Toolbox 8
1 3.2 Các khái niệm và qui ước trong Image Processing Toolbox 9
1.3.2.1 Hệ toạ độ quản lý ảnh 9
1.3.2.2 Các loại ảnh trong MatLab 10
1.3.3 Một số không gian màu trong Image Processing toolbox 12
1.3.3.1 Không gian màu RGB 12
1.3.3.2 Không gian màu HSV 12
1.3.3.3 Không gian màu YCbCr 13
1.3.4 Giới thiệu các phép xử lý ảnh cơ bản trong MatLab 14
1.3.4.1 Đọc, ghi, hiển thị ảnh 14
1.3.4.2 Xử lý ảnh 14
1.4 Các bước giao tiếp nối tiếp bằng Matlab 15
1.5 Hệ ảnh vật 17
1.5.1 Phép biến đổi chiếu hình 17
CHƯƠNG 2 PHƯƠNG PHÁP VÀ NỘI DUNG NGHIÊN CỨU 20
Trang 42.1 Phương pháp nghiên cứu 21
2.2 Nội dung nghiên cứu 21
2.2.1 Thu nhận ảnh 21
2.2.2 Tiền xử lý ảnh 28
2.2.2.1 Lọc tuyến tính 28
2.2.2.2 Biến đổi ảnh 29
2.2.3 Phân ngưỡng 35
2.2.4 Khử nhiễu và tách đối tượng 37
2.2.5 Xuất tín hiệu điều khiển robot 43
2.2.5.1 Trên Matlab 43
2.2.5.2 Dưới Vi điều khiển 45
2.3 Phần cứng 46
2.3.1 Kết cấu cơ khí 46
2.3.2 Mạch điều khiển 47
2.3.3 Mạch công suất 48
CHƯƠNG 3 THỰC NGHIỆM – PHÂN TÍCH KẾT QUẢ 49
3.1 Xử lý ảnh 50
3.2 Điều khiển robot 51
3.3 Các phương hướng phát triển của đề tài 51
CHƯƠNG 4 KẾT LUẬN VÀ ĐỀ XUẤT 53
4.1KẾT LUẬN 54
4.2 ĐỀ XUẤT 54
TÀI LIỆU THAM KHẢO 55 PHỤ LỤC
Trang 5DANH MỤC CÁC HÌNH
Hình 1: Sơ đồ khối của đồ án 2
Hình 1.1: Ảnh tương tự và Ảnh số hoá 5
Hình 1.2: Các giai đoạn chính trong hệ thống xử lý ảnh 5
Hình 1.3: Mô tả ảnh bằng ma trận điểm 6
Hình 1.4 : Hệ toạ độ điểm ảnh 9
Hình 1.6: Không gian màu RGB 12
Hình 1.7: Không gian màu HSV 13
Hình 1.8: Không gian màu YCbCr 13
Hình 1.9: Mô hình giao tiếp bằng cổng COM trong MatLab 16
Hình 1.10: Cấu tạo chính của camera 17
Hình 1.11: Ảnh của vật thể qua thấu kính 17
Hình 1.12 19
Hình 2.1: Các thành phần bên trong Image Acquisition Toolbox 21
Hình 2.2: Cửa sổ preview 24
Hình 2.4 28
Hình 2.5 30
Hình 2.6 30
Hình 2.7 31
Hình 2.8 32
Hinh 2.9 33
Hình 2.10 34
Hình 2.11 34
Hình 2.12 35
Hinh 2.13 36
Hinh 2.14 41
Hình 2.15 43
Hinh 2.16: lưu đồ điều khiển robot 44
Hình 2.17: Lưu đồ giải thuật trên vi điều khiển 45
Trang 6Hình 2.18 46
Hinh 2.19 46
Hình 2.20 47
Hình 2.21 48
Hình 2.22 50
Hình 2.23 50
Hình 2.24 51
Trang 7LỜI MỞ ĐẦU
Trong thế giới cảm biến đa dạng và ngày càng phát triển, Camera có thể xem
là một loại cảm biến phức tạp và tiên tiến nhất, hình ảnh thu được từ camera chứa đựng trong nó rất nhiều thông tin Cũng chính vì thế mà các ứng dụng liên quan đến camera ngày càng được chú trọng và ứng dụng vào thực tế sản xuất Những ứng dụng liên quan đến camera đã triển khai có thể kể đến là: kiểm tra lỗi trong dây chuyền sản xuất ổ cứng máy tính, giám sát và điều khiển tín hiệu giao thông bằng camera thời gian thực, các hệ thống nhận dạng người, các robot có gắn camera hoặc gần đây là robot Asimo của công ty Honda Nhật…
Ẩn đằng sau những chiếc camera bé nhỏ và những thành tựu lớn đó là ngành khoa học xử lý ảnh Ngành khoa học này ngày càng phát triển và góp phần chính trong việc thúc đẩy các ứng dụng liên quan đến camera nói riêng và khoa học kỹ thuật nói chung
Xử lý ảnh là một ngành khoa học còn tương đối mới mẻ so với nhiều ngành khoa học khác Hiện nay nó đang là một trong những lĩnh lực được quan tâm và đã trở thành môn học chuyên ngành trong các trường đại học Nhờ có công nghệ số hoá hiện đại, ngày nay con người đã có thể xử lý tín hiệu nhiều chiều thông qua nhiều hệ thống khác nhau, từ những mạch số đơn giản cho đến những máy tính song song cao cấp
Nhận thức được xu hướng và tầm quan trọng của công nghệ xử lý ảnh như
trên, nhóm sinh viên đã quyết định chọn thực hiện đề tài “Thiết kế và thi công mobile robot bám theo đối tượng dùng phương pháp xử lý ảnh” Đối tượng
nghiên cứu tập trung vào việc sử dụng Image Acquisition Toolbox để thu thập ảnh
và Image Processing Toolbox để xử lý ảnh Ngoài ra còn tìm hiểu giao tiếp giữa Matlab và Vi điều khiển AVR(Atmega 32L), thiết kế giao diện GUI trên MatLab, dùng PWM điều khiển động cơ DC…
Trong quá trình thực hiện Đồ Án cùng với sự nổ lực của bản thân và áp dụng kiến thức được trang bị ở trường, em đã có nhiều cố gắng để thực hiện tốt Đồ Án Tuy nhiên, do kiến thức và khả năng có hạn nên khó tránh khỏi những thiếu sót, em rất mong nhận được sự thông cảm và đóng góp ý kiến của quý thầy
Nha Trang, tháng 6 năm 2010
Sinh viên thực hiện Nguyễn Bảo Thiện
Trang 8- Nghiên cứu dòng vi điều khiển AVR
- Thi công hoàn chỉnh một Mobile Robot gồm kết cấu cơ khí, mạch điều khiển và chương trình điều khiển Atmega32L bằng ngôn ngữ C với phần mềm CodeVision Sơ đồ khối được trình bày bên dưới:
Hình 1: Sơ đồ khối của đồ án
Qui trình làm việc của robot là dựa vào thông tin về vị trí đối tượng (1) phản hồi từ camera (2), máy tính thu thập các khung ảnh bằng Image Acquisition Toolbox (3) Sau quá trình xử lý các khung ảnh (4) ta được thông tin về toạ độ tâm
và khoảng cách của đối tượng Dựa vào các thông tin này để tính toán lệnh điều khiển, gửi thông qua cổng COM (6) Robot sẽ điều khiển các động cơ (7) để điều chỉnh vị trí tương đối của nó so với đối tượng theo các lệnh điều khiển Cụ thể, yêu cầu đặt ra là điều khiển cho robot bám theo đối tượng với một khoảng cách xác định
Trang 9
CHƯƠNG 1
CƠ SỞ LÝ THUYẾT
Trang 101.1 Ảnh và hệ thống xử lý ảnh
1.1.1 Ảnh
- Tín hiệu ảnh thuộc loại tín hiệu đa chiều: toạ độ(x,y), độ sáng( ), thời
gian(t)
- Ảnh(tĩnh) không gian 2 chiều được định nghĩa là một hàm 2 biến S(x,y), với
S là giá trị biên độ(độ sáng) tại vị trí toạ độ (x,y)
+ Ảnh tương tự S(x,y):
Miền xác định (x,y) liên tục
Miền giá trị S liên tục
+ Ảnh số S(m,n) (ảnh tương tự được số hoá):
Miền xác định (m,n) rời rạc
Miền giá trị S rời rạc
- Một ảnh (bao gồm một tập các điểm ảnh) có thể xem như bao gồm tập các
ảnh con (các vùng ảnh) Thuật ngữ gọi là ROIs – vùng quan tâm (Regions of Interest)
- Ảnh số trong không gian rời rạc thu được từ ảnh tương tự trong không gian liên tục thông qua quá trình số hoá
+ Ảnh tương tự được chia thành M hàng, N cột
+ Giao của hàng và cột được gọi là: pixel (điểm ảnh)
+ Giá trị biên độ của pixel tại toạ độ nguyên (m,n) là S(m,n): là trung bình độ sáng trong pixel đó S(m,n) ≤ L (L số mức xám dùng biểu diễn ảnh)
- M, N thường được chọn là M=N=2 K (K=8,9,10) L =2 B , B là số bít mã hoá
cho độ sáng (biên độ) mỗi pixel
- Ảnh số được biểu diễn bởi ma trận 2 chiều Các phần tử của nó là biểu diễn cho các pixel số hoá
- Ta ký hiệu 1 ảnh số là S(M,N) Ta nói ảnh có độ phân giải MxN Ký hiệu S(m,n) để chỉ ra một phần tử ảnh
Trang 11Hình 1.1: Ảnh tương tự và Ảnh số hoá
1.1.2 Hệ thống xử lý ảnh
- Xử lý ảnh: Ảnh vào Ảnh kết quả
- Đối tượng xử lý của hệ thống ở đây là các hàm 2 biến liên tục hoặc rời rạc
- Có thể tóm tắt hệ thống xử lý ảnh gồm các giai đoạn chính như sau:
Hình 1.2: Các giai đoạn chính trong hệ thống xử lý ảnh
+ Thu nhận ảnh: - Qua các camera (tương tự, số)
- Từ vệ tinh qua các bộ cảm ứng (Sensors)
- Qua các máy quét ảnh (Scaners)
+ Số hoá ảnh: Biến đổi ảnh tương tự thành ảnh rời rạc để xử lý bằng máy tính: Thông qua quá trình lấy mẫu (rời rạc về mặt không gian) và lượng tử hoá (rời rạc về mặt biên độ)
+ Xử lý số: Là một tiến trình gồm nhiều công đoạn nhỏ: Tăng cường ảnh (Enhancement), khôi phục ảnh (Restoration), phát hiện biên (Egde Detection), phân vùng ảnh (Segmentation), trích chọn các đặc tính (Feature Extraction)
+ Hệ quyết định: Tuỳ mục đích của ứng dụng mà chuyển sang giai đoạn khác
là hiển thị, nhận dạng, phân lớp, truyền thông…
Trang 121.2 Các vấn đề cơ bản trong xử lý ảnh
1.2.1 Biểu diễn và mô hình hoá ảnh
Biểu diễn ảnh
Ảnh có thể xem là một hàm 2 biến chứa các thông tin biểu diễn của một ảnh
Các mô hình biểu diễn ảnh cho ta một mô tả logic hay định lượng của hàm này Dựa
vào phần tử đặc trưng của ảnh đó là pixel Giá trị pixel có thể là một giá trị vô hướng, hoặc là 1 vector (3 thành phần trong trường hợp ảnh màu)
Ta có thể biểu diễn ảnh bằng hàm toán học, hoặc các ma trận điểm Trong
mô hình toán học, ảnh hai chiều được biểu diễn nhờ các hàm hai biến Đó là
Biểu diễn bằng ma trận điểm
Hình bên dưới minh hoạ cho mô hình biểu diễn ảnh bằng một ma trận điểm Giá trị từng phần tử của ma trận chính là độ đậm nhạt của màu sắc hiển thị
a) Ảnh thật 10x10; b) Ảnh được zoom; c) Mô tả ảnh bằng ma trận điểm
Hình 1.3: Mô tả ảnh bằng ma trận điểm
Trang 13 Mô hình hoá ảnh
Mô hình cảm nhận ảnh: Là mô hình biểu diễn thông qua các thuộc tính cảm
nhận ảnh (màu sắc, cường độ sáng), các thuộc tính về thời gian, cảm nhận về phối cảnh, bố cục
Mô hình cục bộ: Là mô hình biểu diễn thể hiện mối tương quan cục bộ của
các phần tử ảnh (ứng dụng cho các bài toán xử lý và nâng cao chất lượng ảnh)
Mô hình tổng thể: Là mô hình biểu diễn ảnh xem ảnh như là một tập hợp
các đối tượng, và các đối tượng này có mối quan hệ không gian với nhau (ứng dụng
cho các bài toán phân nhóm và nhận dạng ảnh)
1.2.2 Tăng cường chất lượng ảnh
Mục đích: Tăng cường các thuộc tính cảm nhận, làm cho ảnh tốt lên theo một ý nghĩa nào đó, tiện phục vụ cho các xử lý tiếp theo
Các thao tác:
+ Thay đổi độ tương phản, thay đổi màu sắc, cường độ sáng, lọc nhiễu, nội suy, làm trơn ảnh
+ Các phương pháp chính:
Các phương pháp thao tác trên điểm (Point Operation)
Các thao tác không gian (Spatial Operation)
1 2.3 Khôi phục ảnh
Mục đích: Khôi phục lại ảnh ban đầu, loại bỏ các biến dạng ra khỏi ảnh tuỳ
theo nguyên nhân gây ra biến dạng
Trang 14Một vấn đề khôi phục ảnh tiêu biểu là tìm một xấp xỉ của f(,) khi PSF có
thể đo lường hay quan sát được, ảnh mờ và các tính chất xác suất của quá trình nhiễu
Các thao tác: lọc nhiễu, giảm độ méo …
Các phương pháp: lọc ngược, lọc thích nghi(Wiener), khôi phục ảnh từ các
hình chiếu
1.2.4 Nhận dạng
Nhận dạng ảnh là quá trình liên quan đến mô tả đối tượng mà người ta muốn đặc tả nó Thường đi sau quá trình trích chọn các đặc tính của đối tượng
Có 2 kiểu mô tả đối tượng:
+ Mô tả theo tham số (nhận dạng theo tham số)
+ Mô tả theo cấu trúc (nhận dạng theo cấu trúc)
Ứng dụng: nhận dạng đối tượng, mặt, vân tay, văn bản…Mạng nơron là một
kỹ thuật mới đang được áp dụng vào nhận dạng và cho kết quả khả quan
1.3 Giới thiệu Image Processing Toolbox và ứng dụng xử lý ảnh
1.3.1 Giới thiệu Image Processing Toolbox
Image Processing Toolbox là một tập hợp các hàm của phần mềm MatLab
liên quan đến xử lý ảnh số Toolbox này hỗ trợ rất nhiều hàm xử lý ảnh khác nhau trên nhiều loại ảnh khác nhau Các phép xử lý ảnh bao gồm:
Các phép biến đổi ảnh theo không gian (spatial image transformations)
Các phép biến đổi hình thái ảnh (morphological operations)
Các phép xử lý lân cận và xử lý khối (neighborhood and block operations)
Lọc tuyến tính và thiết kế bộ lọc ảnh (linear filtering and filter design)
Các phép biến đổi ảnh thông qua hàm truyền (transforms)
Phân tích và tăng cường chất lượng ảnh (image analysis and enhancement)
Trang 15 Nhận dạng ảnh (image registration)
Chống mờ (deblurring)
Tạo vùng ảnh xử lý (region of interest operations – vùng quan tâm)
1 3.2 Các khái niệm và qui ước trong Image Processing Toolbox
1.3.2.1 Hệ toạ độ quản lý ảnh
Hệ toạ độ điểm ảnh:
Nhìn chung, hệ toạ độ điểm ảnh là cách định vị điểm ảnh của một ảnh thuận lợi nhất Trong hệ trục toạ độ này, ảnh được xem như một mảng các phần tử rời rạc được đánh số thứ tự từ trên xuống dưới và từ trái sang phải, như hình bên dưới:
Hình 1.4 : Hệ toạ độ điểm ảnh
Trong hệ trục toạ độ điểm ảnh, trục đầu tiên là trục r (số lượng hàng) tăng dần từ trên xuống, và trục còn lại là c (số cột) tăng dần từ trái sang phải Các phần
tử trong hệ trục có kiểu số integer, được đánh số từ 1 trở đi
Sự tương ứng một-một giữa hệ toạ độ điểm ảnh và hệ toạ độ ma trận làm mối quan hệ giữa dữ liệu trên ma trận và ảnh hiển thị dễ biểu diễn và dễ hiểu Ví dụ, dữ liệu màu sắc của điểm ảnh tại hàng 5 cột 2 tương ứng với giá trị của phần tử (5,2) của ma trận
Trang 16 Hệ toạ độ không gian:
Trong hệ trục toạ độ điểm ảnh, mỗi điểm ảnh được xem như là một phần tử rời rạc, và được định vị duy nhất bằng một toạ độ, dạng (5, 2) Theo lối này, vị trí dạng (5.3, 2.2) không có nghĩa
Tuy nhiên, đôi khi cũng cần xem điểm ảnh là một miếng vuông (có diện tích) nhỏ Hiểu theo nghĩa này thì toạ độ (5.3,2.2) có nghĩa và phân biệt với điểm (5,2) Trong hệ toạ độ không gian, toạ độ của điểm ảnh được định vị trên một mặt phẳng liên tục với hai thành phần toạ độ là x và y (không phải r và c như hệ toạ độ điểm)
Hình bên dưới là hệ toạ độ không gian của ảnh Lưu ý trục y tăng dần từ trên xuống dưới
Hình 1.5: Hệ toạ độ không gian
1.3.2.2 Các loại ảnh trong MatLab
Image Processing Toolbox định nghĩa 4 kiểu ảnh như bảng tóm tắt bên dưới Các định nghĩa này qui định cách MatLab tổ chức “thông tin hình ảnh” trên ma trận Bảng bên dưới giải thích cụ thể hơn về từng loại ảnh
Trang 17Loại ảnh Giải thích
Nhị phân (binary còn gọi là
bilevel)
Mảng nhị phân có thứ tự với giá trị của phần tử chỉ
là 0 hoặc 1 tương ứng với hai màu đen và trắng trên ảnh
là một mảng m-by-3 với kiểu dữ liệu double
Đối với mảng kiểu single hoặc kiểu double, giá trị integer nằm trong khoảng [1,p] Với mảng kiểu nhị phân, uint8 hoặc uint16, giá trị này nằm trong khoảng [1,p-1]
Trắng đen (grayscale – còn
gọi là intensity – ảnh mật độ,
gray scale - ảnh màu xám
hoặc gray level - ảnh mức
xám)
Mảng kiểu uint8, uint16, int16, single hoặc double Giá trị dữ liệu tại một điểm ảnh xác định độ đậm của màu
Với mảng kiểu single hoặc kiểu double, giá trị của điểm ảnh nằm trong khoảng [0,1] Với kiểu uint8, khoảng giá trị là [0,255], với kiểu uint16: [0,65535], với kiểu int16: [-32768,32767]
Ảnh màu (truecolor – còn gọi
Trang 181.3.3 Một số không gian màu trong Image Processing toolbox
Không gian màu cơ bản trong Image Processing Toolbox là RGB, vì đa số các hàm xử lý ảnh thao tác trên không gian này Ngoài ra còn có các không gian màu khác như: HSV, YCbCr
1.3.3.1 Không gian màu RGB
Không gian màu RGB sử dụng mô hình bổ sung trong đó ánh sáng đỏ (R), xanh lá cây (G) và xanh lam (B) được tổ hợp với nhau để tạo thành các màu khác
Từ viết tắt RGB trong tiếng Anh có nghĩa là đỏ (red), xanh lá cây (green) và xanh lam (blue), là ba màu gốc trong các mô hình ánh sáng bổ sung
Hình 1.6: Không gian màu RGB
1.3.3.2 Không gian màu HSV
Không gian màu HSV là một không gian màu dựa trên ba số liệu:
H: (Hue) Vùng màu
S: (Saturation) Độ bão hòa màu
V (hay B): (Bright hay Value) Độ sáng
Trang 19Hình 1.7: Không gian màu HSV
1.3.3.3 Không gian màu YCbCr
Không gian màu YCbCr được tổ hợp từ ba thành phần độ sáng Y, và hai thành phần màu (xanh dương và đỏ) Trong tiếng Anh YCbCr được viết tắt từ luma (Y), Blue Chrominance (Cb) và Red Chrominance (Cr)
YCbCr không phải là không gian màu thực, nghĩa là các thành phần Y, Cb,
Cr được tính toán từ không gian màu RGB
Trang 201.3.4 Giới thiệu các phép xử lý ảnh cơ bản trong MatLab
1.3.4.1 Đọc, ghi, hiển thị ảnh
Để đọc một ảnh số vào MatLab, ta dùng lệnh imread Lệnh này có thể đọc tất cả các dạng ảnh được MatLab hỗ trợ Khi ảnh đầu vào có độ sâu màu 8bit, MatLab sẽ dùng kiểu dữ liệu 8 bit tương ứng, khi ảnh vào kiểu 16 bit, như kiểu PNG hay TIFF, MatLab dùng kiểu dữ liệu 16 bit để lưu giữ Ví dụ sau đọc một ảnh
có tên là mypic.JPG từ ổ cứng và ghi vào biến RGB
>> RGB = imread(‘mypic.JPG’);
Để ghi một ảnh từ biến MatLab thành một file ảnh trong ổ cứng, ta dùng hàm imwrite với cú pháp như bên dưới:
>> imwrite(X, map, ‘ten_hinh.bmp’);
X : biến trong MatLab, kiểu dữ liệu là kiểu ảnh bipmap
Map: không gian màu của kiểu ảnh
‘ten_hinh.bmp’: Tên của file được ghi
Để hiển thị ảnh trong MatLab, ta dùng các hàm sau:
+ imshow: Hiển thị ảnh trên firgure hiện hành Nếu chưa có firgure nào, Matlab tự động tạo một firgure
+ image: Hiện ảnh với tuỳ chọn thêm các công cụ quản lý ảnh
+ imagesc: Hiện ảnh với tuỳ chọn scale toàn khung hình
1.3.4.2 Xử lý ảnh
Phép xử lý hình thái ảnh (morphology) là các phép xử lý nhằm biến đổi hình dạng của ảnh Hai phép biến đổi thông dụng là phép giãn ảnh (dilation) và phép ăn mòn (erosion) Đối với phép biến đổi morphology, giá trị mỗi điểm ảnh của ảnh sau biến đổi là kết quả của phép xử lý so sánh các điểm ảnh tại vị trí lân cận ở ảnh gốc Tuỳ thuộc vào kích thước và dạng của vùng lân cận này mà kết quả biến đổi khác nhau
Một số ví dụ về phép xử lý ảnh hình thái:
Trang 211.4 Các bước giao tiếp nối tiếp bằng Matlab
Để thuận tiện cho việc lập trình và quản lý cổng COM, MatLab cho ta qui trình giao tiếp cổng COM như sau:
Trang 22Bước 1: Tạo Serial Port Object
Trước khi giao tiếp, ta phải tạo Serial Port Object bằng lệnh:
>> s = serial(‘COM1’);
Lúc này MatLab tạo một biến s đại diện cho cổng nối tiếp COM1, có tên là
“Serial-COM1”, kiểu dữ liệu “serial”
Bước 2:Kết nối thiết bị và cấu hình
Hình 1.9: Mô hình giao tiếp bằng cổng COM trong MatLab
Kết nối phần cứng và thiết lập các thông số truyền bằng lệnh set Ví dụ:
>> set(s, ‘BaudRate’,19200, ‘Parity’, ‘even’);
Bước 3: Truyền và nhận dữ liệu
Truyền, nhận dữ liệu là quá trình đọc, ghi dữ liệu từ máy tính xuống vi điều khiển thông qua biến đại diện cổng COM Cụ thể là việc đọc/ghi dữ liệu vào bộ nhớ đệm RS 232
Để truyền dữ liệu, ta có các lệnh sau:
Fprintf Truyền một chuỗi kiểu text xuống Vi điều khiển
Fwrite Truyền dữ liệu nhị phân xuống Vi điều khiển
Stopasync Ngừng đồng bộ hoạt động truyền/nhận
Để đọc dữ liệu, ta có các lệnh sau:
Fgetl Đọc một dòng kí tự được gởi lên từ Vi điều khiển, loại bỏ kí tự kết thúc
(terminator) Fgets Đọc một dòng kí tự được gởi lên từ Vi điều khiển kể cả kí tự kết thúc Fread Đọc dữ liệu nhị phân
Fscanf Đọc dữ liệu và chuyển sang kiểu kí tự (text)
Readasync Đọc dữ liệu theo kiểu đồng bộ
Stopasync Ngừng hoạt động đồng bộ
Trang 231.5 Hệ ảnh vật
Giới thiệu sơ lược cấu tạo chính của camera
Hình 1.10: Cấu tạo chính của camera
1.5.1 Phép biến đổi chiếu hình
Biến đổi chiếu hình là phép biến đổi quang học để chiếu các điểm trong không gian 3 chiều lên một mặt phẳng Phép biến đổi này rất cần khi trao đổi thông tin giữa các vật thể 3 chiều và hình chiếu của nó trên các mặt phẳng Hình bên dưới
mô tả sơ đồ phép chiếu quang học
Hình 1.11: Ảnh của vật thể qua thấu kính
Trang 24Đặt ho kích thước của vật thể, hi là kích thước của ảnh, mối quan hệ giữa tiêu cự f của thấu kính với khoảng cách từ thấu kính tới vật thể R được thể hiện qua công thức:
f R
f h
hi o
Nếu ta giữ nguyên khoảng cách R, thay đổi kích thước của vật ho một giá trị
, kích thuớc mới của vật là ho’ = ho + , khi đó ta có kích thước mới của ảnh:
f R
f h
B A
' '
=>
' '
*
B A
AB f
B A
"
"
* '
B A
AB f
Từ (*) và (**) ta có:
' '
"
"
' A B
B A R R
Trang 25Như vậy khi thay đổi khoảng cách giữa vật và thấu kính cũng sẽ làm thay đổi
kích thước ảnh của vật, khoảng cách càng gần (R>f) thì ảnh càng lớn
Trang 26
CHƯƠNG 2 PHƯƠNG PHÁP VÀ NỘI DUNG NGHIÊN CỨU
Trang 272.1 Phương pháp nghiên cứu
Bước 1: Thu nhận ảnh
Bước 2: Tiền xử lý ảnh
Bước 3: Phân ngưỡng
Bước 4: Khử nhiễu và tách đối tượng
Bước 5: Xuất tín hiệu điều khiển robot
2.2 Nội dung nghiên cứu
Trang 28Cụ thể được thực hiện theo các bước sau:
Bước 1: Gắn thiết bị thu hình vào máy tính và cài đặt driver điều khiển
+ Gắn thiết bị thu hình vào máy tính
+ Cài đặt driver (trình điều khiển) cho thiết bị (được cho bởi nhà sản xuất)
+ Xem thử hình ảnh video hiện trên máy tính thông qua phần mềm của nhà sản xuất
+ Khởi động MatLab
Bước 2: Chỉ định thông tin phần cứng:
Ta cần chỉ định cho MatLab biết phần cứng nào dùng để lấy dữ liệu (vì có thể có nhiều camera kết nối tới PC)
Gõ lệnh imaqhwinfo để biết tên các loại thiết bị có thể dùng
Tên Loại thiết bị
'coreco' Thiết bị của công ty coreco
‘DCAM’ Các thiết bị dùng chuẩn IEEE 1394
‘dt’ Các thiết bị của Data Translation
‘Matrox’ Các thiết bị của hãng Matrox
Để liệt kê xem loại winvideo có bao nhiêu thiết bị gắn vào máy, ta cũng dùng
lệnh imaqhwinfo với đối số là winvideo
Trang 29Bước 3: Tạo đối tượng đại diện cho luồng dữ liệu video
Để tạo luồng dữ liệu video, bạn dùng lệnh videoinput Ví dụ
Trang 30Trigger Parameters: 1 'immediate' trigger(s) on START
Status: Waiting for START
0 frames acquired since starting
0 frames available for GETDATA
Bước 4: Hiển thị luồng video trên màn hình để xem thử (tuỳ chọn)
Sau khi tạo biến tham chiếu luồng video (MatLab gọi là tạo đối tượng video ngõ vào), Ta có thể dùng MatLab để lấy dữ liệu từ thiết bị thu hình (thu thập dữ
Bước 5: Cấu hình cho hoạt động trích hình ảnh (tuỳ chọn)
Một số thông số hoạt động của biến video mà bạn có thể thay đổi Trước tiên, ta phải hiểu là có 2 đối tượng tác động khác nhau khi bạn tạo biến video
Trang 31+ Video input objects: Đối tượng này đại diện cho các thông tin kết nối phần cứng
Nó được tạo bằng lệnh videoinput ở bước 3
Để xem thông tin các thuộc tính của đối tượng video (Video input objects) ta
dùng lệnh get(biến đối tượng video)
Trang 32Callback Function Settings:
Hoặc để biết luồng dữ liệu hiện thời (luồng dữ liệu được chọn để xử lý) ta
dùng lệnh getselectedsource(đối tượng video) Và do đó, ta thường dùng lệnh sau
để biết thông số của luồng dữ liệu hiện thời:
>> get(getselectedsource(vid))
Trong các thông số này, có một số là chỉ đọc (read only), một số ta có thể thay đổi được Để thay đổi thông số mong muốn, ta dùng lệnh set Cấu trúc lệnh set thông thường giống như khi ta tạo GUI Ví dụ lệnh sau:
>> set(vid,'TriggerRepeat',Inf);
sẽ thiết lập cho thông số triggerRepeat thành giá trị vô cùng inf
Trang 33Hoặc ta có thể thiết lập thông số bằng cách xem biến video như một biến kiểu cấu trúc Ví dụ:
>> vid.FrameGrabInterval = 5;
+ Video source objects: Khi bạn tạo video inut object, MatLab tự động tạo thêm đối tượng “video source object” và liên kết nó với video input object Đối tượng này đại diện cho luồng dữ liệu hình ảnh Có thể tạo nhiều “video source object”
trên một thiết bị phần cứng, nhưng tại một thời điểm thì chỉ có một được chọn để xử
lý Để thiết lập giá trị cho Video source objects, ta phải đặt một biến đại diện thông qua lệnh getselectedsource Ví dụ:
>> vid_src = getselectedsource(vid)
Display Summary for Video Source Object:
Index: SourceName: Selected:
1 'input1' 'on'
>> set(vid_src,'Tag','motion detection setup');
Bước 6: Lấy dữ liệu hình ảnh
Ta tiến hành theo các bước sau để lấy dữ liệu:
+ Gọi hàm start để bắt đầu (ví dụ : Start(vid)) Một số thông số của biến video sẽ
bị khoá thành dạng chỉ đọc
+ Lấy dữ liệu (hay còn gọi là thu thập dữ liệu): Tuỳ vào thông số TriggerType, ta có nhiều cách lấy dữ liệu
Ví dụ: ta thiết lập TriggerType là immediate thì MatLab tự động lấy dữ liệu
chuyển vào bộ đệm ngay sau lệnh start Nếu ta thiết lập là manual, MatLab chờ lệnh
gọi trigger (lệnh này phải được gọi sau khoảng thời gian khởi tạo)
+ Đem dữ liệu trong bộ đệm đi tính toán hoặc sử dụng: Dữ liệu thu thập được sau khi trigger nằm ở bộ đệm hay ở đĩa cứng, hay cả hai tuỳ vào thông số
LoggingMode Để đem dữ liệu này vào workspace, ta dùng lệnh getdata
Bước 7: Làm sạch bộ nhớ
Sau khi lấy dữ liệu video, ta có thể giải phóng bớt bộ nhớ bằng các lệnh sau:
>> delete(vid)
Trang 34>> clear
>> close(gcf)
2.2.2 Tiền xử lý ảnh
Thực hiện các phép biến đổi ảnh để nâng cao chất lượng ảnh nhằm giảm bớt
sai số trong quá trình xử lý tiếp theo
2.2.2.1 Lọc tuyến tính
Ta xét một ví dụ cụ thể sử dụng hàm imfilter: Giả sử ta có một ảnh f ở class double, kích
Trang 35Hình a là ảnh ban đầu Hình b là kết quả của quá trình lọc ảnh dùng padding
là các mức xám giá trị 0(màu đen), ta thấy ảnh bị làm mờ đi ở cạnh giữa 2 vùng trắng và đen, cũng như giữa phần biên ảnh với vùng trắng Điều này có thể giải thích như sau: Do mức xám tại một điểm là tổng của các tích mức xám các điểm vùng lân cận với hệ số của bộ lọc, ở đây các hệ số bộ lọc là 1, do đó mỗi điểm ảnh xem như là giá trị trung bình của các điểm ảnh xung quanh, dẫn đến kết quả như trên Ta có thể loại bỏ phần mờ ở vùng biên bằng cách dùng thông số „replicate‟ hoặc „symmetric‟ như ở kết quả c và d Với hình e, ta sử dụng thông số „circular‟
Do sự lập lại có tính chu kỳ làm cho vùng sáng và tối nằm cạnh nhau, dẫn đến kết quả là toàn bộ biên ảnh cũng như phần cạnh giữa 2 vùng sáng và tối bên trong bức ảnh bị mờ
Nếu ta sử dụng ảnh ban đầu là class uint8 và sử dụng bộ lọc w như trên, ta nhận được kết quả là hình f với một phần dữ liệu ảnh gốc bị mất Lý do là các giá trị lớn hơn 255 đều bị gán giá trị 255 Để giải quyết vấn đề đó, cửa sổ lọc cần được chuẩn hóa trước khi tiến hành lọc:
Trong phép biến đổi này, giá trị g(x,y) chỉ phụ thuộc vào giá trị của f(x,y), và
T trở thành hàm biến đổi mức xám Ta có biểu thức đơn giản sau:
Với r là mức xám ban đầu tại (x,y), s là mức xám sau biến đổi tại (x,y) Ví dụ: Xét hai phép biến đổi mức xám sau:
Trang 36Hình 2.5
Với hình a, phép biến đổi cho ta ảnh sau xử lý có độ tương phản cao hơn
so với ảnh ban đầu Các giá tri mức xám r<m qua phép biến đổi được nén lại gần mức 0( tối hơn), tương tự với các giá trị r>m nhưng được nén lại gần mức 1( sáng hơn) làm ảnh sau xử lý có độ tương phản cao Phép biến đổi ở hình b nhằm biến 1 ảnh grayscale thành 1 ảnh nhị phân Ta xét mức ngưỡng m, với r<m được xét thành mức 0, và r>m xét thành mức 1
Trang 37ảnh âm bản
c) Phép biến đổi log
Biểu thức:
s=c*log(1+r) Các giá trị r mức thấp dải hẹp qua phép biến đổi sẽ tạo ra dải rộng hơn, trong khi đó các giá trị r mức cao sẽ nén lại thành 1 dải hẹp ở ngõ ra Phép biến đổi này nhằm mục đích tăng chi tiết hóa ở vùng tối
Hình 2.7
Trang 38d) Biến đổi theo quy tắc lũy thừa
- Với y =1, phép biến đổi là một hàm tuyến tính giữa ngõ vào và ngõ ra Đặc biệt khi c=1,ảnh ra và ảnh vào là giống nhau
- Với y>1, ta có phép biến đổi ngược so với y<1
Trang 39Hinh 2.9
Trang 40Hình 2.10
Ta nhận thấy y<1 làm tăng độ tương phản của hình ảnh
Trong Matlab cũng có các hàm giúp biến đổi mức xám của ảnh
grayscale g=imadjust(f,[low_in high_in], [low_out
high_out],gamma])
Hình 2.11