1. Trang chủ
  2. » Luận Văn - Báo Cáo

Đồ án ứng dụng xử lí ảnh điều khiển đèn giao thông tại nút giao thông

110 76 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Ứng Dụng Xử Lý Ảnh Điều Khiển Đèn Giao Thông Tại Nút Giao Thông
Tác giả Nguyễn Hoàn Hảo, Huỳnh Ngọc Giang
Người hướng dẫn ThS. Võ Đức Dũng
Trường học Trường Đại Học Sư Phạm Kỹ Thuật Tp. Hồ Chí Minh
Chuyên ngành Kỹ Thuật Điện Tử Truyền Thông
Thể loại Đồ Án Tốt Nghiệp
Năm xuất bản 2019
Thành phố Tp. Hồ Chí Minh
Định dạng
Số trang 110
Dung lượng 7,23 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Cấu trúc

  • 4.5 VIẾT TÀI LIỆU HƯỚNG DẪN SỬ DỤNG, THAO TÁC…………………….54

  • Chương 1. TỔNG QUAN

    • 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ác như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ên nhiề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ầu hế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ày nay [1].

    • 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.

    • 1.3 NỘI DUNG NGHIÊN CỨU

    • 1.4 GIỚI HẠN ĐỀ TÀI

    • 1.5 BỐ CỤC.

  • Hình 2.1. Sơ đồ quá trình xử lý ảnh.

  • 2.1 .1 Quá trình thu nhận ảnh.

  • Ảnh có thể nhận qua camera màu hoặc đen trắng. Thường ảnh nhận qua camera là ảnh tương tự (loại camera ống chuẩn CCIR với tần số 1/25, mỗi ảnh 25 dòng), cũng có loại camera đã số hoá (như loại CCD – Change Coupled Device) là loại photodiot tạo cường độ sáng tại mỗi điểm ảnh.

  • Camera thường dùng là loại quét dòng ảnh tạo ra có dạng 2 chiều. Chất lượng một ảnh thu nhận được phụ thuộc vào thiết bị thu, vào môi trường (ánh sáng, phong cảnh).

  • 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ọc nhiễ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ượ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.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à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.1.5 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.

  • Nộ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:

  • 2.1.6 Cơ sở tri thức.

  • Ảnh là một đối tượng khác phức tạp về đường nét, độ sáng tối, dung lượng điểm ảnh, môi trường để thu ảnh phong phú kéo theo nhiễu. Trong nhiều khâu xử lý và phân tích ảnh ngoài việc đơn giản hóa các phương pháp toán học bảo đảm tiện lợi cho việc xử lý, người ta mong muốn bắt chước quy trình tiếp nhậ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 [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 ả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.

    • Hình 2.3 Lược đồ xám.

  • 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ông thấ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 ả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.

  • Nhận xét về bộ lọc trung bình.

  • Bộ 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.

  • 2.2.8 Làm trơn nhiễu bằng lọc phi tuyến.

  • 2.2.9 Lọc trung vị

  • 2.3 GIỚI THIỆU VỀ MATLAB .

  • 2.4.7 Hàm imerode()

  • Lệnh imerode() có chưc năng làm xói mòn/ co hẹp các đối tượng ảnh đơn sắc.

  • 2.4.9 Hàm bwlable

  • 2.5 GIỚI THIỆU LỊCH SỬ HÌNH THÀNH ARDUINO [13-14].

  • 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.15 Máy in 3D Materia 101.

    • Xe đ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.

  • 2.7 KẾT NỐI GIỮA MATLAB VÀ ARDUINO [15].

  • Chương 4. THI CÔNG

    • 4.1 THI CÔNG HỆ THỐNG.

      • Hình 4.1 Testboard cắm hàn sử dụng trong mô hình.

      • Hình 4.2 Mặt trước của chân cắm.

      • Hình 4.3 Mặt sau của chân cắm.

      • Hình 4.4 Hình ảnh co chữ T và ống trắng sử dụng.

      • Tiếp theo là thiết kế đế led 7 đoạn và đế cắm dây để tạo thành khung đèn tín hiệu. Nhóm đã cưa một đoạn testboard hàn kích thước 7x4 cm, hàn chân đực vào phía trước và phía sau testboard với các chân đã được tính toán: 2 đế chân 7 đoạn gồm 5 lỗ và 2 đế chân cắm dây 5 lỗ.

      • Hình 4.5 Mặt trước, sau của đế cắm đèn đếm thời gian.

      • Tiếp theo thực hiện đế hiển thị đèn tín hiệu. Nhóm cưa một đoạn testboard hàn kích thước 4x4 cm, tiến hành hàn các led theo thứ tự đỏ, vàng, xanh và hàn cùng các chân đực.

      • Hình 4.6 Mặt trước của đế cắm đèn tín hiệu.

      • Tiến hành cắm các dây vào chân đã hàn, luồn dây qua co chữ T đã được gắn chắc chắn ở trên ống trắng, mỗi dây nối thành 2 dây dài 50 cm, cắm led 7 đoạn vào chân cắm, ta được hình như bên dưới:

      • Hình 4.7 Cột tín hiệu khi được ráp hoàn thiện

      • Hình 4.8 Hình ảnh thực tế sau khi thi công.

      • Khi lắp ráp và hàn linh kiện hoàn tất ta tiến hành cấp nguồn từ cổng USB của máy tính vào để kiểm tra mạch xem đèn led trên Arduino mega. Sau đó nạp thử chương trình để kiểm tra liệu chương trình có thể chạy.

      • 4.1.4 Thiết kế giao diện cho người điều khiển.

      • Để thiết kế giao diện cho người điều khiển, chúng em sử dụng matlab GUI, với 2 thành phần cơ bản để tạo thành một chương trình hoàn chỉnh là matlab GUI và matlab GUIcode :

      • Hình 4.9 Giao diện điều khiển chính

      • Chúng em sẽ thực hiện một mô hình có 4 làn đường, 4 trụ bằng ống nhựa tượng trưng cho 4 cột đèn giao thông, trên cùng của 4 ống nhựa là mô hình module 7 đoạn và led đơn được hàn chắc chắn. Led 7 đoạn quét hiển thị số giây đèn giao thông và 3 led đơn biểu hiện tín hiệu đèn giao thông. Sẽ có 2 chế độ điều khiển là AUTO và MANUAL.

      • MANUAL: Đây là chế độ dung trong trường hợp có sự cố xảy ra hoặc trường hợp người dung muốn cố định một khoảng thời gian đèn xanh ở mỗi làn, số giây đèn vàng sẽ là 3 giây, từ đó cho ra số giây đèn đỏ là số giây đèn vàng và đèn xanh. Người nhập vào bằng máy tính ở dạng số nguyên.

      • AUTO: chúng em trích suất một đoạn video ghi hình từ camera để cho matlab xử lý, hình sẽ được chụp tự động ở từng làn có ghi chú, sau đó sẽ được xử lý hình ảnh ngay lúc chạy, đếm số lượng phương tiện lưu thông để cho ra số giây đèn phù hợp vào từng mốc thời điểm trong ngày.

      • 4.2 ĐÓNG GÓI VÀ THI CÔNG MÔ HÌNH.

    • Hình 4.10 Mô hình sau khi thi công.

    • 4.3 LẬP TRÌNH HỆ THỐNG

    • 4.3.1 Lập trình trên phần mềm Matlab

    • 4.3.1.1 Sơ đồ khối đếm số lượng phương tiện.

    • Tuy nhiên với phương pháp này có hạn chế nếu các đối tượng quá sát nhau thì sẽ đếm thành 1 đối tượng.

    • 4.3.2 Lưu đồ tổng quát trên Arduino.

    • Arduino hoạt động như sau:

    • Khi có kết quả từ matlab, vi điều khiển sẽ quy định thời gian đèn xanh của làn 1 và thời gian đèn đỏ của làn 2 dựa trên kết quả được gửi.

    • Hiển thị ra led 7 đoạn đôi và led đơn, led 7 đoạn đôi sẽ chạy thời gian ngược để hoàn thành chu kì.

    • Khi hoàn thành chu kì thì vi điều khiển lại gửi trả kết quả sang máy tính để tiếp tục chờ nhận dữ liệu mới.

    • 4.4 GIỚI THIỆU VỀ PHẦN MỀM LẬP TRÌNH.

    • 4.4.1 Giới thiệu về matlab GUI.

    • GUI được viết tắt của từ “Graphical User Interface” . Là ta sẽ tiến hành sử dụng chuột để thao tác các thanh công cụ đã được con người lập trình sẵn và tích hợp vào phần mềm Matlab. Đây cho phép tương tác giao diện chương trình từ đó nhìn được một cách khách quan nhất và bắt đầu viết code để tương tác giao diện.

    • 4.4.2 Cách sử dụng matlabGUI.

    • Tại cửa sổ Command Window bạn hãy tiến hành gõ lệnh: guide.

    • Lập tức cửa sổ GUIDE Quick Start xuất hiện nên như hình phía dưới.

      • Hình 4.17 Giao diện matlabGUI với đuôi .fig

      • Hình 4.18 Giao diện matlab code đuôi .m

    • Giao diện matlab code là nơi thực thi các lệnh xử lí cho các đối tượng mình đã gọi ở matlabGUI có đuôi .fig.

    • 4.4.3 Giới thiệu về arduino IDE.

    • Môi trường phát triển tích hợp Arduino IDE là một ứng dụng đa nền tảng được viết bằng Java, và được dẫn xuất từ IDE cho ngôn ngữ lập trình xử lý và các dự án lắp ráp. Do có tính chất mã nguồn mở nên môi trường lập trình này hoàn toàn miễn phí và có thể mở rộng thêm bởi người dùng có kinh nghiệm.

      • Hình 4.19 Giao diện lập trình arduino.

      • setup(): hàm chạy một lần duy nhất vào lúc bắt đầu của một chương trình dùng để khởi tạo các thiết lập.

      • loop(): hàm được gọi lặp lại liên tục cho đến khi bo mạch được tắt.

      • Nút nạp chương trình xuống bo Arduino: Dùng để nạp chương trình được viết xuống mạch Arduino. Trong quá trình nạp, chương trình sẽ được kiểm tra lỗi trước sau đó mới thực hiện nạp xuống mạch Arduino.

      • Hiển thị màn hình giao tiếp với máy tính: khi nhấp vào biểu tượng cái kính lúp thì phần giao tiếp với máy tính sẽ được mở ra. Phần này sẽ hiển thị các thông số mà người dùng muốn đưa lên màn hình. Muốn đưa lên màn hình phải có lệnh Serial.print() mới có thể đưa thông số cần hiển thị lên màn hình

      • Vùng lập trình: Vùng này để người lập trình thực hiện việc lập trình cho chương trình của mình.

      • Vùng thông báo thông tin: Có chức năng thông báo các thông tin lỗi của chương trình hoặc các vấn đề liên quan đến chương trình được lập.

        • Hình 4.20 Giao diện arduino IDE menu.

    • 4.5 VIẾT TÀI LIỆU HƯỚNG DẪN SỬ DỤNG, THAO TÁC.

  • Bảng 5.2 Kết quả đếm xe làn 2 khi ít xe.

  • Bảng 5.3 Kết quả đếm xe làn 1 khi đông xe.

  • Bảng 5.4 Kết quả đếm xe làn 2 khi đông xe.

Nội dung

TỔNG QUAN

ĐẶT VẤN ĐỀ

Trong những năm gần đây, xử lý ảnh đã trở thành một lĩnh vực khoa học và công nghệ phát triển nhanh chóng, với nhiều ứng dụng đa dạng trong các ngành khác nhau Ứng dụng của xử lý ảnh hiện diện rộng rãi trong nhiều công nghệ, đóng góp quan trọng vào sự phát triển của thời đại công nghệ 4.0.

Ngày nay, sự phát triển kinh tế nhanh chóng đã dẫn đến tình trạng ùn tắc giao thông, đặc biệt nghiêm trọng ở các đô thị lớn như TP HCM và Hà Nội Đây là một vấn đề xã hội bức xúc, ảnh hưởng lớn đến kinh tế và đời sống, với thiệt hại ước tính lên đến 14.000 tỷ đồng tại TP HCM vào năm 2007 Tình trạng này không chỉ tác động đến người dân trong khu vực mà còn ảnh hưởng đến hoạt động sản xuất kinh doanh của nhiều công ty quốc tế Để giải quyết vấn đề này, các biện pháp như quy định thời gian lưu thông, tăng cường lực lượng phân luồng giao thông và nâng cấp cơ sở hạ tầng đã được áp dụng Tuy nhiên, những giải pháp này vẫn mang tính tạm thời và chưa thể giải quyết triệt để tình trạng ùn tắc giao thông.

Ngày nay, nhiều quốc gia đã triển khai lắp đặt camera trên các tuyến đường trọng yếu và xây dựng hệ thống phân luồng giao thông tự động Tại các thành phố lớn như TPHCM và Hà Nội, hàng ngàn camera đã được kết nối với hệ thống máy tính hiện đại trong các trung tâm điều khiển giao thông Tuy nhiên, chi phí cho những hệ thống này rất cao, ví dụ như một hệ thống đèn giao thông thông minh sử dụng camera giám sát và máy tính công nghiệp có giá lên đến hàng tỉ đồng.

Dựa trên các số liệu hiện có, một giải pháp hợp lý để giảm ùn tắc giao thông là sử dụng công nghệ xử lý ảnh để ghi lại hình ảnh phương tiện qua lại Hệ thống này sẽ điều chỉnh thời gian đèn tín hiệu xanh, vàng, đỏ dựa trên lưu lượng xe tại các giao lộ, giúp cải thiện tình hình giao thông Cụ thể, hệ thống sẽ sử dụng hai camera quan sát hai tuyến đường tại một ngã tư, từ đó xác định tuyến đường nào có nhiều xe hơn để kéo dài thời gian đèn xanh cho tuyến đó.

Dưới sự hướng dẫn của Thạc Sĩ Võ Đức Dũng, nhóm em đã 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” Mục tiêu của chúng em là góp phần xây dựng phương án điều tiết giao thông hợp lý nhằm cải thiện tình trạng ùn tắc hiện nay và tạo điều kiện lưu thông thoải mái hơn.

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.

Hệ thống được xây dựng nhằm đếm các phương tiện giao thông tại ngã tư bằng cách phân tích hình ảnh từ video Qua quá trình xử lý ảnh, hệ thống cung cấp kết quả bao gồm số lượng phương tiện, thông tin về làn đường, và thời gian đèn xanh tương ứng.

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.

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.

BỐ CỤC

 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á

 Chươ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.

CƠ SỞ LÝ THUYẾT

CÁC PHƯƠNG PHÁP XỬ LÝ CƠ BẢN VỚI MỘT SỐ ẢNH ĐỐI TƯỢNG ĐẦU VÀO

Ảnh là một đối tượng phức tạp với nhiều yếu tố như đường nét, độ sáng tối, và dung lượng điểm ảnh, tạo ra những thách thức trong việc thu nhận hình ảnh Trong quá trình xử lý và phân tích ảnh, việc đơn giản hóa các phương pháp toán học là cần thiết để thuận tiện hơn cho việc xử lý Đồng thời, người ta cũng mong muốn mô phỏng quy trình tiếp nhận và xử lý ảnh giống như cách mà con người thực hiện Hiện nay, nhiều phương pháp đã được áp dụng để xử lý ảnh dựa trên trí tuệ nhân tạo, từ đó phát huy được các cơ sở tri thức trong lĩnh vực này.

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].

Ảnh màu thường được tạo ra từ các tổ hợp cường độ ánh sáng đỏ, xanh lục và xanh lam, với mỗi điểm ảnh được biểu thị bằng 24 bit thông tin, tương đương với 8 bit cho mỗi màu Hệ thống này cho phép tái tạo khoảng 16,7 triệu màu khác nhau, nhờ vào 256 giá trị cường độ cho mỗi màu.

Trong ảnh xám, mỗi pixel chứa 8 bits thông tin, giúp đơn giản hóa cấu trúc ảnh Cách này phù hợp cho các quá trình xử lý chỉ tập trung vào cấu trúc mà không cần màu sắc Công thức phổ biến để chuyển đổi ảnh màu sang ảnh xám được sử dụng rộng rãi.

Trong MATLAB, hàm rbg2gray() được sử dụng để chuyển đổi ảnh màu sang ảnh xám, với các trọng số a, b, c được định nghĩa cụ thể trong công thức P = aCr + bCb + cCg.

Trong quá trình xử lý màu sắc, các giá trị Cr, Cb, Cg đại diện cho mức độ màu đỏ, xanh lam và xanh lá Tùy thuộc vào khả năng thu nhận ảnh màu gốc hoặc thiết bị sử dụng, các hệ số a, b, c sẽ có những giá trị khác nhau, đảm bảo rằng tổng (a+b+c) không vượt quá 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.2 Chuyển ảnh màu thành ảnh xám.

Khi chụp ảnh đôi ở những nơi có ánh sáng quá sáng hoặc quá tối, cấu trúc ảnh sau khi chuyển đổi sang ảnh xám có thể trở nên không rõ ràng Để làm nổi bật cấu trúc ảnh, chúng ta có thể sử dụng lược đồ xám để điều chỉnh độ tương phản, giúp ảnh trở nên rõ nét hơn Vậy lược đồ xám là gì?

Lược đồ xám là một biểu đồ thể hiện tần suất xuất hiện của các mức xám trong ảnh, với trục tung biểu thị mức xám và trục hoành đại diện cho các pixel.

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ứa nhiều chi tiết thì lại càng quan trọng.

2.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 (đơn giả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ác biệ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ì đư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.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].

Sau khi thu nhận hình ảnh, bước tiền xử lý và lọc ảnh là cần thiết để loại bỏ nhiễu và làm rõ nét, nhằm nâng cao chất lượng ảnh Các kỹ thuật tăng cường ảnh được phân loại theo chức năng, bao gồm làm trơn nhiễu và nổi biên Để tách nhiễu, người ta sử dụng bộ lọc tuyến tính như lọc trung bình và lọc thông thấp, hoặc bộ lọc phi tuyến như lọc trung vị và lọc đồng hình Do nhiễu thường tương ứng với tần số cao, nên lọc thông thấp thường được áp dụng để loại bỏ nhiễu, trong khi để làm nổi cạnh, các bộ lọc thông cao và lọc Laplace được sử dụng.

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.

2.2.4 Làm trơn nhiễu bằng lọc tuyến tính.

Để xử lý ảnh hiệu quả, cần sử dụng nhiều bộ lọc phù hợp do sự xuất hiện của nhiều loại nhiễu Đối với nhiễu cộng và nhiễu nhân, các bộ lọc thông thấp, lọc trung bình và lọc đồng hình (Homomorphie) là lựa chọn tối ưu Trong khi đó, để xử lý nhiễu xung, nên áp dụng lọc trung bị, giả trung vị và lọc ngoài (Outlier).

2.2.5 Lọc trung bình không gian.

Lọc trung bình là một kỹ thuật lọc tuyến tính, hoạt động như bộ lọc thông thấp Thuật toán này sử dụng một cửa sổ lọc 3x3 để quét qua từng điểm ảnh của ảnh đầu vào Tại mỗi vị trí, giá trị của các điểm ảnh trong vùng 3x3 sẽ được đưa vào ma trận lọc Giá trị của điểm ảnh đầu ra được tính bằng cách lấy trung bình của tất cả các điểm ảnh trong cửa sổ lọc, thông qua hai bước: tính tổng các thành phần và chia tổng này cho số lượng phần tử trong cửa sổ.

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) = N 1 ∑ ∑

Với: y(m, n): ảnh đầu vào. v(m, n): ảnh đầu ra. a(k, l) : là cửa sổ lọc. với ak,l = Nw 1 và Nw là số điểm ảnh trong cửa sổ lọc W.

Nhận xét về bộ lọc trung bình.

Bộ 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.

Sử dụng mặt nạ cuộn với tất cả các hệ số bằng 1/N có thể giúp làm mờ ảnh hiệu quả, đồng thời giảm thiểu tác động của nhiễu Bộ lọc này mang lại lợi ích trong việc cải thiện chất lượng hình ảnh.

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.

Lọc thông thấp là một công cụ quan trọng trong việc làm mượt nhiễu, hoạt động dựa trên nguyên lý đã được trình bày trước đó Trong kỹ thuật này, người ta thường sử dụng các nhân chập với các dạng cụ thể để đạt hiệu quả tối ưu.

Khi b = 1, Hb trở thành nhân chập của Ht1, tức là lọc trung bình Để hiểu rõ hơn về bản chất khử nhiễu của các bộ lọc này, chúng ta có thể diễn đạt lại phương trình thu nhận ảnh.

Trong đó: η[m, n] m, n] là nhiễu cộng có phương sai σ2n Như vậy, theo cách tính của lọc trung bình ta có:

Như vậy, nhiễu cộng trong ảnh đã giảm đi Nw lần.

2.2.7 Lọc đồng hình (Homomorphie Filter)

Kỹ thuật lọc này rất hiệu quả trong việc xử lý ảnh có nhiễu nhân Ảnh quan sát được thực chất là sự kết hợp giữa ảnh gốc và một hệ số nhiễu Gọi X(m, n) là ảnh thu được, trong đó X(m, n) đại diện cho ảnh gốc và η(m, n) là nhiễu.

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:

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 HÀM CƠ BẢN ĐƯỢC SỬ DỤNG

Lệnh imread() trong Matlab cho phép đọc file hình ảnh và chuyển đổi thành ma trận Matlab hỗ trợ nhiều định dạng đồ họa phổ biến như BMP, GIF, JPEG, PNG và TIFF Để tìm hiểu thêm về các cách gọi hàm và các tham số cần thiết, người dùng có thể tham khảo tài liệu trợ giúp trực tuyến của Matlab Kết quả của hàm imread() sẽ trả về một ma trận có kích thước tương ứng 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'); imshow(img); imagesc(img);

Kết quả sau khi chạy code.

Hình 2.5 Hiển thị ảnh bằng hàm imshow().

Hình 2.6 Hiển thị ảnh bằng hàm imagesc().

Lệ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'); gray = 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.

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ụ: img = imread('BerkeleyTower.png'); gray = rgb2gray(img); adj_img = imadjust(gray); subplot(121); imshow(gray); subplot(122); imshow(adj_img);

Kết quả sau khi chạy code.

Hì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 ngưỡng T cố định, nếu giá trị điểm ảnh lớn hơn T thì gán màu trắng, ngược lại sẽ gán màu đen Trong phần mềm MATLAB, lệnh graythresh() hỗ trợ xác định hằng số T từ ảnh xám, giúp quá trình chuyển đổi ảnh sang nhị phân qua hàm imbinarize().

Ví dụ: img = imread('BerkeleyTower.png'); gray = rgb2gray(img);

T = graythresh(gray) binary_img = imbinarize(gray,T); subplot(121); imshow(gray); subplot(122); imshow(binary_img);

Kết quả sau khi chạy code.

Hình 2.9 Chuyển đổi ảnh xám sang ảnh nhị phân.

Lệnh imdilate() là lệnh thao tác giãn nở/ phình to các đối tượng ảnh.

A1 = imdilate(BW,B); figure; 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().

Lệnh imerode() có chưc năng làm xói mòn/ co hẹp các đối tượng ảnh đơn sắc

Figure; imshow(A), title('Original') Figure; imshow(A2), title('eroded')

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().

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.

Hình 2.14 So sánh ảnh gốc và ảnh sau khi xử lý bằng hàm bwareaopen()

Lệnh bwlable có chức năng gắn nhãn các thành phần được kết nối trong hình ảnh nhị phân.

GIỚI THIỆU LỊCH SỬ HÌNH THÀNH ARDUINO

Arduino là một bo mạch vi xử lý cho phép 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ơ và đèn Điểm nổi bật của Arduino là môi trường phát triển dễ sử dụng và ngôn ngữ lập trình thân thiện, giúp người dùng nhanh chóng làm quen, ngay cả với những ai ít kinh nghiệm về điện tử Với mức giá khoảng $30 và tính chất nguồn mở từ phần cứng đến phần mềm, người dùng có thể sở hữu board Arduino với 20 ngõ I/O, cho phép tương tác và điều khiển nhiều thiết bị khác nhau.

Arduino được ra mắt tại thị trấn Ivrea, Ý vào năm 2005, lấy tên từ vị vua King Arduino của thế kỷ 9 Ban đầu, nó được phát triển như một công cụ cho sinh viên của giáo sư Massimo Banzi tại Interaction Design Institute Ivrea (IDII) Mặc dù không được tiếp thị mạnh mẽ, nhưng Arduino nhanh chóng lan tỏa nhờ sự giới thiệu tích cực từ những người dùng đầu tiên Ngày nay, Arduino đã trở thành biểu tượng công nghệ, thu hút du khách đến Ivrea để khám phá nơi sản sinh ra nó.

Arduino đã tạo nên một cơn sốt trong cộng đồng DIY toàn cầu trong những năm gần đây, thu hút sự quan tâm của sinh viên và nhà nghiên cứu tại các trường đại học danh tiếng như MIT, Stanford và Carnegie Mellon Đặc biệt, Google cũng đã tham gia vào xu hướng này bằng cách phát hành bộ kit Arduino Mega ADK, giúp phát triển các ứng dụng Android tương tác với cảm biến và thiết bị khác.

Arduino được sử dụng làm bộ não cho nhiều thiết bị, từ đơn giản đến phức tạp, và một số ứng dụng nổi bật đã chứng tỏ khả năng vượt trội của nó trong việc thực hiện các nhiệm vụ phức tạp Dưới đây là một số ứng dụng đáng chú ý của Arduino.

 Xe điều khiển từ xa.

Hình 2.16 Xe điều khiển từ xa.

GIỚI THIỆU ARDUINO MEGA 2560

Board Arduino Mega 2560 tích hợp Vi điều khiển Atmega2560 với số lượng chân và giao tiếp phong phú, bộ nhớ lớn lên đến 256KB, thuận tiện cho việc kết nối với Module Arduino Motor Shield Đây là lựa chọn lý tưởng cho các ứng dụng yêu cầu mở rộng thêm chân và ngoại vi Board tương thích với các board như Uno và hoạt động ở điện áp 5VDC Tất cả các Shield của Arduino Uno đều có thể sử dụng với Arduino Mega, tuy nhiên, Arduino Mega không hỗ trợ thư viện SoftwareSerial do đã có sẵn 4 bộ UART.

Hình 2.18 Sơ đồ và chức năng chân Arduino Mega 2560.

 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.

 Đ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 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.

 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:

Bộ nhớ Flash 256KB trên vi điều khiển được sử dụng để lưu trữ các đoạn lệnh lập trình, trong đó khoảng vài KB dành cho bootloader Thông thường, dung lượng bộ nhớ này ít khi vượt quá 20KB cho các ứng dụng lập trình.

KẾT NỐI GIỮA MATLAB VÀ ARDUINO

Mô hình giao tiếp giữa máy tính và Arduino rất đơn giản, tương tự như việc sử dụng Serial qua Serial Monitor Khi máy tính mở cổng COMx (hoặc /dev/tty ), dữ liệu từ output buffer của Arduino sẽ được truyền đến máy tính và lưu trữ trong input buffer Máy tính sẽ đọc các dòng dữ liệu này và chuyển đổi thành lệnh (Serial Command), trong khi đó, Arduino cũng sử dụng phương thức tương tự Hình ảnh dưới đây sẽ giúp bạn hiểu rõ hơn về quy trình này.

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:

Giao tiếp UART, hay Universal Asynchronous Receiver-Transmitter, là một chuẩn truyền thông nối tiếp bất đồng bộ, cho phép truyền nhận dữ liệu giữa hai hệ thống mà không cần phân biệt chủ-tớ, với các hệ thống ngang cấp nhau.

Chuẩn UART bao gồm một đường truyền dữ liệu và một đường nhận dữ liệu Để thực hiện việc truyền dữ liệu giữa hai hệ thống, cả hai hệ thống cần phải tự tạo ra xung clock (CK) với tần số giống nhau, hay còn gọi là tốc độ baud.

Hình 2.20 Giao tiếp 2 hệ thống dùng chuẩn UART.

Nguyên lý hoạt động của thiết bị truyền dữ liệu bắt đầu từ trạng thái chờ với mức điện áp 1 (high) Khi dữ liệu được truyền, START bit sẽ chuyển từ 1 xuống 0 để thông báo cho thiết bị nhận về quá trình truyền Tiếp theo là các bit dữ liệu D0-D7, sau đó là Bit Parity để kiểm tra tính chính xác của dữ liệu Cuối cùng, STOP bit sẽ trở lại mức 1, báo hiệu rằng quá trình truyền đã hoàn tất và thiết bị nhận sẽ kiểm tra khung truyền (Frame) để đảm bảo tính đúng đắn của dữ liệu.

Hình 2.21 Nguyên lý hoạt động chuẩn UART.

Giao tiếp UART trên Arduino Mega được hỗ trợ thông qua 4 chân, trong đó chân D0 (RX) được sử dụng để nhận dữ liệu chuẩn TTL và chân D1 (TX) dùng để truyền dữ liệu chuẩn TTL.

TÍNH TOÁN VÀ THIẾT KẾ

GIỚI THIỆU

 Thiết kế được mô hình và giao diện chương trình trên matlab đếm đối tượng từ ảnh lấy từ video

Đếm đối tượng trong ảnh bằng cách áp dụng các phương pháp và thuật toán xử lý hình ảnh khác nhau nhằm xác định số lượng đối tượng cụ thể, thông tin về làn đường và thời gian đèn giao thông phù hợp.

 Cuối cùng truyền tín hiệu điều khiển xuống vi điều khiển để điều khiển tín hiệu đèn giao thông phù hợp với đối tượng đếm được.

THI CÔNG HỆ THỐNG

THI CÔNG HỆ THỐNG

4.1.1 Thi công bo mạch dạng bus.

Bảng liệt kê linh kiện sử dụng:

Bảng 4.1 Danh sách linh kiện.

Trong quá trình thi công cân cắm dạng bus, chúng tôi đã lựa chọn sử dụng testboard cắm hàn kết hợp với chân đực, đồng thời đính sẵn các điện trở 330 ôm trên mạch Điều này không chỉ giúp thuận tiện trong thi công mà còn rút ngắn thời gian hoàn thành mô hình.

Tên linh kiện Thông số Số lượng

Hình 4.1 Testboard cắm hàn sử dụng trong mô hình.

Hình 4.2 Mặt trước của chân cắm.

Hình 4.3 Mặt sau của chân cắm.

4.1.2 Thi công cột tính hiệu giao thông. Để làm được một cột tín hiệu, nhóm đã cắt 4 ống nước có chiều dài 15 cm đường kính 2 cm, tiếp theo sử dụng cho chữ T trắng để làm phần đầu của cột, nơi đó dẫn ra đèn đếm thời gian và đèn tín hiệu.

Hình 4.4 Hình ảnh co chữ T và ống trắng sử dụng.

Thiết kế đế LED 7 đoạn và đế cắm dây để tạo khung đèn tín hiệu bao gồm việc cưa một đoạn testboard hàn kích thước 7x4 cm Nhóm đã hàn chân đực vào cả hai phía của testboard, với các chân được tính toán kỹ lưỡng, bao gồm 2 đế chân 7 đoạn với 5 lỗ và 2 đế chân cắm dây 5 lỗ.

Hình 4.5 Mặt trước, sau của đế cắm đèn đếm thời gian.

Để hiển thị đèn tín hiệu, nhóm đã cưa một đoạn testboard kích thước 4x4 cm và tiến hành hàn các LED theo thứ tự đỏ, vàng, xanh, cùng với các chân đực.

Hình 4.6 Mặt trước của đế cắm đèn tín hiệu.

Cắm các dây vào chân đã hàn và luồn qua co chữ T gắn chắc trên ống trắng Mỗi dây nối dài 50 cm, sau đó cắm led 7 đoạn vào chân cắm, tạo thành hệ thống như hình dưới đây.

Hình 4.7 Cột tín hiệu khi được ráp hoàn thiện

4.1.3 Lắp ráp và kiểm tra.

Hàn các linh kiện trong khối và lấy dây bus kết nối giữa các khối lại với nhau ta được như hình

Hình 4.8 Hình ảnh thực tế sau khi thi công.

Sau khi hoàn tất lắp ráp và hàn các linh kiện, chúng ta kết nối nguồn từ cổng USB của máy tính để kiểm tra mạch và xem đèn LED trên Arduino Mega Tiếp theo, tiến hành nạp thử chương trình để xác nhận chương trình có thể hoạt động đúng cách.

4.1.4 Thiết kế giao diện cho người điều khiển. Để thiết kế giao diện cho người điều khiển, chúng em sử dụng matlab GUI, với 2 thành phần cơ bản để tạo thành một chương trình hoàn chỉnh là matlab

Hình 4.9 Giao diện điều khiển chính

Chúng em sẽ xây dựng một mô hình giao thông với 4 làn đường và 4 trụ bằng ống nhựa, đại diện cho 4 cột đèn giao thông Trên mỗi ống nhựa, chúng em sẽ lắp đặt mô hình module 7 đoạn và LED đơn được hàn chắc chắn Mô hình này sẽ sử dụng LED 7 đoạn để hiển thị số giây của đèn giao thông, cùng với 3 LED đơn để biểu thị tín hiệu đèn Mô hình sẽ có 2 chế độ điều khiển: AUTO và MANUAL.

Chế độ MANUAL được sử dụng khi có sự cố hoặc khi người dùng muốn cố định thời gian đèn xanh cho mỗi làn Thời gian đèn vàng sẽ là 3 giây, từ đó thời gian đèn đỏ được tính bằng tổng thời gian đèn vàng và đèn xanh Người dùng có thể nhập dữ liệu qua máy tính dưới dạng số nguyên.

Chúng em sử dụng đoạn video từ camera để MATLAB xử lý, tự động chụp hình ở từng làn có ghi chú Hình ảnh sẽ được xử lý ngay lập tức, giúp đếm số lượng phương tiện lưu thông và xác định thời gian đèn giao thông phù hợp theo từng mốc thời gian trong ngày.

ĐÓNG GÓI VÀ THI CÔNG MÔ HÌNH

Sử dụng hộp gỗ kích thước 45x45x15 để tạo mô hình, giúp tránh va đập và hư hỏng Để hoàn thiện, chúng tôi đã dùng phần mềm Paint để vẽ làn đường trên bề mặt.

Chúng tôi đã khoan một lỗ nhỏ có đường kính 3 cm ở mặt bên để đưa cổng USB ra ngoài Sau đó, chúng tôi dán lên mặt trên của hình ngã tư, chú ý tránh vị trí trụ đèn và tiến hành trang trí.

Hình 4.10 Mô hình sau khi thi công. Đếm số lượng đối tượng

Xử lý hình ảnh Ảnh đầu vào

Chụp ảnh và xác định ảnh nền

Xác định các đối tượng là phương tiện có trong ảnh

LẬP TRÌNH HỆ THỐNG

4.3.1 Lập trình trên phần mềm Matlab

4.3.1.1 Sơ đồ khối đếm số lượng phương tiện.

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.

 Đầu tiên hệ thống sẽ lấy video đầu vào được quay từ smartphone, tiến hành chụp ảnh từ video.

Hệ thống sẽ nâng cao độ tương phản, khử nhiễu, khử bóng và khử độ lệch của hình ảnh sau khi lấy được, đồng thời loại bỏ các đối tượng không liên quan để giảm thiểu sai số trong quá trình đếm đối tượng.

Hệ thống sẽ đếm số lượng các đối tượng còn lại trong ảnh, và kết quả cuối cùng sẽ là tổng số phương tiện xuất hiện trên hình Thông tin này sẽ được gửi đến vi điều khiển để điều khiển mô hình.

4.3.1.2 Lưu đồ chi tiết xử lí ảnh đầu vào.

DÁN NHÃN ĐỐI TƯỢNG TẠO VỆT MÀU KHÁC

1 CHUYỂN SANG NHỊ PHÂN TĂNG CHÍNH XÁC

TẠO LỖ TRỐNG XOÁ CÁC ĐIỂM NHỎ LỌC NHIỄU ĐẾM CÁC ĐỐI TƯỢNG

CÓ TRONG VÙNG XỬ LÍ

GỬI TÍN HIỆU VĐK ENDliệu sang arduino

TÌM KÍCH THƯỚC ẢNH (DEMENSION) fgs(Y - X) a < length b < wi dth ĐẶT a,b = 1 Đúng

Hình 4.12 Lưu đồ xử lí ảnh đầu vào.

Hệ thống bắt đầu bằng việc thu thập hai hình ảnh: một là ảnh nền của làn đường không có xe và một là ảnh có xe Cả hai hình ảnh này sẽ được chuyển đổi thành ảnh xám nhằm đơn giản hóa quá trình xử lý.

Hệ thống sẽ so sánh hai bức ảnh để phát hiện những khác biệt, đặc biệt là các phương tiện dừng lại trước đèn đỏ Kết quả so sánh sẽ được xử lý để loại bỏ bóng và tăng cường độ chi tiết.

Sau khi ảnh được nhị phân hóa, các phương pháp hình thái học như co giãn, xói mòn và đóng mở đối tượng sẽ được áp dụng để xác định các đối tượng trong ảnh, đồng thời loại bỏ những đối tượng không mong muốn.

Tuy nhiên với phương pháp này có hạn chế nếu các đối tượng quá sát nhau thì sẽ đếm thành 1 đối tượng.

4.3.2 Lưu đồ tổng quát trên Arduino.

Arduino hoạt động như sau:

Khi nhận được kết quả từ MATLAB, vi điều khiển sẽ xác định thời gian đèn xanh cho làn 1 và thời gian đèn đỏ cho làn 2 dựa trên thông tin đã được gửi.

 Hiển thị ra led 7 đoạn đôi và led đơn, led 7 đoạn đôi sẽ chạy thời gian ngược để hoàn thành chu kì.

 Khi hoàn thành chu kì thì vi điều khiển lại gửi trả kết quả sang máy tính để tiếp tục chờ nhận dữ liệu mới.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 47 ĐIỀU KHIỂN LÀN 1 ĐIỀU KHIỂN LÀN 2

CHƯƠNG 4 THI CÔNG HỆ THỐNG

Hình 4.13 Lưu đồ chương trình điều khiển ứng dụng trên Arduino.

GIỚI THIỆU VỀ PHẦN MỀM LẬP TRÌNH

4.4.1 Giới thiệu về matlab GUI.

GUI, viết tắt của "Graphical User Interface", cho phép người dùng sử dụng chuột để thao tác các thanh công cụ được lập trình sẵn trong phần mềm Matlab Điều này tạo điều kiện cho việc tương tác với giao diện chương trình một cách trực quan, từ đó người dùng có thể bắt đầu viết mã để tương tác hiệu quả hơn với giao diện.

Tại cửa sổ Command Window bạn hãy tiến hành gõ lệnh: guide.

Lập tức cửa sổ GUIDE Quick Start xuất hiện nên như hình phía dưới.

Hình 4.14 Cửa sổ lựa chọn giao diện GUI.

Khi nhấn vào Blank GUI (Default) xuất hiện tiếp cửa sổ chọn đối tượng cho matlabGUI.

Hình 4.15 Cửa sổ lựa chọn tool cho giao diện GUI.

Push Button: Dùng để khi nhấn chuột vào thì nút này sẽ xử lý một công việc nào đó mà mong muốn.

Static Text được sử dụng để hiển thị thông tin cho một đối tượng nhất định hoặc để xuất dữ liệu từ chương trình Để thay đổi tên, màu sắc và các thuộc tính của công cụ, bạn chỉ cần nhấp đúp chuột vào công cụ đó, một cửa sổ mới có tên là Inspector sẽ xuất hiện.

Hình 4.16 Kéo các tool ra được giao diện GUI.

Hình 4.17 Giao diện matlabGUI với đuôi fig

Hình 4.18 Giao diện matlab code đuôi m

Giao diện matlab code là nơi thực thi các lệnh xử lí cho các đối tượng mình đã gọi ở matlabGUI có đuôi fig.

4.4.3 Giới thiệu về arduino IDE.

Môi trường phát triển tích hợp Arduino IDE là một ứng dụng đa nền tảng, được phát triển bằng Java và dựa trên IDE cho ngôn ngữ lập trình Processing cùng các dự án lắp ráp Với tính chất mã nguồn mở, Arduino IDE hoàn toàn miễn phí và cho phép người dùng có kinh nghiệm mở rộng thêm tính năng.

Giao diện lập trình Arduino bao gồm hai hàm chính: hàm setup() được thực hiện một lần duy nhất khi bắt đầu chương trình để khởi tạo các thiết lập cần thiết, trong khi hàm loop() được gọi liên tục cho đến khi bo mạch bị tắt.

Giao diện của phần mềm Arduino IDE bao gồm nhiều phần quan trọng, trong đó cần chú ý đến các khu vực chính được nêu trong hình Mỗi phần có chức năng cụ thể hỗ trợ người dùng trong quá trình lập trình và phát triển dự án.

Nút kiểm tra chương trình trong Arduino IDE cho phép người dùng xác định xem mã lập trình có lỗi hay không Nếu phát hiện lỗi, phần mềm sẽ hiển thị thông tin chi tiết về lỗi trong khu vực thông báo, giúp người dùng dễ dàng sửa chữa.

Nút nạp chương trình trên bo Arduino được sử dụng để tải chương trình đã viết vào mạch Arduino Trong quá trình này, chương trình sẽ được kiểm tra lỗi trước khi được nạp xuống mạch, đảm bảo tính chính xác và hiệu quả của quá trình nạp.

Khi nhấp vào biểu tượng kính lúp, màn hình giao tiếp với máy tính sẽ mở ra, hiển thị các thông số mà người dùng muốn Để đưa thông số lên màn hình, cần sử dụng lệnh Serial.print().

 Vùng lập trình: Vùng này để người lập trình thực hiện việc lập trình cho chương trình của mình.

 Vùng thông báo thông tin: Có chức năng thông báo các thông tin lỗi của chương trình hoặc các vấn đề liên quan đến chương trình được lập.

Hình 4.20 Giao diện arduino IDE menu.

VIẾT TÀI LIỆU HƯỚNG DẪN SỬ DỤNG, THAO TÁC

Bước 1: Đưa cáp USB của Arduino cắm vào máy tính.

Bước 3: Tiến hành chạy chương trình giao diện ban đầu.

Bước 4: Chọn chế độ chạy tự động hoặc bằng tay.

Bước 5: Quan sát kết quả trên màn hình.

Hình 4.21 Bước 2: Khởi động matlab

Hình 4.22 Bước 3,4 Chạy giao diện và chọn chế độ.

Một số lưu ý khi sử dụng:

 Khi khởi động nhưng chương trình không chạy, phải kiểm tra cáp USB đã cắm vào kĩ chưa, xem chắc có Port kết nối của Arduino đã xuất hiện.

 Cắm nguồn adapter 9V để mô hình hoạt động ổn định.

KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ

KẾT QUẢ

Hình 5.1 Mô hình hoàn thiện và cho chạy thử.

Hình 5.2 Giao diện điều khiển chính

Sẽ có 2 chế độ điều khiển là chế độ bằng tay và chế độ tự động tương ứng với

Sau khi chọn chế độ “AUTO”, người dùng sẽ được chuyển đến giao diện cho phép quan sát hoạt động của hệ thống trong hai tình huống: mật độ giao thông bình thường và đông đúc.

Hình 5.3 Giao diện lựa chọn mật độ phương tiện để quan sát.

Khi nhấn vào nút bình thường, chương trình sẽ hiển thị giao diện chuongtrinh1_bt, trong khi nhấn vào nút “Đông” sẽ mở giao diện chuongtrinh2_dong Điều này cho phép người sử dụng theo dõi quá trình đếm lưu lượng xe trong cả hai tình huống bình thường và đông đúc.

Bắt đầu với chế độ "Bình thường" khi lượng xe không đông, sau đó nhấn nút bắt đầu ở góc phải giao diện để kích hoạt tính năng "Tự động điều khiển thông qua camera" Hệ thống sẽ ngay lập tức chụp ảnh từ video của làn 1.

 Hình ảnh thu về xử được hệ thống xử lý, kết quả đếm phương tiện lưu thông làn 1 được xuất ra ở ô “SỐ LƯỢNG XE”.

 Số giây đèn xanh đã được tính toán cho làn đường đó sẽ được xuất ra ô “SỐGIÂY ĐÈN XANH”

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.

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.

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.

Khi chuyển làn, đèn xanh ở làn 1 tắt và chuyển sang đèn vàng Ngay sau khi đèn vàng tắt sau 3 giây, hệ thống sẽ tự động ghi lại hình ảnh từ video ở làn 2 và xử lý theo cách tương tự, khi đó làn 2 sẽ chuyển sang đèn xanh.

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.

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

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).

Tiến hành chạy chương trình lấy kết quả 8 lần trên làn 1, làn 2 khi ở chế độ bình thường.

Lần chụp Số xe hiển thị Số xe đếm được

Bảng 5.1 Kết quả đếm xe làn 1 khi ít xe

Số xe có trên hình

Bảng 5.2 Kết quả đếm xe làn 2 khi ít xe.

Nguyên do có sai số:

 Do xe chạy san sát gần nhau.

 Thời tiết trưa nắng làm màu nền không khớp với màu ảnh.

Kết quả đếm xe trên làn đông phương tiện tham gia

Hình 5.10 Kết quả quan sát trên giao diện làn 1 khi đông xe.

Hình 5.11 Kết quả quan sát trên mô hình ở làn 1 khi đông xe

Hình 5.12 Kết quả quan sát trên mô hình ở làn 2 song song với kết quả trên (đông).

Và sau khi đèn xanh ở làn 1 về 0, hết 3 giây đèn vàng và tiến hành chuyển làn, ta được kết quả :

Hình 5.13 Kết quả quan sát trên giao diện làn 2 sau khi chuyển làn ở chế độ đông xe.

Hình 5.14 Kết quả quan sát trên mô hình ở làn 2 sau khi chuyển làn đông xe

Hình 5.15 Kết quả quan sát trên mô hình khi làn 1 song song với kết quả trên

Tiến hành chạy chương trình lấy kết quả 5 lần trên làn 1, làn 2 khi đông xe

Số xe có trên hình

Bảng 5.3 Kết quả đếm xe làn 1 khi đông xe.

Số xe có trên hình

Bảng 5.4 Kết quả đếm xe làn 2 khi đông xe.

Hình 5.16 Kết quả trên giao diện ở chế độ điều khiển bằng tay.

Thời gian đèn xanh ở làn 1 được thiết lập trực tiếp trong giao diện điều khiển bằng tay là 50 giây Từ đó, thời gian đèn đỏ của làn 2 được tính toán là 53 giây.

Thời gian đèn xanh ở làn 2 được thiết lập trực tiếp trong phần chỉnh sửa của giao diện điều khiển bằng tay với thời gian là 55 giây Từ thời gian đèn xanh này, có thể suy ra rằng thời gian đèn đỏ của làn 1 là 58 giây.

Cho phép người điều khiển nhập số giây đèn xanh của mỗi làn đề phòng trường hợp chế độ AUTO bị lỗi, hoặc bảo trì.

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

Hì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ằng tay)

Sau khi chuyển làn từ làn 1 sang làn 2, ta được kết quả tiếp theo dưới đây:

Hì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

Hì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.

Tất nhiên hệ thống sẽ báo lỗi đối với trường hợp khi người không nhập vào 2 ô “LÀN 1” và “LÀN 2” dữ liệu dạng số:

Hình 5.21 Nhập dữ liệu dạng kí tự không phải số.

Hình 5.22 Hệ thống báo lỗi yêu cầu nhập dữ liệu có dạng số.

Ngày đăng: 18/07/2021, 11:17

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[15] Agus Kurniawan, Arduino Programming using Matlab, 1 st Edition, 2015 Sách, tạp chí
Tiêu đề: Arduino Programming using Matlab
[11] thanhhai.tic: https://kho-internet.blogspot.com/2018/10/matlab-la-gi.html, 2018 Link
[12]LU RUM: http://vimach.net/threads/matlab-trong-xu-ly-anh-7-ham-co-ban-cho-xu-ly-anh.180/, 24/12/2015 Link
[4] Lê Mỹ: Gần 50 chốt đèn giao thông được lắp hệ thống cảm biến, Dân Trí, 17/12/2007 Khác
[5] PGS.TS Nguyễn Quang Hoan, Xử lý ảnh, Học viện Công nghệ Bưu Chính Viễn Thông, 2006 Khác
[10] Ross L.Spencer, Introduction to Matlab, 2000 Khác
[13] Hans-Petter Halvorsen, Introduction to ARDUINO, 2008 Khác

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w