Engineering Document Template ĐỒ ÁN TỐT NGHIỆP Trang A 1 THIẾT KẾ HỆ THỐNG XỬ LÝ ẢNH ĐO KÍCH THƯỚC FULL CODE MỤC LỤC DANH MỤC HÌNH VẼ ix DANH MỤC CÁC CHỮ VIẾT TẮT x CHƯƠNG 1 GIỚI THIỆU ĐỀ TÀI 11 1 1 Mục đích thực hiện đề tài 11 1 2 Yêu cầu của đề tài 11 1 3 Ý tưởng và phương pháp thực hiện 11 CHƯƠNG 2 CƠ SỞ LÝ THUYẾT 11 2 1 Tìm hiểu về Node RED 11 2 2 Cài đặt Node RED 12 2 2 1 Tải và cài đặt Node js 12 2 2 2 Cài đặt Node RED 13 2 3 Giao diện của Node RED 14 2 4 Tìm hiểu Module hỗ trợ xử lý ảnh t.
Trang 1THIẾT KẾ HỆ THỐNG XỬ LÝ ẢNH ĐO
KÍCH THƯỚC FULL CODE
Trang 2DANH MỤC CÁC CHỮ VIẾT TẮT X
CHƯƠNG 1 GIỚI THIỆU ĐỀ TÀI 11
1.1 MỤC ĐÍCH THỰC HIỆN ĐỀ TÀI 11
1.2 YÊU CẦU CỦA ĐỀ TÀI 11
1.3 Ý TƯỞNG VÀ PHƯƠNG PHÁP THỰC HIỆN 11
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT 11
2.1 TÌM HIỂU VỀ NODE-RED 11
2.2 CÀI ĐẶT NODE-RED 12
2.2.1 Tải và cài đặt Node.js 12
2.2.2 Cài đặt Node-RED 13
2.3 GIAO DIỆN CỦA NODE-RED 14
2.4 TÌM HIỂU MODULE HỖ TRỢ XỬ LÝ ẢNH TRÊN NODE-RED 14
2.4.1 Tên Module 14
2.4.2 Cách cài đặt thứ nhất 14
2.5 TỔNG QUAN VỀ CÁC NODE CƠ BẢN DÙNG TRONG ĐỒ ÁN 15
2.5.1 Node: inject 15
2.5.2 Node: debug 15
2.5.3 Node: function 16
2.5.4 Node: change 16
2.5.5 Node: image 16
2.5.6 Node: greyscale 16
2.5.7 Node: convolute 16
2.5.8 Node: viewer 17
2.5.9 Node: composite 18
2.5.10 Node: threshold 18
Trang 33.1 TIỀN XỬ LÝ ẢNH 21
3.2 XỬ LÝ PIXEL 23
3.2.1 Lấy giá trị pixel 23
3.2.2 Tính giá trị dài 1 pixel 24
3.2.3 Tính kích thước vật 25
CHƯƠNG 4 KẾT QUẢ MÔ PHỎNG 26
4.1 KẾT QUẢ XÂY DỤNG CHƯƠNG TRÌNH 26
4.2 KẾT QUẢ 26
4.3 SO SÁNH VỚI KÍCH THƯỚC THỰC TẾ 27
CHƯƠNG 5 KẾT LUẬN 28
5.1 KẾT LUẬN 28
5.1.1 Ưu điểm 28
5.1.2 Nhược điểm 28
5.2 HƯỚNG PHÁT TRIỂN 28
TÀI LIỆU THAM KHẢO 29
Trang 4Hình 2-2 Chạy Node-RED 17
Hình 2-3 Giao diện Node-RED 18
Hình 2-4 Cách cài đặt module 19
Hình 2-5 Node inject 19
Hình 2-6 Node debug 19
Hình 2-7 Node function 20
Hình 2-8 Node change 20
Hình 2-9 Node image 20
Hình 2-10 Node greyscale 20
Hình 2-11 Node convolute 20
Hình 2-12 Thông số node convolute 21
Hình 2-13 Node viewer 21
Hình 2-14 Node composite 22
Hình 2-15 Thông số node composite 22
Hình 2-16 Node threshold 23
Hình 2-17 Phương pháp tính tích chập 24
Hình 3-1 Các bước tiền xử lý ảnh 25
Hình 3-2 Kết quả sau tiền xử lý ảnh 26
Hình 3-3 Hàm lấy pixel cần thiết 27
Hình 3-4 Kết quả lấy pixel 28
Hình 3-5 Hàm tính giá trị dài 1 pixel 28
Hình 3-6 Hàm tính kích thước vật 29
Hình 4-1 Kết quả xây dựng hệ thống 30
Hình 4-2 Ảnh thực tế 31
Trang 5IoT Internet of Things
API Application Programming Interface
Trang 6CHƯƠNG 1 GIỚI THIỆU ĐỀ TÀI
1.1 Mục đích thực hiện đề tài
- Trong thời đại công nghệ 4.0 hiện nay thì các công việc thủ công dần được
thay thế bằng máy móc, các công cụ đo dạt vật lí cũng dần được thay thếbằng các công cụ điện tử có công nghệ cao
- Đề tài này sẽ nghiên cứu nguyên lý hoạt động và cách tạo lập một bộ xử lý
ảnh đo kích thước bằng Node-RED
1.2 Yêu cầu của đề tài
- Tìm hiểu kiến thức về Node-RED
- Tìm hiểu về các thư viện giúp xử lý ảnh trong Node-RED
- Tìm hiểu về các thuật tóan bổ trợ xử lý ảnh
1.3 Ý tưởng và phương pháp thực hiện
- Chụp và đưa ảnh vật cùng với thước thẳng lên Node-RED
- Tách biên vật để xác định pixel
- Xác định pixel dọc theo chiều dài vật và thước
- Áp dụng thuật toán để tính toán kích thước
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT
1.4 Tìm hiểu về 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ác dị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ế cho IoT, nhưng cũng có thể được sử dụng cho các ứng dụng khác nhằm liê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ủa IBM 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
Trang 7- 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
1.5 Cài đặt Node-RED
1.1.1 Tải và cài đặt Node.js
- Để download Node.js truy cập vào địa chỉ:
https://nodejs.org/en/download/
- Sau đó tiến hành cài đặt như bình thường Sau khi cài đặt xong thì chúng ta
mở cửa số Command Line để thực thi lệnh node -v và npm -v Nếu hết quả
trả về như hình thì là thành công
Hình 2-1 Kiểm tra cài đặt Node.js
1.1.2 Cài đặt Node-RED
- Đầu tiên, mở cửa sổ Command Line bằng tổ hợp phím Wn + R, sau đó nhập
cmd và nhấn OK Sau đó chạy lệnh
npm install -g –unsafe-perm Node-RED
Trang 8- Sau khi cài đặt xong, chạy lệnh Node-RED bạn sẽ thấy một địa chỉ IP như
hình dưới Sao chép đường dẫn vào trình duyệt web để truy cập vào RED
Node-Hình 2-2 Chạy Node-RED
1.6 Giao diện của Node-RED
Trang 9Hình 2-3 Giao diện Node-RED
- Khu vực bao gồm các node là khu vực chứa các node dùng để kéo thả ra khu
vực làm việc để kết nối với nhau tạo thành một chương trình hoàn chỉnh
- Khu vực làm việc là một khu vực trống nhằm để chứa các node, thực hiện
chương trình, hiển thị, …
- Nút Deploy là nút có tác dụng biên dịch, chạy chương trình
- Khu vực Sidebar Tag bao gồm các tag: Help, Debug messages, Information,
Dashboard, Configuration nodes, Context Data
1.7 Tìm hiểu Module hỗ trợ xử lý ảnh trên Node-RED
Trang 11- Dùng để chuyển hình ảnh lên Node-RED, hỗ trợ nhiều kiểu ảnh đường dẫn
khác nhau (jimp object, file/URL/base64 string, buffer)
Trang 12Hình 2-12 Thông số node convolute
- Thông số </> kernel: chọn {}JSON sau đó nhập ma trận cần nhân tích chập
vào ảnh
1.1.12 Node: viewer
Hình 2-13 Node viewer
- Dùng để hiển thị hình ảnh trên không gian làm việc của Node-RED, giúp
người sử dụng có thể dẽ dàng quan sát được ảnh đang xử lý
1.1.13 Node: composite
Trang 13Hình 2-14 Node composite
- Dùng để ghép 2 ảnh lại với nhau tại một điểm người dùng chọn
Hình 2-15 Thông số node composite
- Thông số </>src: là ảnh nguồn đưa vào để gộp với ảnh gốc
- Thông số </>x: vị trí cắt ảnh nguồn để gộp theo chiều rộng
- Thông số </>y: vị trí cắt ảnh nguồn để gộp theo chiều cao
- Thông số </>opacitySource: độ mờ của ảnh nguồn (từ 0.0 đến 1.0)
- Thông số </>opacityDest: độ mờ của ảnh gốc (từ 0.0 đến 1.0)
1.1.14 Node: threshold
Hình 2-16 Node threshold
- Phân loại ảnh theo ngưỡng giá trị pixel do người dùng chọn
1.9 Lí thuyết về ngưỡng
Trang 14- Ngưỡng là một số nằm trong khoảng từ 0 đến 255 Giá trị ngưỡng sẽ chia giá
trị độ xám của ảnh thành 2 miền riêng biệt Miền thứ nhất là miền tập hợpcác điểm ảnh có giá trị nhỏ hơn giá trị ngưỡng Miền thứ hai là miền tập hợpcác điểm ảnh có giá trị bằng hoặc lớn hơn giá trị ngưỡng
1.10 Lí thuyết về nhân tích chập
- Phép chập là một một phép toán tuyến tính, cho ra kết quả là một hàm dựa
vào hai hàm có sẵn Dược xác định theo công thức:
- Thành phần không thể thiếu của phép tích chập là ma trận kernel Điểm neo
(anchor point) của kernel sẽ quyết định vùng ma trận tương ứng trên ảnh đểtích chập, thông thường anchor point được chọn là tâm của kernel Giá trịmỗi phần tử trên kernel được xem như là hệ số tổ hợp với lần lượt từng giátrị độ xám của điểm ảnh trong vùng tương ứng với kernel
- Phép tích chập được hình dung thực hiện bằng việc dịch chuyển ma
trận kernel lần lượt qua tất cả các điểm ảnh trong ảnh, bắt đầu từ góc bên tráitrên của ảnh Và đặt anchor point tương ứng tại điểm ảnh đang xét Ở mỗilần dịch chuyển, thực hiện tính toán kết quả mới cho điểm ảnh đang xét bằngcông thức tích chập ở trên
Hình 2-17 Phương pháp tính tích chập
1.11 Lọc biên ảnh
Trang 15- Ta dùng kĩ thuật Sobel và prewitt, dùng 2 mặt nạ Một ma trận để lọc hàng,
CHƯƠNG 3 GIẢI PHÁP THỰC HIỆN
- Để giải quyết bài toán đo khoảng cách thì đầu tiên ta sẽ đưa ảnh bao gồm
một cây thước cùng với vật vào Node-RED Sau đó ta sẽ chuyển ảnh màuthành ảnh xám sau đó nhân chập với ma trận Prewitt để lấy ra biên ảnh Tiếptheo chúng ta sẽ xử lý lấy ngưỡng ảnh để làm rõ các điểm ảnh của thước vàvật Sau khi làm rõ được các điểm ảnh của thước và vật thì ta sẽ xác định vịtrí một điểm ảnh có giá trị 255 theo chiều cao ảnh lần lượt nằm trên các vạch
kẻ chia cm của thước để tính được giá trị dài của một điểm ảnh Tương tự tacũng xác định các điểm ảnh nằm trên biên của vật để tính được kích thướcvật dựa vào giá trị dài của một điểm ảnh đã xác định được ở trước đó
1.12 Tiền xử lý ảnh
Trang 16Hình 3-18 Các bước tiền xử lý ảnh
- Đầu tiên chúng ta sẽ chuyển đổi ảnh từ ảnh màu sang ảnh xám, tiếp theo đó
sẽ nhân tích chập lần lượt với ma trận lọc biên để được 2 ảnh lấy biên theophương ngang và phương dọc Sau đó cho 2 ảnh qua khối composite sẽ đượcảnh cuối cùng
Hình 3-19 Kết quả sau tiền xử lý ảnh
1.13 Xử lý pixel
1.1.15 Lấy giá trị pixel
Trang 17Hình 3-20 Hàm lấy pixel cần thiết
- Chương trình trên sẽ lấy được vị trí các pixel có giá trị 255 từ biên trên đến
biên dưới ảnh tại vị trí 295và 800 Tại giá trị 295 thì sẽ gióng theo dúng các vạch chia cm trên thước Còn vị trí 800 thì sẽ gióng thẳng qua chiều dài vật Các vị trí các pixel thỏa tại vị trí 295 thì sẽ được lưu vào mảng ycol sau đó được đưa lên biến msg.ycol Các vị trí các pixel thỏa tại vị trí 800 thì sẽ đượclưu vào mảng ycol1 sau dó được đưa lên biến msg.ycol1
Trang 18Hình 3-21 Kết quả lấy pixel
1.1.16 Tính giá trị dài 1 pixel
Hình 3-22 Hàm tính giá trị dài 1 pixel
- Ta sẽ lấy 20 chia cho tổng số pixel tương ứng
Trang 19- Số pixel tương ứng sẽ được tính bằng cách bỏ 3 giá trị đầu của mảng, bỏ 3
giá trị cuối của mảng Sau đó tính hiệu của phần tử cuối mảng sau khi bỏ 3phần tử trừ cho phần tử đầu mảng sau khi loại đi 3 phần tử
- Giá trị dài 1 pixel sẽ được gán cho biến msg.value
1.1.17 Tính kích thước vật
Hình 3-23 Hàm tính kích thước vật
- Để tính kích thước vật thì ta sẽ lấy tổng số pixel tương ứng với vật sau đó
nhân cho giá trị dài của 1 pixel
- Giá trị kích thước sẽ được gán cho biến msg.leng
CHƯƠNG 4 KẾT QUẢ MÔ PHỎNG
1.14 Kết quả xây dụng chương trình
Trang 20Hình 4-24 Kết quả xây dựng hệ thống
1.15 Kết quả
- Sau khi áp dụng xử lý ảnh và các hàm tính toán thì chúng ta sẽ được kết quả
kích thước vật như ảnh sau
- Giá trị dài của 1pixel sẽ xấp xỉ 0.0119617 cm
- Giá trị kích thước của vật sẽ xấp xỉ 8.61 cm
1.16 So sánh với kích thước thực tế
Trang 21Hình 4-25 Ảnh thực tế
- Ta thấy rằng kích thước thực tế của vật sẽ xấp xĩ 8.55 gần đúng với gí trị mà
chương trình tính được
Trang 22CHƯƠNG 5 KẾT LUẬN
1.17 Kết luận
1.1.18 Ưu điểm
- Hệ thống dễ xây dựng khi sử dụng Node-RED
- Thuật toán đơn giản dễ thay đổi theo mục duch1 sử dụng, hình ảnh tùy chọn
1.1.19 Nhược điểm
- Tính áp dụng còn chưa quá cao
- Cần cải thiện thêm nhiều
1.18 Hướng phát triển
- Xây dựng thêm hệ thống xác định kích thước nhiều loại vật thể khác nhau
một cách tự động hoàn toàn
- Có thể nâng cấp để thành một hệ thống đo kích thước hoàn toàn dùng xử lý
ảnh không cần bất kì công cụ đo thủ công nào
- Dùng giám sát giao thông đường bộ, …
Trang 23TÀI LIỆU THAM KHẢO
Tiếng Việt
https://dientuviet.com/node-red-la-gi/
r1vHu1
https://www.stdio.vn/computer-vision/phep-tich-chap-trong-xu-ly-anh-convolution-https://viblo.asia/p/tuan-5-gradient-and-edge-bJzKmOGwl9N
https://tieuluan.info/bi-ging-x-l-nh-i-tng-trnh i-hc-ngnh-o-to-cng-ngh-thng-tin.html?page=11