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 raMATLAB còn có thể giao tiếp với Vi Xử Lý, PLC,...cùng với các thiết bị phàncứng để thực
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ên hìnhtròn đó
> Từ Matlab xuất tín hiệu ra Vi Xử Lý (thông qua cổng COM) để điều khiển xe
s 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 HAN CHẾ
Xe chạy được khoảng cách không xa chỉ khoảng 4m
Trang 1
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ọc CôngNghiệp TP Hồ Chí Minh đã dạy dỗ, chỉ bảo chúng em trong suốt thời gian qua.Chúng em xin chân thành cảm ơn thầy Trần Văn Trinh đã tận tình hướngdẫ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ôi nghiêncứ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 5MỤC LỤC
1.1.1
Trang 6Đồ Án 2B Mô Hình Xe Thông Minh
Trang 6
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ủ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ộtbướ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ớicá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 taynghề, 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, caohọ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 raMATLAB còn có thể giao tiếp với Vi Xử Lý, PLC, cùng với các thiết bị phàncứ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 (xethô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à ápdụ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à đónggó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 8
Trang 10CHƯƠNG I
THUÂT TOÁN TÁCH BIÊN VÀ NHÂN DANG
MAU
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ácthuộ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ệnchiế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 đượcthể hiện trong hình 1.2
Trang 10
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ày một pixel) Thay vào đó, một điểm biên bâygiờ 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
Gray-k vtl Ịirọfdc
MÍ 1 hnn/imial !inc ihrtmiỉhí lhtf iiTi.iịíc
Trang 11
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à 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ểmtâm trong một lân cận được tính theo bộ tách Sữbel
g=[<! +(Ệ 2 =ị[ị, +2% +z 9 )-(z i +2zj +Zj)f +fe +2z6+z 9 )-(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
Trang 14[g, t] = edge (f, ‘sober, T, dừ) Trong đó:
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
A =
Trang 15♦ 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ọntrong xử lý ảnh là gradient (độ doc) Gradient của hàm 2-D f(x,y) được địnhnghĩa dưới dạng vector
Biên độ của vector này:
Trang 16đô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ácpixel 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ằmgiữ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ácpixel “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
Trang 17Bộ 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 G x , 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 trongnhữ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ảnnhất
1.6 Bệ tách biên Laplace của hàm Gauss (LoG)
Trang 18Vớ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 v 2 h(r) giống như chập với hàm tron 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 ta chập ảnhbằng V2Ă(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 giaozero giữa các biên kép Cú pháp tồng quát là:
[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áctham 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 Tkhô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ủamà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 đượcnhậ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ụng cho 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 = <xR + ßG + xB Thông thường người ta sử dụng công thức
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ủakhông gian GRB
Mối quan hệ giữa 2 không gian: màu ban đầu + màu bổ túc =>trắng
Magenta \ Bỉưe y Cyan Additive
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ành phần màuBlack (K) Bởi vì với thành phần màu Black tinh khiết sẽ cho ta độ tương phảncao hơn
Mối quan hệ CMY và CMYK
K = min(C, M, Y)
M = M-K
BỈUÍ Black
Trang 20Y = 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ọncá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 RGBtheo đườ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
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 đencho đế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ủangưỡ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ươngpháp này là ngưỡng dựa vào lược đồ xám Ngưỡng chọn ở đây là 127
D
Trang 21Cho ả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:
Máu Màn hình đơn sắc Màn hình máu
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
Từ » gõ guide, cửa sổ GUIDE Quick Start xuất hiện:
Trang 22Có thể chọn các mẫu gỉao 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à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
* 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ới
hạn
* 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 đổỉ mỗi khỉ nhấn
* Popup Menu: tạo menu
Trang 24Bấ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 Pushbutton 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ư 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ếngViệ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 đúngtrên layout editor nhưng khi chạy chương trình thì sẽ hiển thị đúng
VNI-❖ 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àocomponent, 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àoEditText rồi bam Enter
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) ”)
Trang 25Sau 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à
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 với PC)
Gõ lệnh imaqhwinfo để 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ặcVideo for Windows (VFW) Bao gồm các loại USB WEBCAM
và camera IEEE 1394
Trang 26Chỉ đị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
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
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’,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ử
Trang 27Đẻ 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
3 TOOLBOX XỬ LÝ ẢNH (Image Processing Toolbox)
Có nhiều loại file ảnh như:
* BMP (Microsoft 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)