Hình được chụp từ camera

Một phần của tài liệu Hệ thống phân loại màu sắc bằng xử lý ảnh OpenCV,Python (Trang 35)

34

 Chuyển ảnh thu được sang không gian màu HSV.

hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)

Hình 3. 3: Chuyển sang không gian màu HSV

 Chọn ngưỡng cho hệ màu HSV với các màu cần phân loại Với màu đỏ

red_lower = np.array([166, 84, 144], np.uint8) red_upper = np.array([186, 255, 255], np.uint8)

Với màu vàng

yellow_lower = np.array([23, 59, 119], np.uint8) yellow_upper = np.array([54, 255, 255], np.uint8)

Với màu xanh nước biển

blue_lower = np.array([97, 100, 117], np.uint8) blue_upper = np.array([117, 255, 255], np.uint8)

 Ảnh nhị phân

35

red_mask = cv2.inRange(hsv, red_lower, red_upper)

yellow_mask = cv2.inRange(hsv, yellow_lower, yellow_upper) blue_mask = cv2.inRange(hsv, blue_lower, blue_upper)

 Lọc ra các màu được cài đặt

Hình 3. 5: Lọc ra vật màu đỏ red_mask = cv2.dilate(red_mask, kernal) red_mask = cv2.dilate(red_mask, kernal)

res_red = cv2.bitwise_and(frame, frame, mask=red_mask) yellow_mask = cv2.dilate(yellow_mask, kernal)

res_yellow = cv2.bitwise_and(frame, frame, mask=yellow_mask) blue_mask = cv2.dilate(blue_mask, kernal)

res_blue = cv2.bitwise_and(frame, frame, mask=blue_mask)

 Xác định đối tượng và dán nhãn

36

contours, hierarchy = cv2.findContours(red_mask, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)

for pic, contour in enumerate(contours): area = cv2.contourArea(contour)

if (area > 3000):

x, y, w, h = cv2.boundingRect(contour)

frame = cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 0, 255), 2)

cv2.putText(frame, "Mau Do", (x, y), cv2.FONT_HERSHEY_SIMPLEX, 1.0, (0, 0, 255))

print('Mau Do')

Arduino_serial.write('1'.encode())

contours, hierarchy = cv2.findContours(yellow_mask, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)

for pic, contour in enumerate(contours): area = cv2.contourArea(contour)

if (area > 3000):

x, y, w, h = cv2.boundingRect(contour)

frame = cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 217), 2)

cv2.putText(frame, "Mau Vang", (x, y), cv2.FONT_HERSHEY_SIMPLEX, 1.0, (0, 255, 217))

print('Mau Vang')

Arduino_serial.write('2'.encode())

contours, hierarchy = cv2.findContours(blue_mask, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)

for pic, contour in enumerate(contours): area = cv2.contourArea(contour)

37

if (area > 3000):

x, y, w, h = cv2.boundingRect(contour)

frame = cv2.rectangle(frame, (x, y), (x + w, y + h), (255, 0, 0), 2)

cv2.putText(frame, "Mau xanh", (x, y), cv2.FONT_HERSHEY_SIMPLEX, 1.0, (255, 0, 0))

print('Mau xanh')

Arduino_serial.write('3'.encode()) Arduino_serial.write('0'.encode())

 Đồng thời, ta phân loại thơng qua tín hiệu xuất hiện của đối tượng cần phân loại và gửi tín hiệu phân loại về Arduino.

Trong đó: 1 – màu đỏ 2 – màu vàng 3 – màu xanh

3.2 Tính tốn và thiết kế hệ thống cơ khi

3.2.1 Băng tải

Băng tải có nhiệm vụ dẫn sản phẩm đến dừng tại các vị trí định sẵn hoặc đưa sản phẩm về khay phân loại cuối băng tải.

- Chọn tốc độ v = 0,1 (m/s).

- Đường kính rulo D = 40 (mm), đường kính trục 10( mm).

- Khối lượng băng tải: 2,5 (kg) (bao gồm khối lượng của rulo , băng tải và phôi). - Khối lượng phơi: 0,5 (kg) .

 Tính tốn cơng suất động cơ: 𝑃𝑑𝑐 : Công suất định mức động cơ.

𝑃𝑐𝑡: Công suất đẳng trị động cơ P cần thiết P: Công suất làm việc trên trục công tác.

38 F≥ 𝐹𝑚𝑠𝑛>𝐹𝑚𝑠 Với: 𝐹𝑚𝑠= 𝐹𝑚𝑠𝑡 + 𝐹𝑚𝑠𝑙 𝐹𝑚𝑠 = 𝑚𝑝ℎô𝑖. 𝑔. 𝜇 + 𝑚𝑟𝑢𝑙𝑜. 𝑔. 𝑘 (3.2) Trong đó: - k = 1: hệ số ma sát lăn. - 𝜇 = 1: hệ số ma sát trượt. - 𝐹𝑚𝑠: lực ma sát. - 𝐹𝑚𝑠𝑡: lực ma sát trượt. - 𝐹𝑚𝑠𝑙: lực ma sát lăn. - g = 9,8 (m/s2 ): gia tốc trọng trường. Thay vào công thức (3.2) ta được:

𝐹𝑚𝑠 = 30 N (3.3) Mặt khác: 𝑃𝑐𝑡 = 𝐹.𝑣 1000 (3.4) Trong đó: - F = 𝐹𝑚𝑠 = 30 (N) - V = 0.1(m/s)

Thay vào (3.4) ta được 𝑃𝑐𝑡 = 3 (W)

Ta có: P = 𝑃𝑐𝑡

𝑁 (3.5)

Với N: Hiệu suất của hệ truyền động.=

Trong đó: N = 𝜂𝑏𝑡. 𝜂𝑜𝐼5 . 𝜂𝑘𝑛 (3.6)

Tra bảng 2.3 Trị số hiệu suất các loại bộ truyền trong cuốn “Tính tốn thiết kế Hệ dẫn động cơ khí” của Trịnh Chất - Lê Văn Uyển, ta có:

𝜂𝑏𝑡 = 0.75: Hiệu suất băng tải. 𝜂𝑜𝐼 = 0.995: Hiệu suất ổ lăn.

39 𝜂𝑘𝑛 = 0.999: Hiệu suất khớp nối.

Thay vào công thức (3.6) ta được: N = 0.73 (3.7) Với N = 0.73 và 𝑃𝑐𝑡 = 3 (W) thay vào công thức (3.5) ta được:

P = 4,2 (W)

 Xác định số vịng quay của rulơ và trục thứ cấp hộp giảm tốc: Do động cơ và rulo của băng tải được kết nối với nhau bằng khớp nối cứng nên ta có:

𝑛𝑑𝑐 = 𝑛𝑟𝑙 =60.𝑣

𝜋.𝐷 (3.8)

Trong đó:

- 𝑛𝑑𝑐: số vòng quay của động cơ. - 𝑛𝑟𝑙: số vòng quay của rulo.

Với v = 0,1 (m/s) và D = 0.04 (m) thay vào công thức (3.8) ta được: 𝑛𝑑𝑐 = 𝑛𝑟𝑙 = 48,4 (𝑣ò𝑛𝑔/𝑝ℎú𝑡)

 Xác đinh momen:

𝑀𝑟𝑙 = 𝑀𝑑𝑐 =𝐹.𝐷

2 (3.9)

Trong đó:

- 𝑀𝑟𝑙: Momen của rulo.  𝑀𝑑𝑐: Momen của động cơ.

Thay F = 30(N) và D =0,04 (m) và công thức (3.9) ta được: 𝑀𝑟𝑙 = 𝑀𝑑𝑐 = 6 (𝐾𝑔. 𝑐𝑚)

 Chọn động cơ:

𝑃𝐼𝑣𝑑𝑐 = 4,2 (𝑊) 𝑛𝑑𝑐 = 48,4 (𝑣ò𝑛𝑔/𝑝ℎú𝑡)

𝑀𝑑𝑐 = 6 (𝑘𝑔. 𝑐𝑚)

Nhóm đã chủ động tính tốn và chọn các động cơ có sẵn hộp giảm tốc được bán ngồi thị trường.

40

Hình 3. 7: Động cơ mã JM37-550 Handson Technology

 Băng tải: Chọn băng tải có chất liệu vải, chiều dày 2 (mm), rộng 60 (mm), chiều dài có thể tiến hành cắt và nối khi tiến hành chế tạo thực.

41

Hình 3. 8: Thiết kế mơ hình bằng Solidworks

3.3 Tính tốn và thiết kế hệ thống điện – điện tử.

3.3.1 Bộ điều khiển động cơ băng tải:

Thiết kế và mô phỏng kết nối giữa mạch điều khiển động cơ và động cơ DC giảm tốc của băng tải với vi điều khiển Arduino trên phần mềm fritzing, điều khiển động cơ thơng qua cơng tắc hai vị trí và hiển thị đèn báo.

42

Hình 3. 9: Bộ điều khiển động cơ băng tải

3.3.2 Cảm biến đếm số lượng và servo phân loại phôi theo màu sắc:

Thiết kế và mô phỏng sự kết nối giữa động cơ DC servo sử dụng nguồn 6V hạ áp từ nguồn 24V và cảm biến hồng ngoại phát hiện vật với Arduino.

Hình 3. 10: Cảm biến đếm số lượng và servo phân loại phôi theo màu sắc 3.3.3 Nút dừng khẩn cấp: 3.3.3 Nút dừng khẩn cấp:

43

Hình 3. 11: Nút dừng khẩn cấp 3.3.4 Cấp nguồn Arduino: 3.3.4 Cấp nguồn Arduino:

Sử dụng nguồn 8V hạ áp từ nguồn 24V cấp từ bộ nguồn 24v – 5a.

Hình 3. 12: Cấp nguồn Arduino 3.3.5 LCD: 3.3.5 LCD:

Hiện thị số lượng sản phẩm đếm được theo màu sắc bằng cảm biến hồng ngoại.

44

3.3.6 Reset:

Đặt lại bộ đếm số lượng như ban đầu của hệ thống.

Hình 3. 14: Reset

3.4 Xây dựng chương trình điều khiển

 Lưu đồ thuật toán điều khiển

45

 Chương trình điều khiển được xây dựng trên phần mềm Arduino IDE

46

 Thực hiện mô phỏng chương trình trên phần mềm Proteus 8

47

CHƯƠNG 4: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN. 4.1 Kết Luận: 4.1 Kết Luận:

4.1.1 Kết quả đạt được

 Lập trình điều khiển trên phần mềm Arduino IDE.

 Lập trình xử lý ảnh trên phần mềm Pycharm sử dụng ngôn ngữ python.  Mô phỏng được trên phần mềm Proteus 8.

 Thiết kế được mơ hình trên phần mềm Solidwork 2018.  Nhận dạng màu sắc qua camera hoạt động tốt.

4.1.2 Hạn chế

Mặc dù đã cố gắng thực hiện tốt đề tài, nhưng nhóm còn gặp một số hạn chế sau:  Quá trình nhận dạng mới chỉ dừng lại ở nhận diện màu sắc.

 Do nhận dạng bằng camera nên sẽ ít nhiều cịn bị phụ thuộc ánh sáng môi trường.

 Xử dụng camera không chuyên dụng nên hình ảnh cịn nhiễu.

4.2 Hướng phát triển:

Từ kết quả đạt được và hạn chế, em có một số đề xuất cho hướng phát triển mơ hình sau này:

 Phát triển hệ thống thêm nhận diện hình dạng đối tượng.  Sử dụng thêm chức năng quét mã QR CODE.

48

TÀI LIỆU THAM KHẢO

1. Tác giả: Lê Văn Uyển, Trịnh Chất. Tính tốn thiết kế hệ dẫn động cơ khí ( Tập 1,2) của Nhà xuất bản giáo dục.

2. Giáo trình mơn học xử lý ảnh Đại học Thái Nguyên Khoa Công Nghệ Thông tin.

3. TS. Hồ Văn Sung, Xử lý ảnh số - Lý thuyết và thực hành với Matlab (2009), Nhà xuất bản Khoa học và Kỹ thuật.

4. PGS. TS Nguyễn Quang Hoan, Giáo trình Xử lý ảnh (Năm 2006), Học viện Cơng nghệ Bưu chính Viễn thơng.

Một phần của tài liệu Hệ thống phân loại màu sắc bằng xử lý ảnh OpenCV,Python (Trang 35)

Tải bản đầy đủ (PDF)

(50 trang)