Đề tài ứng dụng thị giác máy tính trong thiết kế chế tạo hệ thống phát hiện sâu bệnh trên lá rau cải

120 0 0
Đề tài ứng dụng thị giác máy tính trong thiết kế chế tạo hệ thống phát hiện sâu bệnh trên lá rau cải

Đ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

HỌC VIỆN NÔNG NGHIỆP VIỆT NAM KHOA CƠ ĐIỆN - - ĐỒ ÁN TỐT NGHIỆP ĐỀ TÀI: ỨNG DỤNG THỊ GIÁC MÁY TÍNH TRONG THIẾT KẾ CHẾ TẠO HỆ THỐNG PHÁT HIỆN SÂU BỆNH TRÊN LÁ RAU CẢI Giảng viên hướng dẫn : TS NGÔ TRÍ DƯƠNG Sinh viên thưc : NGUYỄN TRỌNG CHINH Msv : 597692 Lớp : K59 – TDHB Hà Nội, 2019 LỜI CAM ĐOAN Tôi xin cam đoan kết nghiên cứu trình bày đồ án trung thực, khách quan chưa dùng để bảo vệ cho đồ án môn học Tôi xin cam đoan giúp đỡ cho việc thực đồ án cảm ơn, thơng tin trích dẫn đồ án rõ nguồn gốc Hà Nội, ngày tháng năm 20 Tác giả đồ án Nguyễn Trọng Chinh LỜI CẢM ƠN Với tất tình cảm chân thành, em xin bày tỏ lòng biết ơn sâu sắc tới Ban Giám đốc, Ban Quản lý đào tạo, Khoa điện - Học viê Mn Nông nghiệp Việt Nam, thầy cô, giảng viên tham gia giảng dạy khoá học 2014-2019, tạo điều kiện thuận lợi cho em học tập nghiên cứu, làm sở việc nghiên cứu đề tài Đặc biệt, em xin chân thành cảm ơn thầy giáo TS Ngơ Trí Dương dành nhiều thời gian, công sức để dẫn, hướng dẫn em tận tình chu đáo mặt chun mơn để em thực hồn thành đồ án tốt nghiệp Em xin bày tỏ lòng biết ơn sâu sắc đến thầy cô phản biện, thầy cô hội đồng chấm đồ án đồng ý đọc duyệt góp ý kiến quý báu để em hồn chỉnh đồ án định hướng nghiên cứu tương lai Mặc dù có nhiều cố gắng, song chắn khơng tránh khỏi thiếu sót định Rất mong đóng góp ý kiến Hội đồng chấm đồ án tốt nghiệp, đọc quan tâm đến đề tài đồ án Em xin chân thành cảm ơn! Hà Nội, ngày tháng năm 20 Sinh viên thực Nguyễn Trọng Chinh MỤC LỤC LỜI CAM ĐOAN i LỜI CẢM ƠN ii MỤC LỤC iii DANH MỤC BẢNG vi DANH MỤC HÌNH vii MỞ ĐẦU 1 Đặt vấn đề Mục đích nghiên cứu Phạm vi nghiên cứu Ý nghĩa khoa học đề tài CHƯƠNG I: TỔNG QUAN TÀI LIỆU 1.1 Tổng quan thị giác máy tính 1.1.1 Khái quát thị giác máy tính 1.1.2 Nhận dạng đối tượng thị giác máy tính 1.2 Ứng dụng thị giác máy tính đời sống 1.3 Ứng dụng thị giác máy tính tự động hóa 12 1.3.1 Trong công nghiệp 12 1.3.2 Ứng dụng sản xuất nơng nghiệp 16 1.4 u cầu thiết kế mơ hình 19 CHƯƠNG II: NỘI DUNG VÀ PHƯƠNG PHÁP NGHIÊN CỨU 21 2.1 Đối tượng nghiên cứu 21 2.1.1 Phương pháp nhận dạng đối tượng 21 2.1.2 Cây rau cải 32 2.1.3 Thiết bị chung 35 2.1.4 Cài đặt hệ điều hành cho Raspberry PI 39 2.1.5 Thư viện OpenCV 41 2.1.6 Phần mềm Visual Studio 45 2.1.7 Ngôn ngữ lập trình Python 48 2.1.8 Giới thiệu Thonny Python IDE 50 2.2 Nội dung nghiên cứu 51 2.3 Phương pháp nghiên cứu 51 CHƯƠNG III: KẾT QUẢ VÀ THẢO LUẬN 53 3.1 Sơ đồ tổng quát 53 3.1.1 Sơ đồ khối 53 3.1.2 Sơ đồ thiết kế không gian 54 3.2 Thiết kế phần cứng 54 3.2.1 Khung 54 3.2.2 Lựa chọn thiết bị 57 3.2.3 Các cấu chấp hành 65 3.2.4 Sơ đồ mạch điều khiển mạch động lực 66 3.3 Thiết kế phần mềm 67 3.3.1 Bảng phân cơng tín hiệu 67 3.3.2 Lưu đồ thuật toán 67 3.3.3 Nguyên lý hoạt động 70 3.3.4 Xây dựng chương trình 70 3.4 Giao diện Raspberry điện thoại 71 3.5 Xây dựng mẫu rút trích đặc trưng Haar-like 74 3.6 Lắp ráp chạy thử robot 78 3.6.1 Lắp ráp 78 3.6.2 Chạy thử 81 3.6.3 Một số hình ảnh chạy thực tế 83 3.7 Kết thảo luận 89 3.7.1 Kết 89 3.7.2 Thảo luận 90 3.8 Hoạch toán 91 CHƯƠNG IV: KẾT LUẬN VÀ ĐỀ NGHỊ 4.1 Kết luận 92 92 4.2 Đề nghị 92 TÀI LIỆU THAM KHẢO 94 Phụ lục 95 DANH MỤC BẢNG Bảng 3.1 Bảng phân cơng tín hiệu 67 Bảng 3.2 Bảng trạng thái động 67 Bảng 3.4 Kết thí nghiệm phịng thí nghiệm 89 Bảng 3.5 Kết chạy thực tế nhà lưới 90 Bảng 3.6 Bảng hoạch toán 91 DANH MỤC HÌNH Hình 1.1 Thị giác máy tính nhận dạng đối tượng Hình 1.2 Minh họa thay đổi góc chụp Hình 1.3 Minh họa cho che khuất Hình 1.4 Sự phức tạp hình Hình 1.5 Minh họa độ sáng khác Hình 1.6 Các bước hệ thống nhận dạng đối tượng Hình 1.7 Thị giác máy tính hỗ trợ bác sĩ chẩn đốn Hình 1.8 Hệ thống Camera nhận dạng khn mặt Hình 1.9 Bộ nhận dạng mặt người smartphone Hình 1.10 Chương trình ZDT 12 13 Hình 1.11 Ứng dụng Machine Vision xem xét lỗi chai 15 Hình 1.12 Kiểm tra 3d 16 Hình 2.1 Các đặc trưng Haar-Like 21 Hình 2.2 Bốn đặc trưng Haar-Like 21 Hình 2.3 Bốn tập đặc trưng Haar-Like 22 Hình 2.4 Khoanh vùng đối tượng 22 Hình 2.5 Biểu diễn ảnh tích hợp 24 Hình 2.6 Ví dụ ảnh tích hợp 25 Hình 2.7 Tính giá trị mức xám vùng D ảnh Hình 2.8 Mơ hình phân lớp phân tầng 25 32 Hình 2.9 Cây cải xanh 33 Hình 2.10 Bệnh thối nhũn 34 Hình 2.11 Bệnh vàng rau cải 36 Hình 2.12 Mạch Raspberry PI 3B Zero 37 Hình 2.13 Các khối chức CPU S7-1200 40 Hình 2.14 Các kết nối PLC S7-1200 40 Hình 2.15 Sơ đồ cắm đầu kết nối để cài hệ điều hành 41 Hình 2.16 Hướng dẫn cài đặt hệ điều hành trung tâm 42 Hình 2.17 Giao diện hệ điều hành trung tâm Raspberry pi 42 Hình 2.18 Cấu trúc Open CV 44 Hình 2.19 Cài thư viện 45 Hình 2.20 Cài thư viện opencv 46 Hình 2.21 Cài thư viện OpenCV cho Raspberry PI 46 Hình 2.22 Giao diện Visual Studio 2015 47 Hình 2.23 Cài opencv visual 48 Hình 2.24 Cài opencv visual 49 Hình 2.25 Build lib OpenCV Visual Studio 50 Hình 2.26 Giao diện Thonny Python IDE 52 Hình 3.1 Sơ đồ khối hệ thống 54 Hình 3.2 Sơ đồ thiết kế khơng gian 55 Hình 3.3 Đường ray robot 56 Hình 3.4 Khung robot 57 Hình 3.5 Raspberry Pi 3B 58 Hình 3.6 Raspberry Pi Zero 59 Hình 3.7 Sơ đồ chân tín hiệu module L298N 61 Hình 3.8 Hình ảnh Raspberry pi camera V2 62 Hình 3.9 Kích thước mainboard Raspberry pi camera Hình 3.10 Truyền thơng MQTT 63 64 Hình 3.11 Cấu tạo phần cứng 65 Hình 3.12 Động giảm tốc 66 Hình 3.13 Động bánh xe lắp ráp 67 Hình 3.14 Sơ đồ mạch điều khiển mạch động lực 67 Hình 3.15 Lưu đồ thuật tốn tốn 70 Hình 3.16 Lưu đồ thuật tốn q trình xử lí ảnh 71 Hình 3.18 Code nhận dạng đối tượng 72 Hình 3.19 Cài VNC Rasperry PI 73 Hình 3.20 Cài đặt vnc viewer điện thoại 74 Hình 3.21 Giao diện Raspberry PI điện thoại 76 Hình 3.22 Khoanh vùng đối tượng 77 Hình 3.42 Kết nhận diện thực tế máy tính nhà lưới 3.7 Kết thảo luận 104 3.7.1 Kết Tiến hành làm thí nghiệm điều kiện ban ngày.Kết thực nghiệm ghi bảng sau: Bảng 3.3 Các lỗi gặp phải trình thử nghiệm ST Lỗi Nguyên nhân Cách khắc phục T Động không Dây nguồn bị Cắm lại dây nguồn chạy Chạy khơng hết lỏng Sóng wifi bị Khởi động lại router quãng đường Nhận dạng sai đối ngắt kết nối Do Haar- wifi Xây dựng thêm tượng Khơng chụp like cịn ảnh Hướng camera liệu cho Haar-like Chỉnh lại hướng chủ thể đối tượng lệch camera Bảng 3.4 Kết thí nghiệm phịng thí nghiệm Khoảng STT Số lượng Nhận cách thay mẫu có dạng đổi(cm) sâu/ thối 30cm 50cm 70cm 90cm 110cm 130cm 30 30 30 30 30 30 30 30 25 10 105 Nhận dạng nhầm(hoặc không nhận dạng được) 0 20 28 30 Độ xác % 100 100 83 33 Tiến hành lắp đặt thực nghiệm nhà lưới kết thống kê lại bảng sau Bảng 3.5 Kết chạy thực tế nhà lưới Điều kiện ánh sáng Thời điểm chạy Phát ruồi đục lá/cây thối Ruồi đục lá/cây thối thực tế Tỷ lệ chạy 15:30 3 100 Ánh sáng tốt 16:05 3 100 16:45 3 100 Ánh sáng yếu 17:15 67 17:30 33 Ánh sáng bóng đèn 18:10 3 100 18:30 3 100 18:50 67 (%) (giờ) 3.7.2 Thảo luận Mơ hình làm việc ổn định điều kiện ánh sáng khác sai số nằm ngưỡng cho phép Giao diện điều khiển chạy ổn định, liên kết đồng với chương trình phần mềm kết nối toán Robot di chuyển trơn chu, chắn Hình ảnh chụp rõ nét, nhận dạng đối tượng tốt Từ số liệu thống kê Bảng 3.5, cho thấy kết thử nghiệm điều kiện ánh sáng đầy đủ chuẩn xác, với ánh sáng đèn độ xác lên tới xấp xỉ 90% Kết với mơ hình thực tế quy mơ nhỏ sở vững để phát triển đồng quy mơ lớn Và nghiên cứu tối ưu kinh phí để tiến tới thương mại hóa 3.8 Hoạch tốn 106 Bảng 3.6 Bảng hoạch toán STT Tên thiết bị Số lượng Đơn giá (VNĐ) Raspberry PI Camera V2 Raspberry PI Model B Raspberry PI ZERO 900.000 Thẻ nhớ Micro SD 16G class 10 Sandisk ultra 400.000 Vỏ hộp Raspberry PI có quạt tản nhiệt 150.000 Nguồn cấp cho Raspberry PI 600.000 Động giảm tốc gắn bánh xe 180.000 Khung xe 150.000 Đường ray 100.000 Tổng 1.300.000 13 Tổng tiền(VNĐ): 107 800.000 4.580.000 4.580.000 CHƯƠNG IV: KẾT LUẬN VÀ ĐỀ NGHỊ 4.1 Kết luận Sau thời gian nghiên cứu tìm hiểu hướng dẫn nhiệt tình TS.Ngơ Trí Dương đề tài : “ứng dụng thị giác máy tính thiết kế chế tạo hệ thống phát sâu bệnh rau cải” em hoàn thành Qua trình nghiên cứu tìm hiểu em biết thêm về: ▪ Raspberry PI máy tính nhúng hữu dụng để nghiên cứu phát triển AI, nơng nghiệp 4.0 ▪ Cách chụp ảnh, xử lí ảnh, xây dựng học máy cho robot ▪ Truyền thông IoT cho nông nghiệp hay ứng dụng đời sống Đề tài em hoàn thành yêu cầu ban đầu đề ra: ▪ Chụp ảnh ▪ Nhận dạng đối tượng ▪ Đưa kết quả, đưa PLC ▪ Cơ cấu di chuyển Từ đề tài cho thấy việc áp dụng công nghệ vào nơng nghiệp khơng cịn q xa nữa, mà thực hiện, nghiên cứu Trong đồ án đưa phương pháp tối ưu với diện tích lớn thay nhiều nguồn nhân công hay thời gian, kịp thời canh tác, robot hoạt động ngày Ở đồ án khơng cịn phát màu với dải màu định sẵn đề tài trước đây, mà thay đổi hoàn tồn với học máy, với liệu rút trích đặc trưng để nhận dạng đối tượng đa dạng hơn, đối tượng nhận dạng đặc điểm đặc trưng 4.2 Đề nghị Trong khoảng thời gian thực đề tài có số nội dung em chưa thể tối ưu thời gian kinh phí cịn hạn hẹp, bổ sung: Xây dựng rút trích đặc trưng lớn với số mẫu nhiều vài nghìn ảnh, để nhận dạng nhiều loại sâu bệnh 108 Có thể nâng cấp phận di chuyển tối ưu hơn, di chuyển linh hoạt Đối với ứng dụng nhận dạng đối tượng phát triển rộng khơng sâu bệnh cây, chăn nuôi, hay đời sống hàng ngày giám sát an ninh, nhận dạng khuôn mặt, theo dõi đối tượng 109 TÀI LIỆU THAM KHẢO [1] Pivietnam.com.vn công nghệ [2] Tài liệu học làm robot < http://mlab.vn/mo-hinh-robot> [3] Điều trị bệnh thối nhũn rau cải [4] loại bệnh thường gặp rau cải người trồng cần lưu ý [5] Paul A Viola and Michael J Jones, (2001) Rapid Object Detection using a Boosted Cascade of Simple Features IEEE Conference on Computer Vision and Pattern Recognition [6] Paul A Viola and Michael J Jones, (2004) Robust real-time face detection International Journal of Computer Vision [6] Stan Z Li and Anil K Jain (2005) Handbook of Face Recognition 110 PHỤ LỤC Chương trình cài đặt thư viên OpenCV Raspberry Cài đặt gói phụ thuộc để khởi tạo phần mềm: -Đầu tiên cần phải cập nhật, nâng cấp gói có lệnh : Sudo apt-get update Sudo apt-get upgrade -Khởi động lại hệ điều hành trung tâm alphabot Raspberry pi3 sau cập nhật phần mềm Sudo reboot -Tiếp theo cài đặt công cụ phát triển : Sudo apt-get install build-essential cmake pkg-config Sudo apt-get install libjpeg-dev libtiff5 -dev libjasper -dev libpng12-dev -Tiếp theo cần cài đặt gói video I/O cho phép ta tải định dạng video dạng tệp khác làm việc với nguồn video khác Sudo apt-get install libavcodec-dev libavfomat-dec libswscale-dev libv4ldev Sudo apt-get install libxvidcore-dev libx264-dev - Tiếp theo cần cài đặt thư viện phát triển GTK ( công cụ tạo giao diện đồ hoạ) , để biên soạn modul phụ Open CV ,cho phép hiển thị hình ảnh hình xây dựng giao diện GUI đơn giản Sudo apt-get install libgtk2.0-dev libgtk-3-dev -Cài đặt gói tối ưu hố (cải thiện phép toán ma trận cho OpenCV) Sudo apt-get i install libatlas-bbase-dev gfortran -Cài đặt Python Numpy Sudo apt-get install python3 python3-setuptools python3-dev-y Wget https://bootstrap.pypa.io/get-pip.py Sudo python3 get.pip.py Sudo pip3 installl numpy 111 -Tải xuống OpenCV 3.4 ta gõ lệnh cài đặt sau cd~ wget-0 opencv.zip https://github.com/opencv/opencv/archive/3.4.0.zip unzip opencv-3.4.0.zip -Để cài đặt đầy đủ OpenCV bao gồm tính SIFT (nhận dạng điểm đặc trưng) SÙ (nhận dạng đối tương ) cần phải lâ kho lưu trữ opencv_contrib Wget-0 opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/3.4.0.zip Unzip opencv_contrib-3.4.0.zip -Biên dịch cài đặt opencv 3.4.0 cho python3:ta gõ lệnh cd opencv-3.4.0 mkdir build cd build cmake -D CMAKE_BUILD_TYPE=RELEASE\ -D CMAKE_INSTALL_PREFIX=/usr/local\ -D BUILD_opencv_java=OFF\ -D BUILD_opencv_python2=OFF\ -D BUILD_opencv_python3=ON\ -D PYTHON_DDEFAULD_ EXECUTABLE=$( which python3)\ -D INSTALL_C_ EXAMPLES= OF\ -D INSTALL_PYTHON_ EXAMPLES=ON\ -D BUILD_ EXAMPLES=ON\ -D OPENCV_ EXTRA_MODULES_PATH=~/opencv_contrib3.4.0/modules\ -D WITH_CUDA= OFF\ -D BUILD_TESTS= OFF\ -D BUILD_PERF_TESTS= OFF 112 -Sau cài đặt xong ta biên dịch lại OpenCV gõ lệnh sau Make -j4 J4 viết tắt số lõi để sử dụng biên soạn OpenCV - Cài đặt OpenCV vào hệ thống: Sudo make install Sudo idconfig Code PI 1: “phathiencontrung.py” #dien dia chi IP cua Pi Zero mang WiFI Pi_zero_Broker='192.168.1.41' #thoi gian xe chay (giay) Run_time=0.5 #xe chay 0.5s from picamera import PiCamera from time import sleep import cv2 import datetime import paho.mqtt.client as mqtt import RPi.GPIO as GPIO GPIO.setwarnings(False) led = 26 A = 17 B = 27 GPIO.setmode(GPIO.BCM) # chon kieu danh so chan GPIO la BCM GPIO.setup(A, GPIO.OUT) GPIO.setup(B, GPIO.OUT) GPIO.output(A, GPIO.HIGH) GPIO.output(B, GPIO.HIGH) GPIO.setup(led, GPIO.OUT) for x in range (0, 5) : GPIO.output(led, GPIO.HIGH) sleep(0.2) GPIO.output(led, GPIO.LOW) sleep(0.2) def on_connect(mqttc, obj, flags, rc): mqttc.subscribe("cam1_res", 0) 113 mqttc.publish("cam1","cam1 hoat dong") def on_message(mqttc, obj, msg): return def on_publish(mqttc, obj, mid): return def on_subscribe(mqttc, obj, mid, granted_qos): return mqttc = mqtt.Client(client_id="cam1") mqttc.username_pw_set("","") mqttc.on_message = on_message mqttc.on_connect = on_connect mqttc.on_publish = on_publish mqttc.on_subscribe = on_subscribe mqttc.connect(Pi_zero_Broker, 1883, 60) camera = PiCamera() for x in range (0, 30) : #chay xe if x0: for y in range (0, 10) : GPIO.output(led, GPIO.HIGH) sleep(0.1) GPIO.output(led, GPIO.LOW) sleep(0.1) #gui tin hieu dieu khien ve Pi zero bang giao thuc MQTT mqttc.publish("cam1","Co ruoi") #luu anh vao thu muc data x = datetime.datetime.now() link='/home/pi/doan/data/{}.jpg' cv2.imwrite(link.format(x),img) #ket thuc chu ki kiem tra mqttc.loop_forever() Code PI 2: “MQTTclient.py” import paho.mqtt.client as mqtt import RPi.GPIO as GPIO from time import sleep mqttc = mqtt.Client(client_id="pi0") GPIO.setwarnings(False) cam1_out = 17 GPIO.setmode(GPIO.BCM) # chon kieu danh so chan GPIO la BCM GPIO.setup(cam1_out, GPIO.OUT) 115 GPIO.output(cam1_out, GPIO.LOW) def on_connect(mqttc, obj, flags, rc): mqttc.publish("Pi0","Pi0 hoat dong") mqttc.subscribe("cam1", 0) def on_message(mqttc, obj, msg): if(msg.topic == "cam1"): mqttc.publish("cam1_res","OK") GPIO.output(cam1_out, GPIO.HIGH) sleep(0.2) GPIO.output(cam1_out, GPIO.LOW) def on_publish(mqttc, obj, mid): return def on_subscribe(mqttc, obj, mid, granted_qos): return mqttc.username_pw_set("wklvsjho","wUCTr-OzdYPF") mqttc.on_message = on_message mqttc.on_connect = on_connect mqttc.on_publish = on_publish mqttc.on_subscribe = on_subscribe mqttc.connect("127.0.0.1", 1883, 60) mqttc.loop_forever() Code Arduino: #include #define INPUT1_PIN #define INPUT2_PIN #define INPUT3_PIN #define INPUT4_PIN 11 #define INPUT5_PIN 12 #define SLAVE_ID #define CTRL_PIN 116 #define DATA_ADDR #define BAUDRATE 9600 Modbus slave(SLAVE_ID, CTRL_PIN); int input1 = 0, input2 = 0, input3 = 0, input4 = 0, input5 = 0; void setup() { pinMode(INPUT1_PIN, INPUT); pinMode(INPUT2_PIN, INPUT); pinMode(INPUT3_PIN, INPUT); pinMode(INPUT4_PIN, INPUT); pinMode(INPUT5_PIN, INPUT); slave.cbVector[CB_READ_HOLDING_REGISTERS] = sendData; Serial.begin(BAUDRATE); slave.begin(BAUDRATE); } void loop() { input1 = digitalRead(INPUT1_PIN); input2 = digitalRead(INPUT2_PIN); input3 = digitalRead(INPUT3_PIN); input4 = digitalRead(INPUT4_PIN); input5 = digitalRead(INPUT5_PIN); slave.poll(); } 117 uint8_t sendData(uint8_t fc, uint16_t address, uint16_t length) { slave.writeRegisterToBuffer(DATA_ADDR, input1); slave.writeRegisterToBuffer(DATA_ADDR + 1, input2); slave.writeRegisterToBuffer(DATA_ADDR + 2, input3); slave.writeRegisterToBuffer(DATA_ADDR + 3, input4); slave.writeRegisterToBuffer(DATA_ADDR + 4, input5); return STATUS_OK; } 118

Ngày đăng: 21/06/2023, 20:54

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan