XỬ LÍ ẢNH ĐO KÍCH THƯỚC CÁ BẰNG NODE RED MỤC LỤC CHƯƠNG 1 TỔNG QUAN VỀ ĐỀ TÀI
Trang 1XỬ LÍ ẢNH ĐO KÍCH THƯỚC CÁ
BẰNG NODE-RED
Trang 2
MỤC LỤC
CHƯƠNG 1 TỔNG QUAN VỀ ĐỀ TÀI 8
1.1 Giới thiệu Node-Red 8
1.2 Mục đích nghiên cứu 8
1.3 Đối tượng nghiên cứu 8
1.4 Phạm vi nghiên cứu 9
1.5 Dự kiến kết quả 9
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT 10
2.1 Giới thiệu về hệ thống xử lí ảnh cho cá 10
2.2 Nút trong Node-red sử dụng cho đồ án hệ thống nhúng 10
2.3 Nguyên lí hoạt động của hệ thống xử lí ảnh bằng Node-Red 12
CHƯƠNG 3 THIẾT KẾ VÀ THI CÔNG 14
3.1 Sơ đồ khối của hệ thống 14
3.1.1 Khối truyền ảnh 14
3.1.2 Xử lí ảnh 15
3.1.3 Khối tính kích thước thực tế 16
3.1.4 Khối so sánh 16
3.1.5 Khối Google Sheet 17
3.2 Thiết kế hệ thống 17
3.2.1 Xây dựng mô hình xử lí ảnh cho thước thẳng 17
3.2.2 Xây dựng mô hình xử lí ảnh cho cá 19
3.2.3 Xây dựng mô hình Google Sheet và bảng tính cập nhật kết quả 21
CHƯƠNG 4 GIẢI THUẬT VÀ ĐIỀU KHIỂN 23
4.1 Nguyên lí làm việc của hệ thống 23
CHƯƠNG 5 THỰC NGHIỆM 24
5.1 Các bước tiến hành thực nghiệm 24
5.2 Kết quả thực nghiệm 24
CHƯƠNG 6 KẾT LUẬN 32
6.1 Ưu điểm 32
6.2 Nhược điểm 32
6.3 Hướng phát triển 32
Trang 3TÀI LIỆU THAM KHẢO 33
DANH MỤC HÌNH Ả Hình 2 1 Nút Inject 10
Hình 2 2 Nút Image 10
Hình 2 3 Nút Viewer 10
Hình 2 4 Nút Function 11
Hình 2 5 Nút Debug 11
Hình 2 6 Nút Template 11
Hình 2 7 Nút Change 11
Hình 2 8 Nút Switch 12
Hình 2 9 Nút GSheet 12
Hình 2 10 Xử lí ảnh của cây thước thẳng 12
Hình 2 11 Xử lí ảnh của con cá 13
Y Hình 3 1 Sơ đồ khối của hệ thống 14
Hình 3 2 Khối truyền ảnh 14
Hình 3 3 Khối xử lí ảnh 15
Hình 3 4 Khối tính kích thước thực tế 16
Hình 3 5 Khối so sánh 16
Hình 3 6 Khối Google Sheet 17
Hình 3 7 Xây dựng mô hình xử lí ảnh cho thước thẳng 18
Hình 3 8 Xây dựng mô hình xử lí ảnh cho cá 19
Hình 3 9 Xây dựng mô hình Google Sheet trên Node-Red 22
Hình 3 10 Xây dựng Google Sheet trên Web
Y Hình 5 1 Nhập cơ sở dữ liệu thước đo 25
Hình 5 2 Thực hiện xử lí ảnh 26
Hình 5 3 Nạp lệnh vào nút Function để quét vị trí cần đưa vào mảng tính toán 26
Hình 5 4 Kết quả thu được sau khi quét vị trí và đưa vào mảng 27
Hình 5 5 Kết quả thu được như mong muốn 27
Hình 5 6 Nhập cơ sở dữ liệu cho cá 28
Hình 5 7 Thực hiện xử lí ảnh cho cá 28
Hình 5 8 Nạp lệnh vào nút Function để quét vị trí cần đưa vào mảng tính toán 29
Hình 5 9 Kết quả thu được sau khi thực hiện xử lí ảnh 29
Hình 5 10 Tạo mảng để tính toán số đo thực tế của cá 30
Hình 5 11 Kết quả thực tế của cá 30
Hình 5 12 Tách lấy số và kí tự để thực hiện so sánh 30
Hình 5 13 Thực hiện so sánh và di chuyển dữ liệu 31
Hình 5 14 Cài đặt chuẩn mong muốn cho cá 31
Hình 5 15 Chọn vùng để cập nhật dữ liệu lên hệ thống 31
Hình 5 16 Các dữ liệu được cập nhật tự động lên hệ thống 32
Trang 5CHƯƠNG 1 TỔNG QUAN VỀ ĐỀ TÀI 1.1 Giới thiệu Node-Red
-Node RED là một công cụ lập trình dùng để kết nối các thiết bị phần cứng, API và cácdịch vụ trực tuyến với nhau Về cơ bản, đây là một công cụ trực quan được thiết kế choIoT (Internet of Things), nhưng cũng có thể được sử dụng cho các ứng dụng khác nhằmliên kết nhanh các luồng (flow) dịch vụ khác nhau
-Node-RED là mã nguồn mở và được phát triển bởi Emerging Technology Services củaIBM và được tích hợp trong gói ứng dụng khởi động IoT Bluemix của IBM (Platform-as-a-Service hoặc PaaS) Node-RED cũng có thể được triển khai riêng bằng ứng dụng Node.js Hiện tại, Node-RED là một dự án của JS Foundation
-Node-RED cho phép người dùng kết hợp các dịch vụ Web và phần cứng bằng cách thay thế các tác vụ mã hóa cấp thấp phổ biến (như một dịch vụ đơn giản giao tiếp với một cổng nối tiếp) và điều này có thể được thực hiện với giao diện kéo thả trực quan Các thành phần khác nhau trong Node-RED được kết nối với nhau để tạo ra một luồng (flow) Hầu hết mã lệnh (code) cần thiết được tạo tự động
Trang 7CHƯƠNG 2 CƠ SỞ LÝ THUYẾT 2.1 Giới thiệu về hệ thống xử lí ảnh cho cá
- Hiện nay tại các mô hình chăn nuôi nông nghiệp thường chọn cách lấy kích thước cho
cá bằng mắt thường thì tỉ lệ cá chọn đạt yêu cầu không cao vì bằng mắt thường hoặc đotrực tiếp bằng thước tỉ lệ vẫn sai sót khá cao Từ những khó khăn đó nên em đã chọn nghiên cứu xử lí ảnh để lấy kích thước cho cá một cách khả thi và độ chính xác cao
2.2 Nút trong Node-red sử dụng cho đồ án hệ thống nhúng
*Nút Inject
Hình 2 1 Nút Inject
-Chèn một tin nhắn vào một luồng theo cách thủ công hoặc theo các khoảng thời gian đều đặn Tải trọng thông báo có thể là nhiều loại, bao gồm chuỗi, đối tượng JavaScript hoặc thời gian hiện tại
Trang 8- Hiển thị các hình ảnh đã được xử lí từ nút Image và có thể cài đặt kích cỡ hiển thị choảnh.
*Nút Function
Hình 2 4 Nút Function
- Các thông báo được chuyển vào dưới dạng một đối tượng JavaScript được gọi là msg
- Theo quy ước, nó sẽ có thuộc tính msg.payload chứa phần nội dung của thông báo
- Hàm dự kiến sẽ trả về một đối tượng thông báo (hoặc nhiều đối tượng thông báo), nhưng có thể chọn không trả về gì để dừng một luồng
*Nút Debug
Hình 2 5 Nút Debug
- Hiển thị các thuộc tính thông báo đã chọn trong tab thanh bên gỡ lỗi và tùy chọn nhật
ký thời gian chạy Theo mặc định, nó hiển thị msg.payload, nhưng có thể được định cấu hình để hiển thị bất kỳ thuộc tính nào, thông báo đầy đủ hoặc kết quả của một biểu thức JSONata
*Nút Template
Hình 2 6 Nút Template
- Đặt thuộc tính dựa trên mẫu được cung cấp
*Nút Change
Trang 9- Đọc và Ghi dữ liệu Google Trang tính.
2.3 Nguyên lí hoạt động của hệ thống xử lí ảnh bằng Node-Red
* Xử lí ảnh của cây thước thẳng:
Hình 2 10 Xử lí ảnh của cây thước thẳng
Trang 10- Xử lí ảnh cho cây thước sang nhị phân.
- Từ ảnh nhị phân ta cho vùng trắng là 1 vùng đen là 0
- Ta chọn vị trí quét bằng cách dò map cho đến khi chọn được vị trí thỏa mong muốn cần quét
- Từ đó ta tạo mảng cho các vùng đó
- Từ các mảng đó ta sẽ tính toán để lấy được khoảng pixel cho 1mm của cây thước
Trang 11* Xử lí ảnh của con cá:
Hình 2 11 Xử lí ảnh của con cá
- Xử lí ảnh cho cây thước sang nhị phân
- Từ ảnh nhị phân ta cho vùng trắng là 1 vùng đen là 0
- Ta chọn vị trí quét bằng cách dò map cho đến khi chọn được vị trí thỏa mong muốn cần quét
- Từ đó ta tạo mảng cho các vùng đó
- Pixel cá tính được từ phép tính của giá trị các mảng
- Để suy được số cm thực tế của cá thì ta lấy pixel tính được của con cá chia cho pixel 1mm của cây thước
- Từ kết quả có được thì sẽ tự cập nhật lên Google Sheet
Trang 12CHƯƠNG 3 THIẾT KẾ VÀ THI CÔNG 3.1 Sơ đồ khối của hệ thống
Hình 3 1 Sơ đồ khối của hệ thống
3.1.1 Khối truyền ảnh
Hình 3 2 Khối truyền ảnh
- Chức năng: Truyền dữ liệu ảnh đã được chụp sẵn để đưa vào hệ thống xử lí ảnh
Trang 13- Nút Inject có thể bắt đầu một luồng với một giá trị trọng tải cụ thể Tải trọng mặc định là dấu thời gian của thời gian hiện tại tính bằng mili giây kể từ ngày 1 tháng 1 năm 1970.
- Nút cũng hỗ trợ chèn chuỗi, số, boolean, đối tượng JavaScript hoặc giá trị ngữ cảnh toàn cục / luồng
-Theo mặc định, nút được kích hoạt theo cách thủ công bằng cách nhấp vào nút của nó trong trình chỉnh sửa Nó cũng có thể được thiết lập để tiêm đều đặn hoặc theo lịch trình
- Nó cũng có thể được cấu hình để tiêm một lần mỗi khi các luồng được bắt đầu
- Khoảng thời gian tối đa có thể được chỉ định là khoảng 596 giờ / 24 ngày Tuy nhiên, nếu bạn đang xem xét các khoảng thời gian lớn hơn một ngày, bạn nên cân nhắc sử dụng nút lập lịch có thể đối phó với sự cố mất điện và khởi động lại
3.1.2 Xử lí ảnh
Hình 3 3 Khối xử lí ảnh
- Ảnh sẽ được xử lí qua 3 bước: Greyscale, Edgedetect, Threshold
+ Greyscale : Chọn thang đo độ xám của hình ảnh
+ Edgedetect: Xử lí ảnh để tìm ranh giới các đối tượng trong ảnh
+ Threshold: Phân ngưỡng ảnh ( giá trị lớn hơn ngưỡng thì được gán bằng 1, ngược lại nhỏ hơn ngưỡng thì gán bằng 0)
Trang 14- Chế độ hàng loạt có thể được sử dụng để tự động hóa thao tác hình ảnh bằng cách gửitên của (các) chức năng và (các) tham số qua msg.payload.
- Ngoài ra, bất kỳ chức năng nào không được liệt kê trong nút này hoặc các chức năng mới được thêm vào Jimp đều có thể được truy cập thông qua chế độ Batch
3.1.3 Khối tính kích thước thực tế
Hình 3 4 Khối tính kích thước thực tế
- Chức năng: Khai báo chương trình để đưa giá trị scan được vào mảng và từ mảng đó
sẽ truy xuất dữ liệu ra và dùng phép tính để tính ra số pixel cho vật thể và từ dữ liệu đó
ta có thể triển khai ra nhiều hướng tính toán khác nhau
- Hàm có thể trả về các thông điệp mà nó muốn chuyển cho các nút tiếp theo trong luồng hoặc có thể gọi node.send (các thông báo)
- Nó có thể quay lại / gửi:
+ Một đối tượng thông báo duy nhất - được chuyển đến các nút được kết nối với đầu rađầu tiên
+ Một mảng các đối tượng thông báo - được chuyển đến các nút được kết nối với các đầu ra tương ứng
- Nếu bất kỳ phần tử nào của mảng tự nó là một mảng thông báo, thì nhiều thông báo
sẽ được gửi đến đầu ra tương ứng
- Nếu trả về giá trị null, tự nó hoặc dưới dạng một phần tử của mảng, thì không có thông báo nào được chuyển
- Ghi nhật ký và xử lý lỗi
Trang 163.1.5 Khối Google Sheet
Hình 3 6 Khối Google Sheet
- Chức năng: Cập nhật dữ liệu lên trang Web Google Sheet tự động bao gồm các dữ liệu tương đương với các ô của Google Sheet để ta nắm bắt thông tin đối tượng từ đây
3.2 Thiết kế hệ thống
3.2.1 Xây dựng mô hình xử lí ảnh cho thước thẳng
Hình 3 7 Xây dựng mô hình xử lí ảnh cho thước thẳng
- Xử lí ảnh cho thước thẳng bao gồm:
+ Hình ảnh chuẩn của thước đo có vạch chia milimet
+ Các nút xử lí ảnh để chuyển ảnh sang dạng nhị phân
Trang 17+ Quét vùng lấy mảng
+ Từ đây ta sẽ tính vạch chia cho thước bằng Pixel
+ Từ kết quả Pixel tính được ta sẽ triển khai tính ra chiều cao thực tế của cá
Trang 183.2.2 Xây dựng mô hình xử lí ảnh cho cá
Hình 3 8 Xây dựng mô hình xử lí ảnh cho cá
- Xử lí ảnh cho cá bao gồm:
+ Hình ảnh được chụp lại và lưu về máy và upload để bắt đầu xử lí
+ Chuyển đổi ảnh sang dạng nhị phân và quét để lấy mảng tính chiều cao và chiều cao pixel của cá là lấy viền dưới cá trừ cho viền trên cá
Trang 19+ Thực hiện tính toán để chọn vùng cần quét
+ Từ Pixel tính được của thước đo thì ta tiếp tục triển khai vào tính Pixel cho cá và suy
ra chiều cao cá bằng đơn vị milimet
Trang 203.2.3 Xây dựng mô hình Google Sheet và bảng tính cập nhật kết quả
a Xây dựng mô hình Google Sheet trên Node-Red
Hình 3 9 Xây dựng mô hình Google Sheet trên Node-Red
Trang 21+ Dựa vào giá trị cài đặt nếu giá trị đạt ngưỡng nào thì sẽ di chuyển đến nút Gsheet và update dữ liệu lên Google Sheet.
b Xây dựng Google Sheet trên Web
Hình 3 10 Xây dựng Google Sheet trên Web
- Đây là hệ thống cập nhật sau khi xử lí ảnh để ta tổng kết và thu thập dữ liệu để chọn lọc cá phù hợp
Trang 22CHƯƠNG 4 GIẢI THUẬT VÀ ĐIỀU KHIỂN 4.1 Nguyên lí làm việc của hệ thống
- Upload hình ảnh thước đo chuẩn lên hệ thống để bắt đầu thực hiện xử lí ảnh
+ Dùng các nút xử lí ảnh để đưa từ ảnh gốc sang ảnh nhị phân sau đó bắt đầu quét cột
để đưa các giá trị vào mảng
+ Từ mảng ta thực hiện tính toán bằng nút Function để đưa ra được kết quả
+ Và từ kết quả đó ta sẽ thu được khoảng pixel của 1 milimet và hiển thị ở cửa sổ Debug
- Từ kết quả pixel trên 1 milimet tính được của thước đo thì ta sẽ tiếp tục thực hiện khâu xử ảnh cho cá tương tự với thước đo
+ Dùng các nút xử lí ảnh để đưa từ ảnh gốc sang ảnh nhị phân sau đó bắt đầu quét cột
để đưa các giá trị vào mảng
+ Từ mảng đó ta tính toán lấy được pixel cho chiều cao của cá
+ Sau đó ta lấy số pixel của cá chia cho số pixel của thước đo thì sẽ thu được số milimet thực tế của cá
- Kết quả của cá khi qua xử lí ảnh sẽ hiển thị ở cửa sổ Debug
- Từ kết quả đó sẽ đi qua bước chọn lọc nếu cá đạt đủ kích thước yêu cầu thì sẽ cập nhật vào ô “ Cá đạt yêu cầu” trên Google Sheet bao gồm tên cá, số milimet cá và thời gian kiểm tra
- Ngược lại nếu cá không đạt chuẩn thì sẽ cập nhật vào ô “Cá không đạt yêu cầu”
Trang 23CHƯƠNG 5 THỰC NGHIỆM 5.1 Các bước tiến hành thực nghiệm
- Bước 1: Nhập cơ sở dữ liệu thước đo cho hệ thống
- Bước 2: Hệ thống sẽ lấy cở sở dữ liệu đó và bắt đầu thực hiện xử lí ảnh
- Bước 3: Thu thập thông tin pixel của ảnh thước đo đã được xử lí và đến bước tính toán chiều cao thực tế cho cá
-Bước 4: Tiếp tục nhập cơ sở dữ liệu ảnh của cá cần đo kích thước lên hệ thống để xử líảnh
- Bước 5: Hệ thống sẽ thực hiện xử lí ảnh lấy được số đo pixel chiều cao của cá và từ
số pixel trên 1mm của thước đo và thực hiện tính toán chiều cao thực tế của cá
- Bước 6: Lấy kết quả vừa tính được di chuyển đến khâu so sánh để update data lên Google Sheet
- Bước 7: Cập nhật dữ liệu thu được lên Google Sheet
5.2 Kết quả thực nghiệm
- Bước 1: Nhập cơ sở dữ liệu thước đo cho hệ thống
Trang 24Hình 5 1 Nhập cơ sở dữ liệu thước đo
- Bước 2: Hệ thống sẽ lấy cở sở dữ liệu đó và bắt đầu thực hiện xử lí ảnh
Trang 26Hình 5 4 Kết quả thu được sau khi quét vị trí và đưa vào mảng
Hình 5 5 Kết quả thu được như mong muốn
-Bước 4: Tiếp tục nhập cơ sở dữ liệu ảnh của cá cần đo kích thước lên hệ thống để xử líảnh
Trang 27Hình 5 6 Nhập cơ sở dữ liệu cho cá
- Bước 5: Hệ thống sẽ thực hiện xử lí ảnh lấy được số đo pixel chiều cao của cá và từ
số pixel trên 1mm của thước đo và thực hiện tính toán chiều cao thực tế của cá
Hình 5 7 Thực hiện xử lí ảnh cho cá
Trang 28Hình 5 8 Nạp lệnh vào nút Function để quét vị trí cần đưa vào mảng tính toán
Hình 5 9 Kết quả thu được sau khi thực hiện xử lí ảnh
Trang 29Hình 5 10 Tạo mảng để tính toán số đo thực tế của cá
Hình 5 11 Kết quả thực tế của cá
- Bước 6: Lấy kết quả vừa tính được di chuyển đến khâu so sánh để update data lên Google Sheet
Hình 5 12 Tách lấy số và kí tự để thực hiện so sánh
Trang 30Hình 5 13 Thực hiện so sánh và di chuyển dữ liệu
Hình 5 14 Cài đặt chuẩn mong muốn cho cá
- Bước 7: Cập nhật dữ liệu thu được lên Google Sheet
Trang 31Hình 5 15 Chọn vùng để cập nhật dữ liệu lên hệ thống
Hình 5 16 Các dữ liệu được cập nhật tự động lên hệ thống
Trang 32CHƯƠNG 6 KẾT LUẬN 6.1 Ưu điểm
- Chi phí thiết kế rất rẻ tiết kiệm vốn đầu tư vào chăn nuôi
- Độ chính xác tương đối cao so với mắt thường
- Tốc độ xử lí ảnh và đưa ra kết quả cập nhật lên Google Sheet chỉ tầm 10 giây
- Giúp giảm thiểu thời gian dùng thước đo rồi ghi chép xong nhập tay và Excel hoặc Google Sheet
- Có thể xử lí từ xa chỉ cần liên lạc qua Internet
- Giảm được nhân công laoo động sẽ tiết kiệm kinh phí để đầu tư nhiều hơn vào thức
ăn chăn nuôi
6.2 Nhược điểm
- Có thể nhiễu hình ảnh do tác động môi trường làm cho khâu xử lí khó khăn hơn
- Phải đảm bảo nguồn điện liên tục
- Khu vực làm việc phải có Internet
6.3 Hướng phát triển
- Sử dụng mảng 2 chiều để đo toàn bộ kích thước của cá
- Sử dụng Esp32 Cam để chụp ảnh và tự động xử lí ảnh
- Áp dụng vào các mô hình chăn nuôi lớn hơn
- Xử lí ảnh cho động vật,gia cầm,thủy hải sản
Trang 33TÀI LIỆU THAM KHẢO Tiếng Việt