Nội dung thực hiện: Đề tài thực hiện nội dung xây dựng hệ thống đếm đối tượng qua hình ảnh với đầu vào là từ video là ảnh chứa các đối tượng phương tiện giao thông.. Nguyên nhân của vấn
Trang 1BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH
I TÊN ĐỀ TÀI: THIẾT KẾ THI CÔNG HỆ THỐNG ĐIỀU KHIỂN TÍN HIỆU
ĐÈN GIAO THÔNG THÔNG QUA XỬ LÝ ẢNH
II NHIỆM VỤ
1 Các số liệu ban đầu:
- Video đầu vào: 6 video, 2 video khi đường ít xe, 2 video khi làn nhiều xe
- Matlab phiên bản 2017a
- Kit điều khiển chính: Arduino Mega 2560, 2 Module Led 7 đoạn đôi, 6 led đơn (2 đỏ, 2 vàng, 2 xanh)
2 Nội dung thực hiện:
Đề tài thực hiện nội dung xây dựng hệ thống đếm đối tượng qua hình ảnh với đầu vào là từ video là ảnh chứa các đối tượng (phương tiện giao thông) Kết quả đếm được sẽ được gửi xuống kit Arduino để điều khiển 2 cặp module led 7 đoạn và led đơn Nhóm sẽ thực hiện các nội dung như sau:
Tìm hiểu về kit Arduino Mega 2560
Tìm hiểu về phần mềm matlab
Cài đặt nguồn thư viện cho kit Arduino, cách kết nối Arduino với Matlab
Tìm hiểu các thuật toán phát hiện phương tiện giao thông
Xây dựng quá trình xử lý ảnh đầu vào
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 quá trình thu thập dữ liệu và gửi dữ liệu xuống kit Arduino
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
Trang 2IV NGÀY HOÀN THÀNH NHIỆM VỤ: 03/07/2018
V HỌ VÀ TÊN CÁN BỘ HƯỚNG DẪN: ThS Võ Đức Dũng
Trang 3Bộ Môn Điện Tử Công Nghiệp – Y Sinh
Tp Hồ Chí Minh, ngày 12 tháng 07 năm 2018
- Cài đặt Matlab, Arduino
- Lập trình Arduino với các chân I/O để nhúng
dữ liệu
4
(9/4-15/4)
- Tìm hiểu các thuật toán xử lý ảnh đầu vào
- Các hàm cơ bản xử dụng cho việc sử lý ảnh đầu vào
Trang 47
(30/4-6/5)
- Viết lưu đồ chương trình đèn giao thông
- Tiến hành viết chương trình và hiệu chỉnh chương trình
8
(7/5-13/5)
- Tìm hiểu cách kết nối giữa matlab và adruino
- Tiến hành gửi dữ liệu từ Matlab sang arduino
- Hoàn thiện, chỉnh sửa báo cáo gửi cho GVHD
để xem xét góp ý lần cuối trước khi in báo cáo
12
(4/6-10/6) - Nộp quyển báo cáo và làm Slide báo cáo
GV HƯỚNG DẪN (Ký và ghi rõ họ và tên)
Trang 5Chúng tôi cam đoan đồ án tốt nghiệp là công trình nghiên cứu của bản thân chúng tôi dưới sự hướng dẫn của thạc sĩ Võ Đức Dũng
Các kết quả công bố trong đồ án tốt nghiệp “Thiết kế thi công hệ thống điều
khiển tín hiệu đèn giao thông thông qua xử lý ảnh” là trung thực và không sao
chép từ công trình nào khác
Người thực hiện đề tài
Nguyễn Thái Dương Duy
Trang 6Trong quá trình làm đồ án tốt nghiệp, chúng em đã nhận được rất nhiều sự ủng hộ, 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è
Chúng em xin gửi lời cảm ơn chân thành đến Th.S Võ Đức Dũng - Trường
Đại học Sư phạm Kỹ thuật Tp.HCM đã tận tình hướng dẫn chỉ bảo trong suốt thời gian làm luận án tốt nghiệp Thầy đã tạo nhiều điều kiện và cho những lời khuyên quý báu giúp chúng em hoàn thành tốt khóa luận
Xin chân thành cảm ơn thầy cô giáo trong Trường Đại học Sư phạm Kỹ thuật Tp.HCM nói chung, các thầy cô trong Bộ môn Điện tử Công Nghiệp – Y Sinh nói riêng đã tận tình giảng dạy, truyền đạt cho chúng em những kiến thức quý báu và tạo điều kiện giúp đỡ trong suốt quá trình học tập trong những năm học vừa qua, giúp chúng em có được cơ sở lý thuyết vững vàng
Cuối cùng, chúng em xin chân thành cảm ơn gia đình và bạn bè, đã luôn tạo điều kiện, quan tâm, ủng hộ, giúp đỡ, động viên chúng em trong suốt quá trình học tập và hoàn thành đồ án tốt nghiệp
Chúng em xin chân thành cảm ơn!
Người thực hiện đề tài
Nguyễn Thái Dương Duy
Trang 7Trang bìa i
Nhiệm vụ đồ án ii
Lịch trình iv
Cam đoan vi
Lời cảm ơn vii
Mục lục viii
Liệt kê hình vẽ xi
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 3
1.3 Nội dung nghiên cứu 3
1.4 Giới hạn 3
1.5 Bố cục 4
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT 6
2.1 Giới thiệu xử lý ảnh 6
2.2 Tổng quan về Matlab 7
2.3 Giới thiệu về lịch xử hình thành Arduino 8
2.4 Giới thiệu phần cứng 10
2.4.1 Kit arduino mega 2560 10
2.4.2 Led quét 7 đoạn loại 2 digit 13
2.4.2.1 Led 7 đoạn 13
2.4.2.2 Led quét 7 đoạn loại 2 digit 14
2.4.3 Led đơn 15
2.5 Quy trình xử lý ảnh 15
2.5.1 Xử lý ảnh là gì? 15
2.5.2 Quá trình thu nhận ảnh 16
2.5.3 Quá trình tiền xử lý ảnh 16
2.5.4 Quá trình phân đoạn ảnh 16
Trang 82.5.7 Cơ sở tri thức 18
2.6 Các phương pháp xử lý cơ bản với một đối tượng ảnh đầu vào 18
2.6.1 Chuyển đổi ảnh màu sang ảnh màu xám 18
2.6.2 Nhị phân hóa ảnh 20
2.6.3 Các phương pháp lọc nhiễu ảnh nhằm cải thiện ảnh 21
2.6.4 Làm trơn nhiễu bằng lọc tuyến tính 21
2.6.5 Làm trơn nhiễu bằng lọc phi tuyến 24
2.6.6 Phân vùng ảnh 24
2.7 Các hàm cơ bản được sử dụng trong quá trình phát hiện và đếm số lượng phương tiện trong đề tài 25
2.7.1 Hàm imread() 25
2.7.2 Hàm imshow() và imagesc() 25
2.7.3 Hàm rgb2gray() 26
2.7.4 Hàm imadjust() 27
2.7.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() 28
2.7.6 Hàm imdilate() 28
2.7.7 Hàm imerode() 29
2.7.8 Hàm bwareaopen() 30
2.7.9 Hàm bwlable 31
CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ 32
3.1 Giới thiệu 32
3.2 Tính toán và thiết kế hệ thống 32
3.2.1 Thiết kế sơ đồ khối hệ thống 32
3.2.2 Thiết kế các khối hệ thống 33
3.2.3 Thiết kế mô hình đèn giao thông 40
3.2.4 Sơ đồ nguyên lý của toàn mạch 41
CHƯƠNG 4 THI CÔNG HỆ THỐNG 43
4.1 Giới thiệu 43
4.2 Thi công hệ thống 43
4.2.1 Thi công bo mạch 43
4.2.2 Lắp ráp và kiểm tra 44
Trang 94.3 Đóng gói và thi công mô hình 45
4.4 Lập trình hệ thống 46
4.4.1 Lập trình trên phần mềm matlab 46
4.4.1.1 Lưu đồ tổng quát trên matlab 46
4.4.1.2 Chi tiết về hệ thống 46
4.4.2 Lập trình trên kit arduino mega 2560 53
4.4.2.1 Lưu đồ tổng quát trên arduino 53
4.4.2.2 Chương trình điều khiển trên arduino 54
4.5 Viết tài liệu hướng dẫn sử dụng, tháo tác 60
4.5.1 Viết tài liệu hướng dẫn sử dụng 60
4.5.2 Quy trình thao tác trên giao diện 60
CHƯƠNG 5 KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ 61
5.1 Kết quả 61
5.2 Nhận xét 72
5.3 Đánh giá 73
CHƯƠNG 6 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 74
6.1 Kết luận 74
6.2 Hướng phát triển 74
TÀI LIỆU THAM KHẢO PHỤ LỤC
Trang 10Hình Trang
Hình 2.1 Máy in 3D Makerbot điều khiển bằng Arduino Mega 2560 9
Hình 2.2: Xe tự hành 10
Hình 2.3: Ambilight dùng Arduino uno 10
Hình 2.4: Sơ đồ và chức năng chân Arduino Mega 2560 11
Hình 2.5: Giao tiếp 2 hệ thống dùng chuẩn UART 13
Hình 2.6: Nguyên lý hoạt động chuẩn UART 13
Hình 2.7 Sơ đồ chân LED 7 thanh Anode 14
Hình 2.8: Cấu tạo thanh led 7 đoạn 2 digit 14
Hình 2.9: Sơ đồ chân Led 7 đoạn loại 2 digit 15
Hình 2.10: Led đơn sắc 15
Hình 2.11: Sơ đồ chân led đơn sắc 15
Hình 2.12: Kết quả đầu ra của quá trình xử lý ảnh 16
Hình 2.13: Sơ đồ quá trình xử lý ảnh 16
Hình 2.14: Chuyển ảnh màu thành ảnh xám 19
Hình 2.15: Lược đồ xám 20
Hình 2.16: Ảnh xám và ảnh nhị phân 20
Hình 2.17: Ví dụ bộ lọc trung bình 22
Hình 2.18: Hiển thị ảnh bằng hàm imshow() 26
Hình 2.19: Hiển thị ảnh bằng hàm imagesc() 26
Hình 2.20: Chuyển đổi ảnh màu thành ảnh xám 27
Hình 2.21: Tăng cường độ tương phản của anh bằng hàm imadjust() 27
Hình 2.22: Chuyển đổi ảnh xám sang ảnh nhị phân 28
Hình 2.23: Ảnh đầu vào 29
Hình 2.24: Ảnh sau khi giản nở 29
Hình 2.25: Ảnh đầu vào 30
Hình 2.26: Ảnh sau khi xói mòn 30
Hình 2.27: So sánh ảnh gốc và ảnh sau khi xử lý bằng hàm bwareaopen() 31
Hình 3.1: Sơ đồ khối hệ thống 32
Hình 3.2: Sơ đồ nối dây vi điều khiển trong Broad Arduino Mega 34
Hình 3.3: Sơ đồ nối dây mạch nạp trong Arduino Mega 35
Trang 11Hình 3.5: Led 7 đoạn 2 digit thực tế 36
Hình 3.6: Led đơn màu xanh, đỏ, vàng thực tế 38
Hình 3.7 Sơ đồ kết nối led đơn với điện trở 38
Hình 3.8 Sơ đồ kết nối led 7 đoạn với điện trở 38
Hình 3.9: Mặt trên của mô hình sau khi thiết kế 40
Hình 3.10: Mặt dưới của mô hình sau khi thiết kế 41
Hình 3.11: Sơ đồ nguyên lý toàn mạch 42
Hình 4.1 Mô hình sau khi thi công 43
Hình 4.2 Hỉnh ảnh thực tế sau khi thi công 44
Hình 4.3 Giao diện điều khiển chính trên PC 45
Hình 4.4. Mô hình sau khi thi công 46
Hình 4.5 Sơ đồ khối tổng quát chính của hệ thống đếm đối tượng trên matlab 46
Hình 4.6. Lưu đồ xử lý ảnh đầu vào 48
Hình 4.7 Ảnh đầu vào 49
Hình 4.8 Ảnh nền 49
Hình 4.9 Ảnh được nhị phân 50
Hình 4.10 Ảnh sau khi giản nở điểm ảnh 51
Hình 4.11 Ảnh sau khi lấp lỗ trống 51
Hình 4.12 Ảnh sau khi sói mòn 52
Hình 4.13 Ảnh sau xóa các đối tượng nhỏ 52
Hình 4.14 Kết quả sau khi xử lý 53
Hình 4.15 Sơ đồ khối chương trình nhận dữ liệu từ Matlab sang Aruduino 53
Hình 4.16. Lưu đồ chương trình điều khiển ứng dụng trên Arduino 54
Hình 4.17. Quy trình thao tác với thuật toán đếm số lượng phương tiện 60
Hình 5.1 Giao diện điều khiển chính 61
Hình 5.2 Giao diện lựu chọn lưu lượng phương tiện để quan sát 61
Hình 5.3 Kết quả quan sát trên giao diện làn 1 khi ít xe 62
Hình 5.4 Kết quả quan sát trên mô hình làn 1 khi ít xe 63
Hình 5.5 Kết quả quan sát trên giao diện làn 2 khi ít xe 63
Hình 5.6 Kết quả quan sát trên mô hình làn 2 khi ít xe 64
Hình 5.7 Kết quả quan sát trên giao diện làn 1 khi vừa xe 65
Hình 5.8 Kết quả quan sát trên mô hình làn 1 khi vừa xe 66
Trang 12Hình 5.10 Kết quả quan sát trên mô hình khi làn 2 vừa xe 67
Hình 5.11 Kết quả quan sát trên giao diện làn 1 khi đông xe 68
Hình 5.12 Kết quả quan sát trên mô hình làn 1 khi đông xe 69
Hình 5.13 Kết quả quan sát trên giao diện làn 2 khi đông xe 69
Hình 5.14 Kết quả quan sát trên mô hình làn 2 khi đông xe 70
Hình 5.15 Kết quả điều khiển bằng tay làn 1 71
Hình 5.16 Kết quả điều khiển bằng tay làn 2 71
Trang 13Bảng Trang
Bảng 3.1: Mã hiển thị từ 0 – 9 loại anode chung .37
Bảng 3.2 Số giây đèn xanh ứng với số xe đếm được 39
Bảng 3.3 Liệt kê điện áp và dòng các linh kiện sử dụng trong mạch 39
Bảng 4.1 Danh sách các linh kiện 47
Bảng 5.1 Kết quả đếm xe làn 1 khi ít xe 64
Bảng 5.2 Kết quả đếm xe làn 2 khi ít xe 65
Bảng 5.3 Thống kê kết quả đếm xe làn 1 khi vừa xe 67
Bảng 5.4 Thống kê kết quả đếm xe làn 2 khi vừa xe 68
Bảng 5.5 Kết quả đếm xe làn 1 khi đông xe 70
Bảng 5.6 Kết quả đếm xe làn 2 khi đông xe 71
Trang 14Sự phát triển nhanh chóng của nền kinh tế và lượng dân cư đông đúc Nhu cầu đi lại, vận chuyển cũng tăng lên nhanh chóng đi kèm theo nó là bài toán tắc nghẽn ùn tắc giao thông Ùn tắc giao thông gây thiệt hại không nhỏ cho sự phát triển kinh tế quốc gia, giảm hiệu suất lao động và tăng các chi phí không cần thiết trong quá trình sản xuất Trong bối cảnh kinh tế lạm phát và khó khăn như hiện nay, lãng phí trong giao thông lại đặt thêm một gánh nặng đối với đời sống kinh tế của người dân Nguyên nhân của vấn đề này một phần là do cơ sở hạ tầng chưa đáp ứng được nhu cầu lưu thông hiện nay, một phần là do việc phân chia, định thời gian của hệ thống đèn giao thông hiện tại ở các giao lộ chưa hợp lý khiến cho số lượng phương tiện giao thông bị ùn tắc theo thời gian rồi dẫn đến tắc nghẽn giao thông Qua thực trạng đó, nhóm muốn xây dựng một hệ thống điều thiết giao thông tự động, phân luồng trực tiếp và hiệu quả hơn phần nào đó giảm bớt tình trạng ùn tắc giao thông Đồng thời tiêu tiếp cận, bổ sung các kiến thức mới, cũng như củng cố lại những kỹ năng kiến thức trong suốt quá trình học tập tại trường
Do đó, nhóm thực hiện đồ án chọn đề tài: “Thiết kế thi công hệ thống điều
khiển tín hiệu đèn giao thông thông qua xử lý ảnh”
Nghiên cứu này nhằm mục tiêu phát triển giải thuật điều khiển hệ thống đèn giao thông cho một giao lộ, với chu kỳ đèn tín hiệu tùy thuộc vào tình trạng
xe lưu thông trên hai tuyến đường quan sát được bởi 2 camera Giải thuật đếm số lưu lượng xe trên đường được xây dựng để quyết định thời gian của chu kỳ đèn xanh kế tiếp cho tuyến đường tương ứng Hình ảnh thu được từ camera sẽ được phần mềm mô phỏng giả lập để kiểm chứng giải thuật điều khiển Kết quả mô phỏng cho thấy tuyến đường nào có lưu lương xe lớn hơn thì chu kỳ đèn xanh của tuyến đường đó dài hơn và ngược lại
Người thực hiện đề tài
Trang 16
Chương 1 TỔNG QUAN
1.1 ĐẶT VẤN ĐỀ.
Trong những năm gần đây, mặc dù còn mới mẻ trong lĩnh vực khoa học và công nghệ nhưng xử lý ảnh đang được nghiên cứu và phát triển với tốc độ nhanh chóng bởi các trung tâm nghiên cứu, trường đại học và học viện… với rất nhiều ứng dụng trên các lĩnh vực khác nhau [1] Việc áp dụng công nghệ xử lý ảnh để tạo ra các thiết bị điện tử tự động hóa, phần nào đó thay thế được số lượng các cảm biến cần sử dụng giúp nhà đầu tư và người sử dụng vừa tiết kiệm được chi phí và nâng cao hiệu suất làm việc Trên thực tế các có rất nhiều bài toán đa dạng về các lĩnh vực công nghiệp, nông nghiệp, an ninh thậm chí là y tế được giải quyết nhờ việc áp dụng công nghệ xử lý ảnh
Hiện nay với sự phát triển nhanh chóng của nền kinh tế nước nhà và lượng dân cư đông đúc Nhu cầu đi lại, vận chuyển cũng tăng lên nhanh chóng đi kèm theo nó là bài toán tắc nghẽn ùn tắc giao thông Ùn tắc giao thông gây thiệt hại không nhỏ cho sự phát triển kinh tế quốc gia, giảm hiệu suất lao động và tăng các chi phí không cần thiết trong quá trình sản xuất Trong bối cảnh kinh tế giảm phát và khó khăn như hiện nay, lãng phí trong giao thông lại đặt thêm một gánh nặng đối với đời sống kinh tế của người dân Nguyên nhân của vấn đề này một phần là do cơ sở hạ tầng chưa đáp ứng được nhu cầu lưu thông hiện nay, một phần là do việc phân chia, định thời gian của hệ thống đèn giao thông hiện tại ở các nút giao thông chưa hợp lý khiến cho số lượng phương tiện giao thông bị ùn tắc theo thời gian rồi dẫn đến tắc nghẽn giao thông Hiện tại có rất nhiều giải pháp để nâng cao hiểu phia chia thời gian các làn đường ở các nút giao thông trọng điểm Như lập trình bộ điều khiển tín hiệu theo khung giờ cao điểm, hay trực tiếp phân luồng bởi con người Tuy vậy các giải pháp chỉ mang tính tương đối và tốn tài nguyên về con nguời
Ở các quốc gia tiên tiến, giải pháp đưa ra là lắp đặt các hệ thống camera để
tự động điều tiết giao thông tại các giao lộ trọng yếu Trong quá trình phát triển
hệ thống kiểm soát giao thông, đã có rất nhiều công bố về việc nghiên cứu thông
Trang 17qua mô phỏng và thực nghiệm nhằm tối ưu hóa các bộ điều khiển đèn tín hiệu Trong đó, các nghiên cứu điển hình về việc sử dụng kỹ thuật xử lý ảnh kết hợp với điều khiển mờ (fuzzy control) đèn tín hiệu đã được áp dụng thành công [6-9] Các hệ thống này có giá rất cao, ví dụ một hệ thống đèn giao thông thông minh thương mại sử dụng máy tính công nghiệp và các camera giám sát được giới thiệu bởi AdvanTech lên đến hàng tỉ đồng cho mỗi chốt giao thông[10]
Ở nước ta, hầu hết các hệ thống đèn giao thông hiện đại đều được nhập khẩu với giá thành cao và kèm theo hàng loạt các vấn đề cần khắc phục, do chúng ta chưa làm chủ được công nghệ Chẳng hạn, để lắp đặt 121 trụ đèn giao thông do Tây Ban Nha sản xuất, trong dự án “Tăng cường năng lực giao thông thành phố Hồ Chí Minh”, cần đến 3,5 triệu USD Tuy nhiên, chưa đầy một năm
sử dụng, chúng ta đã “phơi nắng” số tiền khổng lồ này, do các trụ đèn giao thông trên không hoạt động được[11] Năm 2007, Sở Giao Thông Công Chánh thành phố Hồ Chí Minh triển khai lắp đặt 48 chốt đèn gắn cảm biến để điều tiết giao thông tự động, bằng nguồn vốn ODA[12] Tuy vậy, mới sau một thời gian ngắn sử dụng, các chốt đèn giao thông này đã bị bệnh “nan y” Ủy Ban Nhân Dân thành phố Hồ Chí Minh phải chi hơn 8.456USD để mời chuyên gia nước ngoài “chẩn bệnh”[13] Rõ ràng làm chủ công nghệ đèn giao thông là nhu cầu thiết thực mà xã hội đã và đang đặt ra
Nghiên cứu này hướng tới việc kiểm chứng giải pháp thiết kế đèn giao thông có thể thay đổi được số giây đèn xanh cho mỗi làn đường để điều tiết lưu lương cho hợp lý dựa trên công nghệ xử lý ảnh Hệ thống dùng 2 camera hồng ngoại để quan sát 2 tuyến đường của 1 giao lộ Tuyến đường nào có lưu lượng
xe cao hơn thì chu kì đèn xanh tương ứng cho tuyến đường đó sẽ dài hơn tuyến đường còn lại
Do đó, nhóm thực hiện đồ án chọn đề tài: “Thiết kế thi công hệ thống điều
khiển tín hiệu đèn giao thông thông qua xử lý ảnh” Nhằm góp phần vào việc
xây dựng một phương pháp điều khiển đèn tín hiệu giao thông một cách hợp lý hơn, giúp tình trạng giao thông tại các ngã tư ở nước ta được ổn định hơn
Trang 181.2 MỤC TIÊU
Mục tiêu của đề tài là xây dựng hệ thống đếm đối tượng (phương tiện) qua
hình ảnh với đầu vào là ảnh có chứa đối tượng cần đếm từ ảnh chụp Thông qua
quá trình xử lý ảnh sẽ cho ra kết quả là số lượng phương tiện của mỗi làn đường
từ đó sẽ gửi dữ liệu xuống kít điều khiển arduino để điều khiển tín hiệu đèn giao
thông điều tiết giao thông
1.3 NỘI DUNG NGHIÊN CỨU
Mục tiêu xây dựng đề tài: “Thiết kế thi công hệ thống điều khiển tín hiệu
đèn giao thông thông qua xử lý ảnh” nhóm sẽ thực hiện những nội dung như
sau:
NỘI DUNG 1: Tìm hiểu về kit Arduino Mega 2560
NỘI DUNG 2: Tìm hiểu về phần mềm matlab
NỘI DUNG 3: Cài đặt thư viện cho kit Arduino, cách kết nối Arduino với Matlab
NỘI DUNG 4: Tìm hiểu các thuật 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 quá trình xử lý ảnh đầu vào
NỘI DUNG 6: 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 quá trình thu thập dữ liệu và gửi dữ liệu
xuống kit Arduino
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
NỘI DUNG 8: Đánh giá kết quả thực hiện
1.4 GIỚI HẠN
Mô hình gồm có kit Arduino Mega 2560, 2 Module led 7 đoạn loại 2
digit, 6 led đơn hiển thị đèn đỏ, xanh, vàng, máy tính laptop để thực hiện
hệ thống đếm đối tượng qua hình ảnh trên phần mềm Matlab sau đó gửi
dữ liệu xuống kit Arduino điêu khiển mô hình đèn giao thông
Trang 19 Hệ thống đếm đối tượng ảnh đầu vào với ngõ vào là ảnh chụp từ camera, sau đó được xử lý bằng các phương pháp tiền xử lý ảnh đầu vào, thuật toán dán nhãn đối tượng, phát hiện và đếm số lương phương tiện có trong ảnh
Do điều kiện phải đặt camera ở trên cột đèn giao thông ngoài thực tế, điều
đó là bất khả thi với nhóm thực hiện đề tài Nên trong đề tài này nhóm thực hiện sẽ quay video của 2 làn đường ngoài thực tế bằng điện thoại Với mật
độ vừa phải trong điều kiện ánh sáng, thời tiết tốt vào ban ngày, sau đó nhúng vào Matlab được cài đặt trên PC để mô phỏng camera quay 2 làn đường
1.5 BỐ CỤC
Đồ án tốt nghiệp: “Ứng dụng xử lý ảnh thiết kế thi công hệ thống hệ thống điều khiển đèn tín hiệu giao thông” trình bày trong 6 chương với bố cục như sau:
Chương 1: Tổng quan
Chương này trình bày đặt 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ề các phương pháp trong quá trình xử lý ảnh đầu vào 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
Trang 20Xây dựng chương trình hoàn chỉnh cho toàn hệ thống, các hàm, các lưu
đồ, các chương trình được sử dụng Lắp ráp và chạy chương trình Viết tài liệu hướng dẫn sử dụng, quy trình thao tác
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
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
Trang 21Chương 2 CƠ SỞ LÝ THUYẾT
2.1 GIỚI THIỆU 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ục nă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ản cho 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ến tí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ạng nơ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ất lượng ảnh và phân tích ảnh Ứ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ên quan 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âng cao 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 cao chất lượng, nhận dạng ảnh phát triển không ngừng 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ày càng được áp dụng rộng rãi và thu nhiều kết quả khả quan[1]
Để 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, máy chụp ảnh) Trước đây, ảnh thu qua camera là các ảnh tương tự (loại camera ống
Trang 22kiểu CCIR) Gần đây, với sự phát triển của công nghệ, ảnh màu hoặc đen trắng được lấy ra từ Camera, sau đó nó được chuyển trực tiếp thành ảnh số tạo thuận lợi cho xử lý tiếp theo Máy ảnh số hiện nay là một thí dụ gần gũi Mặt khác, ảnh cũng có thể tiếp nhận từ vệ tinh; có thể quét từ ảnh chụp bằng máy quét ảnh
2.2 TỔNG QUAN VỀ MATLAB
MATLAB là viết tắt của "matrix laboratory", là ngôn ngữ lập trình cao cấp thế hệ thứ 4 của Mathworks MATLAB cung cấp môi trường tương tác để thực hiện tính toán và lập trình[3], …
MATLAB là ngôn ngữ lập trình do MathWorks phát triển, cho phép người dù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ép toá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ết trên nhiều ngôn ngữ khác nhau, bao gồm cả C, C++, Java, và FORTRAN, phân tí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ùng thự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 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 23 Ngô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ến trong 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ác với việc mô phỏng các hệ thống động phi tuyến, mô phỏng mạch
2.3 GIỚI THIỆU LỊCH SỬ HÌNH THÀNH ARDUINO
Arduino là một bo mạch vi xử lý được dung để lập trình tương tác với các thiế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ểm nổ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ới mộ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 khoả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ới thiệ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ủa
Trang 24Interaction 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ền miệng tốt đẹp của những người dùng đầu tiên Hiện nay Arduino nổi tiếng tới nỗ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ững ngườ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ếng như MIT, Stanford, Carnegie Mellon phải sử dụng; hoặc ngay cả Google cũng muố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 đến phứ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ội củ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.1 Máy in 3D Makerbot điều khiển bằng Arduino Mega 2560
Xe tự hành
Trang 25Hình 2.2 Xe tự hành
Ambilight
Hình 2.3 Ambilight dùng Arduino uno
2.4 GIỚI THIỆU PHẦN CỨNG
2.4.1 Kit Arduino Mega 2560
Trong mô hình này, những người thực hiện dùng Board Arduino Mega
2560 được tích hợp sẵn Vi điều khiển Atmega2560 cho 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 ứng dụ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ới Arduino Mega và Adruino Mega không dùng được thư viện SoftwareSerial vì đã có sẵn 4 bộ UART[4]
Trang 26Hình 2.4 Sơ đồ và chức năng chân Arduino Mega 2560
Một vài thông số của Arduino Mega:
Arduino Mega sử dụng vi điều khiển Atmega2560
Số chân Digital: 54 (15 chân PWM)
Giao tiếp UART: 4 bộ UART
Giao tiếp SPI: 1 bộ (chân 50 -> 53) dùng với thư viện SPI của Arduino
Giao tiếp I2C: 1 bộ
Ngắt ngoài: 6 chân
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
Trang 27 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 cho bootloader nhưng thường thì ít khi nào phải sử dụng quá 20kb bộ nhớ này
8KB cho SRAM (Static Random Access Memory): giá trị các biến khai báo khi lập trình sẽ lưu ở đây Khai báo càng nhiều biến thì càng cần nhiều bộ nhớ RAM
Chú ý: khi mất điện, dữ liệu trên SRAM sẽ bị mất
4KB cho EEPROM (Electrically Eraseble Programmable Read Only Memory): tương tự như một chiếc ổ cứng mini – nơi có thể đọc và ghi
dữ liệu vào đây mà không phải lo bị mất khi mất điện giống như dữ liệu trên SRAM
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 xung clock (CK) có cùng tần số (Tốc độ baud)
Trang 28Hình 2.5 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 START bit 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à 1 bá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ành kiểm tra khung truyền (Frame) nhằm đảm báo tính đúng đắn của dữ liệu
Hình 2.6 Nguyên lý hoạt động chuẩn UART
Giao tiếp UART trong Arduino Mega: Trên Arduino Mega có hổ trợ một chuẩ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 TTL
2.4.2 Led quét 7 đoạn loại 2 digit
2.4.2.1 Led 7 đoạn
LED 7 đoạn hay LED 7 thanh là 1 linh kiện rất phổ dụng, được dùng như
là 1 công cụ hiển thị đơn giản nhất Trong LED 7 đoạn bao gồm ít nhất là 7 con LED mắc lại với nhau, vì vậy mà có tên là LED 7 đoạn là vậy, 7 LED đơn được
Trang 29mắc sao cho nó có thể hiển thị được các số từ 0 - 9, và 1 vài chữ cái thông dụng,
để phân cách thì người ta còn dùng thêm 1 led đơn để hiển thị dấu chấm (dot)
Led 7 thanh có 2 loại chính là:
- Chân Anode chung (chân + các led mắc chung lại với nhau.)
- Chân Catode chung (Chân - các led được mắc chung với nhau.)
Thông số làm việc hoạt động ổn định điện áp 2.2VDC và dòng cấp 10 mA
Hình 2.7 Sơ đồ chân LED 7 thanh Anode
2.4.2.2 Led quét 7 đoạn loại 2 digit
Gồm 2 Led 7 đoạn được ghép chung các đường tín hiệu với nhau nhưng khác chân điều khiển
Hình 2.8 Cấu tạo thanh led 7 đoạn 2 digit
Trang 30Hình 2.9 Sơ đồ chân Led 7 đoạn loại 2 digit
2.4.3 Led đơn
Gồm 3 led có màu khác nhau lục, vàng, đỏ để mô phỏng đền tín hiệu giao thông
Đối với led màu đỏ và vàng VF = 1.9-2.2 V, IF = 15-25mA
Đối với led màu lục VF = 3.0 -3.4 V, IF=15-25mA
Hình 2.10 Led đơn sắc
Hình 2.11. Sơ đồ chân led đơn sắc
2.5 QUY TRÌNH XỬ LÝ ẢNH
2.5.1 Xử lý ảnh là gì?
Trang 31Quá trình xử lý ảnh được xem như là một thao tác ảnh đầu vào nhằm cho
ra kết quả mong muốn Kết quả đầu ra của quá trình xử lý ảnh có thể là một ảnh
“tốt hơn” hoặc một kết luận
Hình 2.12. Kết quả đầu ra của quá trình xử lý ảnh
2.5.3 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ọc nhiễu, nâng độ tương phản để làm ảnh rõ hơn, nét hơn
2.5.4 Quá trình phân đoạn ảnh
Thu
nhận ảnh Tiền xử lý ảnh đoạn ảnh Phân
Biểu diễn và
mô tả
Nhận diện và nội suy
Cơ sở tri thức
Kết luận
Trang 32Để phân biệt các đối tượng trong ảnh, chúng ta cần phân biệt các đối tượng cầ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ượng nà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 trong ả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ủa một đối tượng có thể được miêu tả hoặc bởi các tham số của đường biên hoặc cá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ềng củ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ạn này
2.5.5 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ày thà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ọn các tính chất để thể hiện ảnh gọi là trích chọn đặc trưng (Feature Selection) gắn vớ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
2.5.6 Nhận dạng và nội suy ảnh
Nhận dạng ảnh là quá trình xác định ảnh Quá trình thường thu được bằng cách so sánh với mẫu chuẩn đã được lọc hoặc lưu từ trước
Trang 33Nội suy là phán đoán theo ý nghĩa trên cơ sở nhận dạng Có nhiều cách phân loại khác nhau về ảnh Theo lý thuyết về nhận dạng, các mô hình toán học
về ảnh được phân theo hai loại nhận dạng ảnh cơ bản:
và 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
2.6 CÁC PHƯƠNG PHÁP XỬ LÝ CƠ BẢN VỚI MỘT ĐỐI TƯỢNG ẢNH ĐẦU VÀO
2.6.1 Chuyển đổi ảnh màu sang ảnh xám
Thông thường ảnh được thu về trước khi qua quá trình xử lý là những ảnh mà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ác cườ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 được
biế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 256 mức cường độ cho mỗi màu Với hệ thống như thế, khoảng 16,7 triệu màu rời rạc có thể tái tạo
Như vậy tương ứng với một bức khung có độ phân giải HD sẽ chứ 1280 x
720 x 24 = 22.118.400 bit điều này sẽ gây độ phức tạp rất lớn cho việc xử lý Vì vậy, ta cần giảm số bit thông tin biểu diễn 1 pixel để việc xử lý thuận tiện hơn bằng cách chuyển đổi từ ảnh màu sang ảnh xám[5]
Trang 34Trong ả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ông thứ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 + cCg (2.1)
Trê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ể trong công thức dưới đây:
P = 0.299 * Cr + 0.587 * Cg + 0.114 * Cb (2.2)[14]
Trong đó: Cr, Cb, Cg là các giá trị mức màu R, B, G Tùy theo mức độ thu nhậ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àu sang ảnh xám
Hình 2.14 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 ảnh sau khi chuyển đổi thành ảnh xám sẽ không rõ ràng, để có thể làm nổi bật cấu trú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ì?
Trang 35Lược đồ xám: Là một biểu đồ với trục tung là mức xám, trục hoành là các pixel 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
Để 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ì đưa giá 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.16 Ảnh xám và ảnh nhị phân
Trang 362.6.3 Các phương pháp lọc nhiễu ảnh nhằm cải thiện ảnh
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ên cầ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ơn nhiễ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ọc tuyế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 đó,
để 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ông gian) 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 3 loại nhiễu chính: nhiễu cộng, nhiễu nhân và nhiễu xung:
Nhiễu cộng thường phân bố khắp ảnh Nếu gọi ảnh quan sát (ảnh thu được) là Xqs, ảnh gốc là Xgốc, nhiễu là η, ảnh thu được có thể biểu diễn bởi:
Xqs = Xgốc + η (2.3)
Nhiễu nhân thường phân bố khắp ảnh và ảnh thu được sẽ biểu diễn với công thức:
Xqs = Xgốc * η (2.4)
Nhiễu xung thường gây đột biến tại một số điểm ảnh
2.6.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)
a) 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ông
Trang 37lọ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 ảnh gố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ình củ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 hai bướ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
số các phần tử của cửa sổ lọc
Với lọc trung bình, mỗi điểm ảnh được thay thế bằng trung bình trọng số của các điểm lân cận và được mô tả theo công thức sau:
v(m,n) = ∑ ∑( , ) ( − , − ) (2.5) Với: y(m, n): ảnh đầu vào
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
Trang 38 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
b) 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 hay
dùng một số nhân chập có dạng sau:
= 0 1 01 2 1
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ương trình thu nhận ảnh dưới dạng:
c) Lọc đồng hình (Homomorphie Filter)
Kỹ 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 ) (2.8)
Lọc đồng hình thực hiện lấy logarit của ảnh quan sát Do vậy ta có kết
quả sau:
Trang 39Rõ 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.6.5 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ới lọc trung vị, điểm ảnh đầu vào sẽ được thay thế bởi trung vị các điểm ảnh còn lọc giả trung vị sẽ dùng trung bình cộng của 2 giá trị “trung vị” (trung bình cộng của max và min)
d) Lọc trung vị
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ọn sao 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 24ang 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ổ
Đ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ừng chiều
2.6.6 Phân vùng ảnh:
Phân vùng ảnh là một quá trình chia một bức ảnh số thành nhiều phần khác nhau (tập hợp các điểm ảnh, hay có thể gọi là superpixels) Mục tiêu của phân vùng ảnh là để đơn giản hóa và hoặc thay đổi biểu diễn của một tấm ảnh vào
Trang 40sử dụng để xác định vị trí các đối tượng, đường biên (đường thẳng, cong, …) Hay nói cách khác phân vùng ảnh là một quá trình gán nhãn (assigning a lablel) cho mỗi điểm ảnh trong một bức ảnh, các điểm ảnh trong cùng một nhãn sẽ có những đặc tính giống nhau về màu sắc, cường độ hoặc kết cấu của ảnh.
Kết quả của việc phân vùng ảnh là tập hợp các phân đoạn (segments) bao gồm có thể là toàn bộ bức ảnh hoặc tập hợp các đường biên chiết xuất từ hình ảnh Các điểm ảnh trong cùng một vùng có đặc tính tương tự nhau về màu sắc, cường độ hoặc kết cấu Các vùng lân cận thì khác nhau đáng kể về các đặc trưng trên
Phân vùng ảnh là một bước quan trọng trong nhiều lĩnh vực khác nhau như lĩnh vực hình ảnh y tế (medical imaging), phát hiện và nhận dạng đối tượng, hệ thống camera giám sát, hệ thống điều khiển giao thông, … Kỹ thuật này là bước tiền xử lý quan trọng trong hầu hết các hệ thống xử lý ảnh, kết phân vùng tốt sẽ giúp cho quá trình xử lý về sau đạt hiệu quả cao hơn nhằm tiết kiệm về chi phí tính toán, thời gian cũng như tăng độ chính xác của các ứng dụng trên
2.7 CÁC HÀM CƠ BẢN ĐƯỢC SỬ DỤNG TRONG QUA TRÌNH PHÁT HIỆN VÀ ĐẾM SỐ LƯỢNG PHƯƠNG TIỆN TRONG ĐỀ TÀI[3]
2.7.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.7.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