Các số liệu và kết quảtrong đồ án “ỨNG DỤNG XỬ LÝ ẢNH ĐIỀU KHIỂN ĐÈN GIAO THÔNG TẠI NÚT GIAO THÔNG” là trung thực và không sao chép từ công trình nào khác.. Nhóm chúng em quyết tâm thực
Trang 1KHOA ĐIỆN – ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH
THÔNG
GVHD: ThS Võ Đức Dũng
Trang 2KHOA ĐIỆN – ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH
NÚT GIAO THÔNG
GVHD: ThS Võ Đức Dũng SVTH: Nguyễn Hoàn Hảo MSSV: 15141148
SVTH: Huỳnh Ngọc Giang MSSV: 15141140
Tp Hồ Chí Minh - 12/2019
Trang 3Họ tên sinh viên: Nguyễn Hoàn Hảo MSSV: 15141148
Chuyên ngành: Kỹ thuật Điện Tử Truyền Thông Mã ngành: 01
15141DT2B
I TÊN ĐỀ TÀI: ỨNG DỤNG XỬ LÝ ẢNH ĐIỀU KHIỂN ĐÈN GIAO THÔNG
TẠI NÚT GIAO THÔNG
II NHIỆM VỤ
1 Các số liệu ban đầu:
- Matlab phiên bản R2017a
- Vi điều khiển Arduino Mega 2560
- 4 video đầu vào
2 Nội dung thực hiện:
Xây dựng hệ thống đèn giao thông tự động dựa trên việc đếm đối tượng quahình ảnh Đầu vào là từ video chứa các đối tượng là phương tiện giao thông nóichung Kết quả đếm được sẽ được gửi xuống vi điều khiển là Arduino Mega 2560 đểđiều khiển 4 cột đèn giao thông mô hình Nhóm chúng em sẽ thực hiện các nội dungnhư sau:
Nội dung 1: Tìm hiểu và nghiên cứu về phần mềm matlab, kit Arduino Mega
2560, cách kết nối Arduino với matlab, xây dựng thư viện cho Arduino
Nội dung 2: Tìm hiểu các thuật toán phát hiện vật thể, phương tiện giao thông
Nội dung 3: Tìm hiểu, nghiên cứu, xây dựng quá trình xử lý ảnh đầu vào
Nội dung 4: Thiết kế, xây dựng hệ thống đếm phương tiện qua ảnh, lập trình giao diện sử dụng để thu thập dữ liệu và gửi dữ liệu xuống kit Arduino
Nội dung 5: Thiết kế mô hình thành phẩm
Nội dung 6: Đánh giá kết quả thực hiện
IV NGÀY HOÀN THÀNH NHIỆM VỤ: 25/12/2019
V HỌ VÀ TÊN CÁN BỘ HƯỚNG DẪN: ThS Võ Đức Dũng
Trang 4BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH
Tp Hồ Chí Minh, ngày 18 tháng 12 năm 2019
(18/9 – 7/10) Tìm hiểu các thuật toán xử lý ảnh đầu vào
5-6-7 Lựa chọn linh kiện
Xây dựng cách giao tiếp giữa vi điều khiển và led(7/10 – 21/10)
7 đoạn đôi, led đơn
8-9-10 Viết lưu đồ chương trình
Tiến hành viết chương trình (21/10 – 10/11)
ii
Trang 5Đồ án tốt nghiệp đây là công trình tự thực hiện và nghiên cứu của nhómchúng em dưới sự hướng dẫn của Thạc sĩ Võ Đức Dũng Các số liệu và kết quả
trong đồ án “ỨNG DỤNG XỬ LÝ ẢNH ĐIỀU KHIỂN ĐÈN GIAO THÔNG
TẠI NÚT GIAO THÔNG” là trung thực và không sao chép từ công trình nào
khác Nhóm chúng em sẽ chịu trách nhiệm về lời cam đoan của mình
Người thực hiện đề tài
Nguyễn Hoàn Hảo - Huỳnh Ngọc Giang
Trang 6Trong thời gian làm đồ án tốt nghiệp, em đã nhận được nhiều sự giúp đỡ,đóng góp ý kiến và chỉ bảo nhiệt tình của thầy cô, gia đình và bạn bè.
Em xin gửi lời cảm ơn chân thành đến Th.s Võ Đức Dũng, giảng viên trườngĐại học Sư Phạm Kỹ Thuật Thành Phố Hồ Chí Minh, người đã tận tình hướngdẫn, chỉ bảo cho chúng em trong suốt quá trình làm khoá luận
Em cũng xin chân thành cảm ơn các thầy cô giáo trong trường Đại học SưPhạm Kỹ Thuật Thành Phố Hồ Chí Minh, các thầy cô trong Bộ môn Điện TửCông Nghiệp nói riêng đã dạy dỗ cho em kiến thức về các môn đại cương cũngnhư các môn chuyên ngành, giúp em có được cơ sở lý thuyết vững vàng và tạođiều kiện giúp đỡ em trong suốt quá trình học tập
Cuối cùng, em xin chân thành cảm ơn gia đình và bạn bè, đã luôn tạo điềukiện, quan tâm, giúp đỡ, động viên em trong suốt quá trình học tập và hoànthành đồ án tốt nghiệp
Xin chân thành cảm ơn!
Người thực hiện đề tài
Nguyễn Hoàn Hảo - Huỳnh Ngọc Giang
iv
Trang 7NHIỆM VỤ ĐỒ ÁN i
LỊCH TRÌNH THỰC HIỆN ii
LỜI CAM ĐOAN iii
LỜI CẢM ƠN iv
MỤC LỤC v
LIỆT KÊ HÌNH ẢNH viii
LIỆT KÊ BẢNG VẼ xiv
TÓM TẮT xv
CHƯƠNG 1 TỔNG QUAN 1
1.1 ĐẶT VẤN ĐỀ 1
1.2 MỤC TIÊU ĐỀ TÀI 2
1.3 NỘI DUNG NGHIÊN CỨU 3
1.4 GIỚI HẠN ĐỀ TÀI 3
1.5 BỐ CỤC 3
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT 5
2.1 GIỚI THIỆU XỬ LÝ ẢNH 5
2.1.1 Quá trình thu nhận ảnh 6
2.1.2 Quá trình tiền xử lý ảnh 6
2.1.3 Quá trình phân đoạn ảnh 6
2.1.4 Biểu diễn và mô tả 7
2.1.5 Nhận dạng và nội suy ảnh 7
2.1.6 Cơ sở tri thức 8
2.2 CÁC PHƯƠNG PHÁP XỬ LÝ CƠ BẢN VỚI MỘT SỐ ẢNH ĐỐI TƯỢNG ĐẦU VÀO 8
2.2.1 Chuyển đổi ảnh màu sang ảnh màu xám 8
2.2.2 Nhị phân hóa ảnh 10
2.2.3 Các phương pháp lọc nhiễu ảnh nhằm cải thiện ảnh 10
2.2.4 Làm trơn nhiễu bằng lọc tuyến tính 11
2.2.5 Lọc trung bình không gian 11
2.2.6 Lọc thông thấp 12
Trang 82.4.1 Hàm imread() 15
2.4.2 Hàm imshow() và imagesc() 15
2.4.3 Hàm rgb2gray() 16
2.4.4 Hàm imadjust() 17
2.4.5 Hàm tự tính ngưỡng để chuyển sang ảnh nhị phân graythresh(), và hàm chuyển đổi ảnh nhị phân imbinarize() 18
2.4.6 Hàm imdilate() 18
2.4.7 Hàm imerode() 20
2.4.8 Hàm bwareaopen() 21
2.4.9 Hàm bwlable 21
2.5 GIỚI THIỆU LỊCH SỬ HÌNH THÀNH ARDUINO 21
2.6 GIỚI THIỆU ARDUINO MEGA 2560 23
2.7 KẾT NỐI GIỮA MATLAB VÀ ARDUINO 25
CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ 27
3.1 GIỚI THIỆU 27
3.2 TÍNH TOÁN VÀ THIẾT KẾ HỆ THỐNG 27
3.2.1 Thiết kế sơ đồ khối hệ thống 27
3.2.2 Thiết kế các khối hệ thống 28
3.2.3 Thiết kế mô hình ngã tư 35
3.2.4 Sơ đồ nguyên lý của toàn mạch 35
CHƯƠNG 4 THI CÔNG HỆ THỐNG 38
4.1 THI CÔNG HỆ THỐNG 38
4.1.1 Thi công bo mạch dạng bus 38
4.1.2 Thi công cột đèn tín hiệu giao thông 40
4.1.3 Lắp ráp và kiểm tra 42
4.1.4 Thiết kế giao diện cho người điều khiển 43
4.2 ĐÓNG GÓI VÀ THI CÔNG MÔ HÌNH 44
4.3 LẬP TRÌNH HỆ THỐNG 45
4.3.1 Lập trình trên phần mềm matlab 45
4.3.1.1 Sơ đồ khối đếm số lượng phương tiện 45
4.3.1.2 Lưu đồ chi tiết xử lí ảnh đầu vào 45
vi
Trang 94.4.1 Giới thiệu về matlab GUI 49
4.4.2 Cách sử dụng matlabGUI 49
4.4.3 Giới thiệu về arduino IDE 52
4.5 VIẾT TÀI LIỆU HƯỚNG DẪN SỬ DỤNG, THAO TÁC……….54
CHƯƠNG 5 KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ 56
5.1 KẾT QUẢ 56
5.2 NHẬN XÉT - ĐÁNH GIÁ 71
CHƯƠNG 6 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 72
6.1 KẾT LUẬN 72
6.2 HƯỚNG PHÁT TRIỂN 72
TÀI LIỆU THAM KHẢO
PHỤ LỤC
Trang 10Hình Trang
Hình 2.1 Sơ đồ quá trình xử lý ảnh 6
Hình 2.2 Chuyển ảnh màu thành ảnh xám 9
Hình 2.3 Lược đồ xám 9
Hình 2.4 Ảnh xám và ảnh nhị phân 10
Hình 2.5 Hiển thị ảnh bằng hàm imshow() 16
Hình 2.6 Hiển thị ảnh bằng hàm imagesc() 16
Hình 2.7 Chuyển đổi ảnh màu thành ảnh xám 17
Hình 2.8 Tăng cường độ tương phản của anh bằng hàm imadjust() 18
Hình 2.9 Chuyển đổi ảnh xám sang ảnh nhị phân 18
Hình 2.10 Ảnh đầu vào hàm imdilate() 19
Hình 2.11 Ảnh đầu ra hàm imdilate() 19
Hình 2.12 Ảnh đầu vào hàm imerode() 20
Hình 2.13 Ảnh đầu ra hàm imerode() 20
Hình 2.14 So sánh ảnh gốc và ảnh sau khi xử lý bằng hàm bwareaopen() 21
Hình 2.15 Máy in 3D Materia 101 22
Hình 2.16 Xe điều khiển từ xa 23
Hình 2.17 Board Arduino Mega 2560 23
Hình 2.18 Sơ đồ và chức năng chân Arduino Mega 2560 24
Hình 2.19 Giao tiếp giữa máy tính và arduino thông qua chuẩn UART 25
Hình 2.20 Giao tiếp 2 hệ thống dùng chuẩn UART 26
Hình 2.21 Nguyên lý hoạt động chuẩn UART 26
Hình 3.1 Sơ đồ khối hệ thống 27
Hình 3.2 Sơ đồ chân, sơ đồ nguyên lý Led 7 đoạn 2 digit anode chung 30
Hình 3.3 Led 7 đoạn 2 digit thực tế 31
Hình 3.4 Led đơn màu xanh, đỏ, vàng thực tế 32
Hình 3.5 Sơ đồ kết nối Led đơn với điện trở 32
Hình 3.6 Sơ đồ kết nối Led 7 đoạn với điện trở 33
Hình 3.7 IC ổn áp AMS1117 34
Hình 3.8 Mặt trên của mô hình sau khi thiết kế 35
Hình 3.9 Mặt dưới của mô hình sau khi thiết kế 35
Hình 3.10 Sơ đồ nguyên lý toàn mạch 37
viii
Trang 11Hình 4.3 Mặt sau của chân cắm 39
Hình 4.4 Hình ảnh co chữ T và ống trắng sử dụng 40
Hình 4.5 Mặt trước, sau của đế cắm đèn đếm thời gian 40
Hình 4.6 Mặt trước của đế cắm đèn tín hiệu 41
Hình 4.7 Cột tín hiệu khi được ráp hoàn thiện 41
Hình 4.8 Hình ảnh thực tế sau khi thi công 42
Hình 4.9 Giao diện điều khiển chính 43
Hình 4.10 Mô hình sau khi thi công 44
Hình 4.11 Sơ đồ khối tổng quát chính của hệ thống đếm đối tượng trên matlab 45
Hình 4.12 Lưu đồ xử lí ảnh đầu vào 46
Hình 4.13 Lưu đồ chương trình điều khiển ứng dụng trên Arduino 48
Hình 4.14 Cửa sổ lựa chọn giao diện GUI 49
Hình 4.15 Cửa sổ lựa chọn tool cho giao diện GUI 50
Hình 4.16 Giao diện matlabGUI với đuôi fig 51
Hình 4.17 Giao diện matlabGUI với đuôi m 52
Hình 4.19 Giao diện lập trình arduino ……….…53
Hình 4.20 Giao diện arduino IDE menu……… 54
Hình 4.21 Bước 2: Khởi động matlab……… 54
Hình 4.22 Bước 3,4 Chạy giao diện và chọn chế độ ……… …55
Hình 5.1 Mô hình khi hoàn thiện và cho chạy thử với 2 cột chính 56
Hình 5.2 Giao diện điều khiển chính 57
Hình 5.3 Giao diện lựa chọn mật độ phương tiện để quan sát 58
Hình 5.4 Kết quả quan sát trên giao diện làn 1 khi lượng xe bình thường 59
Hình 5.5 Kết quả hiển thị trên mô hình ở làn 1 với chế độ bình thường 59
Hình 5.6 Kết quả hiển thị trên mô hình ở làn 2 song song với kết quả trên 60
Hình 5.7 Kết quả quan sát trên giao diện làn 2 sau khi chuyển làn với lượng xe bình thường 60
Hình 5.8 Kết quả quan sát trên mô hình ở làn 2 khi lượng xe bình thường 61
Hình 5.9 Kết quả quan sát trên mô hình ở làn 1 song song với kết quả trên (bình thường) 61
Hình 5.10 Kết quả quan sát trên giao diện làn 1 khi đông xe 63
Trang 12Hình 5.16 Kết quả trên giao diện ở chế độ điều khiển bằng tay 67
Hình 5.17 Kết quả hiển thị trên mô hình khi điều khiển bằng tay ở làn 1 ……… 68Hình 5.18 Kết quả hiển thị trên mô hình ở làn 2 song song với kết quả trên ( bằngtay)………68Hình 5.19 Kết quả hiển thị trên mô hình ở làn 2 khi điều khiển bằng tay ……… 69Hình 5.20 Kết quả hiển thị trên mô hình ở làn 1 song song với kết quả trên …….69Hình 5.21 Nhập dữ liệu dạng kí tự không phải số ……… 70Hình 5.22 Hệ thống báo lỗi yêu cầu nhập dữ liệu có dạng số ………70
ix
Trang 13Bảng Trang
Bảng 3.1 Thông số kỹ thuật LED 7 đoạn 2 digit 31
Bảng 3.2 Mã hiển thị từ 0 – 9 loại anode chung 31
Bảng 3.3 Thông số kỹ thuật LED đơn 32
Bảng 3.4 Số giây đèn xanh ứng với số xe đếm được……… 33
Bảng 3.5 Liệt kê điện áp và dòng các linh kiện sử dụng trong mạch……….34
Bảng 4.1 Danh sách các linh kiện 38
Bảng 5.1 Kết quả đếm xe làn 1 khi lượng xe bình thường 62
Bảng 5.2 Kết quả đếm xe làn 2 khi lượng xe bình thường 62
Bảng 5.3 Kết quả đếm xe làn 1 khi đông xe 66
Bảng 5.4 Kết quả đếm xe làn 2 khi đông xe 66
Trang 14Sự phát triển của một quốc gia tuỳ thuộc vào tốc độ phát triển trên nhiềulĩnh vực như kinh tế, văn hoá, giáo dục, tài nguyên, vị trí địa lí, … và không thểkhông nói đến vấn đề về giao thông Đối với nước ta nhu cầu đi lại và vậnchuyển những năm gần đây tăng lên không ngừng do sự phát triển nhanh chóngcủa nền kinh tế và số lượng người dân đông đúc ồ ạt đổ về những thành phố lớn.
Và thế lại là bài toán tắc nghẽn ùn tắc giao thông được nêu ra nhưng lại chưa cócâu trả lời Ùn tắc giao thông là nguyên nhân gây thiệt hại cho sự phát triển kinh
tế ở quốc gia ta nói riêng và toàn thế giới nói chung, hiệu suất lao động suy giảm
và tăng các chi phí không cần thiết, đặc biệt hơn nữa là gây ô nhiễm môi trườngtrầm trọng, hiện tượng nóng lên toàn cầu cũng được xướng lên Nguyên nhânchính của vấn đề này một phần là do cơ sở hạ tầng chưa đáp ứng được nhu cầulưu thông hiện nay, xe máy, ô tô ngày càng nhiều, không thể không nói đếnnhững cột đèn giao thông được phân chia thời gian đèn tín hiệu chưa hợp lý ởnhững giao lộ, tuyến đường lớn khiến cho số lượng phương tiện giao thông bị ùntắc dần rồi dẫn đến tắc nghẽn giao thông Cũng vì lí do nói trên, nhóm chúng emquyết tâm xây dựng một hệ thống điều tiết giao thông một cách tự động, hệthống phân tích dữ liệu hình ảnh trên camera để cho ra thời gian phù hợp trêntừng tuyến đường
Nhóm chúng em quyết tâm thực hiện đề tài: “ỨNG DỤNG XỬ LÝ ẢNH
ĐIỀU KHIỂN ĐÈN GIAO THÔNG TẠI NÚT GIAO THÔNG” nhằm mục
tiêu xây dựng một hệ thống đèn tín hiệu được điều khiển thông qua máy tính mộtcách tự động Chu kì đèn tín hiệu sẽ thay đổi theo lưu lượng phương tiện trênđường Hệ thống này được kì vọng phòng ngừa và giải quyết được phần nào vấnnạn kẹt xe đang gây đau đầu cho toàn thế giới
Người thực hiện đề tài
Nguyễn Hoàn Hảo - Huỳnh Ngọc Giang
xii
Trang 15Chương 1 TỔNG QUAN
1.1 ĐẶT VẤN ĐỀ
Trong những năm gần đây, xử lý ảnh là một lĩnh vực mang tính khoa học
và công nghệ Nó là ngành khoa học mới mẽ so với nhiều ngành khoa học khácnhưng tốc độ phát triển của nó rất nhanh chóng với rất nhiều ứng dụng trênnhiều lĩnh vực khác nhau Có thể nói rằng ứng dụng của xử lý ảnh có mặt hầuhết rất nhiều công nghệ, góp phần không nhỏ trong thời đại công nghệ 4.0 ngàynay [1]
Ngày nay với sự phát triển vượt trội của nền kinh tế kéo theo đó là việc ùntắc giao thông là điều không thể tránh khỏi Có thể nói đây là vấn đề bức xúccủa xã hội , điển hình là các đô thị lớn như TP HCM, Hà Nội Chống ùn tắc giaothông đang và sẽ là một nhiệm vụ cực kỳ cấp bách và quan trọng của ngành giaothông vận tải Thiệt hại kinh tế, xã hội của việc ùn tắc giao thông là vô cùng tolớn, có lẽ không ai có thể lượng hoá bằng các con số cụ thể (ước tính thiệt hạinăm 2007 tại thành phố Hồ Chí Minh vào khoảng 14.000 tỷ đồng) Ùn tắc giao
thông đã tác động đến mọi mặt của đời sống xã hội (kinh tế, giao thông, giáo
dục…) và tất cả mọi người, từ những người có mặt trực tiếp trong vùng ảnhhưởng, đến các đối tượng gián tiếp khác (không phân biệt không gian và thời
gian) Trong thời đại “toàn cầu hoá”, ùn tắc giao thông tại thành phố Hồ Chí
Minh có thể sẽ ảnh hưởng đến hoạt động sản xuất kinh doanh của nhiều công tytại Hoa Kỳ, Nhật, Anh, Úc, Achentina… trong nhiều ngày, nhiều tháng và nhiềunăm [2]
Để ứng phó với những vấn đề nan giải như trên, trên thế giới và ngay ở đấtnước ta đã đưa ra những biện pháp như là quy định thời gian được phép lưuthông của các loại phương tiện, nâng cấp lực lượng và cắt cử trực tiếp người raphân luồng giao thông, nâng cấp cơ sở vật chất Cho dù thế thì những biệnpháp nói trên vẫn mang tính chất nhất thời và chưa thể giải quyết triệt để vấn đềkẹt xe xảy ra phổ biến
Trang 16Ngày nay, trên thế giới đã thực hiện lắp camera trên những tuyến đườngtrọng yếu, xây dựng những hệ thống phân luồng giao thông tự động hay là bộđiều khiển đèn tín hiệu giao thống tự thay đổi theo những thời điểm trong ngày
Ở những thành phố lớn như TPHCM hay Hà Nội đã lắp đặt trên dưới hang ngàncamera kết nối với hệ thống máy tính hiện đại trong những trung tâm điều khiểngiao thông, tuy nhiên các hệ thống này có giá thành rất cao, ví dụ một hệ thốngđèn giao thông thông minh thương mại sử dụng camera giám sát cùng máy tínhcông nghiệp có giá đến hàng tỉ đồng [3-4]
Từ những số liệu nói trên, liệu rằng một giải pháp hợp lý dựa vào việc xử
lý ảnh mà có thể ghi lại hình ảnh phương tiện qua lại trên đường Bên cạnh đó làviệc canh chỉnh số đèn xanh vàng đỏ sao cho hợp lý với số lượng xe ở giao lộ,việc này cũng giúp làm giảm đi phần nào vấn nạn ùn tắc giao thông hiện nay Một hệ thống dùng 2 camera để quan sát trên 2 tuyến đường của 1 giao lộ hoặcngã tư, tuyến đường nào nhiều xe hơn thì số giây đèn xanh dài hơn và ngược lại.Cũng vì điều đó, nhóm em dưới sự hướng dẫn của Thạc Sĩ Võ Đức Dũng
đã thực hiện đồ án với đề tài: “Ứng dụng xử lí ảnh điều khiển đèn giao thông
tại nút giao thông” Với hi vọng có thể góp phần vào công cuộc xây dựng nên
một phương án điều tiết giao thông hợp lý, cải thiện tình trạng ùn tắc hiện nay,giúp lưu thông thoải mái hơn được phần nào
1.2 MỤC TIÊU ĐỀ TÀI
Tìm hiểu được về quy tắc phân luồng giao thông, đặt thời gian đèn tín
hiệu tại các giao lộ
Viết được chương trình giao tiếp giữa máy tính dưới dạng giao diện
matlab và arduino mega 2560
Xây dựng một hệ thống có thể đếm được các đối tượng là các phươngtiện lưu thông trên đường của một ngã tư bằng cách đọc hình ảnh đầu vàođược chụp từ một đoạn trích xuất video, thông qua quá trình xử lý ảnh sẽ cho
ra kết quả gồm số phương tiện, thông tin làn đường và số giây đèn xanh phùhợp
Trang 171.3 NỘI DUNG NGHIÊN CỨU
Đề tài: “Ứng dụng xử lí ảnh điều khiển đèn giao thông tại nút giao
thông” đáp ứng những nội dung như sau:
NỘI DUNG 1: Tìm hiểu về phần mềm matlab
NỘI DUNG 2: Tìm hiểu về kit arduino mega 2560
NỘI DUNG 3: Cài đặt matlab, tìm hiểu phương thức kết nối giữa matlab
và Arduino
NỘI DUNG 4: Tìm hiểu các thuật toán phát hiện phương tiện giao thông,
nguyên lý hoạt động của đèn giao thông ở ngoài thực tế
NỘI DUNG 5: Xây dựng hệ thống đếm phương tiện trong ảnh, lập trình
giao diện sử dụng để mô phỏng thực tế
NỘI DUNG 6: Xây dựng quá trình xử lý ảnh đầu vào
NỘI DUNG 7: Xây dựng chương trình điều khiển điều tín hiệu đèn giao
thông trên kit arduino mega 2560
NỘI DUNG 8: Đánh giá kết quả thực hiện
1.4 GIỚI HẠN ĐỀ TÀI
Sử dụng vi điều khiển arduino mega 2560 để điều khiển
Dùng giao diện matlab GUI để tương tác với người sử dụng
Đếm số lượng phương tiện dựa trên ngõ vào là video lấy từ smartphone
mô phỏng camera giám sát trên đường phố
Hệ thống có thể phát hiện và truy xuất số lượng xe, thông tin làn đường
và thời gian cho phép thích hợp
Chi tiết một mô hình ngã tư đầy đủ 4 cột đèn tín hiệu
1.5 BỐ CỤC.
Chương 1: Tổng quan
Chương 2: Cơ sở lý thuyết
Chương 3: Tính toán và thiết kế
Chương 4: Thi công hệ thống
Chương 5: Kết quả, nhận xét và đánh giá
Trang 18Chương 6: Kết luận và hướng phát triển.
Chương 1: Tổng quan đề tài.
Chương này trình bày vấn đề dẫn nhập lý do chọn đề tài, mục tiêu, nội
dung nghiên cứu, các giới hạn thông số và bố cục đồ án
Chương 2: Cơ sở lý thuyết.
Giới thiệu về phần Matlab, giới thiệu về Arduino, giới thiệu về xử lý
ảnh Giới thiệu về kit Arduino, Module led 7 đoạn đôi
Giới thiệu về thuật toán phát hiện và đếm số lượng phương tiện
Chương 3: Thiết kế và tính toán.
Phân tích, xây dựng sơ đồ khối, sơ đồ phần cứng, thiết kế chương trình cho
hệ thống đếm phương tiện qua hình ảnh được viết trên phần mềm matlab
Thiết kế giao diện mô phỏng quá trình thực hiện việc lấy ảnh và gửi dữ
liệu qua arduino
Thiết kế chương trình nhận dữ liệu và điều khiển hệ thống đèn giao
thông trên arduino
Chương 4: Thi công hệ thống.
Thiết kế hệ thống, lưu đồ, đưa ra giải thuật và chương trình
Chương 5: Kết quả, nhận xét và đánh giá.
Nêu các kết quả đạt được khi thực hiện chương trình, phân tích, nhận xét,
đánh giá kết quả thực thi được, những hình ảnh của hệ thống, đưa ra
những thông số đánh giá về hệ thống
Chương 6: Kết luận và hướng phát triển.
Tóm tắt những kết quả đạt được, những hạn chế và nêu lên các hướng
phát triển trong tương lai cho hệ thống
Trang 19Chương 2 CƠ SỞ LÝ THUYẾT
2.1 GIỚI THIỆU VỀ XỬ LÝ ẢNH.
Xử lý ảnh là một lĩnh vực mang tính khoa học và công nghệ Nó là một
ngành khoa học mới mẻ so với nhiều ngành khoa học khác nhưng tốc độ phát
triển của nó rất nhanh, kích thích các trung tâm nghiên cứu, ứng dụng, đặc
biệt là máy tính chuyên dụng riêng cho nó
Xử lý ảnh được đưa vào giảng dạy ở bậc đại học ở nước ta khoảng chụcnăm nay Nó là môn học liên quan đến nhiều lĩnh vực và cần nhiều kiến thức cơ
sở khác Đầu tiên phải kể đến “Xử lý tín hiệu số” là một môn học hết sức cơ bảncho xử lý tín hiệu chung, các khái niệm về tích chập, các biến đổi Fourier, biếnđổi Laplace, các bộ lọc hữu hạn… Thứ hai, các công cụ toán như đại số tuyếntính, xác xuất, thống kê Một số kiến thứ cần thiết như trí tuệ nhân tao, mạngnơron nhân tạo cũng được đề cập trong quá trình phân tích và nhận dạng ảnh
Các phương pháp xử lý ảnh bắt đầu từ các ứng dụng chính: nâng cao chấtlượng ảnh và phân tích ảnh Các phương pháp tri thức nhân tạo như mạng nơron nhân tạo, các thuật toán xử lý hiện đại và cải tiến, các công cụ nén ảnh ngàycàng được áp dụng rộng rãi và thu nhiều kết quả khả quan Ứng dụng đầu tiênđược biết đến là nâng cao chất lượng ảnh báo được truyền qua cáp từ Luân đônđến New York từ những năm 1920 Vấn đề nâng cao chất lượng ảnh có liênquan tới phân bố mức sáng và độ phân giải của ảnh Việc nâng cao chất lượngảnh được phát triển vào khoảng những năm 1955 Điều này có thể giải thíchđược vì sau thế chiến thứ hai, máy tính phát triển nhanh tạo điều kiện cho quátrình xử lý ảnh sô thuận lợi Năm 1964, máy tính đã có khả năng xử lý và nângcao chất lượng ảnh từ mặt trăng và vệ tinh Ranger 7 của Mỹ bao gồm: làm nổiđường biên, lưu ảnh Từ năm 1964 đến nay, các phương tiện xử lý, nâng caochất lượng, nhận dạng ảnh phát triển không ngừng Các phương pháp tri thứcnhân tạo như mạng nơ ron nhân tạo, các thuật toán xử lý hiện đại và cải tiến, cáccông cự nén ảnh càng được áp dụng rộng rãi và thu nhiều kết quả khả quan
Trang 20Để dễ tưởng tượng, xét các bước cần thiết trong xử lý ảnh Đầu tiên, ảnh tự nhiên từ thế giới ngoài được thu nhận qua các thiết bị thu (như camera) [5].
Cơ sởtrithức
2.1.2 Quá trình tiền xử lý ảnh.
Sau bộ thu nhận, ảnh có thể nhiễu độ tương phản thấp nên cần đưa vào bộtiền xử lý để nâng cao chất lượng Chức năng chính của bộ tiền xử lý là lọcnhiễu, nâng độ tương phản để làm ảnh rõ hơn, nét hơn
2.1.3 Quá trình phân đoạn ảnh.
Để phân biệt các đối tượng trong ảnh, chúng ta cần phân biệt các đối tượngcần quan tâm với phần còn lại của ảnh, hay còn gọi là nền ảnh Những đối tượngnày có thể này có thể phát hiện nhờ kỹ thuật phân đoạn ảnh Mỗi đối tượng
Trang 21trong ảnh được gọi là một vùng hay miền, đường bao quanh đối tượng gọi làđường biên Mỗi một vùng ảnh phải có một đặc tính đồng nhất Hình dáng củamột đối tượng có thể được miêu tả hoặc bởi các tham số của đường biên hoặccác tham số của vùng mà nó chiếm giữ Có thể thấy kỹ thuật phát hiện biên vàphân vùng ảnh là hai bài toán đối ngẫu của nhau Dò biên để phân vùng đượcảnh và ngược lại phân vùng được ảnh ta có thể phát hiện được biên Có rất nhiều
kỹ thuật phân đoạn ảnh, nhìn chung ta có thể chia thành ba lớp khác nhau: Các
kỹ thuật cục bộ dựa vào các thuôc tính cục bộ của điểm ảnh và điểm láng giềngcủa nó Các kỹ thuật toàn thể: phân loại ảnh dựa trên thông tin chung của toàn
bộ ảnh (ví dụ sử dụng lược đồ xám của ảnh) Các kỹ thuật tách (split), hợp(merge) và growing sử dụng các khái niệm đồng nhất và gần về hình học Đây làphần phức tạp khó khăn nhất trong xử lý ảnh và cũng dễ gây lỗi, làm mất độchính xác của ảnh Kết quả nhận dạng ảnh phụ thuộc rất nhiều vào công đoạnnày
2.1.4 Biểu diễn và mô tả.
Đầu ra ảnh sau phân đoạn chứa các điểm ảnh của vùng ảnh (ảnh đã phânđoạn) cộng với mã liên kết với các vùng lận cận Việc biến đổi các số liệu nàythành dạng thích hợp là cần thiết cho xử lý tiếp theo bằng máy tính Việc chọncác tính chất để thể hiện ảnh gọi là trích chọn đặc trưng (Feature Selection) gắnvới việc tách các đặc tính của ảnh dưới dạng các thông tin định lượng hoặc làm
cơ sở để phân biệt lớp đối tượng này với đối tượng khác trong phạm vi ảnh nhậnđược
Nhận dạng theo tham số
Nhận dạng theo cấu trúc
Trang 22và xử lý ảnh theo cách của con người Trong các bước đó, nhiều khâu hiện nay
đã xử lý theo các phương pháp trí tuệ con người Vì vây, ở đây các cơ sở tri thưcđược phát huy [5]
2.2 CÁC PHƯƠNG PHÁP XỬ LÝ CƠ BẢN VỚI MỘT ẢNH ĐẦU VÀO 2.2.1 Chuyển đổi ảnh màu sang ảnh xám [6-7].
Thông thường ảnh được thu về trước khi qua quá trình xử lý là những ảnhmàu Đa số ảnh màu được tao ra bằng việc sử dụng các tổ hợp thích hợp của cáccường độ ánh sáng đỏ (RED), xanh lục GREEN) và xanh lam (BLUE) Mỗiđiểm ảnh được biểu thị bởi 24bit thông tin (trong tiếng Anh thông thường đượcbiết đến như bits per pixel hay bpp) Nó tương ứng với mỗi 8 bit cho màu đỏ,xanh lá cây và xanh lam, tạo thành một tổ hợp 256 các giá trị có thể, hay 256mức cường độ cho mỗi màu Với hệ thống như thế, khoảng 16,7 triệu màu rờirạc có thể tái tạo
Trong ảnh xám, mỗi pixel có giá trị 8 bits thông tin Ở mức này, cấu trúcảnh vẫn giữ nguyên, giá trị ma trận ảnh đơn giản rất nhiều Phù hợp với quátrình xử lý chỉ quan tâm đến cấu trúc ảnh mà không cần đến màu sắc ảnh Côngthức tổng quát được sử dụng phổ biến đổi ảnh màu thành ảnh xám là:
P = aCr + bCb + cCgTrên thực tế trong tài liệu phần mềm matlab cung cấp là hàm chuyển đổi ảnh
màu sang ảnh xám rbg2gray() có định nghĩa sẵn các trọng số a, b, c cụ thể trongcông thức dưới đây:
P = 0.299 * Cr + 0.587 * Cg + 0.114 * Cb
Trang 23Trong đó: Cr, Cb, Cg là các giá trị mức màu R, B, G Tùy theo mức độ thunhận ảnh màu gốc hoặc tùy theo các thiết bị thu nhận mà hệ số a, b, c có các giátrị khác nhau sao cho (a+b+c) <=1.
Trên thực tế thường sử dụng 2 công thức dưới đây để chuyển đổi ảnh màusang ảnh xám
Hình 2.2 Chuyển ảnh màu thành ảnh xám.
Do ảnh đôi khi được chụp ở nơi quá sáng hay quá tối sẽ làm cấu trúc ảnhsau khi chuyển đổi thành ảnh xám sẽ không rõ ràng, để có thể làm nổi bật cấutrúc ảnh lên Ta có thể dựa vào lược đồ xám để điều chỉnh đô tương phản giúpảnh rõ hơn Vậy là lược đồ xám là gì?
Lược đồ xám: Là một biểu đồ với trục tung là mức xám, trục hoành là cácpixel Lược đồ này biểu diễn tần suất xuất hiện của các mức xám trên ảnh
Hình 2.3 Lược đồ xám.
Điều này rất cần thiết cho việc nhận dạng ảnh, nhất là với các ảnh chứanhiều chi tiết thì lại càng quan trọng
Trang 242.2.2 Nhị phân hóa ảnh [8].
Đây là cách biến đổi các giá trị pixel của ảnh sang giá trị nhị phân (đơngiản nhất) 0 hoặc 1 Khi đó ma trận ảnh sẽ ở mức tối thiểu giá trị giúp việc xử lýđơn giản nhất nhưng đôi khi gây sai lệch cấu trúc ảnh (do các đường viền khácbiệt nhỏ dễ bị đồng hóa) Đây chỉ là bước xử lý cho các ảnh có ít chi tiết
Để nhị phân hóa ảnh, ta dựa vào ngưỡng xám trung bình, nếu lớn hơn thì đưagiá trị về 1, nhỏ hơn thì đưa về 0 (thực chất là mức 0 và 255 thể hiện 2 màu đen
và trắng)
Hình 2.4 Ảnh xám và ảnh nhị phân.
2.2.3 Các phương pháp lọc nhiễu ảnh nhằm cải thiện ảnh [9].
Hình ảnh sau khi thu nhận cần qua một bước tiền xử lý và lọc ảnh, đây làcông đoạn gần như bắt buộc bởi ảnh nhận được hầu hết đều có nhiễu, mờ nêncần loại bỏ nhiễu và làm rõ nét hơn để cho ảnh có chất lượng tốt để đem sửdụng Các kỹ thuật tăng cường ảnh được phân nhóm theo công dụng: làm trơnnhiễu, nổi biên Để làm trơn nhiễu hay tách nhiễu, người ta sử dụng các bộ lọctuyến tính (lọc trung bình, thông thấp) hay lọc phi tuyến (trung vị, giả trung vị,lọc đồng hình) Từ bản chất của nhiễu (thường tương ứng với tần số cao) và từ
cơ sở lý thuyết lọc là: bộ lọc chỉ cho tín hiệu có tần số nào đó thông qua do đó,
Trang 25để lọc nhiễu người ta thường dùng lọc thông thấp (theo quan điểm tần số khônggian) hay lấy tổ hợp tuyến tính để san bằng (lọc trung bình) Để làm nổi cạnh(ứng với tần số cao), người ta dùng các bộ lọc thông cao, lọc Laplace.
Trên thực tế tồn tại nhiều loại nhiễu; tuy nhiên người ta thường xem xét 3loại nhiễu chính: nhiễu cộng, nhiễu nhân và nhiễu xung
2.2.4 Làm trơn nhiễu bằng lọc tuyến tính.
Do có nhiều loại nhiễu can thiệp vào quá trình xử lý ảnh nên cần có nhiều
bộ lọc thích hợp Với nhiễu cộng và nhiễu nhân ta dùng các bộ lọc thông thấp,trung bình và lọc đồng hình (Homomorphie); với nhiễu xung ta dùng lọc trung
bị, giả trung vị, lọc ngoài (Outlier)
2.2.5 Lọc trung bình không gian.
Lọc trung bình là kĩ thuật lọc tuyến tính, hoạt động như một bộ lọc thôngthấp Ý tưởng chính của thuật toán lọc Trung vị như sau: ta sử dụng một cửa sổlọc (ma trận 3x3) quét qua lần lượt từng điểm ảnh của ảnh đầu vào input Tại vịtrí mỗi điểm ảnh lấy giá trị của các điểm ảnh tương ứng trong vùng 3x3 của ảnhgốc "lấp" vào ma trận lọc Giá trị điểm ảnh của ảnh đầu ra là giá trị trung bìnhcủa tất cả các điểm ảnh trong cửa sổ lọc Việc tính toán này khá đơn giản với haibước gồm tính tổng các thành phần trong cửa sổ lọc và sau đó chia tổng này cho
Trang 26Bộ lọc trung bình lam mịn các sai khác địa phương bên trong ảnh, do đó nó bản
chất là một bộ lọc thông thấp
Nó có thể được thực hiện với một mặt nạ cuộn trong đó tất cả các hệ số đều
bằng 1/N Bộ lọc này sẽ có khuynh hướng làm nhèo ảnh trong khi làm giảm
bớt hiệu ứng của nhiễu
Có thể thấy rằng kích thước mặt nạ càng lớn, thì hiệu ứng nhòe càng rõ rệt
Kiểu bộ lọc này làm việc tốt nhất với các loại nhiễu Gauss và nhiễu phân bố
đều
2.2.6 Lọc thông thấp.
Lọc thông thấp thường được sử dụng để làm trơn nhiễu Về nguyên lý của
bộ lọc thông thấp giống như đã trình bày trên Trong kỹ thuật này người ta haydùng một số nhân chập có dạng sau:
Ta dễ dàng nhận thấy khi b =1, Hb chính là nhân chập Ht1 (lọc trung bình).
Để hiểu rõ hơn bản chát khử nhiễu cộng của các bộ lọc này, ta viết lại phươngtrình thu nhận ảnh dưới dạng:
Trang 27Kỹ thuật lọc này hiệu quả với ảnh có nhiễu nhân Thực tế, ảnh quan sátđược gồm ảnh gốc nhân với một hệ số nhiễu Gọi X (m, n) là ảnh thu được,X(m, n) là ảnh gốc và η(m, n) là nhiễu, như vậy:
X(m, n) = X (m, n) * η(m, n )Lọc đồng hình thực hiện lấy logarit của ảnh quan sát Do vậy ta có kếtquả sau:
Log(X(m, n)) = log( X (m,n) ) + log( η(m, n)) (2.9)
Rõ ràng, nhiễu nhân có trong ảnh sẽ bị giảm Sau quá trình lọc tuyến tính,
ta chuyển về ảnh cũ bằng phép biến đổi hàm e mũ
2.2.8 Làm trơn nhiễu bằng lọc phi tuyến.
Các bộ lọc phi tuyến cũng hay được dùng trong kỹ thuật tăng cường ảnh.Trong kỹ thuật này, người ta dùng bộ lọc trung vị, giả trung vị, lọc ngoài Vớilọc trung vị, điểm ảnh đầu vào sẽ được thay thế bởi trung vị các điểm ảnh cònlọc giả trung vị sẽ dùng trung bình cộng của 2 giá trị “trung vị” (trung bình cộngcủa max và min)
Trung vị được viết với công thức:
V(m, n) = Trungvi( ) y(m – k, n – l) với {k, l} W (2.10)
Kỹ thuật này đòi hỏi giá trị các điểm ảnh trong cửa sổ phải xếp theo thứ tự
∈tăng hay giảm dần so với giá trị trung vị Kích thước cửa số thường được chọnsao cho số điểm ảnh trong cửa số là lẻ Các cửa sổ hay dùng là cửa sổ có kích
thước 3x3, hay 5x5 hay 7x7.
Tính chất của lọc trung vị:
Lọc trung vị là loại lọc phi tuyến Điều này dẽ nhận thấy từ:
Trungvi(x(m)+y(m)) ≠ Trungvi(x(m)) + Trungvi(y(m)) (2.11)
Có lợi cho việc loại bỏ các điểm ảnh hay các ang mà vẫn bảo toàn độ
phân giải
Hiệu quả giảm khi số điểm trong cửa sổ lớn hay bằng một nửa số điểm
trong cửa sổ
2.2.9 Lọc trung vị
Trang 28Điều này dễ giải thích vì trung vị là (Nw+1)/2 giá trị lớn nhất nếu Nw lẻ.
Lọc trung vị cho trường hợp 2 chiều coi như lọc trung vị tách được theo từngchiều
2.3 GIỚI THIỆU VỀ MATLAB
MATLAB là viết tắt của "matrix laboratory", là ngôn ngữ lập trình cao cấpthế hệ thứ 4 của Mathworks MATLAB cung cấp môi trường tương tác để thựchiện tính toán và lập trình, …
MATLAB là ngôn ngữ lập trình do MathWorks phát triển, cho phép ngườidùng xây dựng ma trận, vẽ đồ thị hàm số hay biểu đồ dữ liệu, thực hiện các phéptoán, tạo các giao diện người dùng, liên kết các chương trình máy tính được viếttrên nhiều ngôn ngữ khác nhau, bao gồm cả C, C++, Java, và FORTRAN, phântích dữ liệu, phát triển các thuật toán, tạo ra các mô hình và ứng dụng
MATLAB được tích hợp nhiều lệnh và các hàm toán học, giúp người dùngthực hiện tính toán các con số, vẽ đồ thị và thực hiện các phương pháp số
MATLAB được sử dụng rộng rãi trong mọi khía cạnh tính toán Dưới đây làmột số phép tính toán MATLAB được sử dụng phổ biến nhất: Giải quyết các
Giải tích và phương trình vi phân
Tính toán số, tích phân, chuyển đổi, hồi quy, các hàm đặc biệt
khác Hệ thống matlab gồm 5 phần chính:
Trang 29Ngôn ngữ matlab: Cho phép lập trình từ các ứng dụng nhỏ đến phức tạp
Đó là các ngôn ngữ cao về ma trận và mảng, các dòng lệnh, các hàm, cấu trúc dữ liệu vào
Môi trường làm việc: Bao gồm các phương tiện cho việc quản lý các biếntrong không gian làm việc Workspace cũng như xuất nhập dữ liệu Nócũng bao gồm các công cụ phát triển, quản lý, gỡ rối và định hình M-file
Xử lý đồ họa: Bao gồm các lệnh cao cấp cho trực quan hóa dữ liệu hai
chiều và ba chiều, xử lý ảnh, ảnh động Cung cấp các giao diện tương tác giữa người sử dụng và máy tính
Thư viện toán học: Các hàm cơ bản như cộng, trừ, nhân, chia, sin, cos, …
và các hàm phức tạp như tính ma trận nghịch đảo, trị riêng, chuyển đổi
fourier, laplace, symbolic library
Giao diện người dùng (Application Program Interface): Cho phép viết
chương trình tương tác với các ngôn ngữ khác C, Fortran,
Simulink là một chương trình đi kèm với Matlab, là một hệ thống tương tácvới việc mô phỏng các hệ thống động phi tuyến, mô phỏng mạch [10-11]
2.4 CÁC HÀM CƠ BẢN ĐƯỢC SỬ DỤNG [12].
2.4.1 Hàm imread().
Lệnh imread() sẽ đọc một file thành một ma trận Matlab trợ giúp rất nhiều
định dạng đồ hoạ thông dụng chẳng hạn: BMP, GIF, JPEG, PNG, TIFF … Đểbiết thêm các kiểu gọi hàm và tham số truyền vào, xem trợ giúp online của
Matlab Kết quả trả về của hàm imread() là một ma trận có cùng kích thước với
ảnh đầu vào
2.4.2 Hàm imshow() và imagesc().
Để hiển thị hình ảnh trong matlab ta dùng 2 lệnh sau imshow() và imagesc()
Lệnh imshow () cho chúng ta một hình ảnh trong định dạng tiêu chuẩn là 8-bit,
giống như trong một trình duyệt web Lệnh imagesc () hiển thị các hình ảnh trên
các trục đồ thị với giá trị min là màu đen và giá trị tối đa là màu trắng Ví dụ:
img = imread('ImageProcessing_1/BerkeleyTower.png');
Trang 30Lệnh rgb2gray() chuyển đổi hình ảnh RGB thành trắng đen bằng cách loại
bỏ các thông tin màu sắc và độ bão hòa nhưng vẫn giữ độ sáng Ví dụ:
img = imread('ImageProcessing_1/BerkeleyTower.png');
16
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH
Trang 31gray = rgb2gray(img);
imshow(gray);
Kết quả sau khi chạy code
Hình 2.7 Chuyển đổi ảnh màu thành ảnh xám.
2.4.4 Hàm imadjust()
Lệnh imadjust() điều chỉnh giá trị cường độ hình ảnh Câu lệnh này
làm tăng độ tương phản của hình ảnh đầu ra Ví dụ:
Trang 32Hình 2.8 Tăng cường độ tương phản của anh bằng hàm imadjust()
2.4.5 Hàm tự tính ngưỡng để chuyển sang ảnh nhị phân graythresh(), và
hàm chuyển đổi ảnh nhị phân imbinarize().
Bằng cách so sánh giá trị điểm ảnh với một ngưỡng T cố định Nếu giá trị
điểm ảnh lớn hơn T thì gán điểm ảnh màu trắng và ngược lại Trong phần mềm
matlab có hỗ trợ lệnh graythresh() với đầu với là 1 ảnh xám và trả về một hằng
số T phục vụ cho quá trinh chuyển đổi ảnh nhị phân qua hàm imbinarize() Ví
Kết quả sau khi chạy code
Hình 2.9 Chuyển đổi ảnh xám sang ảnh nhị phân.
Trang 33figure; imshow(A), title('Original')
figure; imshow(A1), title('Dilated')
B chính là nhân tạo hình Trong Matlab, chương trình cũng cung cấp cho
ta nhiều nhân tạo hình khác nhau, để biết thêm chi tiết gõ help strel
Hình 2.10 Ảnh đầu vào hàm imdilate().
Hình 2.11 Ảnh đầu vào hàm imdilate().
2.4.7 Hàm imerode()
Trang 34Lệnh imerode() có chưc năng làm xói mòn/ co hẹp các đối tượng ảnh đơn
Cũng giống như hàm imdilate() B đóng vai trò là nhân tạo hình.
Hình 2.12 Ảnh đầu vào hàm imerode()
Hình 2.13 Ảnh đầu vào hàm imerode().
Trang 352.4.8 Hàm bwareaopen().
Lệnh bwareaopen() dùng để xóa các đối tượng nhỏ có số lượng pixel nhỏ
hơn mong muốn để lấy được các đướng tượng cần phân tích A=
2.5 GIỚI THIỆU LỊCH SỬ HÌNH THÀNH ARDUINO [13-14].
Arduino là một bo mạch vi xử lý được dung để lập trình tương tác với cácthiết bị phần cứng như cảm biến, động cơ, đèn hoặc các thiết bị khác đặc điểmnổi bật của Arduino là môi trường phát triển ứng dụng cực kỳ dễ sử dụng, vớimột ngôn ngữ lập trình có thể học một cách nhanh chóng ngay cả với người ít
am hiểu về điện tử và lập trình và điều hiển làm nên hiện tượng Arduino chính
là mức giá thấy với tính chấ nguồn mở từ phần cứng tới phần mềm chỉ với
Trang 36khoảng $30, người dung đã có thể sở hữu board Arduino có 20 ngõ I/O có thểtương tác và điều khiển chừng ấy thiết bị.
Arduino ra đời tại thị trấn Ivrea thuộc nước Ý và được đặt theo tên một vịvua vào thế kỷ thứ 9 là King Arduino, Arduino chính thức được đưa ra giớithiệu vào năm 2005 như là một công cụ khiêm tốn dành cho các sinh viên củagiáo sư Massimo Banzi, là một trong những người phát triển Arduino, tại trườngInteraction Design Instistute Ivrea (IDII) Mặt dù hầu như không được tiếp thị gì
cả, tin tức về arduino vẫn lan truyền với tốc độ chóng mặt nhờ những lời truyềnmiệng tốt đẹp của những người dùng đầu tiên Hiện nay Arduino nổi tiếng tớinỗi có người tìm đến thị trấn Ivrea chỉ để tham quan nói đã sản sinh ra Arduino
Arduino thực sự đã gây sóng gió trên thị trường người dùng DIY (là nhữngngười tự chế ra sản phẩm của mình) trên toàn thế giới trong vài năm gần đây.Ngay cả những sinh viên và nhà nghiên cứu tại các trường đại học danh tiếngnhư MIT, Stanford, Carnegie Mellon phải sử dụng; hoặc ngay cả Google cũngmuốn hỗ trợ khi cho ra đời bộ kit Arduino Mega ADK dùng để phát triển cácứng dụng Android tương tác với cảm biến và các thiết bị khác
Arduino được chọn làm bộ não xử lý của rất nhiều thiết bị từ đơn giản đếnphức tạp Trong số đó có một vài ứng dụng thực sự chứng tỏ khả năng vượt trộicủa Arduino do chúng có khả năng thực hiện nhiều nhiệm vụ rất phức tạp Sauđây là một số ứng dụng nổi bật của Arduino[4]
Máy in 3D
Hình 2.15 Máy in 3D Materia 101.
Trang 37Xe điều khiển từ xa.
Hình 2.16 Xe điều khiển từ xa
2.6 GIỚI THIỆU ARDUINO MEGA 2560.
Board Arduino Mega 2560 được tích hợp sẵn Vi điều khiển Atmega2560cho số ngoại vi, các chuẩn giao tiếp và số chân nhiều nhất, bộ nhớ rất lớn(256KB), dễ dàng kết nối với Module Arduino Motor Shield, nếu có những ứngdụng cần mở rộng thêm nhiều chân, nhiều ngoại vi thì đây là một sự lựa chọnđáng giá, board hoàn toàn có cấu trúc chân tương thích với các board như Uno
và chạy điện áp 5VDC Tất cả các Shield của Arduino Uno đều chạy được vớiArduino Mega và Adruino Mega không dùng được thư viện SoftwareSerial vì
đã có sẵn 4 bộ UART
Hình 2.17 Board Arduino Mega 2560.
Trang 38Hình 2.18 Sơ đồ và chức năng chân Arduino Mega 2560.
Vi điều khiển Atmega2560
IC nạp và giao tiếp UART: ATmega16U2
Điện áp hoạt động: 5V – DC ( đối với cáp USB )
Tần số hoạt động: 16 MHz
Dòng hoạt động: 30 mA
Điện áp giới hạn: 7-9V – DC (đối với giắc tròn, đây là điện áp nên sử
dụng khi cấp nguồn ngoài)
Số chân Analog: 16
Số chân Digital: 54 (15 chân PWM)
Giao tiếp UART: 4 bộ UART
Dòng tối đa trên mỗi chân I/O: 30
mA Các chân năng lượng:
GND (Ground): cực âm của nguồn điện cấp cho Arduino Mega
5V: cấp điện áp 5V đầu ra Dòng tối đa cho phép ở chân này là 500mA
3.3V: cấp điện áp 3.3V đầu ra Dòng tối đa cho phép ở chân này là 50mA
Vin (Voltage Input): để cấp nguồn ngoài cho Arduino Mega
Bộ nhớ của Arduino mega 2560:
256KB bộ nhớ Flash: những đoạn lệnh lập trình sẽ được lưu trữ trong bộ
nhớ Flash của vi điều khiển Sẽ có khoảng vài KB trong số này sẽ được dùng
Trang 39cho bootloader nhưng thường thì ít khi nào phải sử dụng quá 20kb bộ nhớ
này
2.7 KẾT NỐI GIỮA MATLAB VÀ ARDUINO [15].
Mô hình này rất đơn giản, tương tự như cách sử dụng Serial để giao tiếp vớiArduino thông qua Serial Monitor: máy tính sẽ mở cổng COMx ( hoặc/dev/tty , ) sau đó các nội dung trong output buffer của Arduino sẽ được tuồnqua máy tính và lưu ở input buffer Máy tính đọc những dòng đó rồi quy ra lệnh(Serial Command); đồng thời trên Arduino cũng song song tồn tại phương thức
ấy Bạn xem hình dưới để rõ ràng hơn
Hình 2.19 Giao tiếp giữa máy tính và arduino thông qua chuẩn UART.
Giao tiếp UART trong Arduino Mega:
Khái niệm giao tiếp UART: UART là chuẩn truyền thông nối tiếp bấtđồng bộ (Universal Asynchronous Receiver – Transmitter) dùng để truyền nhận
dữ liệu giữa 2 hệ thống và không có phân biết chủ- tớ, giữa các hệ thống làngang cấp nhau
Chuẩn UART gồm một đường phát dữ liệu và một đường nhận dữ liệu Đểtruyền dữ liệu giữa 2 hệ thống với nhau thì cả hai hệ thống phải tự tạo xungclock (CK) có cùng tần số (Tốc độ baud)
Trang 40Hình 2.20 Giao tiếp 2 hệ thống dùng chuẩn UART.
Nguyên lý hoạt động: Khi ở trạng thái chờ, mức điện áp của thiết bị truyền
ở mức 1 (high) Khi bắt đầu truyền dữ liệu, START bit sẽ chuyển từ 1 xuống 0
để báo hiệu cho thiết bị nhận là quá trình truyền dữ liệu sắp xảy ra Sau STARTbit là đến các bit dữ liệu D0-D7 Sau khi truyền hết dữ liệu thì đến Bit Parity để
bộ nhận kiểm tra tính đúng đắn của dữ liệu truyền Cuối cùng là STOP bit là 1báo cho thiết bị nhận rằng các bit đã được gửi xong Thiết bị nhận sẽ tiến hànhkiểm tra khung truyền (Frame) nhằm đảm báo tính đúng đắn của dữ liệu [16]
Hình 2.21 Nguyên lý hoạt động chuẩn UART.
Giao tiếp UART trong Arduino Mega: Trên Arduino Mega có hổ trợ mộtchuẩn giao tiếp UART đó là 4 chân D0 (RX) dùng để nhận dữ liệu chuẩn TTL
và D1(TX) dùng để truyền dữ liệu chuẩn TT