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

Đồ án ứng dụng xử lý ảnh nhận dạng cử chỉ bàn tay điều khiển robot di động

84 244 1

Đ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 Nhận Dạng Cử Chỉ Bàn Tay Điều Khiển Robot Di Động
Người hướng dẫn GVHD: Trần Hoàn
Trường học Trường Đại Học Công Nghiệp
Chuyên ngành Khoa Điện – Điện Tử
Thể loại Luận Văn Tốt Nghiệp
Thành phố TP. Hồ Chí Minh
Định dạng
Số trang 84
Dung lượng 19,4 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

  • DANH MỤC KÝ HIỆU, CỤM TỪ VIẾT TẮT

  • DANH MỤC BẢNG BIỂU

  • DANH MỤC HÌNH ẢNH

  • Chương 1: TỔNG QUAN VỀ ĐỀ TÀI

  • 1.1 Đặt vấn đề

  • 1.2 Mục tiêu

  • 1.3 Phạm vi của luận văn tốt nghiệp

  • 1.4 Tổng quan về các nghiên cứu liên quan

    • 1.4.1 Nhận dạng bàn tay dựa vào màu sắc và hình dáng

    • 1.4.2 Nhận dạng dựa vào ngưỡng trên mỗi kênh màu

    • 1.4.3 Optical Flow

    • 1.4.4 Phương pháp trừ nền

  • 1.5 Ý nghĩa khoa học và thực tiễn của đề tài

  • Chương 2: CƠ SỞ LÝ THUYẾT

    • 2.2.1 Điểm ảnh (Picture Element)

    • 2.2.2 Độ phân giải của ảnh

    • 2.2.3 Mức xám của ảnh

    • 2.2.4 Định nghĩa ảnh số

    • 2.2.5 Chỉnh mức xám

    • 2.2.6 Kỹ thuật năng cao chất lượng ảnh

    • 2.2.7 Kỹ thuật biến đổi ảnh

    • 2.2.8 Kỹ thuật phân tích ảnh

    • 2.2.9 Kỹ thuật nhận dạng ảnh

    • 2.3.1 Chuyển ảnh màu RGB thành ảnh mức xám ( Gray level)

    • 2.3.2 Phương pháp lọc nhiễu ảnh

    • 2.3.3 Phân vùng ảnh

    • 2.3.4 Phương pháp phân vùng ảnh

    • 2.3.5 Khái niệm biên

    • 2.4.1 Giới thiệu về Raspberry Pi 3

    • 2.4.2 Màn hình LCD 3,5 inch Raspberry Pi

    • 2.4.3 Module camera (Camera Module 5MP Raspberry Pi )

    • 2.5.1 Giới thiệu ngôn ngữ lập trình python ( python 2.7)

    • 2.5.2 Thư viện Opencv

      • 2.5.2.1 Chức năng có trong thư viện OpenCV

      • 2.5.2.2 Ứng dụng OpenCV trong thực tế

    • 2.6.1 Giới thiệu board UNO WIFI

    • 2.6.2 Lập trình cho board Arduino UNO WiFi

    • 2.7.1 Module điều khiển động cơ L298

    • 2.7.2 Nguyên lý hoạt động

  • Chương 3: CƠ SỞ THỰC HIỆN

    • 3.1 Thiết kế sơ đồ khối hệ thống

    • 3.2 Sơ đồ kết nối hệ thống

    • 3.3 Lưu đồ giải thuật

      • 3.3.1 Các bước truy cập và lập trình trên python

        • 3.3.1.1 Hiển thị lên màng hình laptop qua Wifi

        • 3.3.1.2 Hiển thị qua cáp ethernet

      • 3.3.2 Lưu đồ giải thuật nhận dạng cử chỉ bàn tay

      • 3.3.3 Lưu đồ giải thuật điều khiển robot di động

    • 3.4 Bảng vẽ cơ khí

  • Chương 4: KẾT QUẢ THỰC NGHIỆM

  • Chương 5: KẾT LUẬN VÀ ĐỊNH HƯỚNG ĐỀ TÀI

    • 5.1 Kết quả đạt được

    • 5.2 Hạn chế

    • 5.3 Hướng phát triển của đề tài

  • PHỤ LỤC

  • Giới thiệu phần mềm sử dụng: phần mềm ARDUINO IDE

  • Hướng dẫn cài đặt phần mềm

  • TÀI LIỆU THAM KHẢO

Nội dung

TỔNG QUAN VỀ ĐỀ TÀI

Đặt vấn đề

Trong những năm gần đây, trí tuệ nhân tạo đã phát triển mạnh mẽ và được đánh giá cao, đặc biệt trong lĩnh vực nhận dạng Sự tiến bộ công nghệ và nhu cầu ngày càng cao của con người đã đặt ra bài toán về việc điều khiển máy tính, thiết bị giải trí và robot thông qua cử chỉ, hành động và lời nói Nhận dạng hình ảnh và âm thanh chính là giải pháp cho vấn đề này, trong đó nhận dạng cử chỉ bàn tay đóng vai trò quan trọng.

Trong những năm gần đây, robot đã trở thành một thế mạnh nổi bật của Khoa, và tôi mong muốn nâng cao khả năng trong lĩnh vực chế tạo robot thông minh Mục tiêu của tôi là để lại một di sản quý báu cho các sinh viên khóa sau, giúp họ phát triển tốt hơn trong các công nghệ cao và các ngành liên quan.

Mục tiêu

 Nhận dạng cử chỉ tay xây dựng chương trình điều khiển như sau:

 No hand: Không có bàn tay (Robot không di chuyển)

 “Up”: Ngón tay thứ nhất trong bàn tay (Robot di chuyển về phía trước)

 “Down”: Ngón tay thứ hai trong bàn tay (Robot di chuyển về phía sau)

 “Left”: Ngón tay thứ ba trong bàn tay (Robot di chuyển sang trái)

 “Right”: Ngón tay thứ tư trong bàn tay (Robot di chuyển sang phải)

 Nghiên cứu lý thuyết lập trình python, OpenCV.

 Tìm hiểu lý thuyết xử lý ảnh.

 Xây dựng giải thuật nhận dạng cử chỉ bàn tay.

Phạm vi của luận văn tốt nghiệp

Nghiên cứu này dựa trên kiến thức cơ bản về ngôn ngữ lập trình và vi điều khiển, kết hợp với tài liệu tự học Hệ thống điều khiển robot được triển khai trên máy tính nhúng Raspberry Pi 3, kết nối với camera Pi, và chương trình được lập trình bằng Python.

Do hạn chế về kiến thức cá nhân, mục tiêu của tôi là tìm hiểu cách để robot di động một cách cơ bản nhất.

Tổng quan về các nghiên cứu liên quan

Bàn tay con người có cấu trúc xương phức tạp với nhiều khớp nối, tạo ra một số bậc tự do lớn, khiến việc nhận dạng cử chỉ bàn tay trở thành một thách thức Nhiều nghiên cứu đã được thực hiện về nhận dạng cử chỉ, sử dụng các thuật toán khác nhau như nhận dạng phép trừ nền, dựa vào màu sắc, hình dáng, đặc trưng của bàn tay, optical flow và mean shift.

1.4.1 Nhận dạng bàn tay dựa vào màu sắc và hình dáng

Màu da đóng vai trò quan trọng trong việc định vị và theo dõi bàn tay người, nhưng thuật toán dựa trên màu da gặp khó khăn khi phân biệt với các đối tượng tương tự như khuôn mặt và cánh tay Để khắc phục, người dùng cần mặc áo sơ mi dài và chọn nền có màu sắc không tương đồng với màu da Ngoài ra, thuật toán cũng rất nhạy cảm với các điều kiện ánh sáng; nếu ánh sáng không đủ tiêu chuẩn, bộ nhận dạng thường không nhận diện được bàn tay.

Wuetal đã phát triển thuật toán bám theo đối tượng mới, gọi là bản đồ tự tổ chức thích ứng cấu trúc (SASOM), dựa trên việc học hai phương pháp biểu diễn khác nhau cho phân bố màu sắc không ổn định Kết quả cho thấy thuật toán này có khả năng định vị bàn tay một cách hiệu quả, đặc biệt trong việc theo dõi các đối tượng có màu sắc không ổn định, cho thấy khả năng kiểm soát tốt các điểm khó trong quá trình tracking.

1.4.2 Nhận dạng dựa vào ngưỡng trên mỗi kênh màu

Thuật toán dựa trên đặc trưng bàn tay nhằm trích xuất các đặc điểm từ vùng ảnh như đầu ngón tay hoặc biên bàn tay, kết hợp với các phương pháp suy luận để nhận diện hình dạng và cử chỉ bàn tay Để đạt được hiệu quả cao, việc phân đoạn các ảnh không bị nhiễu là bước quan trọng giúp phục hồi các đặc trưng của bàn tay, mặc dù điều này gặp nhiều khó khăn khi phải xử lý các nền phức tạp.

Thuật toán Optical flow phân tích chuyển động của bàn tay thông qua quỹ đạo chuyển động và kết hợp với bộ phát hiện màu da Sử dụng bộ lọc theo thời gian và thuật toán Viterbi, hệ thống nhận dạng quỹ đạo của bàn tay, đồng thời áp dụng thuật toán kiểm tra phụ để đảm bảo quỹ đạo trích xuất chứa vị trí của bàn tay đã được nhận dạng trước đó Kết quả thực tế cho thấy hệ thống có khả năng bám theo bàn tay một cách ổn định.

Bàn tay được phát hiện bằng phương pháp trừ nền, sử dụng thuật toán

“codebook” của thư viện OpenCV.

Các điểm đầu mút được phát hiện bằng thuật toán “convex hull 2”, các điểm lõm được phát hiện bằng thuật toán “convexity defect”.

Dựa vào số điểm lồi và lõm người ta sẽ biết được số ngón tay được đưa lên.

Ý nghĩa khoa học và thực tiễn của đề tài

Bài viết này giới thiệu lý thuyết về các phép toán hình thái trong xử lý ảnh và nhận dạng cử chỉ bàn tay của con người, với mục tiêu ứng dụng trong việc điều khiển robot Mỗi cử chỉ bàn tay sẽ tương ứng với các lệnh điều khiển robot di chuyển tiến, lùi, qua phải hoặc qua trái, góp phần nâng cao hiệu quả trong lĩnh vực nhận dạng và tự động hóa.

CƠ SỞ LÝ THUYẾT

Giới thiệu về hệ thống xử lý ảnh

Xử lý ảnh là một lĩnh vực khoa học và công nghệ đang phát triển nhanh chóng, thu hút sự quan tâm của các trung tâm nghiên cứu và ứng dụng Ngành này, mặc dù còn mới mẻ so với nhiều lĩnh vực khác, đã thúc đẩy sự phát triển của các máy tính chuyên dụng phục vụ cho công việc xử lý hình ảnh.

Xử lý ảnh đã được đưa vào giảng dạy tại bậc đại học ở Việt Nam khoảng một thập kỷ qua, liên quan đến nhiều lĩnh vực và yêu cầu kiến thức cơ sở đa dạng Trọng tâm đầu tiên là xử lý tín hiệu số, bao gồm các khái niệm cơ bản như tích chập, biến đổi Fourier, biến đổi Laplace và bộ lọc hữu hạn Ngoài ra, các công cụ toán học như đại số tuyến tính và xác suất thống kê cũng rất quan trọng Các kiến thức về trí tuệ nhân tạo và mạng nơron nhân tạo được áp dụng trong phân tích và nhận dạng ảnh Quy trình xử lý ảnh bắt đầu bằng việc thu nhận ảnh từ thế giới bên ngoài qua các thiết bị như camera Trước đây, ảnh được thu dưới dạng tương tự, nhưng nhờ sự phát triển công nghệ, hiện nay ảnh màu hoặc đen trắng được chuyển đổi thành ảnh số, tạo điều kiện thuận lợi cho các bước xử lý tiếp theo, với máy ảnh số là một ví dụ điển hình.

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.

Hình 2.1: Các bước cơ bản trong xử lý ảnh

Phần thu nhận ảnh là quá trình lấy hình ảnh từ camera, có thể là camera màu hoặc đen trắng Hình ảnh thường được thu nhận dưới dạng tương tự, mặc dù một số loại camera đã số hóa Camera quét dòng là loại phổ biến, tạo ra hình ảnh hai chiều Chất lượng ảnh thu nhận phụ thuộc vào thiết bị và điều kiện môi trường như ánh sáng và phong cảnh.

 Tiền xử lý (Image Processing):

Sau khi thu nhận, ảnh có thể bị nhiễu và có độ tương phản thấp, do đó cần sử dụng bộ tiền xử lý để cải thiện chất lượng Bộ tiền xử lý có chức năng chính là lọc nhiễu và nâng cao độ tương phản, giúp ảnh trở nên rõ ràng và sắc nét hơn.

 Phân đoạn (Segmentation) hay phân vùng ảnh:

Phân vùng ảnh là quá trình tách một bức ảnh thành các vùng thành phần, phục vụ cho việc phân tích và nhận dạng ảnh Đây là một trong những bước phức tạp nhất trong xử lý ảnh, dễ dẫn đến lỗi và ảnh hưởng đến độ chính xác của kết quả Do đó, chất lượng của công đoạn phân vùng ảnh có ảnh hưởng lớn đến kết quả nhận dạng cuối cùng.

Biểu diễn ảnh sau khi phân đoạn bao gồm các điểm ảnh của vùng ảnh cùng với mã liên kết các vùng lân cận Để xử lý tiếp theo bằng máy tính, cần biến đổi các số liệu này thành dạng thích hợp Trích chọn đặc trưng là quá trình lựa chọn các tính chất để thể hiện ảnh, giúp tách biệt các đặc tính của ảnh dưới dạng thông tin định lượng, từ đó phân biệt các lớp đối tượng trong ảnh nhận được.

 Nhận dạng và nội suy ảnh (Image Recognition and Interpretation):

Nhận dạng ảnh là quá trình xác định hình ảnh thông qua việc so sánh với các mẫu chuẩn đã được học Quá trình này liên quan đến việc nội suy, tức là đưa ra phán đoán dựa trên kết quả nhận dạng Theo lý thuyết nhận dạng, có hai loại mô hình toán học cơ bản trong nhận dạng ảnh.

 Nhận dạng theo tham số

 Nhận dạng theo cấu trúc

Hiện nay, có nhiều phương pháp nhận dạng phổ biến được ứng dụng trong khoa học và công nghệ, bao gồm nhận dạng ký tự (chữ in, chữ viết tay, chữ ký điện tử), nhận dạng văn bản, nhận dạng vân tay, nhận dạng mã vạch và nhận dạng khuôn mặt.

 Cơ sở tri thức (Knowledge Base):

Ả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, cùng với môi trường thu ảnh đa dạng dẫn đến nhiễu 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 Đồng thời, các nhà nghiên cứu cũng mong muốn mô phỏng quy trình tiếp nhận và xử lý ảnh của con người, với nhiều bước hiện nay đã áp dụng các phương pháp trí tuệ nhân tạo.

Ảnh sau khi được số hóa sẽ được lưu trữ trong bộ nhớ hoặc chuyển sang các bước phân tích tiếp theo Việc lưu trữ trực tiếp các ảnh thô yêu cầu dung lượng bộ nhớ lớn và không hiệu quả về mặt ứng dụng và công nghệ Do đó, các ảnh thô thường được mã hóa lại theo các đặc điểm gọi là đặc trưng ảnh, bao gồm biên ảnh và vùng ảnh.

Những vấn đề cơ bản trong hệ thống xử lý ảnh

Gốc của ảnh tự nhiên là ảnh liên tục về không gian và độ sáng, nhưng để xử lý bằng máy tính, ảnh cần được số hóa Số hóa ảnh là quá trình chuyển đổi gần đúng một ảnh liên tục thành tập hợp các điểm ảnh (Pixel) tương ứng với vị trí và độ sáng Khoảng cách giữa các điểm ảnh được thiết lập sao cho mắt người không phân biệt được ranh giới giữa chúng Mỗi pixel là một phần tử của ảnh số tại tọa độ (x, y) với độ xám hoặc màu nhất định Kích thước và khoảng cách giữa các pixel được chọn sao cho người xem cảm nhận được sự liên tục về không gian và mức xám hoặc màu của ảnh số gần giống như ảnh thật Mỗi phần tử trong ma trận ảnh được gọi là phần tử ảnh.

Một file ảnh bao gồm nhiều điểm ảnh, thường được tổ chức thành các hàng và cột Điểm ảnh là đơn vị nhỏ nhất trong hình ảnh, mang giá trị số để biểu thị màu sắc và độ sáng của từng phần trong bức ảnh.

Độ phân giải của ảnh, hay còn gọi là mật độ điểm ảnh, là yếu tố quan trọng quyết định chất lượng hình ảnh số Để đảm bảo mắt người có thể nhận thấy sự liên tục của ảnh, khoảng cách giữa các điểm ảnh cần được lựa chọn một cách hợp lý Mật độ phân bổ điểm ảnh này, được phân bố theo trục x và y trong không gian hai chiều, chính là độ phân giải của ảnh.

Một điểm ảnh (pixel) được xác định bởi hai đặc trưng chính: vị trí (x, y) và độ xám Bài viết này sẽ khám phá một số khái niệm và thuật ngữ phổ biến trong lĩnh vực xử lý ảnh.

Mức xám của điểm ảnh thể hiện cường độ sáng và được gán giá trị số tại mỗi điểm Các giá trị mức xám phổ biến bao gồm 16, 32, 64, 128 và 256, trong đó mức 256 được sử dụng rộng rãi Lý do là vì trong kỹ thuật máy tính, 1 byte (8 bit) có thể biểu diễn 256 mức xám, tương ứng với các giá trị từ 0 đến 255.

Ảnh đen trắng là loại ảnh chỉ có hai màu cơ bản là đen và trắng, với mức xám khác nhau tại các điểm ảnh Trong khi đó, ảnh nhị phân chỉ có hai mức phân biệt là đen và trắng, sử dụng 1 bit để mô tả 2 mức khác nhau, nghĩa là mỗi điểm ảnh trong ảnh nhị phân chỉ có thể là 0 hoặc 1.

Hình 2.4: Minh họa ảnh nhị phân sau khi mã hóa

 Không gian màu HSV (HSB): Không gian màu HSV (còn gọi là HSB) là một cách tự nhiên hơn để mô tả màu sắc, dựa trên 3 số liệu:

 S: (Saturation) Độ bão hòa màu

 B (hay V): (Bright hay Value) Độ sáng

Hình 2.5: Không gian màu HSV

Ảnh màu RGB sử dụng lý thuyết ba màu cơ bản: Đỏ, Xanh lá và Xanh dương để tạo ra dải màu phong phú Mỗi màu được mô tả bằng 3 byte, cho phép tạo ra tổng cộng 16,7 triệu màu khác nhau với công thức 2^(8*3) = 2^24.

Ảnh số là tập hợp các điểm ảnh với mức xám phù hợp, được sử dụng để mô tả hình ảnh một cách gần gũi với thực tế.

Nhằm khắc phục tính không đồng đều của hệ thống gây ra Thông thường có 2 hướng tiếp cận:

Giảm số mức xám có thể thực hiện bằng cách nhóm các mức xám gần nhau thành một bó, và nếu chỉ có hai mức xám, ảnh sẽ được chuyển đổi về định dạng đen trắng Phương pháp này thường được áp dụng khi in ảnh màu ra máy in đen trắng.

 Tăng số mức xám: Thực hiện nội suy ra các mức xám trung gian bằng kỹ thuật nội suy Kỹ thuật này nhằm tăng cường độ mịn cho ảnh.

2.2.6 Kỹ thuật năng cao chất lượng ảnh

Nâng cao chất lượng ảnh là bước quan trọng trong xử lý ảnh, nhằm cải thiện các đặc tính của hình ảnh Quy trình này bao gồm hai giai đoạn chính: tăng cường ảnh và khôi phục ảnh Tăng cường ảnh tập trung vào việc hoàn thiện các đặc tính như độ sáng, độ tương phản và chi tiết của ảnh.

 Lọc nhiễu, hay làm trơn ảnh.

 Tăng độ tương phản, điều chỉnh mức xám của ảnh.

Tăng cường ảnh không chỉ đơn thuần là việc gia tăng thông tin trong bức ảnh mà còn nhằm làm nổi bật các đặc trưng đã được lựa chọn Quá trình này bao gồm việc điều chỉnh mức xám của các điểm ảnh, sử dụng phương pháp ánh xạ để thay đổi giá trị độ sáng, từ đó cải thiện chất lượng hình ảnh.

Khôi phục ảnh là quá trình lọc và khử nhiễu ảnh bị ảnh hưởng bởi môi trường và hệ thống thu nhận Quá trình này sử dụng các bộ lọc trong miền không gian và miền biến đổi để giảm thiểu biến dạng, nhằm phục hồi ảnh gần giống với ảnh gốc.

Kỹ thuật nâng cao chất lượng ảnh gồm: các kỹ thuật không phụ thuộc vào không gian và các kỹ thuật phụ thuộc vào không gian.

Kỹ thuật không phụ thuộc vào không gian bao gồm các phương pháp như tăng giảm độ sáng, tách ngưỡng, bó cụm, cân bằng histogram, tách ngưỡng tự động và biến đổi cấp xám tổng thể.

 Kỹ thuật phụ thuộc vào không gian bao gồm các phép như: phép cuộn và mẫu, lọc trung vị, lọc trung bình,…

2.2.7 Kỹ thuật biến đổi ảnh

Biến đổi ảnh là một thuật ngữ chỉ các ma trận đơn vị và các kỹ thuật giúp giảm thứ nguyên của ảnh, từ đó nâng cao hiệu quả xử lý ảnh Các loại biến đổi phổ biến bao gồm biến đổi Fourier, Sin và Cosin.

2.2.8 Kỹ thuật phân tích ảnh

Phân tích ảnh là quá trình xác định các độ đo định lượng để mô tả đầy đủ nội dung của ảnh, với mục tiêu chính là xác định biên của ảnh Có nhiều kỹ thuật khác nhau được sử dụng, bao gồm lọc vi phân và dò theo quy hoạch động Ngoài ra, các phương pháp phân vùng ảnh cũng được áp dụng để tách hoặc hợp các phần của ảnh dựa trên các tiêu chí đánh giá như màu sắc và cường độ Các kỹ thuật phân lớp dựa theo cấu trúc cũng được biết đến như một phương pháp hiệu quả trong phân tích ảnh.

2.2.9 Kỹ thuật nhận dạng ảnh

Các phương pháp xử lý ảnh số

2.3.1 Chuyển ảnh màu RGB thành ảnh mức xám ( Gray level) Ảnh gốc thường là ảnh màu 24bit màu nên khó nhận dạng ta cần phải chuyển về ảnh xám dữ liệu 8bit để dễ nhận dạng hơn Nghĩa là mỗi pixel được biểu diễn 256 cấp độ xám theo công thức:

Quá trình chuyển đổi mức xám tuy có làm mất đi một số thông tin nhưng cũng có thể chấp nhận được.

2.3.2 Phương pháp lọc nhiễu ảnh Ảnh thu được thường sẽ bị nhiễu nên cần phải loại bỏ nhiễu Ccá toán tử không gian dùng trong 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) hoặc loạ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ầng số nào đó thông qua, để lọc nhiễu người ta thường dùng thông thấp (theo quan điểm tầng 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ầng số cao), người ta dùng bộ lọc thông cao, lọc Laplace Phương pháp lọc nhiễu Chia làm 2 loại: Lọc tuyến tính và lọc phi tuyến.

Làm trơn nhiễu trong xử lý ảnh là cần thiết để cải thiện chất lượng hình ảnh Các phương pháp lọc cơ bản như lọc trung bình và lọc thông thấp thường được sử dụng để loại bỏ nhiễu Chẳng hạn, trong lọc trung bình, mỗi điểm ảnh sẽ được thay thế bằng giá trị trung bình trọng số của các điểm lân cận, giúp giảm thiểu tác động của nhiễu.

Lọc phi tuyến là một kỹ thuật quan trọng trong tăng cường ảnh, thường được sử dụng để làm trơn nhiễu Các phương pháp lọc cơ bản bao gồm lọc trung vị và lọc giả trung vị Trong lọc trung vị, điểm ảnh đầu vào được thay thế bằng giá trị trung vị của các điểm ảnh lân cận, trong khi lọc giả trung vị sử dụng trung bình cộng của hai giá trị trung vị, cụ thể là trung bình cộng của giá trị lớn nhất và nhỏ nhất.

Lọc trung vị là một kỹ thuật xử lý ảnh, trong đó các giá trị điểm ảnh trong một cửa sổ được sắp xếp theo thứ tự tăng hoặc giảm để xác định giá trị trung vị Kích thước của cửa sổ thường được chọn là số lẻ để đảm bảo tính chính xác trong quá trình lọc.

Phân vùng ảnh là bước quan trọng trong xử lý ảnh, nhằm phân tích ảnh thành các thành phần có tính chất tương đồng dựa trên biên hoặc các vùng liên thông Các tiêu chuẩn để xác định vùng liên thông có thể bao gồm mức xám, màu sắc hoặc độ nhám tương đương Để hiểu rõ hơn, cần làm rõ khái niệm "vùng ảnh" (Segment) và các đặc điểm vật lý của nó.

Vùng ảnh là một chi tiết quan trọng trong một bức ảnh, đại diện cho một tập hợp các điểm có tính chất tương đồng như mức xám, màu sắc và độ nhám Đây là một trong hai thuộc tính chính của ảnh, liên quan đến tính chất bề mặt của nó Đường bao quanh vùng ảnh, hay còn gọi là biên ảnh, giúp xác định ranh giới của vùng này Các điểm trong vùng ảnh thường có độ biến thiên giá trị mức xám tương đối đồng đều, tạo nên sự đồng nhất về kết cấu.

Dựa vào đặc tính vật lý của ảnh, có nhiều kỹ thuật phân vùng khác nhau, bao gồm phân vùng theo miền liên thông (hay còn gọi là miền đồng nhất) và phân vùng dựa vào biên Ngoài ra, còn tồn tại các phương pháp phân vùng khác như phân vùng dựa vào biên độ và phân vùng theo kết cấu.

2.3.4 Phương pháp phân vùng ảnh Để phân tích các đối tượng trong ảnh, chúng ta cần phân biệt được các đối tượng cần quan tâm với phần còn lại của ảnh Những đối tượng này có thể tìm được nhờ các kỹ thuật phân đoạn ảnh, theo nghĩa tách phần tiền ảnh ra hậu ảnh.

Phân vùng là quá trình chia ảnh thành nhiều khu vực, mỗi khu vực đại diện cho một đối tượng hoặc nhóm đối tượng tương đồng Ví dụ, một đối tượng có thể là một ký tự trong văn bản, một đoạn thẳng trong bản vẽ kỹ thuật, hoặc một nhóm đối tượng có thể biểu thị cho một từ hoặc các đoạn thẳng tiếp xúc nhau.

Biên là yếu tố quan trọng trong phân tích ảnh, vì nhiều kỹ thuật xử lý ảnh dựa vào việc xác định biên Một điểm ảnh được xem là biên khi có sự thay đổi đột ngột về mức xám Từ đó, các điểm ảnh này tạo thành biên hoặc đường bao của bức ảnh.

Máy tính nhúng Raspberry Pi

2.4.1 Giới thiệu về Raspberry Pi 3

Raspberry Pi là một máy tính nhỏ gọn như thẻ ATM, hoạt động trên hệ điều hành Linux Được phát triển bởi Raspberry Pi Foundation, một tổ chức phi lợi nhuận, thiết bị này nhằm mục đích cung cấp hệ thống dễ sử dụng cho nhiều ứng dụng tùy biến khác nhau Hệ điều hành Raspbian, với sự hỗ trợ mạnh mẽ từ cộng đồng mã nguồn mở toàn cầu, mang lại trải nghiệm cài đặt và sử dụng thuận tiện cho người dùng.

 Chi tiết về thông số kỹ thuật ( Raspberry Pi 3 ):

 Bộ xử lý Broadcom BCM2837 tốc độ xử lý 1.2 GHz 64-bit quad-core ARM

 Bộ xử lý đa phương tiện Videocore IV® Multimedia

 Hỗ trợ tất cả các bản phân khối ARM GNU/Linux distributions

 Đầu nối microusb cho nguồn điện 2.5A 5VDC

 Kết nối hiển thị DSI

 Khe cắm thẻ nhớ microsd

Hình 2.8: Sơ đồ của Raspberry Pi 3

 Ưu điểm của Raspberry Pi:

 Hiện nay Raspberry Pi có giá thành khá rẻ cùng kích thước vô cùng nhỏ gọn.

 Với việc tiêu thụ năng lượng rất thấp, Raspberry Pi chính là thiết bị siêu tiết kiệm điện.

 Được thiết kế có GPU mạnh.

 Những thiết bị này có thể phục vụ cho nhiều mục đích sử dụng khác nhau.

 Raspberry Pi có khả năng hoạt động liên tục không ngừng nghỉ.

 Có thể được lập trình bằng nhiều ngôn ngữ lập trình.

 Nhược điểm của Raspberry Pi:

Thiết bị này không tích hợp Wifi, do đó người dùng cần mua thêm USB Wifi để sử dụng Để khai thác tối đa tính năng của thiết bị, người dùng cần có kiến thức cơ bản về Linux và điện tử.

2.4.2 Màn hình LCD 3,5 inch Raspberry Pi

Hình 2.9: Màn hình cảm ứng 3.5 inch

 Đầu Nối HDMI Raspberry Pi 3B/B+ 1.4

2.4.3 Module camera (Camera Module 5MP Raspberry Pi )

Hình 2.10: Module camera raspberry pi

Camera được gắn chắc chắn vào socket CSI, giúp tiết kiệm cổng USB và giảm tình trạng nghẽn băng thông cho chip xử lý USB trên mạch Raspberry Chiều dài cáp nối camera được tính toán cẩn thận, đảm bảo vừa đủ để truyền hình ảnh từ module về RPi với tốc độ tối ưu.

 Module Camera V1 cho Raspberry Pi.

 Độ phân giải hình: 2592x1944 pixel.

Ngôn ngữ python và thư viện Opencv

2.5.1 Giới thiệu ngôn ngữ lập trình python ( python 2.7)

Hình 2.11: Ngôn ngữ lập trình python trên Raspberry

Python là một ngôn ngữ lập trình hướng đối tượng, cấp cao và mạnh mẽ, được phát triển bởi Guido van Rossum Với cú pháp rõ ràng và dễ hiểu, Python trở thành lựa chọn hàng đầu cho người mới bắt đầu học lập trình Ngôn ngữ này hỗ trợ kiểu dữ liệu động và cơ chế cấp phát bộ nhớ tự động, giúp lập trình viên dễ dàng phát triển ứng dụng trong nhiều lĩnh vực và trên hầu hết các nền tảng.

Tính năng chính của ngôn ngữ lập trình python:

Ngôn ngữ lập trình đơn giản, dễ học: Python có cú pháp rất đơn giản, rõ ràng.

Python là một ngôn ngữ lập trình dễ đọc và dễ viết hơn nhiều so với các ngôn ngữ khác như C++, Java và C# Nó mang đến sự thú vị trong lập trình, giúp bạn tập trung vào việc tìm kiếm giải pháp thay vì phải lo lắng về cú pháp.

Python là một ngôn ngữ lập trình miễn phí và mã nguồn mở, cho phép người dùng tự do sử dụng, phân phối và áp dụng cho cả mục đích thương mại Nhờ vào tính chất mã nguồn mở, bạn có thể không chỉ sử dụng các phần mềm được phát triển bằng Python mà còn tùy chỉnh mã nguồn của chúng Cộng đồng Python rất đông đảo và luôn nỗ lực cải tiến ngôn ngữ này qua từng bản cập nhật.

Khả năng di chuyển của Python cho phép các chương trình chạy mượt mà trên nhiều nền tảng như Windows, macOS và Linux mà không cần thay đổi gì.

Khả năng mở rộng và nhúng của Python cho phép tích hợp dễ dàng các đoạn mã viết bằng C, C++ và các ngôn ngữ khác, mang lại cho ứng dụng sự phức tạp và tính năng vượt trội Điều này không chỉ cải thiện hiệu suất mà còn cung cấp khả năng scripting mà nhiều ngôn ngữ lập trình khác khó có thể đạt được.

Ngôn ngữ Python là một ngôn ngữ thông dịch cấp cao, giúp lập trình viên không phải lo lắng về các nhiệm vụ phức tạp như quản lý bộ nhớ hay dọn dẹp dữ liệu không cần thiết Khi thực thi mã Python, ngôn ngữ này tự động chuyển đổi mã nguồn thành ngôn ngữ máy tính, cho phép người dùng tập trung vào việc phát triển ứng dụng mà không cần quan tâm đến các hoạt động ở cấp thấp.

Python sở hữu một bộ thư viện tiêu chuẩn phong phú, giúp đơn giản hóa quá trình lập trình và tiết kiệm thời gian cho lập trình viên Chẳng hạn, để kết nối cơ sở dữ liệu MySQL trên Web server, bạn chỉ cần nhập thư viện MySQLdb và sử dụng nó mà không cần phải viết mã từ đầu Những thư viện này đã được kiểm tra kỹ lưỡng và được hàng trăm lập trình viên tin dùng, đảm bảo tính ổn định và an toàn cho mã nguồn của bạn.

Lập trình hướng đối tượng (OOP) trong Python giúp giải quyết các vấn đề phức tạp một cách trực quan, vì mọi thứ trong Python đều được xây dựng dựa trên khái niệm đối tượng.

Với OOP, bạn có thể phân chia những vấn đề phức tạp thành những tập nhỏ hơn bằng cách tạo ra các đối tượng.

OpenCV, or Open Source Computer Vision, is a free and open-source library released under the BSD license, making it accessible for both academic and commercial use It provides interfaces in C++, C, Python, and Java, and is compatible with Windows, Linux, and Mac operating systems.

OpenCV là thư viện mã nguồn mở được thiết kế để tính toán hiệu quả, đặc biệt cho các ứng dụng thời gian thực trên các hệ điều hành như iOS và Android Với mã nguồn được tối ưu hóa bằng C/C++, OpenCV có khả năng tận dụng xử lý đa lõi Thư viện này được sử dụng rộng rãi trên toàn cầu, có hơn 47 nghìn người dùng và đã được tải xuống hơn 6 triệu lần.

Hiện tại bản em đang nghiên cứu thư viện OpenCV là bản 2.4.13

Cài đặt OpenCV 2 trên Raspberry Pi, nhập lệnh sau trong Terminal:

$ sudo apt-get install python-opencv

2.5.2.1 Chức năng có trong thư viện OpenCV

Thư viện OpenCV bao gồm một số tính năng nổi bật như:

 Bộ công cụ hỗ trợ 2D và 3D

 Nhận dạng chuyển động, đối tượng, hành vi

 Tương tác giữa con người và máy tính

2.5.2.2 Ứng dụng OpenCV trong thực tế

Các hệ thống tích hợp quang hồng ngoại tự động điều khiển dàn hỏa lực như pháo, tên lửa được lắp đặt trên các trận địa cao xạ, xe tăng, tàu chiến, máy bay, tên lửa và vệ tinh Chúng thay thế và hỗ trợ các dàn radar dễ bị nhiễu trong việc tự động phát hiện, cảnh giới và bám bắt mục tiêu Đặc biệt, một số loại lắp trên máy bay có khả năng điều khiển hỏa lực để tấn công hàng chục mục tiêu đồng thời, cùng với các đầu tự dẫn tên lửa và đạn thông minh.

Hình 2.12: Hệ thống tên lửa tích hợp quang hồng ngoại

 Trong nghiên cứu y sinh dược học:

Kính hiển vi tự động nhận dạng và đo đếm tế bào với độ chính xác cao, hỗ trợ trong các phẫu thuật phức tạp như mổ u não Hệ thống dẫn đường laser của kính giúp giảm thiểu sai sót, bảo vệ các dây thần kinh xung quanh, nơi mà sự chính xác chỉ cần ở mức mm cũng có thể gây ra tổn hại nghiêm trọng.

 Trong lĩnh vực hàng không vũ trụ:

Hệ thống quang điện tử đóng vai trò quan trọng trong thị giác máy, tự động đo đạc và kiểm tra chất lượng sản phẩm trong dây chuyền sản xuất Chúng được sử dụng để phân loại hạt ngũ cốc và cà phê, phát hiện lỗi lắp ráp linh kiện trên các bản vi mạch, cũng như kiểm tra khuyết tật mối hàn và động cơ Ngoài ra, các hệ thống này ngày càng được ứng dụng trong lĩnh vực giao thông, như đo tốc độ và tự động kiểm soát, phân luồng giao thông hiệu quả.

Hình 2.13: Ứng dụng opencv trong lĩnh vực hàng không

 Trong an ninh, phòng chống tội phạm, bảo vệ pháp luật:

Hệ thống camera nhận dạng khuôn mặt và vân tay tự động đóng vai trò quan trọng trong việc phát hiện, theo dõi và cảnh báo các âm mưu khủng bố Bên cạnh đó, xe robot tự hành được trang bị camera cũng được sử dụng hiệu quả trong các môi trường độc hại để dò tìm và phá bom mìn.

Hình 2.14: Xử lý ảnh trong phòng chống tội phạm

 Trong công nghiệp giải trí truyền hình:

Các hệ thống tích hợp có khả năng điều khiển các camera có kích thước và khối lượng lớn, giúp tự động theo dõi các đối tượng chuyển động nhanh như bóng bay hoặc xe đua một cách dễ dàng.

Board UNO WIFI - WeMos D1

2.6.1 Giới thiệu board UNO WIFI

Nhu cầu nghiên cứu và điều khiển từ xa qua Internet bằng ESP8266 đang ngày càng tăng cao Có nhiều phương pháp kết nối ESP8266 với Internet, và bài viết này sẽ tập trung vào việc điều khiển robot qua Internet sử dụng Wemos.

Hình 2.15: Board UNO WiFi (WeMos D1)

Bằng cách sử dụng bộ chuyển đổi Wi-Fi, người dùng có thể dễ dàng thêm kết nối internet không dây vào bất kỳ thiết kế vi điều khiển nào thông qua giao diện UART, giao diện cầu AHB hoặc UDP của CPU.

Hình 2.16: Sơ đồ chân ESP8266MOD

 32-bit RISC CPU : Tensilica Xtensa LX106 chạy ở xung nhịp 80 MHz

 Hổ trợ Flash ngoài từ 512KB đến 4MB

 64KBytes RAM thực thi lệnh

 Chuẩn wifi EEE 802.11 b/g/n, Wi-Fi 2.4 GHz

 Tích hợp TR switch, balun, LNA, khuếch đại công suất và matching network

 Hổ trợ WEP, WPA/WPA2, Open network

 Tích hợp giao thức TCP/IP

 Hổ trợ nhiều loại anten

 Hổ trợ SDIO 2.0, UART, SPI, I²C, PWM,I²S với DMA

 Dải nhiệt độ hoạt động rộng : -40C ~ 125C

2.6.2 Lập trình cho board Arduino UNO WiFi

Hình 2.17: Phần mềm Arduino IDE

Một chương trình viết bằng Arduino IDE được gọi là bản phác thảo, và nó được lưu trên máy tính dưới dạng tệp văn bản với đuôi ino Trước phiên bản 1.0, Arduino Software (IDE) đã lưu các bản phác thảo với phần mở rộng khác.

Yêu cầu của một chương trình:

Chức năng Setup() được gọi một lần khi bản phác thảo khởi động sau khi bật nguồn hoặc thiết lập lại Nó có vai trò quan trọng trong việc khởi tạo các biến, chế độ ghim đầu vào và đầu ra, cùng với các thư viện cần thiết cho bản phác thảo.

Hàm loop() được thực hiện lặp lại trong chương trình chính sau khi hàm setup() kết thúc Nó điều khiển bảng cho đến khi bo mạch tắt hoặc được đặt lại.

Giao thức truyền tin hiệu UDP/IP:

UDP (User Datagram Protocol) là giao thức quan trọng trong bộ giao thức TCP/IP, cho phép gửi dữ liệu ngắn gọi là datagram giữa các máy tính Mặc dù không đảm bảo tính tin cậy và thứ tự truyền nhận như TCP, UDP nhanh chóng và hiệu quả cho những ứng dụng yêu cầu kích thước nhỏ và thời gian thực Với tính chất không trạng thái, UDP rất hữu ích cho việc xử lý nhiều truy vấn nhỏ từ nhiều người dùng cùng lúc.

Module điều khiển động cơ L298

2.7.1 Module điều khiển động cơ L298

L298 là một vi mạch tích hợp với hai mạch cầu H, được thiết kế dưới dạng vỏ chân cắm công suất Mutilwatt15 hoặc vỏ chân dán công suất PowerSo20.

L298 là một bộ điều khiển động cơ sử dụng mức điện áp logic theo chuẩn TTL, cho phép điều khiển tải với điện áp lên tới 46V và dòng ra tối đa 4A Nó rất thích hợp cho các ứng dụng điều khiển động cơ DC, động cơ bước và rơ le.

Hình 2.18: Mạch điều khiển động cơ DC L298

 Các tính năng chính của L298 bao gồm:

 Có thể sử dụng điện áp cho tải hoạt động lên tới 46V

 Có thể dụng dòng diện cho tải hoạt động lên đến 4A

 Mức điện áp bão hòa thấp

 Cho phép bảo vệ quá nhiệt

 Khả năng chống nhiễu cao bằng cách biểu diễn mức logic 0 là 1,5V

Mạch cầu H đóng vai trò quan trọng trong việc điều khiển tốc độ và hướng quay của động cơ, giúp robot di chuyển linh hoạt hơn Ngoài ra, mạch cầu H còn cho phép điều chỉnh tốc độ, tạo điều kiện thuận lợi cho việc áp dụng thuật toán PID trong việc hiệu chỉnh robot di động.

Mạch cầu H hoạt động dựa trên nguyên lý đóng ngắt của công tắc hoặc transistor, cho phép dòng điện chạy theo hai hướng khác nhau vào động cơ, từ đó điều khiển động cơ quay theo chiều thuận hoặc nghịch Việc điều khiển hai cực của mạch này được thực hiện thông qua các mức tín hiệu HIGH (12V) và LOW (0V).

Hình 2.19: Nguyên lý hoạt động

Mạch cầu H là một cấu trúc điện gồm bốn "công tắc" được sắp xếp theo hình chữ H, thường được sử dụng các loại transistor như BJT, MOSFET hoặc relay Việc lựa chọn loại "công tắc" phù hợp phụ thuộc vào các yêu cầu điều khiển cụ thể.

Với 2 cực điều khiển và 2 mức tín hiệu HIGH/LOW tương ứng 12V/0V cho mỗi cực, có 4 trường hợp xảy ra như sau:

_ A ở mức LOW và B ở mức HIGH Ở phía A, transistor Q1 mở, Q3 đóng Ở phía B, transistor Q2 đóng, Q 4 mở.

Dòng điện trong mạch sẽ di chuyển từ nguồn 12V đến Q1, qua động cơ và đến Q4 để trở về GND, khiến động cơ quay theo chiều thuận Hãy chú ý đến các cực (+) và (-) của động cơ để nhận biết.

Hình 2.20: Trường hợp thứ nhất A ở mức LOW và B ở mức HIGH

_ A ở mức HIGH và B ở mức LOW

Hình 2.21: Trường hợp thứ hai A ở mức HIGH và B ở mức LOW Ở phía A, transistor Q1 đóng, Q3 mở Ở phía B, transistor Q2 mở, Q 4 đóng.

Dó đó, dòng điện trong mạch có thể chạy từ nguồn 12V đến Q2, qua động cơ đến Q3 để về GND Lúc này, động cơ quay theo chiều ngược.

Khi transistor Q1 và Q2 được mở, trong khi Q3 và Q4 đóng, dòng điện không thể trở về GND, dẫn đến việc không có dòng điện đi qua động cơ, do đó động cơ không hoạt động.

Khi transistor Q1 và Q2 đóng, trong khi Q3 và Q4 mở, dòng điện không thể chảy từ nguồn 12V, dẫn đến việc động cơ không hoạt động Để dừng động cơ, điện áp ở hai cực điều khiển cần phải bằng nhau.

Động cơ giảm tốc

Trong lĩnh vực điều khiển robot, động cơ DC là loại động cơ phổ biến nhất cho mobile robot di chuyển bằng bánh xe Với ưu điểm dễ tìm kiếm trên thị trường, giá thành rẻ và đa dạng về công suất nhỏ, động cơ DC có thể sử dụng trực tiếp nguồn điện từ pin và đạt được tốc độ tương đối nhanh Đặc biệt, động cơ DC có hộp số thường được sử dụng trong thiết kế các loại robot mô hình.

Hình 2.22: Động cơ giảm tốc GA25 12V 280 rpm

 Điện áp cung cấp : 6~18VDC

 Tốc độ sau hộp: 280 rpm

 Dòng điện không tải : 50mA

Bánh xe

Bánh xe sử dụng khớp lục giác thông dụng (12mm) dễ lắp ráp và ứng dụng vào thiết kế.

 Chất lượng tốt có bề mặt lốp bằng cao su mềm cho độ ma sát rất tốt.

 Thiết kế các đường vân lốp tối ưu cho độ ma sát và bám đường cao nhất.

 Có lớp mút dày đàn hồi bên trong rất tốt giúp bánh không bị xẹp khi có tải và ma sát với đường

 Chất liệu: Nhựa cứng, lớp đệm mút, cao su tốt.

Hình 2.23: Bánh xe 65mm khớp lục giác

CƠ SỞ THỰC HIỆN

Thiết kế sơ đồ khối hệ thống

Hình 3.1: Sơ đồ khối phần cứng

Raspberry Pi 3 (Broadcom BCM2837) có khả năng nhận tín hiệu Wi-Fi từ ESP8266MOD (Board UNO WIFI-WeMos D1), thực hiện xử lý hình ảnh và phân tích nhận dạng, sau đó gửi kết quả trở lại ESP8266MOD và chờ lệnh từ Raspberry Pi Hệ thống này sử dụng Kit Raspberry Pi 3 Model B.

Khối nguồn: Có chức năng cấp nguồn cho hệ thống hoạt động NguồnRaspberry 5V 2.1A, nguồn cấp cho động cơ 12V 25A.

ESP8266MOD (Board UNO WIFI-WeMos D1) có khả năng phát tín hiệu wifi để kết nối với Raspberry, nhận lệnh từ Raspberry để phân tích và điều khiển hoạt động của động cơ Kit UNO WIFI - WeMos D1 được sử dụng trong ứng dụng này.

Khối camera có nhiệm vụ thu thập tín hiệu hình ảnh từ thực tế, chuyển đổi thành tín hiệu điện và gửi dữ liệu đến khối Raspberry Pi Trong dự án này, chúng tôi sử dụng Camera Raspberry Pi để thực hiện chức năng này.

Khối máy tính: Có chức năng hiển thị kết quả cũng như từng bước làm được trong quá trình của đề tài.

Khối động cơ (L298 MOTOR CONTROLLER): Được vận hành bởi khối điều khiển Sử dụng động cơ DC.

Sơ đồ kết nối hệ thống

Hình 3.2: Sơ đồ kết nối thực tế Raspberry Pi

Raspberry Pi được kết nối qua cổng CSI Camera để thu tín hiệu hình ảnh từ camera Cáp Ethernet đảm bảo việc truyền nhận dữ liệu giữa máy tính và Raspberry Pi Ngoài ra, các thiết bị ngoại vi như bàn phím, chuột, màn hình và thẻ nhớ cũng được sử dụng để hỗ trợ Với CPU có tốc độ xử lý lên tới 1.2GHz, Raspberry Pi là lựa chọn hợp lý cho các mô hình nhúng.

The Raspberry Pi kit features four USB (Universal Serial Bus) ports that support high-speed USB 2.0, allowing data transfer rates of up to 480 Mbps Two of these ports can be utilized for connecting a keyboard and mouse.

Cổng HDMI: Dùng một cổng HDMI (High-Definition Multimedia Interface) để kết nối với màng hình LCD hỗ trợ lập trình

Cổng CSI Camera: Mắt của mô hình chính là Camera được kết nối thông qua cổng CSI Camera có 15 chân.

Raspberry Pi yêu cầu dòng hoạt động từ 500-1000mA, với cổng HDMI tiêu thụ 50mA, module camera 250mA, và bàn phím cùng chuột sử dụng từ 100-1000mA Tổng dòng tiêu thụ khoảng 2300mA, vì vậy cần sử dụng Adapter 5V và 2.5A để cung cấp năng lượng cho máy tính nhúng Raspberry.

Để chạy chương trình trên máy tính nhúng, cần có hệ điều hành cài sẵn trên thẻ nhớ Hệ điều hành Raspbian chiếm 4GB dung lượng, vì vậy nên chọn thẻ nhớ tối thiểu 8GB Thẻ nhớ MicroSD 16GB với tốc độ đọc 48MB/s là lựa chọn hợp lý, vì tốc độ đọc ảnh hưởng đến tốc độ xử lý dữ liệu của chương trình.

Hình 3.3: Gắn thẻ nhớ vào khe thực tế

Hình 3.4: Sơ đồ đấu dây

Board Uno WIFI - WeMos D1 có chức năng phát tín hiệu Wifi và nhận lệnh từ Raspberry để điều khiển mô-đun L298 vận hành động cơ Mặc dù có thể sử dụng nhiều loại vi điều khiển khác nhau cho nhiệm vụ này, nhưng chúng tôi chọn kit Uno WIFI - WeMos D1 vì nó tương tự như Arduino Uno R3, cung cấp nhiều chức năng với chi phí thấp hơn.

Giao tiếp giữa Raspberry Pi và Arduino Uno WIFI - WeMos D1:

Hệ thống UDP hoạt động hiệu quả và nhanh chóng, đặc biệt phù hợp cho các mục tiêu dữ liệu có kích thước nhỏ và yêu cầu thời gian ngắn UDP là giao thức không kết nối, cho phép người dùng chỉ cần biết địa chỉ IP và số cổng để sử dụng.

Lưu đồ giải thuật

3.3.1 Các bước truy cập và lập trình trên python

Ngay sau khi cài đặt xong Raspbian lên Raspberry Pi 3, có 2 cách điều khiển Raspberry Pi 3 thông dụng:

Cách 1: Điều khiển trực tiếp dùng chuột, bàn phím, màn hình gắn vào Raspberry điều khiển trực tiếp thông qua các cổng giao tiếp có sẵn.

To control a Raspberry Pi 3 using a laptop, connect the two devices with an Ethernet cable Utilize Remote Desktop Connection software to access the Raspberry Pi's IP address for remote management.

3.3.1.1 Hiển thị lên màng hình laptop qua Wifi

Bước 1: Tải về Wireless Network Watcher để tìm IP của Raspberry Pi.

Hình 3.5: Tìm IP của Raspberry Pi

Bước 2: Tải Putty và nhập IP của Raspberry vào

Hình 3.6: Nhập IP của Raspberry vào Putty

Bước 3: Bấm Open, màng hình Terminal xuất hiện

Hình 3.7: Màng hình Terminal xuất hiện

Bước 4: Nhập vào thông tin đăng nhập

Hình 3.8: Nhập thông tin đăng nhập

Bước 5: Nhập lệnh $ sudo apt-get install xrdp để cài đặt XRDP

Hình 3.9: Kết nối từ xa dành cho máy chủ Desktop

Bước 6: Hiển thị màn hình của Raspberry Pi lên laptop, mở Remote Desktop Connection có sẵn trong windows.

Hình 3.10: Mở Remote Desktop Connection có sẵn trong windows

Bước 7: Nhập IP của Raspberry và Connect.

Bước 8: Cửa sổ mới hiện ra, nhập vào thông tin đăng nhập:

Hình 3.12: Đăng nhập vào màng hình Raspberry

Bước 9: Raspberry hiển thị lên màng hình Desktop laptop.

Hình 3.13: Raspberry hiển thị lên màng hình laptop

3.3.1.2 Hiển thị qua cáp ethernet

Hình 3.14: Hiển thị Raspberry lên màng hình laptop qua cáp ethernet

Bước đầu tiên là cấp nguồn cho Raspberry và kết nối máy tính với Raspberry qua cáp ethernet, sau đó truy cập vào hệ điều hành của Raspberry như đã hướng dẫn.

Hình 3.15: Kết nối ethernet với laptop ở IP động

Bước 2: Mở Teminal nhập $ ifconfig để tìm IP ethernet

Như trên thì địa chỉ IP ethernet: 169.254.154.56

Bước 3: Mở Remote Desktop Connection như các bước ở mục 3.3.1.1 và thực hiện connect vào với địa chỉ IP: 169.254.154.56

Hình 3.17: Connect vào Raspberry qua cáp ethernet

Bước 4: Truy cập vào cửa sổ Teminal để thực thi chương trình đã viết

Hình 3.18: Gọi chương trình python qua cửa sổ Terminal

Tại cửa sổ Terminal, gọi tên chương trình đã viết Hình 3.18

3.3.2 Lưu đồ giải thuật nhận dạng cử chỉ bàn tay

Hình 3.19: Lưu đồ giải thuật nhận dạng cử chỉ bàn tay

Bước 1: Lấy hình ảnh từ camera (Capture frame)

Chương trình sử dụng lệnh cv2.VideoCapture (0) để thực hiện chức năng quay video từ webcam mặc định, với khung hình được lấy đầu vào từ webcam ở định dạng RGB.

Hình 3.20: Khung hình đầu vào

Tiếp theo, vùng nhận dạng trung tâm ( ROI) trong chuỗi video sẽ được thu nhỏ lại thành kích thước phù hợp hơn để tìm kiếm vùng tay.

Hình 3.21: Cắt một góc khung hình chứa phần bàn tay (top, bottom, left, right)

Bước 3: Vẽ ô màu nói trên ra màn hình (cv2.rectangle)

Hiển thị hình chữ nhật màu tím là khu vực quan tâm trong chuỗi video sẽ được sử dụng cho giai đoạn xử lý.

Hình 3.22: Vẽ ô màu có kích thước (top, bottom, left, right) ra màng hình

Bước 4: Chuyển đổi ảnh BGR sang dạng ảnh xám

Chuỗi video gốc trong không gian màu RGB không thể được phát hiện và phân tích dựa trên màu sắc, do đó cần chuyển đổi thành ảnh xám bằng cách sử dụng cv2.COLOR_BGR2GRAY.

Hình 3.23: Chuyển đổi ảnh BGR sang dạng ảnh xám

Hình ảnh có thể chứa các loại nhiễu khác nhau, GaussuanBlur sẽ giúp làm mịn(làm mờ) giảm thiểu nhiễu.

Hình 3.24: Lọc GaussianBlur làm mờ ảnh

Bước 6: Lấy ảnh theo ngưỡng (thresholded)

Ngưỡng là quá trình phân loại cường độ điểm ảnh thành hai giá trị 0 và 1 dựa trên một ngưỡng cụ thể, nhằm xác định đối tượng quan tâm trong hình ảnh.

Giá trị ngưỡng sẽ được áp dụng thông qua hàm cv2.threshold( ) với cờ cv2.THRESH_OTSU, nhằm chuyển đổi hình ảnh thành định dạng nhị phân chỉ chứa hai màu đen và trắng, dựa trên giá trị pixel so với ngưỡng đã xác định.

Hình 3.25: Lấy ảnh theo ngưỡng

Bước 7: Đóng khung chữ nhật vùng xuất hiện bàn tay

Hình 3.26: Đóng khung chữ nhật vùng xuất hiện bàn tay

Bước 9: Để phát hiện vị trí của các ngón tay, cần thực hiện biến đổi khoảng cách nhằm xác định điểm cọ, tức là điểm trung tâm của lòng bàn tay Phương pháp này, còn được biết đến với tên gọi bản đồ khoảng cách, là một hình thức đại diện cho hình ảnh.

Hình 3.28 minh họa biến đổi khoảng cách, đo khoảng cách giữa các pixel và các pixel biên gần nhất Điểm trung tâm của ảnh nhị phân có khoảng cách lớn nhất, do đó trong ảnh biến đổi khoảng cách của hình ảnh bàn tay nhị phân, pixel có khoảng cách lớn nhất được chọn làm điểm cọ.

Hình 3.28: Biến đổi khoảng cách để phát hiện tâm và số ngón tay (distanceTranform)

Bước 11: Vẽ đường tròn tâm C (find_radius)

Hình 3.30: Vẽ đường tròn tâm C

Bước 12: Đường tròn này sẽ cắt các ngón tay, sẽ phải đi tìm các đoạn cắt nhau.

Hình 3.31: Tìm các đoạn cắt nhau để tìm số ngón tay (cv2.bitwise_and)

Số ngón tay chính bằng số đoạn cắt nhau của đường tròn và các ngón tay - 1(cổ tay). Bước 13: Tìm khe giữa các ngón tay, vẽ đường viền (drawContours)

Hình 3.32: Vẽ đường viền để tìm số khe giữa các ngón

Bước 14: Vẽ bao lồi xung quanh ngón tay (convex hull)

Hình 3.33: Vẽ bao lồi xung quanh ngón tay

Bước 15: Nếu góc nhỏ hơn 70⁰ thì được coi như là ngón tay (convexity defect)

Hình 3.34: Điều kiện để tính khe giữa các ngón tay

Sau khi thu được các khuyết tật lồi, chúng tôi thực hiện các bước để xác định các đầu ngón tay và các ngón tay.

Hình 3.35: Tìm khuyết tật lồi

Khiếm khuyết lồi thu được là một cấu trúc có bốn giá trị: điểm bắt đầu, điểm kết thúc, điểm xa nhất và khoảng cách gần đúng đến điểm xa nhất, trong đó ba giá trị đã được xác định trước.

Hình 3.35 minh họa một đường viền với điểm bắt đầu C, điểm kết thúc B và điểm xa nhất A Để xác định chính xác vị trí của một ngón tay được giữ lên, góc tạo bởi hai ngón tay phải được sử dụng, thông qua tam giác hình thành từ điểm A.

B và C Độ dài của mỗi dòng được tìm thấy bằng cách sử dụng công thức khoảng cách như:

Khi độ dài của mỗi cái đã được tìm thấy, sử dụng quy tắc Cosine. góc A được tìm thấy bằng cách sử dụng.

Sau khi thực hiện, thu được số lượng lõm từ đó xác định được số ngón tay (có 2 khoảng lõm thì có 3 ngón tay đang được giơ).

Tuy nhiên, nhược điểm của phương thức thủ công là sẽ không có khác biệt khi số ngón tay giơ lên là 0, nên ta sẽ thực hiện:

Nếu số ngón tay - 1 == số khe thì số ngón tay xác định đúng

Nếu số ngón = số khe = 0 thì số ngón tay là 0

Nếu không có tín hiệu từ bàn tay, Raspberry sẽ gửi một chuỗi "heartbeat" để duy trì kết nối với ESP8266 Khi ESP không nhận được dữ liệu, điều đó có nghĩa là đã mất kết nối, và robot sẽ chuyển sang chế độ "dừng".

3.3.3 Lưu đồ giải thuật điều khiển robot di động

Hình 3.36: Gửi và nhận giao tiếp UDP ESP8266

Hình 3.37: Lưu đồ giải thuật điều khiển robot di động

Hình 3.38: Gửi và nhận tín hiệu cho robot: (a) là cử chỉ bàn tay dừng; (b) là gửi mẫu tin

Socket lên AccessPoint (Stop); (c) là nhận Socket từ AP và xử lý (Stop)

Hình 3.39: Gửi và nhận tín hiệu cho robot: (a) là cử chỉ bàn tay tiến; (b) là gửi mẫu tin

Socket lên AccessPoint (Up); (c) là nhận Socket từ AP và xử lý (Up)

Hình 3.40 mô tả quá trình gửi và nhận tín hiệu cho robot, trong đó (a) thể hiện cử chỉ bàn tay lùi, (b) là việc gửi mẫu tin Socket lên AccessPoint, và (c) là quá trình nhận Socket từ AccessPoint và xử lý tín hiệu.

Hình 3.41 minh họa quá trình gửi và nhận tín hiệu cho robot, trong đó (a) thể hiện cử chỉ bàn tay rẽ trái; (b) mô tả việc gửi mẫu tin Socket lên AccessPoint; và (c) cho thấy việc nhận Socket từ AP để xử lý.

Bảng vẽ cơ khí

Hình 3.43: Bảng vẽ cơ khí

KẾT QUẢ THỰC NGHIỆM

Những kết quả đạt được:

Hình 4.1: Kết quả cử chỉ tay robot dừng (stop)

Hình 4.2: Kết quả cử chỉ tay robot tiến (up)

Hình 4.3: Kết quả cử chỉ tay robot lùi (down)

Hình 4.4: Kết quả cử chỉ tay robot rẽ trái (left)

Hình 4.5: Kết quả cử chỉ tay robot rẽ phải (right)

Hình 4.6: Mô hình khi hoàn thành

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

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