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
Trang 1Đồ Án 2B Mô Hình Xe Thông Minh
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ên hì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
Trang 2Đồ Án 2B Mô Hình Xe Thông Minh
MỤC LỤC
Trang 3Trang 3
Error: Reference source not foundĐồ Án 2B Mô Hình Xe Thông Minh
TÓM TẮT NỘI DUNG ĐÒ ÁN 1
1.NỘI DUNG 1
2.KÉT QUẢ ĐẠT ĐƯỢC 1
3.HAN CHẾ 1
MỤC LỤC 2
1.Tài liệu tham khảo 5
LỜI MỞ ĐẦU 6
CHƯƠNG I 8
1.GIỚI THIỆU VỀ CẤC Bộ TÁCH BIÊN 8
1.1.Cơ sở của vỉêc tách bỉên 8
1.2.Bộ tách bỉên Sobel 10
1.3.Bệ tách bỉên Canny 13
1.4.Bô tách biên Prewitt 15
1.5.Bộ tách biên Roberts 16
1.6.Bệ tách biên Laplace của hàm Gauss (LoG) 16
2.PHƯƠNG PHÁP NHẬN DẠNG MÀU 17
2.1» Mô hình màu RGB 17
2.2.Mô hình màu CMY 18
2.3.Mô hình màu CMYK 18
CHƯƠNG II 21
1.TẠO GIAO DIỆN NGƯỜI DÙNG NHỜ CÔNG cụ GUIDE CỦA MATLAB 21
2.TOOLBOX BẮT ẢNH (Image Acquisition Toolbox) 24
2.1.Nhiêm vu của Toolbox 24
2.2.Các bước thu thập hình ảnh CO’ bản với Toolbox 24
3.TOOLBOX XỬ LÝ ẢNH (Image Processing Toolbox) 27
3.1.Các loại ảnh trong MATLAB 27
CHƯƠNG III 32
1.Sơ ĐỒ TỔNG QUÁT 32
2.Cơ CHẾ HOẠT ĐỘNG 32
CHƯƠNG IV 33
1 Sơ ĐỒ NGUYÊN LÝ 33
2 NGUYÊN LÝ HOẠT ĐỘNG 33
PHẦN MÈM ĐIỀU KHIỂN MÔ HÌNH XE 35
THÔNG MINH 35
2 QUÁ TRÌNH XỬLÝ ẢNH 36
Trang 42.1.Xử lý vỉdeo giao tiếp qua Webcam 36
KẾT LUẬN 43
1.KẾT QUẢ 43
2.HẠN CHẾ 43
3.PHƯƠNG HƯỚNG PHÁT TRIỂN 43
PHẦND: 43
PHULUC 43
1 CODE CÛA CALLBACK function varargout = HINH(varargin) 43
2 CHƯƠNG TRÌNH GIAO TIẾP VỚI VI xử LÝ **************************************************** 51
3.TÀI LIỆU THAM KHẢO 52
Trang 5Trang 5
Đồ Án 2B
1 Tài liệu tham khảo
Mô Hình Xe Thông Minh
56
Trang 6Đồ Án 2B Mô Hình Xe Thông Minh
LỜI MỞ ĐẦU
Hiện nay đất nước ta đang chuyển mình theo sự phát triển chung của thế 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át triể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ện nay 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ành cô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 đại họ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ào thự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 7Trang 7
Trang 8Đồ Ấn 2B Mô Hình Xe Thông Minh
1 GIỚI THIỆU VỀ CẤC Bộ TÁCH BIÊN
1.1 Cơ sở của vỉêc tách bỉên
Biên là tập hợp những pỉxel (nằm trên đường hiên giới giữa 2 vù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 ỉỷ tưởng
Tuy nhiên trong thực tế các yếu tố như là chất lượng của hệ thống thu 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 gỉếng với một đoạn dốc được thể hiện trong hình 1.2
Trang 9Đồ Ấn 2B Mô Hình Xe Thông Minh
Trang 9
Hì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ày một pixel) Thay vào đó, một điểm biên bây giờ là một điểm bất kì chứa trong đ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
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
M«teỉ ol 1 ramp diÿital cdfLc
Gray-k vtl Ịirọfdc
MÍ 1 hnn/imial !inc ihrtmiỉhí lhtf iiTi.iịíc
Trang 10Đồ Án 2B Mô Hình Xe Thông Minh
Hì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à gỉá trị 0 tại nod 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ấư hiệu của một biên tại một điểm trong hình (nghĩa là xác định điểm đó có nằm trên dốc không)
1.2 Bộ tách bỉên Sobel
Bộ tách biên Sobel sử dụng mặt lạ Sobel để tính các đạo hàm bậc nhấ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 được tính theo bộ tách Sữbel
g=[<! +(Ệ2 =ị[ị, +2% +z9)-(zi +2zj +Zj)f +fe +2z6 +z9)-(zì +2z„ +z7)f}1/2
Khi đó vị trí (x,y) là pixel biên nếu g > T, trong đó T là một ngưỡng được chỉ định
Ví dụ: bw = edge (f, ‘sober, 10); % T = 10 imshow(bw);
Trang 12Đồ Ấn 2B Mô Hình Xe Thông Minh
= (z3 + 2z6 + z9) - (Zị + 2z4 + z7)
Trang 13A =
[g, t] = edge (f, ‘sober, T, dừ) Trong
đó: f là ảnh đàu vào
g là ảnh logỉc chúa giá trị 1 tại những nơỉ biên được tách và chứa giá trị
0 tại những nơi biên không được tách
T =t là ngưỡng được chi định (T=10,20, ) dir là hướng cần tách biên:
‘ngang’, ‘dọc’ hoặc ‘chéo’ Ví dụ: Ảnh chúng ta cần
tách biên là một ma trận
có dạng:
1 1 0 1 1 1
Ta tính được: |Gxi| = |3 -4| = 1; |Gyi| = |3 -2| = 1 Mặt lạ Sobel:
ỊGtíl = 2; \Gyz\ = 12 Khi đó Gx = Max (GX1, Gtí)
Gy = Max (Gyl, Gy2)
=> g = (22 + 122)1/2= (148) m
1.3 Bệ tách bỉên Canny
Bộ tách biên Canny có các đặc tính cơ bản: tìm biên bằng cách tìm các cực đại địa phương của gradient f(x,y) Gradient được tính toán dùng đạo hàm của bộ lọc Gauss Phương pháp dùng hai ngưỡng để tách biên mạnh và yếu, gộp các biên yếu ở ngõ ra chỉ khi chúng được kết nối với các biên mạnh Do đó phương pháp này thích hợp để tách các biên yếu thực sự
Trang 14♦ 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ậc nhất lựa chọn trong xử lý ảnh là gradient (độ doc) Gradient của hàm 2-D f(x,y) được định nghĩa dưới dạng vector
Biên độ của vector này:
V/ = mag(Vf) = [GỈ + G) }n = ịdf / ẽxf + (A/ / õyf \n
Trang 15Đồ Ấn 2B Mô Hình Xe Thông Minh
Trang 15
f G 'ìU?*J
đôi lớn nhât là: a(x,y) = tan
♦ Điểm biên được xác định tăng lên đến các đỉnh trong gradient biên độ ảnh Sau thuật toán tìm đỉnh của các đỉnh này và đặt giá trị 0 vào tất cả các pixel không nằm trên đỉnh Các pixel đỉnh được đặt bằng hai ngưỡng TI 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 TI 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ọp cá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 = [TI 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
Image neighborhood
Trang 16Đồ Án 2B Mô Hình Xe Thông Minh
Bộ tách biên Roberts sử dụng mặt nạ Roberts 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
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ột trong những bộ tách biên xưa nhất trong xử lý ảnh số và cũng là bộ tách biê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
Ah(r) = —e 20-2Trong đó: r2 =x2 + y1 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)
Trang 17Đồ Ấn 2B Mô Hình Xe Thông Minh
[g , t ] = edge(f, Tog\ T, sigma)Trong đó: 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 hom T ta bò qua Neu 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 trong ngữ cảnh nhất định Không có mô hình màu nào là đầy đủ cho mọi khía cạnh của màu, người ta sử dụng các mô hỉnh màu khác nhau để mô tả các tính chất được nhận biết khác nhau của màu
Trang 18Mô Hình Xe Thông Minh
mà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ầu củ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
=> wPhương pháp pha trộn màu
Trang 19Trang 19
Y = Y - K
2.4 MÔ hình màu HSY
• Thay vì chọn các phần tử RGB để có màu mong muốn, người ta chọn các tham số màu: Hue, Saturation và Value (HSV)
• Mô hỉnh HSV suy diễn từ mô hình RGB: hãy quan sát hỉnh hộp RGB theo đường chéo từ White đến Black (gốc) -> ta có hình lục giác, sử dụng làm đỉnh hình nón HSV
• Hue: Bước sóng gốc của ánh sáng Trong mô hình Hue được biểu diễ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 gỉác có cường độ màu cực đại
• Saturation: Thước đo độ tinh khiết ánh sáng gốc s trong khoảng [0, 1] Biểu diễn tỷ
lệ độ tỉnh khiết của màu sẽ chọn vớỉ độ tinh khiế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 cho trước và v=l, s=l) thay đồi S: Bổ sung hay bớt trắng, thay đổi V: Bổ sung hay bớt đen cho đến khỉ có màu mong muốn
2.5 Các kỹ thuật táỉ 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ên mộ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ật của ảnh số: màn hình đơn sắc, máy ỉn, 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 Gỉấ 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ủa phương pháp này là ngưỡng dựa vào lược đồ xám Ngưỡng chọn ở đây là 127
Trang 20Cho ảnh số S(M,N), khi đó
1255 s(/n,fí) < 127 Cho ánh sả S(M,N) khi đó s(m,n) = \
□ Tái hiện 4 màu: Với qui định cách hiện 4 màu như sau:
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 hận Dither Neu lớn hơn, phàn tử ở đàu ra sẽ sáng và ngược lại
Trang 21Đồ Ấn 2B Mô Hình Xe Thông Minh
Từ » gõ guide, cửa sổ GUIDE Quick Start xuất hiện:
Có thể chọn các mẫu gỉao diện thiết kế sẵn hay nhấn OK để chọn GUI trống Sau đây
là cửa sổ biên soạn GUI:
Trang 22Đồ Án 2B Mô Hình Xe Thông Minh
Vù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ào component muốn tạo, sau đó đưa chuột ra vùng
layout nod muốn đặt component, bấm chuột trái dùng kỹ thuật kéo chuột để chọn kích thước
component
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 khi bấ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ựa khỉ nhấp chuột
vào đó
* Push button (nút nhấn): phát sinh một hành động nào đó khỉ nhấp chuột
Trang 23Trang 23
* Popup Menu: tạo menu
Bấm kép chuột vào component trong vùng layout để soạn tính chất củ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ác thuộ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ủa font chữ trên component
❖ String: Văn bản hiển thị trên component Trong trường họp muốn sử dụng font tiếng Việt ví dụ như VNI-Times ta có thể chọn FontName 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 trong Property Inspector, lúc đó các ký tự tiếng Việt sẽ hiện ra không đúng trê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àm con mà file m sẽ gọi khi tác động vào component, ví dụ khi bấm chuột vào pushbutton, togglebutton, di chuyển con trượt của slider hay khi viết văn bản vào EditText rồi bam Enter
Trang 24Đồ Án 2B Mô Hình Xe Thông Minh
Soạn thảo các callback: ở cửa sổ soạn thảo layout editor nhấp chuột phả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ùng tê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 vu của Toolbox
❖ 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ủa MATLAB để xử lý ảnh tiếp theo
2.2 Các bước thu thập hình ảnh CO’ 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à
> 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 để biết tên các loại thiết bị có thể dùng
Trang 25Trang 25
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 so ID, thiết bị thứ nhất có devicelD = 1, thiết bị thứ hai có devicelD = 2,
Để 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 imaqhwinfor với đối số là winvideo
»imaqhwinfo(‘winvideo ’)ans =
AdaptorDllName: [1x81 char]
AdaptorD 11 Version: ‘2.1 (R2007a)’
AdaptorName: ‘winvideo’
DevicelDs: { [1] }Deviceinfo: [lxl struct]
Có một thiết bị với DevicelD là 1 Ta có thể tìm hiểu thêm thông tin về thiết bị này
»imaqhwinfo(‘winvideo ’, 1)ans=
DefaultFormat: ‘RGB24_320x240’
DeviceFileSupported: 0 DeviceName: ‘USB PC Camera-168’
DevicelD: 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ụ:
‘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 USB WEBCAM và camera IEEE 1394
Trang 26Đồ Án 2B Mô Hình Xe Thông Minh
»vid = videoinput(‘winvideo’,l)
Summary of Video Input Object Using ‘USB PC Camera-168’ Acquisition Source(s): inputl is available
Acquisition Parameters: ‘inputl ’ 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’ triggers) 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
Đe lưu ảnh thành file đồ hoạ ta dùng lệnh im write
Ví dụ: hĩnh = getsnapshot (vid);
imwrite (hĩnh, ‘d.jpg’);