Từ Matlab xuất tín hiệu ra Vi Xử Lý (thông qua cổng COM) để điều khiển xe
Trang 1TÓM TẮT NỘI DUNG ĐỒ ÁN
1 NỘI DUNG
Dùng Matlab nhận dạng trạng thái đèn giao thông là màu gì Đểnhận biết được màu sắc của đèn giao thông cần trải qua 2 bước:
Bước 1: Tách biên dạng hình tròn của đèn giao thông
Bước 2: Nhận dạng màu sắc của đèn giao thông trong biênhình tròn đó
Từ Matlab xuất tín hiệu ra Vi Xử Lý (thông qua cổng COM) đểđiều khiển xe
2. KẾT QUẢ ĐẠT ĐƯỢC
Tìm hiểu về các bộ tách biên và sử dụng bộ tách biên Sobel đểtách được biên của đèn giao thông
Nhận dạng được màu sắc của đèn giao thông (xanh, đỏ)
Xuất được tín hiệu từ Matlab ra cổng COM để điều khiển Vi Xử
Lý rồi từ Vi Xử Lý điều khiển xe (đèn xanh xe chạy, đèn đỏ xe dừng)
3 HẠN CHẾ
Xe chạy được khoảng cách không xa chỉ khoảng 4m
Trang 2NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
Ngày……tháng……năm…… Giáo viên hướng dẫn
Ký tên
Trang 3NHẬN XÉT CỦA HỘI ĐỒNG GIÁM KHẢO
Ngày……tháng……năm……
Hội đồng
Ký tên
Trang 4LỜI CẢM ƠN
Chúng em xin chân thành cảm ơn tất cả các thầy cô trường Đại HọcCông Nghiệp TP Hồ Chí Minh đã dạy dỗ, chỉ bảo chúng em trong suốt thờigian qua
Chúng em xin chân thành cảm ơn thầy Trần Văn Trinh đã tận tìnhhướng dẫn chúng em trong thời gian làm Đồ Án 2B
Chúng tôi xin cảm ơn tất cả bạn bè đã giúp đỡ và cùng chúng tôinghiên cứu học tập
Nhóm sinh viên thực hiện:
Lê Văn Hoan
Nguyễn Thành Luân
Trang 5
MỤC LỤC PHẦN A: LÝ THUYẾT TỔNG QUAN Trang 9
CHƯƠNG I: THUẬT TOÁN TÁCH BIÊN VÀ NHẬN
DẠNG MÀU ……… 10
1. Giới thiệu về các bộ tách biên ……….10
1.1 Cơ sở của việc tách biên……….10
1.2 Bộ tách biên Sobel……… 12
1.3 Bộ tách biên Canny……….14
1.4 Bộ tách biên Prewitt………16
1.5 Bộ tách biên Roberts……… 17
1.6 Bộ tách biên Laplace của hàm Gauss……… 17
2. Phương pháp nhận dạng màu……….18
2.1 Mô hình màu RGB……….……… 18
2.2 Mô hình màu CMY…….……….19
2.3 Mô hình màu CYMK……… 19
2.4 Mô hình màu HSV……… 20
2.5 Các kỹ thuật tái hiện ảnh……… 20
CHƯƠNG II: TÌM HIỂU CHUNG VỀ PHẦN MỀM MATLAB……… 22
1 Tạo giao diện người dùng nhờ công cụ GUIDE của MATLAB……… 22
2 Toolbox bắt ảnh……… 25
2.1 Nhiệm vụ của Toolbox……… 25
2.2 Các bước thu thập ảnh cơ bản của Toolbox……… 25
3 Toolbox xử lý ảnh……… 28
3.1 Các loại ảnh trong MATLAB……….28
3.1.1 Ảnh chỉ số……….29
3.1.2 Ảnh biểu diễn theo độ sáng……… 29
3.1.3 Ảnh nhị phân………30
3.1.4 Ảnh RGB……… 30
Trang 63.2 Các hàm xử lý ảnh cơ bản trong MATLAB……… 31
3.2.1 Đổi màu và loại ảnh……….31
3.2.2 Xử lý hình học……… 32
3.2.3 Lọc nhiễu……… 32
3.2.4 Phân tích ảnh………32
3.2.5 Biến đổi ảnh……… 32
CHƯƠNG III: SƠ LƯỢC CƠ CHẾ HOẠT ĐỘNG CỦA MÔ HÌNH XE THÔNG MINH……… 33
1 Sơ đồ tổng quát……… 33
2 Cơ chế hoạt động………33
CHƯƠNG IV: SƠ ĐỒ NGUYÊN LÝ VÀ NGUYÊN LÝ HOẠT ĐỘNG CỦA MẠCH……… 34
1 Sơ đồ nguyên lý……… 34
2 Nguyên lý hoạt động……… 34
PHẦN B: PHẦN MỀM ĐIỀU KHIỂN MÔ HÌNH XE THÔNG MINH……… 36
1 Lưu đồ giải thuật……… 37
2 Qúa trình xử lý ảnh………38
2.1 Xử lý video giao tiếp qua Webcam chụp lại ảnh trên mô hình… 38
2.2 Chuyển ảnh màu dạng RGB thành ảnh mức xám……… 39
2.3 Tách biên và loại bỏ các thành phần nhiễu……….40
2.4 Làm phẳng nhị phân và lấp đầy các lỗ trống……… 41
2.5 Xác định trọng tâm, biên, tính khoảng cách………41
2.6 Xác định màu của đèn giao thông……… 42
2.7 Cửa sổ giao diện……… 43
PHẦN C: KẾT LUẬN……… 44
PHẦN D: PHỤ LỤC………46
1. Code của Callback……….47
2. Chương trình giao tiếp với vi xử lý……….55
Trang 73. Tài liệu tham khảo……….56
Trang 8LỜI MỞ ĐẦU
Hiện nay đất nước ta đang chuyển mình theo sự phát triển chung củathế giới bằng việc Việt Nam đã gia nhập tổ chức kinh tế thế giới WTO.Đây là một bước ngoặt quan trọng nhằm thúc đẩy nền kinh tế nước ta pháttriển sánh vai với các cường quốc năm châu.Với tốc độ phát triển như hiệnnay chúng ta không chỉ cần một lượng lao động khổng lồ mà còn đòi hỏi cótrình độ, chất lượng tay nghề, kỹ thuật lao động và thiết bị sản xuất Mức
độ phát triển của khoa học kỹ thuật ngày càng cao thì vấn đề tự động hoángày càng được chú trọng
Những năm gần đây MATLAB và các Toolbox kèm theo đã trở thànhcông cụ không thể thiếu của các cán bộ nghiên cứu giảng dạy, sinh viên đạihọc, cao học và nghiên cứu sinh thuộc các ngành khoa học kỹ thuật nước
ta Điều này có được là do MATLAB cung cấp một công cụ tính toán vàlập trình bậc cao dễ sử dụng hiệu quả và thân thiện với người dùng.MATLAB cung cấp cho người sử dụng các phương thức để thực hiện các
mô phỏng trên máy tính, ngoài ra MATLAB còn có thể giao tiếp với Vi Xử
Lý, PLC,…cùng với các thiết bị phần cứng để thực hiện các ứng dụng vàothực tế Vì vậy trong phạm vi hiểu biết của mình, chúng em đã tìm hiểu và
thực hiện đề tài “Mô hình xe thông minh” Đây là sự kết hợp giữa
MATLAB và Vi Xử Lý để điều khiển xe không người lái (xe thông minh).Trong quá trình thực hiện Đồ Án 2B cùng với sự nỗ lực của bản thân
và áp dụng những kiến thức được trang bị ở trường, chú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òn cóhạn nên khó tránh khỏi những thiếu sót Chúng em rất mong nhận được sựthông cảm và đóng góp ý kiến của các thầy cô trong hội đồng giám khảo để
Đồ Án của chúng em được hoàn chỉnh hơn Xin chân thành cảm ơn
TP Hồ Chí Minh, ngày 03 tháng 11 năm 2010 Nhóm sinh viên thực hiện:
Lê Văn Hoan Nguyễn Thành Luân
Trang 10CHƯƠNG I
THUẬT TOÁN TÁCH BIÊN VÀ NHẬN DẠNG
MÀU
1 GIỚI THIỆU VỀ CÁC BỘ TÁCH BIÊN
1.1 Cơ sở của việc tách biên
Biên là tập hợp những pixel (nằm trên đường biên giới giữa 2vùng) liên kết với nhau Một biên lý tưởng có các thuộc tính của mô hình ởhình 1.1
Hình 1.1: Mô hình biên lý tưởng
Tuy nhiên trong thực tế các yếu tố như là chất lượng của hệ thốngthu nhận hình ảnh, tốc độ lấy mẫu, điều kiện chiếu sáng của mỗi bức ảnh,
… ảnh hưởng đến chất lượng của hình ảnh Vì vậy kết quả là biên giốngvới một đoạn dốc được thể hiện trong hình 1.2
Trang 11Hình 1.2: Mô hình biên trong thực tế
Vì vậy chúng ta không bao giờ có một đường biên mảnh (có độ dàymột pixel) Thay vào đó, một điểm biên bây giờ là một điểm bất kì chứatrong đoạn dốc và biên là tập hợp những điểm liên thông Độ dày củađường biên được xác định bởi chiều dài của đoạn dốc, khi biên biến đổi từđầu đến cuối mức xám
độ dày của biên
Hình 1.3: Mô hình miêu tả độ dày của biên
Hình 1.4 cho thấy đạo hàm bậc 1 của biên
Trang 12Hình 1.4: Mô hình miêu tả đạo hàm bậc 1 của biên
Từ hình vẽ ta thấy đạo hàm bậc 1 có giá trị 1 tại nơi biên được tách
và giá trị 0 tại nơi biên không được tách Vì vậy độ lớn của đạo hàm bậc 1
có thể được sử dụng để phát hiện ra dấu hiệu của một biên tại một điểmtrong hình (nghĩa là xác định điểm đó có nằm trên dốc không)
1.2 Bộ tách biên Sobel
Bộ tách biên Sobel sử dụng mặt lạ Sobel để tính các đạo hàm bậcnhất Gx và Gy ,nói cách khác đạo hàm tại điểm tâm trong một lân cận đượctính theo bộ tách Sobel
7 4 1 9 6 3
2 3 2 1 9 8 7 2
/ 1
Trang 13Để tính Gx và Gy ta dựa vào mặt lạ Sobel
-1 0 1
-2 0 2
1 0 -1
Sobel
) 2
( ) 2
(z7 z8 z9 z1 z2 z3
) 2
( ) 2
Trang 14Cú pháp của bộ tách biên Sobel
[g, t] = edge (f, ‘sobel’, T, dir)Trong đó: f là ảnh đầu vào
g là ảnh logic chứa giá trị 1 tại những nơi biên đượctách và chứa giá trị 0 tại những nơi biên không được tách
Trang 15r
e r
Trong đó r2 x2 y2
là độ lệch chuẩnHàm làm trơn này khi chập với một ảnh sẽ làm mờ ảnh, độ mờđược xác định bởi
Tách biên là phương pháp gián đoạn các giá trị cường độ Sựgián đoạn được tính bằng cách sử dụng đạo hàm bậc nhất Đạo hàm bậcnhất lựa chọn trong xử lý ảnh là gradient (độ dốc) Gradient của hàm 2-Df(x,y) được định nghĩa dưới dạng vector
G f
y x
Biên độ của vector này:
2 21 / 2 2 21 / 2
/ /
G y
x, ) tan 1(
Trang 16 Điểm biên được xác định tăng lên đến các đỉnh trong gradientbiên độ ảnh Sau thuật toán tìm đỉnh của các đỉnh này và đặt giá trị 0 vàotất cả các pixel không nằm trên đỉnh Các pixel đỉnh được đặt bằng haingưỡng T1 và T2 Các pixel đỉnh lớn hơn T2 được gọi là các pixel biên
“mạnh” Các pixel đỉnh nằm giữa T1 và T2 được gọi là các pixel biên
“yếu”
Cuối cùng thuật toán thực hiện biên kết nối bằng cách kết hợpcác pixel “yếu” với các pixel mạnh
Cú pháp của bộ tách biên Canny là:
[g, t] = edge (f, ‘canny’, T, sigma) Trong đó: f là ảnh đưa vào để tách biên
T là một vector, T = [T1 T2]
sigma là độ lệch chuẩn có giá trị mặc định là 1
g là ảnh sau khi tách biên
1.4 Bộ tách biên Prewitt
Bộ tách biên Prewitt sử dụng mặt nạ Prewitt như hình bên dưới xấp
xỉ phương pháp số theo đạo hàm bậc nhất Gx, Gy
-1 0 1 -1 0 1
1 0 -1
-1
Prewitt
) (
) (z7 z8 z9 z1 z2 z3
) (
)
Trang 17Cú pháp gọi hàm:
[g, t] = edge (f, ‘prewitt’, T, dir)Tham số này đồng nhất với tham số Sobel Bộ tách Prewitt đơngiản hơn so với bộ tách biên Sobel nhưng nó dễ sinh ra nhiễu hơn so với bộtách biên Sobel Việc tính toán các giá trị hoàn toàn giống với bộ tách biênSobel
1.5 Bộ tách biên Roberts
Bộ tách biên Roberts sử dụng mặt nạ Roberts như hình bên dướixấp xỉ phương pháp số theo đạo hàm bậc nhất Gx, Gy
0 0
-1 1
0 0 1 -1
Roberts
Cú pháp gọi hàm:
[g, t] = edge (f, ‘roberts’, T, dir)Tham số này đồng nhất với tham số Sobel Bộ tách Roberts là mộttrong những bộ tách biên xưa nhất trong xử lý ảnh số và cũng là bộ táchbiên đơn giản nhất
1.6 Bộ tách biên Laplace của hàm Gauss (LoG)
Xét hàm Gauss
2 2 2
)
r
e r
Trong đó: r2 x2 y2 và σ là độ lệch chuẩn Đây là một hàm trơn
khi nó chập với một ảnh nó sẽ làm mờ ảnh Độ mờ được xác định bởi giátrị của σ Toán tử Laplace của hàm này (đạo hàm bậc hai theo r)
2 2 2 4
2 2
Với những lý do rõ ràng, hàm này gọi là toán tử Laplace của hàm
Gauss (LoG) Vì đạo hàm bậc hai là toán tử tuyến tính chập với một hàmảnh 2h(r) giống như chập với hàm trơn và sau đó tính kết quả của toán
tử Laplace Đây là chìa khoá khái niệm cơ bản của bộ tách LoG Chúng tachập ảnh bằng 2h(r) biết nó có hai tác động: làm mịn (giảm nhiễu) và nó
tính toán toán tử Laplace, làm cong một biên ảnh kép, định vị các biên sau
đó tìm các điểm giao zero giữa các biên kép Cú pháp tổng quát là:
[g , t ] = edge(f, ‘log’, T, sigma)
Trang 18Trong đó: sigma là độ lệch chuẩn, giá trị mặc định của sigma là 2,các tham số còn lại giống phần trước Những biên không lớn hơn T ta bỏ
qua Nếu T không được cho hoặc rỗng, edge chọn giá trị một cách tự động.
2 PHƯƠNG PHÁP NHẬN DẠNG MÀU
Là phương pháp diễn giải các đặc tính và tác động của màu trongngữ cảnh nhất định Không có mô hình màu nào là đầy đủ cho mọi khíacạnh của màu, người ta sử dụng các mô hình màu khác nhau để mô tả cáctính chất được nhận biết khác nhau của màu
Thí dụ:
+ Mô hình màu RGB: ánh sáng Red, Green và Blue ứng dụngcho màn hình, TV
+ Mô hình HSV: Nhận thức của con người
+ Mô hình CYK: Máy in
Trang 19màu = 0.299R + 0.587G + 0.114B
2.2 Mô hình màu CMY
- Gồm 3 thành phần màu cơ bản cyan, magenta, yellow Là bù màucủa không gian GRB
Mối quan hệ giữa 2 không gian: màu ban đầu + màu bổ túc =>trắng
R + C => W
Y + B => W
M + B => W Phương pháp pha trộn màu trong cuộc sống
2.3 Mô hình màu CMYK
Là sự mở rộng mô hình màu CMK bằng cách thêm vào thànhphần màu Black (K) Bởi vì với thành phần màu Black tinh khiết sẽ cho ta
độ tương phản cao hơn
Mối quan hệ CMY và CMYK
Trang 20• Hue: Bước sóng gốc của ánh sáng Trong mô hình Hue được biểudiễn bằng góc từ 00 đến 3600
• Value: Cường độ hay độ chói ánh sáng Value có giá trị [0, 1],V=0 -> màu đen Đỉnh lục giác có cường độ màu cực đại
• Saturation: Thước đo độ tinh khiết ánh sáng gốc S trongkhoảng [0, 1] Biểu diễn tỷ lệ độ tinh khiết của màu sẽ chọn với độ tinhkhiết cực đại
Nhận xét
Mô hình HSV trực giác hơn mô hình RGB Bắt đầu từ Hue (H chotrước và V=1, S=1) thay đổi S: Bổ sung hay bớt trắng, thay đổi V: Bổ sunghay bớt đen cho đến khi có màu mong muốn
2.5 Các kỹ thuật tái hiện ảnh
- Kỹ thuật tái hiện ảnh được dùng khi ta cần hiển thị lại ảnh trênmột số thiết bị vật lý không có khả năng hiện lại hết các mức xám có thậtcủa ảnh số: màn hình đơn sắc, máy in, máy vẽ
Kỹ thuật phân ngưỡng (Thresholding)
Kỹ thuật này đặt ngưỡng để hiển thị các tông màu liên tục Giá trịcủa ngưỡng sẽ quyết định điểm có được hiển thị hay không, và hiển thị nhưthế nào
Tái hiện 2 màu: dùng cho ảnh 256 mức xám, bản chất củaphương pháp này là ngưỡng dựa vào lược đồ xám Ngưỡng chọn ở đây là
127
Cho ảnh số S(M,N), khi đó
Tái hiện 4 màu: Với qui định cách hiện 4 màu như sau:
Trang 21 Kỹ thuật Dithering
Kỹ thuật này sử dụng một ma trận mẫu gọi là ma trận Dither
- Mỗi phần tử của ảnh gốc sẽ được so sánh với phần tửtương ứng của ma trận Dither Nếu lớn hơn, phần tử ở đầu ra sẽ sáng vàngược lại
- Ma trận Dither cấp 2n sẽ được tính như sau:
CHƯƠNG II TÌM HIỂU VỀ PHẦN MỀM MATLAB
Trang 221 TẠO GIAO DIỆN NGƯỜI DÙNG NHỜ CÔNG CỤ GUIDE CỦA MATLAB
Giao diện người dùng (graphical user interface GUI) cho phép thựchiện các lệnh MATLAB thông qua các menu, nút nhấn,… tương tự như cácngôn ngữ Visual Basic, Delphi Lập trình GUI được thực hiện nhờ công cụGUIDE (GUI Development Environnment) hoặc bằng cách soạn thảo mộtfile m
Từ >> gõ guide, cửa sổ GUIDE Quick Start xuất hiện:
Có thể chọn các mẫu giao diện thiết kế sẵn hay nhấn OK để chọnGUI trống Sau đây là cửa sổ biên soạn GUI:
Trang 23Vùng bên trái chứa danh sách thành phần của đối tượng, vùng có ôlưới là vùng hiển thị - nơi đặt các component, bấm chuột trái vàocomponent muốn tạo, sau đó đưa chuột ra vùng layout nơi muốn đặtcomponent, bấm chuột trái dùng kỹ thuật kéo chuột để chọn kích thướccomponent.
Các component mà GUI cho phép là:
Axes: vẽ hệ trục
Check box: là hộp kiểm tra cho phép đưa vào các chọn lựa khibấm chuột vào đó
Edit Text: là hộp văn bản đưa chuỗi ký tự vào đó
Frame: khung bao một vùng cửa sổ hình
List box: gồm một văn bản các mục để chọn lựa
Pop-up menu: menu sổ xuống trình bày một bảng các chọn lựakhi nhấp chuột vào đó
Push button (nút nhấn): phát sinh một hành động nào đó khinhấp chuột
Radio button: tương tự như Check box nhưng chỉ chọn một
Slider (con trượt): dùng để đưa giá trị vào trong một tầm giớihạn
Trang 24 Static Text: dòng văn bản dùng để đặt nhãn, tiêu đề, hướng dẫn.
Toggle button (nút bật): giống push button nhưng có hiển thịtrạng thái thay đổi mỗi khi nhấn
Popup Menu: tạo menu
Bấm kép chuột vào component trong vùng layout để soạn tính chấtcủa component, ví dụ bấm kép chuột vào Push button sẽ hiện ra cửa sổProperty Inspector như sau:
Cửa sổ Property Inspector có rất nhiều thuộc tính, sau đây là cácthuộc tính cơ bản nhất:
Tag: Tên mà ta gắn cho component, ví dụ pushbutton-start
BackgroundColor: Màu nền của component
ForegroundColor: Màu chữ trên component
FontName, FontAngle, FontSize, FontWeight: Các đặc tính củafont chữ trên component
String: Văn bản hiển thị trên component Trong trường hợpmuốn sử dụng font tiếng Việt ví dụ như VNI-Times ta có thể chọnFontName phù hợp, nhưng thường không thể đánh trực tiếp ký tự có dấu, ta
có thể soạn văn bản tiếng Việt trong Word sau đó copy và paste vào string
Trang 25trong Property Inspector, lúc đó các ký tự tiếng Việt sẽ hiện ra không đúngtrên layout editor nhưng khi chạy chương trình thì sẽ hiển thị đúng.
Enable: Cho phép component hoạt động hay không
Visible: Hiển thị component hay không
Quan trọng nhất đối với các component là callback tức là các hàmcon mà file m sẽ gọi khi tác động vào component, ví dụ khi bấm chuột vàopushbutton, togglebutton, di chuyển con trượt của slider hay khi viết vănbản vào EditText rồi bấm Enter
Soạn thảo các callback: ở cửa sổ soạn thảo layout editor nhấp chuộtphải vào component muốn soạn thảo sau đó chọn View Callbacks ->callback ta sẽ vào màn hình soạn thảo callback cho component đó (Lưu ý
rằng các dòng lệnh sẽ được viết sau dòng “function tên
component_Callback (hobject, eventdata, handles)”)
Sau khi soạn thảo hoàn tất và lưu, MATLAB sẽ lưu hai file có cùngtên nhưng khác nhau về phần mở rộng:
File có phần mở rộng fig chứa nội dung của giao diện
File có phần mở rộng m chứa những đoạn mã liên quan đếngiao diện
2 TOOLBOX BẮT ẢNH (Image Acquisition Toolbox)
2.1 Nhiệm vụ của Toolbox
Image Acquisition Toolbox là tập hợp các hàm của MATLAB cónhiệm vụ thu thập hình ảnh số từ các thiết bị thu hình Cụ thể là:
Thu thập hình ảnh từ các thiết bị thu hình khác nhau, từ loạichuyên dụng đến loại rẻ tiền như Webcam (giao tiếp USB)
Trình chiếu (preview) luồng dữ liệu video từ thiết bị thu hình
Trích hình ảnh từ luồng dữ liệu video
Thiết lập các callback cho các sự kiện khác nhau
Chuyển dữ liệu hình ảnh vào không gian workspace củaMATLAB để xử lý ảnh tiếp theo
2.2 Các bước thu thập hình ảnh cơ bản với Toolbox
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ầnmềm của nhà sản xuất
Trang 26 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 với PC)
Gõ l nh imaqhwinfo ệnh imaqhwinfo để biết tên các loại thiết bị có thể dùng để biết tên các loại thiết bị có thể dùng ết tên các loại thiết bị có thể dùng bi t tên các lo i thi t b có th dùng ại thiết bị có thể dùng ết tên các loại thiết bị có thể dùng ị có thể dùng ể biết tên các loại thiết bị có thể dùng.
‘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
‘winvideo’ Các thiết bị dùng chuẩn Windows Driver Model (WDM)
hoặc Video for Windows (VFW) Bao gồm các loại USBWEBCAM và camera IEEE 1394
Chỉ định thiết bị: Tuỳ vào loại thiết bị (adaptor name), mỗi thiết bị
cùng loại gắn vào PC được đánh số ID, thiết bị thứ nhất có deviceID = 1,thiết bị thứ hai có deviceID = 2,…
Để liệt kê xem loại winvideo có bao nhiêu thiết bị gắn vào máy, tacũng dùng lệnh imaqhwinfor với đối số là winvideo
Có một thiết bị với DeviceID là 1 Ta có thể tìm hiểu thêm thôngtin về thiết bị này
>>imaqhwinfo(‘winvideo’,1)
ans=
DefaultFormat: ‘RGB24_320x240’
DeviceFileSupported: 0DeviceName: ‘USB PC Camera-168’
Trang 27DeviceID: 1ObjectConstructor: [1x25 char]
SupportedFormats: {1x14 cell}
Đây là Webcam đã gắn vào máy để làm đề tài này
Bướ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 ta dùng lệnh videoinput
Ví dụ:
>>vid = videoinput(‘winvideo’,1)
Summary of Video Input Object Using ‘USB PC Camera-168’
Acquisition Source(s): input1 is available
Acquisition Parameters: ‘input1’ is the current selected source
10 frames per trigger using the selected source
‘RGB24_320x240’ video data to be logged upon START.Grabbing first of every 1 frame(s)
Log data to ‘memory’ on trigger
Trigger 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ử
Để xem trước luồng dữ liệu video ta dùng lệnh preview
Ví dụ: preview(vid)
Màn hình lúc này hiện lên cửa sổ video của đối tượng vid
Để kết thúc xem ta dùng lệnh stoppreview hoặc để đóng cửa sổpreview ta dùng lệnh closepreview(vid)
Bước 5: Lấy một khung ảnh và lưu thành file đồ hoạ.
Để lấy một ảnh vào xử lý ta dùng lệnh getsnapshot
Để lưu ảnh thành file đồ hoạ ta dùng lệnh imwrite
Ví dụ: hinh = getsnapshot (vid);
imwrite (hinh, ‘d.jpg’);
Bước 6: Làm sạch bộ nhớ
Sau khi lấy dữ liệu hình ảnh ta có thể giải phóng bớt bộ nhớ bằngcác lệnh sau:
Trang 283 TOOLBOX XỬ LÝ ẢNH (Image Processing Toolbox)
Có nhiều loại file ảnh như:
BMP (Microsofl Windows Bitmap)
HDF (Hierarchical Data Format)
ICO (Windows Icon Resources)
JPG, JPEG (Joint Photographic Experts Group)
PCX (Paintbrush)
PNG (Portable Network Graphics)
TIFF (Tagged Image File Format)
XWD (X Window Dump)
Sau đây liệt kê một số hàm đọc và lưu ảnh:
image, imshow Hiển thị ảnh
imagesc Sắp xếp dữ liệu và hiển thị
imread Đọc ảnh từ file đồ hoạ
immovie Tạo phim từ nhiều loạt nhiều khuôn hình
imwrite Cất ảnh vào file đồ hoạ
imfinfo Lấy thông tin ảnh từ file
ind2rgb Đổi ảnh có chỉ số sang ảnh RGB
3.1 Các loại ảnh trong MATLAB
MATLAB coi ảnh như một ma trận hai chiều, mỗi phần tử là mộtphần tử hình pixel, do đó ta có thể xử lý hình như đối với ma trận, các phần
tử ma trận có thể là double (64 bit), uint 16 (16 bit), uint 8 (8 bit) Có cácloại ảnh trong MATLAB như sau:
3.1.1 Ảnh chỉ số
Ảnh được biểu diễn bởi hai ma trận, một ma trận dữ liệu ảnh X vàmột ma trận màu (còn gọi là bản đồ màu) Ma trận có thể là kiểu uint8,