Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 24 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
24
Dung lượng
615,63 KB
Nội dung
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN ĐIỆN TỬ - VIỄN THÔNG ĐỒ ÁN THIẾT KẾ Đề tài Nghiên cứu viết chương trình nhận dạng điều khiển camera bám đối tượng jetson Nhóm sinh viên thực hiện: Giảng viên hướng dẫn Đồng Văn Duy 20182461 Đỗ Xuân Long 20182650 Nguyễn Phú Lâm 20182627 PGS.TS Nguyễn Thúy Anh Hà Nội, 2-2022 TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN ĐIỆN TỬ - VIỄN THÔNG ĐỒ ÁN THIẾT KẾ Đề tài Nghiên cứu viết chương trình nhận dạng điều khiển camera bám đối tượng jetson Nhóm sinh viên thực hiện: Giảng viên hướng dẫn Đồng Văn Duy 20182461 Đỗ Xuân Long 20182650 Nguyễn Phú Lâm 20182627 PGS.TS Nguyễn Thúy Anh Hà Nội, 2-2022 LỜI NÓI ĐẦU Trong năm gần đây, giới nghiên cứu ứng dụng công nghệ xử lý nhận dạng ảnh hướng nghiên cứu tập trung nhiều nhà khoa học lĩnh vực Từ năm 1970 mà lực tính tốn máy tính ngày trở nên mạnh mẽ hơn, máy tính lúc xử lý tập liệu lớn hình ảnh, đoạn video khái niệm xử lý ảnh đời là: Thị giác máy- Computer vision Có thể nói xử lý ảnh số thị giác máy đãđ ược phát triển trở thành lĩnh vực khoa học Xử lý ảnh số không nâng cao chất lượng ảnh mà cịn phân tích lý giải tìm giải thuật để ứng dụng vào thực tiễn Thị giác máy bao gồm lý thuyết kỹ thuật liên quan nhằm mục đích tạo hệ thống nhân tạo tiếp nhận thơng tin từ hình ảnh thu tạp liệu đa chiều Việc kết hợp thị giác máy với kỹ thuật khác công nghệ thông tin, truyền thơng, điện tử, điều khiển tự động, khí…cho nhiều ứng dụng đời sống hàng ngày khoa học, an ninh, y học, quân sự… Ngày nay, ứng dụng thị giác máy trở nên rộng lớn đa dạng, len lỏi vào lĩnh vực từ quân sự, khoa học, vũ trụ, cho đếny học, sản xuất, tự động hóa tịa nhà Trong thời gian qua hướng dẫn tận tình Nguyễn Thúy Anh thầy Nguyễn Hữu Trung, chúng em dành thời gian nghiên cứu xử lý ảnh nhận dạng ảnh hay nói thuật tốn xử lý ảnh bám đối tượng – Tracking Những nội dung mà nhóm chúng em nghiên cứu bao gồm: • Nghiên cứu tổng quan xử lý ảnh số hệ bám đối tượng • Tìm hiểu nghiên cứu thư viện mã nguồn mở OpenCV • Xây dựng hệ thống camera bám theo mục tiêu di dộng ứng dụng thuật tốn bám ảnh Camshitf Để hồn thành đồ án tiến độ em xin gửi lời cảm ơn chân thành tới cô Nguyễn Thúy Anh thầy Nguyễn Hữu Trung người trực tiếp hướng dẫn chúng em làm đồ án BẢNG PHÂN CÔNG NHIỆM VỤ Họ tên Đồng Văn Duy Đỗ Xuân Long Nguyễn Phú Lâm MỤC LỤC MỤC LỤC ii DANH MỤC HÌNH VẼ iii CHƯƠNG TỔNG QUAN VỀ HỆ THỐNG CAMERA NHẬN DẠNG VÀ ĐIỀU KHIỂN BÁM ĐỐI TƯỢNG 1.1 Giới thiệu .1 1.2 Yêu cầu CHƯƠNG NGHIÊN CỨU VÀ ĐỀ XUẤT PHẦN MỀM VÀ PHẦN CỨNG CHO CHƯƠNG TRÌNH ĐIỀU KHIỂN CAMERA NHẬN DẠNG BÁM ĐỐI TƯỢNG 2.1 Phần cứng phục vụ xử lý ảnh điều khiển hệ thống 2.1.1 Các giải pháp thực tế 2.1.2 Giải pháp phần cứng sử dụng đề tài 2.2 Phần mềm phục vụ xử lý ảnh điều khiển hệ thống 2.2.1 Thư viện OpenCV gì? 2.2.2 Cấu trúc nội dung OpenCV 2.2.3 Hướng tiếp cận xây dựng mơ hình hệ pan-tilt mang camera CHƯƠNG THIẾT KẾ VÀ THI CÔNG HỆ THỐNG NHẬN DẠNG VÀ ĐIỀU KHIỂN CAMERA BÁM ĐỐI TƯỢNG 3.1 PHƯƠNG TRÌNH TRẠNG THÁI CỦA HỆ THỐNG NHẬN DẠNG VÀ ĐIỀU KHIỂN CAMERA BÁM ĐUỐI TƯỢNG 3.1.1 Giới thiệu 3.1.2 Mơ hình tốn học hệ pan-tilt camera .8 3.2 XẤY DỰNG THUẬT TOÁN NHẬN DẠNG, BÁM ĐỐI TƯỢNG VÀ THUẬT TOÁN ĐIỀU KHIỂN HỆ THỐNG 3.2.1 Giải thuật tách 3.2.2 Phương pháp lọc nhiễu 3.2.3 Phương pháp tracking đối tượng, dự báo hướng di chuyển vận tốc đối tượng sử dụng thuật toán Camshift kết hợp lọc Kalman 3.3 XÂY DỰNG MÔ HÌNH VÀ CHƯƠNG TRÌNH ĐIỀU KHIỂN .10 i 3.3.1 Mơ hình 10 3.3.2 Chương trình điều khiển 10 TÀI LIỆU THAM KHẢO .16 ii DANH MỤC HÌNH VẼ Hình 1-1 Sơ đồ tổng quát hệ pan-tilt camera nhận dạng bám đối tượng Hình 2-1 Cấu trúc OpenCV Hình 3-1 Tọa độ đối tượng frame ảnh thu Hình 3-2 Mơ hình hóa hệ Pan-tilt Hình 3-3 Lưu đồ thuật tốn nhận dạng bám đối tượng Hình 3-4 Sơ đồ kết hợp lọc Kalman Camshift Hình 3-5 Mơ hình hệ thống nhận dạng điều khiển camera bám đối tượng 10 iii CHƯƠNG TỔNG QUAN VỀ HỆ THỐNG CAMERA NHẬN DẠNG VÀ ĐIỀU KHIỂN BÁM ĐỐI TƯỢNG 1.1 Giới thiệu Trong thực tế, có nhiều tác giả nghiên cứu chế tạo mơ hình điều khiển hệ thống mang camera bám đuổi theo đối tượng dịch chuyển Chẳng hạn hệ robot xe – camera, cánh tay máy mang camera, nòng súng mang camera, hệ pan –tilt camera xoay nhiều hướng Trong số mơ hình này, hệ pan-tilt camera (một hệ thống khí gồm hai động DC, sử dụng vi điều khiển giao tiếp với máy tính ) mơ hình nhất, mục tiêu mơ hình điều khiển hai động DC servo động bước để đảm bảo tầm quan sát hướng quan sát camera theo dõi bám theo đối tượng di chuyển Hình mơ tả sơ đồ tổng qt hệ pan-tilt camera theo dõi Nhận frame ảnh Thuật toán bám đối tượng dùng xử lý ảnh Tọa độ vị trí đối tượng x, y Thuật tốn điều khiển hệ pan - tilt Đế pan-tilt camera Hình 1-1 Sơ đồ tổng quát hệ pan-tilt camera nhận dạng bám đối tượng 1.2 Yêu cầu Bước để giải toán phát bám đối tượng di động phân tách (background) vật (foreground) cách trừ từ khung ảnh chuỗi video Sự sai khác thu đối tượng di động, người di động ô tô di động gọi vật Tuy nhiên, phức tạp việc tách vật di động cảnh động tăng theo xuất chuyển động sinh tượng khác Các tượng thay đổi chiếu sáng, thay đổi mầu tự cân trắng (hoặc hiệu chỉnh mầu) camera mầu, thay đổi giá trị pixel rung rinh tượng khác, từ sinh chuyển động giả cảnh động Các chuyển động chuyển động bóng, nhiều thứ khác cảnh cần xem xét phát chuyển động giả Trong diễn dải trên, cần mô hình cho vật di động cần quan tâm phát bám CHƯƠNG NGHIÊN CỨU VÀ ĐỀ XUẤT PHẦN MỀM VÀ PHẦN CỨNG CHO CHƯƠNG TRÌNH ĐIỀU KHIỂN CAMERA NHẬN DẠNG BÁM ĐỐI TƯỢNG 2.1 Phần cứng phục vụ xử lý ảnh điều khiển hệ thống 2.1.1 Các giải pháp thực tế Máy tính PC, laptop Đây phương pháp đơn giản Có thể tận dụng mainboard máy tính hay chí máy tính xách tay với chức đơn vị xử lý ảnh, đưa định Main công nghiệp, máy tính nhúng Có thể sử dụng mainboard PC104 với chức máy tính thơng thường FPGA Đây giải pháp phần cứng mà hay sử dụng Tận dụng đặc tính FPGA linh hoạt tốc độ xử lý nhanh (cứng hoá giải thuật) Ta kết nối FPGA với CCD sensor để điều khiển nhận frame hình thơng qua bus liệu tốc độ cao DSP( Digital signal processing) DSP ngày tích hợp nhiều thành phần khác nhau, tăng khả xử lý linh hoạt tốc độ xử lý 2.1.2 Giải pháp phần cứng sử dụng đề tài Phần cứng sử dụng đề tài bao gồm NVIDIA Jetson Nano Developer Kit, Web cam Logitech, Servo, giá đỡ máy ảnh xoay, nghiêng, bảng điều khiển Servo PCA9685 I2C 2.2 Phần mềm phục vụ xử lý ảnh điều khiển hệ thống Để giải toán xử lý ảnh – thị giác máy tính nói chung tốn điều khiển bám đối tượng nói riêng, thực tế ta hay dùng thư viện mã nguồn mở sở thuật tốn tích hợp sẵn hàm sở 2.2.1 Thư viện OpenCV gì? Thị trường thị giác máy ngày mở rộng lên tục phát triển Thư viện tiêu chuẩn tạo ứng dụng giải pháp xử lý dễ dàng Đặc biệt tối ưu sử dụng cấu trúc Intel Tạo mẫu ứng dụng thư viện cập nhật thường xuyên thực thuật tốn nặng dị tìm khn mặt Có nhiều công nghệ đại công ty lớn sử dụng thư viện OpenCV trongứng dụng : Intel, Microsoft, IBM, Siemens, Google… trung tâm nghiên cứu như: Stanford, MIT, Cambridge, INRIA…Hơn 14000 thành viên forum OpenCVyahoogroup.com với trung bình ngày có đến 10-20 thông điệp comment trao đổi hàng ngày Điều k hẳng định OpenCV thực góp phần vô lớn lĩnh vực thị giác máy tính 2.2.2 Cấu trúc nội dung OpenCV Để hiểu OpenCV làm việc phân chia cấu trúc nội dung OpenCV phần Cấu trúc openCV chia làm phần chính, số hình 2.2.2 Hình 2-1 Cấu trúc OpenCV CXCORE chứa định nghĩa k iểu liệu sở Ví dụ, cấu trúc liệu cho ảnh, điểm hình chữ nhật định nghĩa cxtypes.h CXCORE chứa đại số tuyến tính phương pháp thống kê, chức trì điều khiển chuỗi Một số ít, chức đồ họa để vẽ ảnh đặt CV chứa thuật toán xử lý ảnh định kích cỡ camera Các chức hình họa máy tính đặt CVAUX mơ tả tài liệu OpenCV chứa mã cũ thử nghiệm Tuy nhiên, giao diện đơn cho nhận diện ảnh module Code sau chúng chuyên dụng cho nhận diện mặt chúng ứng dụng rộng rãi cho mục đích HIGHGUI CVCAM đặt thư mục “otherlibs” HIGHGUI chứa giao diện vào bản, chứa k cửasổ mở rộng vào video CVCAM chứa giao diện cho video truy cập qua DirectX nềnWindows 32 bits Kèm theo thư viện tài liệu hướng dẫn ví dụ mẫu thể phầncác chức công cụ OpenCV.Các chức openCV tập trung vào thuthập ảnh, xử lí ảnh thuật tốn phân tích liệu ảnh, bao gồm: - Truy xuất ảnh phim : đọc ảnh số từ camera, từ file, ghi ảnh phim - Cấu trúc liệu ảnh số liệu hỗ trợ cần thiết: ma trận, vector, chuỗi, xâu - Xử lí ảnh bản: lọc có sẵn, tìm chi tiết cạnh, góc, chỉnh đổi màu, phóng to thu nhỏ, hiệu chỉnh histograms - Xử lí cấu trúc: tìm viền, nhận chuyển động, thay đổi không gian 3D,đối chiếu mẫu, xấp xỉ đơn vị hình học sở- mặt phẳng, đa giác, ellipse,đường thẳng - Phân tích liệuảnh: nhận dạng thực thể, theo dõi chi tiết phân tích chuyển động - Tạo giao diện đơn giản: hiển thị ảnh, thao tác bàn phím, chuột, trượtđể chỉnh thông số (nếu cần thiết bạn tự tạo thêm phím điều khiển thơng qua thao tác chuột, tích hợp thêm thư viện giao diện wxWidgets) - Chức vẽ, thích lên ảnh 2.2.3 Hướng tiếp cận xây dựng mơ hình hệ pan-tilt mang camera Các giải thuật nhận dạng, tracking đối tượng di chuyển đặc trưng sử dụng thực tế Các đối tượng phát nhờ thông tin frame ảnh Trên tảng kế thừa nghiên cứu trước đây, có số đề tài nhận dạng điều khiển camera bám đối tượng dừng lại mức nhận dạng điều khiển bám theo dịch chuyển gương mặt người Thì đề tài này, mục tiêu điều khiển camera bám theo đối tượng có hình dạng biên đặc trưng dạng hình trịn, hình cầu, hình vng; đảm bảo tốc độ bám tốt Hệ thống xử lý ảnh điều khiển bám hoạt động sở phản hồi ảnh từ camera điều khiển hệ pan –tilt camera bám theo đối tượng thật Hệ thống lập trình Python dựa thư viện mã nguồn mở OpenCV, có khả giao tiếp với board điều khiển động DC đế pan-tilt CHƯƠNG THIẾT KẾ VÀ THI CÔNG HỆ THỐNG NHẬN DẠNG VÀ ĐIỀU KHIỂN CAMERA BÁM ĐỐI TƯỢNG 3.1 PHƯƠNG TRÌNH TRẠNG THÁI CỦA HỆ THỐNG NHẬN DẠNG VÀ ĐIỀU KHIỂN CAMERA BÁM ĐUỐI TƯỢNG 3.1.1 Giới thiệu Giả sử camera đọc đưgợc frame ảnh đối tượng di chuyển với tọa độ hình sau: Hình 3-1 Tọa độ đối tượng frame ảnh thu Mục tiêu hệ thống nhận dạng đối tượng, tính tốn xác định tọa độ mặt phẳng ảnh đối tượng, độ lệch vị trí theo phương, vận tốc di chuyển đối tượng Điều khiển cấu pan-tilt cho tọa độ trọng tâm đối tượng mặt phẳng ảnh trùng với tọa độ tâm ảnh Cơ cấu pan-tilt mơ sau: Hình 3-2 Mơ hình hóa hệ Pan-tilt 3.1.2 Mơ hình tốn học hệ pan-tilt camera * Mơ hình xấp xỉ hình học: OXYZ hệ toạ độ thực hệ camera pan-tilt OXcYcZc hệ toạ độ gắn với camera P(X, Y, Z) toạ độ đối tượng hệ toạ độ thực, toạ độ P chiếu lên mặt phẳng ảnh (xp, yp) * Mơ hình động học hệ pan-tilt camera Nhằm mục đích tìm mơ tả quan hệ xp yp θ, ta tìm ma trận chuyển đổi đồng O ROc hai phép quay camera xung quanh O góc θ 3.2 XẤY DỰNG THUẬT TỐN NHẬN DẠNG, BÁM ĐỐI TƯỢNG VÀ THUẬT TOÁN ĐIỀU KHIỂN HỆ THỐNG Thuật toán bao gồm bước tiền xử lý ảnh: thu nhận ảnh từ camera, tách nền, lọc nhiễu, dò cạnh biên, thuật toán bám đối tượng camshift kết hợp với lọc nhiễu dự báo Kalman Hình 3-3 Lưu đồ thuật toán nhận dạng bám đối tượng 3.2.1 Giải thuật tách 3.2.2 Phương pháp lọc nhiễu Có nhiều phương pháp lọc nhiễu để nâng cao chất lượng xử lý nhận dạng vật thể, vật thể chuyển động miển tần số, đề tài sử dụng lọc Gaussian Blur Gaussian Blur cách làm mờ ảnh hàm Gaussian Một cách trực quan, xem phương pháp làm mờ mịn Camera Thu nhận ảnh Tách Lọc nhiễu Dò cạnh biên Camshift+Kalman Tính tọa độ tâm vật thể, vận tốc di chuyển 13 giống hiệu ứng hình ảnh đặt lớp suốt bị mờ Nó khơng giống với trường hợp hình ảnh bị mờ hậu ống kính bị tiêu điểm (out of focus) hay bóng đối tượng ánh sáng thường 3.2.3 Phương pháp tracking đối tượng, dự báo hướng di chuyển vận tốc đối tượng sử dụng thuật toán Camshift kết hợp lọc Kalman Trong thuật toán bám đối tượng ảnh Camshift, đối tượng bám tốt ảnh không ảnh hưởng đến đối tượng, lẫn màu hay che khuất đối tượng Khi đối tượng bám bị che khuất hay lẫn màu với ảnh, gây tượng bám Để khắc phục nhược điểm nâng cao chất lượng bám, lọc Kalman sử dụng Sau sơ đồ kết hợp lọc Kalman Camshift sử dụng đề tài: Dữ liệu ảnh Vector đo lường tín hiệu khơng chắn Hình 3-4 Sơ đồ kết hợp lọc Kalman Camshift 3.2.3.1 Xác định tọa độ tâm đối tượng Để điều khiển camera ln bám theo đối tượng dịch chuyển việc xác định tọa độ trọng tâm đối tượng quan trọng Phương pháp xác định dựa vào tọa độ cửa sổ bám đối tượng dựa vào thuật toán Camshift Kalman track_box Cụ thể xác định tâm cửa sổ bám này, gán tọa độ tâm đối tượng tọa độ tâm cửa sổ bám 3.2.3.2 Luật điều khiển mờ đưa đối tượng tọa độ tâm ảnh Sau frame ảnh đọc từ camera, ta thu tọa độ tâm vật thể (X_Length, Y_Length) thể ảnh So sánh với tọa độ tâm ảnh (X_center, Y_Center) ta có sai số ErrX ErrY Trên sở tín hiệu sai số này, ta xây dựng luật điều khiển mờ PD để xuất lệnh điều khiển phù hợp đem lại hiệu tốt có 3.2.3.3 Thiết kế điều khiển PID vị trí điều khiển hai động Do tác động qua lại hai khâu pan tilt nên điều khiển thiết kế theo hai nhánh, khâu nội suy theo đường thẳng sử dụng trình xử lý tính tốn tọa độ tâm vật thể để đảm bảo điều khiển hệ pan-tilt bám theo mục tiêu dịch chuyển theo đường ngắn Bộ điều khiển cho hai động điều khiển PID giúp hệ thống có đáp ứng nhanh, giảm độ vọt lố cần thiết điều khiển bệ xoay camera 3.3 XÂY DỰNG MƠ HÌNH VÀ CHƯƠNG TRÌNH ĐIỀU KHIỂN 3.3.1 Mơ hình Mảng điều khiển Servo Xử lý ảnh dùng OpenCV + PCA9685 I2C python Hình 3-5 Mơ hình hệ thống nhận dạng điều khiển camera bám đối tượng 3.3.2 Chương trình điều khiển Chương trình viết Python sử dụng thư viện OpenCV /********************************************************************* / import cv2 print(cv2. version ) 10 import numpy as np from adafruit_servokit import ServoKit kit=ServoKit(channels=16) pan=90 tilt=45 kit.servo[0].angle=pan kit.servo[1].angle=tilt def nothing(x): pass cv2.namedWindow('Trackbars') cv2.moveWindow('Trackbars',1320,0) cv2.createTrackbar('hueLower', 'Trackbars',96,179,nothing) cv2.createTrackbar('hueUpper', 'Trackbars',120,179,nothing) cv2.createTrackbar('hue2Lower', 'Trackbars',50,179,nothing) cv2.createTrackbar('hue2Upper', 'Trackbars',0,179,nothing) cv2.createTrackbar('satLow', 'Trackbars',157,255,nothing) cv2.createTrackbar('satHigh', 'Trackbars',255,255,nothing) cv2.createTrackbar('valLow','Trackbars',100,255,nothing) cv2.createTrackbar('valHigh','Trackbars',255,255,nothing) 11 dispW=640 dispH=480 flip=2 #Uncomment These next Two Line for Pi Camera #camSet='nvarguscamerasrc ! video/x-raw(memory:NVMM), width=3264, height=2464, format=NV12, nvvidconv flip-method='+str(flip)+' framerate=21/1 ! ! video/x-raw, width='+str(dispW)+', height='+str(dispH)+', format=BGRx ! videoconvert ! video/x-raw, format=BGR ! appsink' #cam= cv2.VideoCapture(camSet) #Or, if you have a WEB cam, uncomment the next line #(If it does not work, try setting to '1' instead of '0') cam=cv2.VideoCapture(1) width=cam.get(cv2.CAP_PROP_FRAME_WIDTH) height=cam.get(cv2.CAP_PROP_FRAME_HEIGHT) print('width:',width,'height:',height) while True: ret, frame = cam.read() #frame=cv2.imread('smarties.png') hsv=cv2.cvtColor(frame,cv2.COLOR_BGR2HSV) hueLow=cv2.getTrackbarPos('hueLower', 'Trackbars') hueUp=cv2.getTrackbarPos('hueUpper', 'Trackbars') hue2Low=cv2.getTrackbarPos('hue2Lower', 'Trackbars') hue2Up=cv2.getTrackbarPos('hue2Upper', 'Trackbars') 12 Ls=cv2.getTrackbarPos('satLow', 'Trackbars') Us=cv2.getTrackbarPos('satHigh', 'Trackbars') Lv=cv2.getTrackbarPos('valLow', 'Trackbars') Uv=cv2.getTrackbarPos('valHigh', 'Trackbars') l_b=np.array([hueLow,Ls,Lv]) u_b=np.array([hueUp,Us,Uv]) l_b2=np.array([hue2Low,Ls,Lv]) u_b2=np.array([hue2Up,Us,Uv]) FGmask=cv2.inRange(hsv,l_b,u_b) FGmask2=cv2.inRange(hsv,l_b2,u_b2) FGmaskComp=cv2.add(FGmask,FGmask2) cv2.imshow('FGmaskComp',FGmaskComp) cv2.moveWindow('FGmaskComp',0,530) _,contours,_=cv2.findContours(FGmaskComp,cv2.RETR_EXTERNAL ,cv2.CHAIN_APPROX_SIMPLE) contours=sorted(contours,key=lambda x:cv2.contourArea(x),reverse=True) for cnt in contours: area=cv2.contourArea(cnt) (x,y,w,h)=cv2.boundingRect(cnt) 13 if area>=50: #cv2.drawContours(frame,[cnt],0,(255,0,0),3) cv2.rectangle(frame,(x,y),(x+w,y+h),(255,0,0),3) objX=x+w/2 objY=y+h/2 errorPan=objX-width/2 errorTilt=objY-height/2 if abs(errorPan)>15: pan=pan-errorPan/75 if abs(errorTilt)>15: tilt=tilt-errorTilt/75 if pan>180: pan=180 print("Pan Out of Range") if pan180: tilt=180 print("Tilt Out of Range") if tilt