Đồ án Thiết kế và thi công hệ thống phân loại sản phẩm bút chì theo màu sắc

BỘ GIÁO DỤC & ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP. HỒ CHÍ MINH KHOA ĐIỆN – ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH --------------------------------- ĐỒ ÁN TỐT NGHIỆP NGÀNH CÔNG NGHỆ KỸ THUẬT ĐIỆN TỬ TRUYỀN THÔNG ĐỀ TÀI: THIẾT KẾ VÀ THI CÔNG HỆ THỐNG PHÂN LOẠI SẢN PHẨM BÚT CHÌ THEO MÀU SẮC GVHD: PGS.TS. Nguyễn Thanh Hải SVTH: Trần Văn Tuấn MSSV: 13141414 SVTH: Phạm Văn Long MSSV: 13141171 Tp. Hồ Chí Minh – 1/2020 BỘ GIÁO DỤC & ĐÀO TẠO

pdf93 trang | Chia sẻ: huong20 | Ngày: 13/01/2022 | Lượt xem: 278 | Lượt tải: 0download
Tóm tắt tài liệu Đồ án Thiết kế và thi công hệ thống phân loại sản phẩm bút chì theo màu sắc, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP. HỒ CHÍ MINH KHOA ĐIỆN – ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH --------------------------------- ĐỒ ÁN TỐT NGHIỆP NGÀNH KỸ THUẬT ĐIỆN TỬ TRUYỀN THÔNG ĐỀ TÀI: THIẾT KẾ VÀ THI CÔNG HỆ THỐNG PHÂN LOẠI SẢN PHẨM BÚT CHÌ THEO MÀU SẮC GVHD: PGS.TS. Nguyễn Thanh Hải SVTH: Trần Văn Tuấn MSSV: 13141414 SVTH: Phạm Văn Long MSSV: 13141171 Tp. Hồ Chí Minh - 12/2019 TRƯỜNG ĐH SPKT TP. HỒ CHÍ MINH CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM KHOA ĐIỆN-ĐIỆN TỬ ĐỘC LẬP - TỰ DO - HẠNH PHÚC BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH ----o0o---- Tp. HCM, ngày 18 tháng 12 năm 2019 NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP Họ tên sinh viên: Trần Văn Tuấn MSSV: 13141414 Phạm Văn Long MSSV: 13141171 Chuyên ngành: Kỹ thuật Điện - Điện tử Mã ngành: 01 Hệ đào tạo: Đại học chính quy Mã hệ: 1 Khóa: 2013 Lớp: 13141DT1A I. TÊN ĐỀ TÀI: THIẾT KẾ VÀ THI CÔNG HỆ THỐNG PHÂN LOẠI SẢN PHẨM BÚT CHÌ THEO MÀU SẮC II. NHIỆM VỤ 1. Các số liệu ban đầu: - Kích thước băng tải 1: chiều dài 30cm, chiều rộng 20cm, chiều cao 25cm. - Kích thước băng tải 2: chiều dài 100cm, chiều rộng 20cm, chiều cao 20cm. - Webcam Logitech C270p đóng vai trò thu nhận ảnh đầu vào. - Board Arduino Uno R3 là bộ điều khiển trung tâm của mô hình. - Dùng động cơ Servo 5V để gạt sản phẩm. - Động cơ DC 12V điều khiển kéo băng tải. 2. Nội dung thực hiện: - Nghiên cứu, tìm hiểu Webcam Logitech C270p. - Nghiên cứu, tìm hiểu động cơ Servo và board Arduino Uno R3. - Nghiên cứu, tìm hiểu phần mềm lập trình Matlab. - Nghiên cứu, tìm hiểu các thuật toán và các hàm, các không gian màu áp dụng cho việc xử lý màu sắc. - Viết code chương trình Matlab xử lý ảnh, màu sắc. - Xây dựng chương trình điều khiển mô hình giao tiếp giữa Matlab và Arduino. - Thiết kế, xây dựng phần cứng của mô hình. - Chạy thử nghiệm, cân chỉnh và sửa lỗi mô hình. - Viết báo cáo luận văn. - Báo cáo đề tài tốt nghiệp. ii III. NGÀY GIAO NHIỆM VỤ: 07/10/2019 IV. NGÀY HOÀN THÀNH NHIỆM VỤ: 18/12/2020 V. HỌ VÀ TÊN CÁN BỘ HƯỚNG DẪN: PGS.TS. Nguyễn Thanh Hải CÁN BỘ HƯỚNG DẪN BM. ĐIỆN TỬ CÔNG NGHIỆP – Y SINH iii TRƯỜNG ĐH SPKT TP. HỒ CHÍ MINH CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM KHOA ĐIỆN-ĐIỆN TỬ ĐỘC LẬP - TỰ DO - HẠNH PHÚC BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH ----o0o---- Tp. HCM, ngày 18 tháng 12 năm 2019 LỊCH TRÌNH THỰC HIỆN ĐỒ ÁN TỐT NGHIỆP Họ tên sinh viên 1: Trần Văn Tuấn Lớp: 13141DT1A MSSV: 13141414 Họ tên sinh viên 2: Phạm Văn Long Lớp: 13141DT1A MSSV: 13141171 Tên đề tài: THIẾT KẾ VÀ THI CÔNG HỆ THỐNG PHÂN LOẠI SẢN PHẨM BÚT CHÌ THEO MÀU SẮC Xác nhận Tuần/ngày Nội dung GVHD Tuần 1 - Gặp GVHD nhận đề tài. Từ 7/10/2019 - Viết đề cương chi tiết. đến 13/10/2019 Tuần 2 - Tìm hiểu và tham khảo các đề tài đã nghiên cứu có liên Từ 14/10/2019 quan đến điều khiển, giám sát và xử lý hình ảnh dùng đến 20/10/2019 Arduino và Matlab. Tuần 3 - Gặp và báo cáo với GVHD về hướng thực hiện đề tài. Từ 21/10/2019 - Tìm hiểu và cài đặt ngôn ngữ lập trình Matlab cho máy đến 27/10/2019 tính. Tuần 4 - Tìm hiểu vi điều khiển Arduino Uno R3. Từ 28/10/2019 - Tìm hiểu động cơ, webcam phục vụ cho đề tài. đến 3/11/2019 Tuần 5 - Cài đặt driver cho webcam và cài đặt Arduino cho Từ 4/11/2019 Matlab. đến 10/11/2019 - Kết nối Arduino và webcam với Matlab. - Kết nối Arduino với động cơ, servo. Tuần 6 - Báo cáo tiến độ cho GVHD. Từ 11/11/2019 - Viết chương trình trên Matlab phân tích và xử lý màu đến 17/11/2019 sắc. - Chạy mô phỏng kết quả trên máy tính. iv Tuần 7 - Báo cáo tiến độ cho GVHD. Từ 18/11/2019 - Viết chương trình điều khiển động cơ trên MatLab. đến 24/11/2019 - Chạy mô phỏng, kiểm tra hoạt động của cảm biến và động cơ. Tuần 8 - Báo cáo tiến độ cho GVHD. Từ 25/11/2019 - Lắp ráp các khối điều khiển vào mô hình. đến 1/12/2019 - Viết chương trình toàn bộ hệ thống và kiểm tra lỗi. Tuần 9 - Báo cáo tiến độ cho GVHD. Từ 2/12/2019 - Chạy thử nghiệm và cân chỉnh các khối điều khiển trên đến 8/12/2019 mô hình. Tuần 10 - Báo cáo tiến độ cho GVHD. Từ 9/12/2019 - Hoàn thành mô hình. đến 15/12/2019 Tuần 11 - Báo cáo tiến độ cho GVHD. Từ 16/12/2019 - Viết báo cáo luận văn. đến 22/12/2019 Tuần 12 - Hoàn thiện báo cáo, chuẩn bị gặp GVPB và bảo vệ. Từ 23/12/2019 đến 29/12/2019 GV HƯỚNG DẪN (Ký và ghi rõ họ và tên) v LỜI CAM ĐOAN Đề tài này là do chúng em tự thực hiện dựa vào một số tài liệu và công trình nghiên cứu, không sao chép từ tài liệu hay công trình đã có trước đó. Nếu có sao chép chúng em hoàn toàn chịu trách nhiệm. Sinh viên thực hiện đề tài Trần Văn Tuấn Phạm Văn Long vi LỜI CẢM ƠN Tục ngữ có câu “Uống nước nhớ nguồn, ăn quả nhớ người trồng cây”. Trên thực tế không có sự thành công nào mà không gắn liền với những sự hỗ trợ dù ít hay nhiều, dù gián tiếp hay trực tiếp. Trong quá trình thực hiện đề tài tốt nghiệp chúng em gặp phải những rào cản khó khăn cũng như hạn chế về kiến thức và đã được Thầy PGS.TS. Nguyễn Thanh Hải hướng dẫn tận tình, chu đáo. Vì thế, trong lời đầu tiên của quyển báo cáo đồ án tốt nghiệp này, chúng em xin dành lời cảm ơn chân thành sâu sắc nhất đến Thầy PGS.TS. Nguyễn Thanh Hải và các Thầy Cô trong bộ môn Điện Tử Công Nghiệp – Y Sinh của Trường Đại Học Sư Phạm Kỹ Thuật Thành Phố Hồ Chí Minh, cũng như dành lời cảm ơn đến cha mẹ, gia đình đã luôn động viên, hỗ trợ để chúng em có thể hoàn thành tốt đồ án này. Với kiến thức và kinh nghiệm còn hạn chế, bài báo cáo của chúng em chắc chắn không thể tránh khỏi những sai sót. Chúng em rất mong nhận được sự chỉ bảo và những đóng góp quý báu của quý Thầy Cô để chúng em có điều kiện bổ sung, hoàn thiện đề tài hơn. Một lần nữa, chúng em xin chân thành cảm ơn! Sinh viên thực hiện đề tài Trần Văn Tuấn Phạm Văn Long vii MỤC LỤC Trang bìa ........................................................................................................................ i Nhiệm vụ đồ án ............................................................................................................. ii Lịch trình ...................................................................................................................... iv Cam đoan ..................................................................................................................... vi Lời cảm ơn .................................................................................................................. vii Mục lục ...................................................................................................................... viii Liệt kê hình vẽ ............................................................................................................. xi Liệt kê bảng ............................................................................................................... xiv Tóm tắt ....................................................................................................................... xv CHƯƠNG 1. TỔNG QUAN ...................................................................................... 1 1.1 Đặt vấn đề ........................................................................................................... 1 1.2 Mục tiêu .............................................................................................................. 2 1.3 Nội dung nghiên cứu ........................................................................................... 2 1.4 Giới hạn của đề tài .............................................................................................. 3 1.5 Bố cục ................................................................................................................. 3 CHƯƠNG 2. CƠ SỞ LÝ THUYẾT .......................................................................... 4 2.1 Giới thiệu về xử lý ảnh ....................................................................................... 4 2.1.1 Thu nhận ảnh ................................................................................................... 4 2.1.2 Tiền xử lý ảnh .................................................................................................. 5 2.1.3 Phân đoạn ảnh ................................................................................................. 6 2.1.4 Biểu diễn và mô tả ảnh .................................................................................... 6 2.1.5 Nhận dạng và nội suy ...................................................................................... 7 2.2 Không gian màu của ảnh .................................................................................... 7 2.2.1 Không gian màu RGB ..................................................................................... 7 viii 2.2.2 Không gian màu HSV ..................................................................................... 9 2.2.3 Chuyển đổi RGB sang HSV .......................................................................... 10 CHƯƠNG 3. TÍNH TOÁN VÀ THIẾT KẾ. .......................................................... 11 3.1 Thiết kế phần cứng ............................................................................................ 12 3.1.1 Khối nguồn ..................................................................................................... 12 3.1.2 Khối thu nhận ảnh .......................................................................................... 13 3.1.3 Khối điều khiển .............................................................................................. 13 3.1.4 Khối thực thi .................................................................................................. 15 3.2 Phần mềm xử lý ảnh .......................................................................................... 17 3.2.1 Kết nối Webcam với Matlab .......................................................................... 18 3.2.2 Kết nối Arduino với Matlab ........................................................................... 19 3.3 Phương pháp xác định màu của bút chì ............................................................ 19 3.3.1 Bộ lọc trung bình............................................................................................ 20 3.3.2 Chuyển đổi RGB sang HSV .......................................................................... 21 3.3.3 Phân ngưỡng .................................................................................................. 21 3.3.4 Xác định màu bút chì ..................................................................................... 23 3.4 Sơ đồ kết nối hệ thống ...................................................................................... 23 3.5 Nguyên lý hoạt động ......................................................................................... 24 CHƯƠNG 4. THI CÔNG HỆ THỐNG ................................................................ 26 4.1 Thi công hệ thống ............................................................................................... 26 4.2 Lập trình hệ thống ............................................................................................... 30 4.2.1 Lưu đồ giải thuật mô phỏng ............................................................................ 30 4.2.2 Lưu đồ giải thuật hệ thống ............................................................................... 31 4.2.3 Lưu đồ giải thuật xác định màu sắc ................................................................. 32 4.3 Tài liệu hướng dẫn sử dụng, thao tác ................................................................. 34 ix CHƯƠNG 5. KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ ........................................... 37 5.1 Thu thập dữ liệu ảnh ........................................................................................... 37 5.2 Kết quả quá trình thực hiện đề tài ....................................................................... 38 5.2.1 Kết quả tính toán thời gian thu nhận ảnh ......................................................... 38 5.2.2 Kết quả xử lý màu sắc ..................................................................................... 38 5.2.3 Kết quả xử lý trên mô hình .............................................................................. 40 5.2.4 Kết quả thống kê .............................................................................................. 43 5.3 Nhận xét và đánh giá chung ............................................................................... 44 CHƯƠNG 6. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN. ..................................... 45 6.1 Kết luận ............................................................................................................... 45 6.2 Hướng phát triển ................................................................................................. 45 TÀI LIỆU THAM KHẢO PHỤ LỤC ......................................................................................................... xvi x LIỆT KÊ HÌNH VẼ Hình Trang Hình 2.1: Các giai đoạn chính trong xử lý ảnh ............................................................. 4 Hình 2.2: Cách thức nhân chập điểm ảnh với cửa sổ lọc .............................................. 5 Hình 2.3: Không gian màu RGB ................................................................................... 8 Hình 2.4: Hệ tọa độ màu RGB ...................................................................................... 8 Hình 2.5: Không gian màu HSV ................................................................................... 9 Hình 3.1: Sơ đồ khối của hệ thống phân loại bút chì .................................................... 11 Hình 3.2: Nguồn Adapter 12V ...................................................................................... 12 Hình 3.3: Webcam Logitech C270p ............................................................................. 13 Hình 3.4: Mặt trước và sau của board Arduino UNO R3 ............................................. 14 Hình 3.5: Động cơ DC .................................................................................................. 15 Hình 3.6: Động cơ RC Servo S3003 ............................................................................. 16 Hình 3.7: Module 2 Relay ............................................................................................. 17 Hình 3.8: Giao diện chính của Matlab .......................................................................... 18 Hình 3.9: Cửa sổ Command Window của Matlab khi gõ lệnh webcamlist .................. 18 Hình 3.10: Cửa sổ Command Window của Matlab khi gõ lệnh arduino ...................... 19 Hình 3.11: Sơ đồ khối xác định màu của bút chì .......................................................... 19 Hình 3.12: Sơ đồ hoạt động của bộ lọc trung bình ....................................................... 20 Hình 3.13a: Ảnh RGB gốc của bút chì ......................................................................... 20 Hình 3.13b: Ảnh RGB đã qua bộ lọc trung bình của bút chì ........................................ 20 Hình 3.14: Sơ đồ hoạt động bộ chuyển đổi RGB sang HSV ........................................ 21 Hình 3.15: Ảnh khi được chuyển đổi sang HSV .......................................................... 21 Hình 3.16: Ảnh vòng màu HSV 360° ........................................................................... 21 Hình 3.17: Ảnh nhị phân của bút chì sau khi phân ngưỡng .......................................... 22 xi Hình 3.18: Ảnh RGB của bút chì được tái hiện sau khi nhân chập .............................. 22 Hình 3.19: Sơ đồ kết nối hệ thống ................................................................................ 23 Hình 3.20: Sơ đồ nguyên lý hệ thống ........................................................................... 24 Hình 4.1: Hình dạng mô hình thực tế hoàn chỉnh ......................................................... 26 Hình 4.2: Vị trí đặt Webcam Logitech C270p .............................................................. 27 Hình 4.3: Vị trí đặt động cơ DC .................................................................................... 27 Hình 4.4: Vị trí đặt board Arduino Uno R3 và Module Relay ..................................... 28 Hình 4.5: Vị trí đặt 2 động cơ Servo ............................................................................. 28 Hình 4.6: Vị trí đặt 2 khay chứa bút chì ........................................................................ 29 Hình 4.7: Vị trí đặt buồng tối ........................................................................................ 29 Hình 4.8: Lưu đồ giải thuật mô phỏng .......................................................................... 30 Hình 4.9: Lưu đồ giải thuật hệ thống ............................................................................ 31 Hình 4.10: Lưu đồ giải thuật xác định màu sắc ............................................................ 33 Hình 4.11: Giao diện khi khởi động Matlab ................................................................. 34 Hình 4.12: Nút Run trong giao diện Matlab ................................................................. 35 Hình 4.13: Giao diện điều khiển ................................................................................... 35 Hình 4.14: Kết quả thu được ......................................................................................... 36 Hình 5.1: Tập ảnh thu thập 7 màu sắc khác nhau ......................................................... 37 Hình 5.2a: Ảnh tiền xử lý của bút chì màu đỏ .............................................................. 38 Hình 5.2b: Ảnh nhị phân của bút chì màu đỏ ............................................................... 38 Hình 5.2c: Ảnh phân vùng của bút chì màu đỏ ............................................................. 38 Hình 5.3a: Ảnh tiền xử lý của bút chì màu cam ........................................................... 38 Hình 5.3b: Ảnh nhị phân của bút chì màu cam ............................................................. 38 Hình 5.3c: Ảnh phân vùng của bút chì màu cam .......................................................... 38 Hình 5.4a: Ảnh tiền xử lý của bút chì màu vàng .......................................................... 39 Hình 5.4b: Ảnh nhị phân của bút chì màu vàng ............................................................ 39 xii Hình 5.4c: Ảnh phân vùng của bút chì màu vàng ......................................................... 39 Hình 5.5a: Ảnh tiền xử lý của bút chì màu lục ............................................................. 39 Hình 5.5b: Ảnh nhị phân của bút chì màu lục .............................................................. 39 Hình 5.5c: Ảnh phân vùng của bút chì màu lục ............................................................ 39 Hình 5.6a: Ảnh tiền xử lý của bút chì màu lam ............................................................ 39 Hình 5.6b: Ảnh nhị phân của bút chì màu lam ............................................................. 39 Hình 5.6c: Ảnh phân vùng của bút chì màu lam ........................................................... 39 Hình 5.7a: Ảnh tiền xử lý của bút chì màu hồng .......................................................... 40 Hình 5.7b: Ảnh nhị phân của bút chì màu hồng ........................................................... 40 Hình 5.7c: Ảnh phân vùng của bút chì màu hồng ......................................................... 40 Hình 5.8a: Ảnh tiền xử lý của bút chì màu tím ............................................................. 40 Hình 5.8b: Ảnh nhị phân của bút chì màu tím .............................................................. 40 Hình 5.8c: Ảnh phân vùng của bút chì màu tím ........................................................... 40 Hình 5.9: Bút chì nhập liệu trên băng tải 1 ................................................................... 41 Hình 5.10: Bút chì đi vào buồng tối .............................................................................. 41 Hình 5.11: Bút chì ra khỏi buồng tối ............................................................................ 42 Hình 5.12: Bút chì được tay gạt mở ra đón lấy ............................................................. 42 Hình 5.13: Tay gạt đóng lại gạt bút chì lăn xuống khay ............................................... 43 xiii LIỆT KÊ BẢNG Bảng Trang Bảng 3.1: Danh sách các linh kiện ............................................................................. 12 Bảng 3.2: Thông số kỹ thuật của Arduino Uno R3 ..................................................... 14 Bảng 3.3: Bảng giá trị thông số HSV của từng màu .................................................... 23 Bảng 5.1: Kết quả thống kê khi đưa vào bút chì có màu sắc nằm trong dữ liệu ............ 43 Bảng 5.2: Kết quả thống kê khi đưa vào bút chì có màu không nằm trong dữ liệu ........ 44 xiv TÓM TẮT Ngày nay việc sử dụng xử lý ảnh là rất phổ biến như trong sản xuất công nghiệp, trí tuệ nhân tạo. Do vậy, đề tài thiết kế và thi công mô hình hệ thống cho việc phân loại màu sắc từng cây bút chì là cần thiết. Cụ thể, trong đồ án tốt nghiệp này bút chì sau khi nhận diện màu sắc sẽ được đưa vào từng hộp, mỗi hộp gồm bảy cây bút chì có màu sắc khác nhau là đỏ, cam, vàng, lục, lam, hồng, tím dùng kỹ thuật xử lý ảnh. Nếu hộp bút chì thiếu màu nào trong bảy màu, servo sẽ gạt bút chì còn thiếu vào lần lượt hộp 1 và hộp 2, nếu cả hai hộp đều có màu đó rồi, bút chì sẽ tiếp tục đi thẳng. Động cơ DC sẽ kéo băng tải hoạt động, bút chì được đặt trên băng tải và được băng tải di chuyển. Khi bút chì đi vào buồng tối, thiết bị thu nhận ảnh sẽ thực hiên việc thu nhận ảnh cây bút chì và gửi dữ liệu cho máy tính để xử lý màu sắc. Khi máy tính xử lý xong sẽ truyền dữ liệu xuống Arduino Uno R3 để điều khiển servo phân loại màu sắc bút chì. Máy tính xử lý phân loại màu sắc dựa trên ngôn ngữ lập trình Matlab. Phần mềm Matlab cung cấp môi trường tính toán số và lập trình do công ty MathWorks thiết kế, cho phép thực hiện thuật toán, vẽ đồ thị, tạo giao diện người dùng cũng như liên kết với các chương trình máy tính được viết trên ngôn ngữ khác như C/C++ của Arduino, giúp cho việc xử lý trở nên dễ dàng hơn. xv CHƯƠNG 1. TỔNG QUAN Chương 1. TỔNG QUAN 1.1 ĐẶT VẤN ĐỀ Khoa học kỹ thuật luôn phát triển trong tất cả các lĩnh vực, nhất là các ngành sản xuất. Việc đòi hỏi cải tiến và nâng cấp hệ thống sản xuất luôn là ưu tiên hàng đầu. Một trong những cải tiến và nâng cấp đó là tự động hóa hệ thống phân loại sản phẩm. Hệ thống này giúp cho sản xuất được linh hoạt hơn, tiết kiệm thời gian và nhân lực, tăng năng suất, đem lại lợi ích kinh tế cao và hiệu quả. Công nghiệp đòi hỏi phải ngày càng chính xác và nhanh chóng để đáp ứng được xu thế hiện đại hóa. Các ngành công nghiệp đóng gói sản phẩm, dược phẩm cũng như trong lĩnh vực điện, điện tử là những ngành cần sự chính xác trong kiểm tra đầu ra, và để thay thế con người trong việc kiểm tra thành phẩm với một tốc độ và sự chính xác cao, công nghệ xử lý ảnh ra đời và không ngừng phát triển để ngày càng hoàn thiện hơn. Sự ra đời của xử lý ảnh và những ứng dụng của nó là rất cần thiết cho cuộc sống. Xử lý ảnh đã có từ rất lâu và đã được vận dụng trong những lĩnh vực như dân sự, quân sự, y tế và nhiều lĩnh vực khác. Ứng dụng đầu tiên được biết đến là nâng cao chất lượng ảnh báo được truyền qua cáp từ London đến New York từ những năm 1920. Vấn đề nâng cao chất lượng ảnh có liên quan tới phân bố mức sáng và độ phân giải của ảnh. Việc nâng cao chất lượng ảnh được phát triển vào khoảng những năm 1955. Từ năm 1964 đến nay, các phương tiện xử lý, nâng cao chất lượng, nhận dạng ảnh phát triển không ngừng. Tuy nhiên, mới chỉ khoảng một thập niên trở lại đây, kiến thức xử lý ảnh mới được đưa vào để giảng dạy tại một vài trường đại học tại Việt Nam nhưng cũng chỉ hạn chế ở một vài trường lớn tại Thành phố Hồ Chí Minh và Hà Nội [1-2]. Hiện nay, các ứng dụng về xử lý ảnh đã bước đầu được triển khai trên một số lĩnh vực như lắp đặt hệ thống nhận dạng biển số xe, nhận dạng vân tay, nhận dạng mã vạch ở Việt Nam. Tuy nhiên nhìn một cách tổng quan thì số lượng các ứng dụng trên thực tế vẫn là quá ít, lĩnh vực này sẽ còn phát triển mạnh mẽ trong tương lai nếu được quan tâm một cách nghiêm túc [3]. Đã có nhiều công trình trước đó nghiên cứu về đề tài này như đồ án “Nhận diện cảm xúc khuôn mặt người” của Nguyễn Thị Đài Trang – Hà Tiến Dương [4] sử dụng camera, động cơ servo cùng với board Arduino BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 1 CHƯƠNG 1. TỔNG QUAN Uno R3 và phần mềm Matlab vào việc nhận diện cảm xúc vui để mở cửa, cảm xúc buồn để bật đèn, cảm xúc ngạc nhiên để đóng cửa và tắt đèn. Hay tác giả Nguyễn Phạm Anh Tuấn đã nghiên cứu đề tài khoa học “Nhận dạng biển số xe” dùng camera và kỹ thuật tách biên cùng với chuyển ảnh nhị phân để nhận dạng biển số xe bất kì [5]. Và theo đó, xử lý ảnh trong phân loại sản phẩm đã và đang được nghiên cứu phát triển với tốc độ nhanh chóng. Để phân loại sản phẩm có rất nhiều phương pháp, tuy nhiên hiện nay phương pháp phân loại dựa vào màu sắc chưa được ứng dụng nhiều và cũng có rất nhiều phương pháp như dùng cảm biến màu sắc, kính lọc màu. Trên cơ sở đó, chúng em đã tìm hiểu và quyết định chọn đề tài mang tính nghiên cứu, ứng dụng cao, phù hợp với sự phát triển của các ngành sản xuất là “Thiết kế và thi công hệ thống phân loại sản phẩm bút chì theo màu sắc” bằng phương pháp xử lý ảnh trên phần mềm Matlab. 1.2 MỤC TIÊU Thiết kế và thi công một hệ thống phân loại bút chì, trong đó sử dụng Webcam để thực hiện việc thu nhận hình ảnh bút chì, rồi gửi dữ liệu vào máy tính để xử lý màu sắc cho việc phân loại 7 màu sắc khác nhau của bút chì. Hệ thống sử dụng bộ xử lý trung tâm là vi điều khiển Arduino Uno R3 nhận dữ liệu từ máy tính. 1.3 NỘI DUNG NGHIÊN CỨU Đề tài được thực hiện qua những nội dung như sau: - Nghiên cứu, tìm hiểu Webcam Logitech C270p. - Nghiên cứu, tìm hiểu động cơ Servo và board Arduino Uno R3. - Nghiên cứu, tìm hiểu phần mềm lập trình Matlab. - Nghiên cứu, tìm hiểu các thuật toán và các hàm, các không gian màu áp dụng cho việc xử lý màu sắc. - Viết code chương trình Matlab xử lý ảnh, màu sắc. - Xây dựng chương trình điều khiển mô hình giao tiếp giữa Matlab và Arduino. - Thiết kế, xây dựng phần cứng của mô hình. - Chạy thử nghiệm, cân chỉnh và sửa lỗi mô hình. - Viết báo cáo luận văn. - Báo cáo đề tài tốt nghiệp. BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 2 CHƯƠNG 1. TỔNG QUAN 1.4 GIỚI HẠN CỦA ĐỀ TÀI Đề tài này chỉ tập trung vào việc xác định màu sắc của cây bút chì cụ thể: màu đỏ, cam, vàng, lục, lam, hồng, tím. Không đánh giá chất lượng của bút chì. Do đó, các bức ảnh đưa vào được thực hiện như sau: - Bút chì được đặt trên phông nền có màu sắc không trùng với màu của bút chì. - Xử lý và phân loại màu sắc từng cây bút chì trên hệ thống. - Ảnh được chụp trong điều kiện ánh sáng bình thường, cố định. - Đề tài chỉ giới hạn trong mô hình thu nhỏ. 1.5 BỐ CỤC Chương 1: Tổng Quan Đặt vấn đề liên quan đến đề tài, tìm hiểu những lý do và sự cần thiết để thực hiện đề tài, mục tiêu hoàn thành, giới hạn cũng như những bước đi từ cơ bản đến cụ thể mà nhóm sẽ thực hiện trong quá trình nghiên cứu đề tài. Chương 2: Cơ Sở Lý Thuyết Trình bày các kiến thức về các bước cơ bản trong xử lý ảnh, không gian màu của ảnh. Chương 3: Thiết Kế Hệ Thống Trình bày sơ đồ khối của hệ thống, thiết kế cho từng khối. Sơ đồ kết nối phần cứng, nguyên lý hoạt động. Chương 4: Thi Công Hệ Thống Lắp đặt webcam, động cơ servo, buồng tối và khay chứa bút chì cho mô hình băng tải, trình bày lưu đồ giải thuật và viết chương trình phân tích màu sắc bút chì cho mô hình. Chương 5: Kết Quả, Nhận Xét và Đánh Giá Trình bày kết quả đã đạt được, đưa ra những bàn luận về sản phẩm và viết tài liệu hướng dẫn hệ thống. Chương 6: Kết Luận và Hướng Phát Triển Kết luận chung về đề tài và hướng phát triển của nó. BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 3 CHƯƠNG 2. CƠ SỞ LÝ THUYẾT Chương 2. CƠ SỞ LÝ THUYẾT 2.1 GIỚI THIỆU VỀ XỬ LÝ ẢNH Xử lý ảnh kỹ thuật số là một trong những đối tượng nghiên cứu của lĩnh vực thị giác máy tính (computer vision), cùng với phương pháp thu nhận, phân tích và nhận dạng các hình ảnh. Cũng như xử lý dữ liệu bằng đồ họa, xử lý ảnh số là một phần của tin học ứng dụng. Xử lý dữ liệu bằng đồ họa đề cập đến những ảnh nhân tạo, các ảnh này được xem xét như là một cấu trúc dữ liệu và được tạo bởi các chương trình. Xử lý ảnh số bao gồm các phương pháp và kỹ thuật biến đổi, để truyền tải hoặc mã hóa các ảnh tự nhiên. Những năm trở lại đây với sự phát triển của phần cứng máy tính, xử lý ảnh đã phát triển một cách mạnh mẽ và có nhiều ứng dụng thực tiễn trong cuộc sống. Có thể liệt kê những ứng dụng của xử lý ảnh như: khôi phục, chỉnh sửa hình ảnh; các lĩnh vực nhận dạng như nhận dạng chữ viết, vân tay; thị giác máy tính, chuyển động của robot; xe không người lái, xe tự hành; ứng dụng trong an ninh và giám sát; các ứng dụng trong y học như nội soi, xử lý tế bào; Mô tả cụ thể các bước cơ bản trong một hệ thống xử lý ảnh: Thu nhận ảnh Tiền xử lý Phân đoạn Biểu diễn và Nhận dạng và (Camera, ảnh ảnh mô tả ảnh nội suy Scanner) Hình 2.1: Các giai đoạn chính trong xử lý ảnh [6]. 2.1.1 Thu Nhận Ảnh Đây là công đoạn đầu tiên mang tính quyết định đối với quá trình x...HIỆP – Y SINH 29 CHƯƠNG 4. THI CÔNG HỆ THỐNG 4.2 LẬP TRÌNH HỆ THỐNG 4.2.1 Lưu đồ giải thuật mô phỏng Bắt đầu Khởi động Matlab và thiết lập các biến môi trường Xóa tất cả các biến và cửa sổ lệnh trong Matlab Chụp ảnh thông qua Webcam và hiển thị trên Matlab Chương trình phân tích màu sắc có trong ảnh Nhấn Run trên phần mềm Matlab S Kiểm tra có nhấn Run? Đ Hiển thị kết quả trên giao diện Figure Kết thúc Hình 4.8: Lưu đồ giải thuật mô phỏng. Giải thích lưu đồ Hình 4.15 cho ta thấy trước khi chạy chương trình mô phỏng thì chúng ta phải khởi tạo môi trường làm việc và xóa tất cả các biến cùng các cửa sổ lệnh trong Matlab bằng lệnh Clear all. Sau đó ảnh sẽ được chụp từ Webcam, hiển thị trên Matlab và lưu BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 30 CHƯƠNG 4. THI CÔNG HỆ THỐNG thành file ảnh. Tiếp theo ta sử dụng ngôn ngữ lập trình Matlab để lập trình công việc phân tích màu sắc. Sau khi lập trình xong, nhấn Run trên phần mềm Matlab để chạy mô phỏng, kết quả mô phỏng sẽ được hiển thị trên Figure. Và quá trình lặp lại khi ta muốn chụp ảnh mới. 4.2.2 Lưu đồ giải thuật hệ thống Bắt đầu 2 1 Khởi tạo hệ thống Hiển thị kết quả Matlab và các biến trên giao diện GUI môi trường Cho băng tải 2 hoạt Kiểm tra S có 1 trong 7 màu hay động không? Đ Cho băng tải 1 hoạt Kiểm tra S Kiểm tra S khay 1 đã có màu đó khay 2 đã có màu đó động chưa? chưa? Đ Đ Điều khiển Servo 1 Điều khiển Servo 1 Điều khiển Servo 2 Dừng băng tải 1 và Servo 2 ngưng gạt gạt gạt Thu nhận ảnh từ Webcam Kết thúc Gọi hàm phân tích màu sắc 2 1 Hình 4.9: Lưu đồ giải thuật hệ thống. Giải thích lưu đồ Hình 4.16 miêu tả quá trình điều khiển của hệ thống phân loại sản phẩm bút chì theo màu sắc. Qua lưu đồ giải thuật chúng ta có thể thấy được các bước chính của hoạt động mô hình là thu nhận ảnh từ Webcam, phân tích màu sắc, điều khiển 2 động cơ servo hoạt động. BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 31 CHƯƠNG 4. THI CÔNG HỆ THỐNG 4.2.3 Lưu đồ giải thuật xác định màu sắc Bắt đầu 1 Xác định màu sắc Thu nhận ảnh dựa vào các giá trị ngưỡng trong HSV Tạo mặt nạ nhị Hiển thị ảnh phân chỉ có màu đã xác định Loại bỏ các điểm có Bộ lọc trung bình pixel nhỏ hơn 1000, giữ lại các điểm pixel lớn, lấp đầy các khoảng trống Chuyển không gian RGB sang HSV Hiển thị kết quả trên giao diện GUI 1 2 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 32 CHƯƠNG 4. THI CÔNG HỆ THỐNG 2 CC1. S NumObjects > 0 Đ CC2. S NumObjects > 0 Đ CC3. S NumObjects Hiển thị kết > 0 quả Red Đ CC4. S NumObjects Hiển thị kết > 0 quả Orange Đ CC5. S NumObjects Hiển thị kết > 0 quả Yellow Đ CC6. S NumObjects Hiển thị kết > 0 quả Green Đ CC7. S NumObjects Hiển thị kết > 0 quả Blue Đ Hiển thị kết quả Pink Hiển thị kết quả Purple Hiển thị kết quả No pencil Kết thúc Hình 4.10: Lưu đồ giải thuật xác định màu sắc. BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 33 CHƯƠNG 4. THI CÔNG HỆ THỐNG Giải thích lưu đồ Hình 4.17 cho thấy lưu đồ giải thuật xác định màu sắc của 7 màu bút chì. Ban đầu ảnh bút chì sẽ được Webcam thu nhận, sau đó qua bước tiền xử lý và chuyển từ không gian màu RGB sang không gian màu HSV. Tiếp theo xác định màu sắc bút chì dựa vào thông số ngưỡng H,S,V để tạo ra ảnh nhị phân chỉ có vùng màu đó. Sau đó loại bỏ các đối tượng nhỏ và giữ lại các khu vực lớn hơn 1000pixel, lấp đầy các khoảng trống. Từ CC1 đến CC7 lần lượt là biến của đối tượng màu đỏ, cam, vàng, lục, lam, hồng, tím. NumObject là số lượng riêng đối tượng đó có trong ảnh. Nếu kiểm tra biến CC1.NumObjects lớn hơn 0 sẽ hiển thị kết quả “Red” ứng với màu đỏ có trong ảnh, ngược lại nếu CC2.NumObjects lớn hơn 0 sẽ hiển thị kết quả “Orange” ứng với màu cam có trong ảnh, tương tự với các màu còn lại. Ngược lại sẽ hiển thị kết quả “No pencil or Others pencil” ứng với việc không có bút chì hoặc bút chì có màu khác với 7 màu trong dữ liệu. 4.3 TÀI LIỆU HƯỚNG DẪN SỬ DỤNG, THAO TÁC Bước 1: Khởi động phần mềm Matlab Hình 4.11: Giao diện khi khởi động Matlab BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 34 CHƯƠNG 4. THI CÔNG HỆ THỐNG Bước 2: Bấm Run trong giao diện Matlab Hình 4.12: Nút Run trong giao diện Matlab Sau khi nhất nút Run phần mềm sẽ mở ra giao diện Guide như Hình 4.20 Bước 3: Nhấn Start trên giao diện Guide 2 3 4 5 1 8 6 7 9 Hình 4.13: Giao diện điều khiển. Trong đó: 1. Nút Start. 2. Hiển thị video camera. 3. Hiển thị ảnh chụp. 4. Hiển thị ảnh kết quả. BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 35 CHƯƠNG 4. THI CÔNG HỆ THỐNG 5. Hiển thị những màu có ở khay 1. 6. Hiển thị những màu có ở khay 2. 7. Hiển thị số lượng hộp. 8. Hiển thị thông báo kết quả màu sắc. 9. Hiển thị thông báo khi một màu đã có ở 2 khay. Ta nhấn nút Start trên giao diện điều khiển để khởi động chương trình và băng tải cùng Webcam sẽ hoạt động. Cửa sổ Video camera sẽ cho thấy hình ảnh liên tục mà Webcam thu được. Cửa sổ Ảnh chụp sẽ cho ta hình ảnh Webcam chụp lại khi có vật thể đi vào, và cửa sổ Ảnh kết quả sẽ cho ra ảnh phân vùng màu của vật thể sau khi được xử lý và hiển thị tên màu ở dưới dòng chữ Ảnh kết quả. Khay 1, khay 2 sẽ hiển thị tên những màu đã có trong từng khay, khi mỗi 1 khay đã đủ 7 màu, số lượng hộp sẽ tăng lên 1 và tên màu trong khay sẽ mất. Dòng cuối cùng sẽ thông báo “Already have” nếu cả 2 khay đều có màu đó, hoặc thông báo “No pencil or Other pencil” cho ta biết nếu không có bút chì hoặc bút chì có màu không nằm trong dữ liệu 7 màu đỏ, cam, vàng, lục, lam, hồng, tím đã xác định trước. Bước 4: Đặt bút chì lên băng tải 1. Bước 5: Quan sát kết quả. Hình 4.14: Kết quả thu được BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 36 CHƯƠNG 5. KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ Chương 5. KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ Khi thực hiện đề tài sẽ thu được kết quả, từ kết quả đó ta sẽ có được những đánh giá về ưu nhược điểm của đề tài. Từ đó ta có thể phát huy ưu điểm, khắc phục nhược điểm để hoàn thiện đề tài hơn. Trong quá trình thực hiện đề tài: “Thiết kế và thi công hệ thống phân loại sản phẩm bút chì theo màu sắc”, chúng em đã thu được những kết quả khả quan, cho thấy những ý tưởng, thiết kế và thi công của nhóm đã đi đúng hướng, tạo ra những minh chứng cụ thể. Thông qua các kết quả đạt được này, chúng em sẽ đưa ra các nhận xét và đánh giá cụ thể. 5.1 THU THẬP DỮ LIỆU ẢNH Yêu cầu bài toán đặt ra là phải phân biệt được màu sắc của 7 cây bút chì màu. Cụ thể chúng em sẽ phân loại 7 màu sắc bút chì khác nhau đó là: đỏ, cam, vàng, lục, lam, hồng, tím. Dưới đây là tập ảnh thu thập của 7 loại màu sắc bút chì khi được chụp trong môi trường đủ sáng. Hình 5.1: Tập ảnh thu thập 7 màu sắc khác nhau. BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 37 CHƯƠNG 5. KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ 5.2 KẾT QUẢ QUÁ TRÌNH THỰC HIỆN ĐỀ TÀI 5.2.1 Kết quả tính toán thời gian thu nhận ảnh Băng tải 2 có độ dài 1m, để đi từ đầu băng tải đến cuối băng tải mất 11.8s, như vậy vận tốc trên bề mặt băng tải 2 là 0.0847m/s. Khoảng cách từ điểm bút chì rơi từ băng tải 1 xuống băng tải 2 đến giữa buồng tối nơi đặt Webcam là 0.26cm. Như vậy thời gian cần thiết để Webcam chụp được bút chì là trong khoảng 0.26/0.0847=3(s) kể từ khi băng tải 1 dừng lại. 5.2.2 Kết quả xử lý màu sắc Kết quả nhận diện bút chì màu đỏ a) b) c) Hình 5.2: a) Ảnh ban đầu của bút chì màu đỏ b) Ảnh nhị phân của bút chì màu đỏ c) Ảnh phân vùng của bút chì màu đỏ Kết quả nhận diện bút chì màu cam a) b) c) Hình 5.3: a) Ảnh ban đầu của bút chì màu cam b) Ảnh nhị phân của bút chì màu cam c) Ảnh phân vùng của bút chì màu cam BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 38 CHƯƠNG 5. KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ Kết quả nhận diện bút chì màu vàng a) b) c) Hình 5.4: a) Ảnh ban đầu của bút chì màu vàng b) Ảnh nhị phân của bút chì màu vàng c) Ảnh phân vùng của bút chì màu vàng Kết quả nhận diện bút chì màu lục a) b) c) Hình 5.5: a) Ảnh ban đầu của bút chì màu lục b) Ảnh nhị phân của bút chì màu lục c) Ảnh phân vùng của bút chì màu lục Kết quả nhận diện bút chì màu lam a) b) c) Hình 5.6: a) Ảnh ban đầu của bút chì màu lam b) Ảnh nhị phân của bút chì màu lam c) Ảnh phân vùng của bút chì màu lam BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 39 CHƯƠNG 5. KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ Kết quả nhận diện bút chì màu hồng a) b) c) Hình 5.7: a) Ảnh ban đầu của bút chì màu hồng b) Ảnh nhị phân của bút chì màu hồng c) Ảnh phân vùng của bút chì màu hồng Kết quả nhận diện bút chì màu tím a) b) c) Hình 5.8: a) Ảnh ban đầu của bút chì màu tím b) Ảnh nhị phân của bút chì màu tím c) Ảnh phân vùng của bút chì màu tím Hình (a) cho ta thấy ảnh thực tế ban đầu của bút chì màu đỏ, cam, vàng, lục, lam, hồng, tím khi được chụp trong điều kiện đủ sáng, buồng tối có nguồn sáng không đổi. Sau khi ảnh được loại bỏ các điểm ảnh nhỏ, làm mịn đường viền sẽ thu được ảnh nhị phân như Hình (b). Cuối cùng ta tiến hành nhân chập ảnh ban đầu (a) với ảnh nhị phân (b), sẽ thu được kết quả là ảnh phân vùng của màu bút chì như Hình (c). 5.2.3 Kết quả xử lý trên mô hình Đầu tiên ta sẽ đặt bút chì lên băng tải 1 để nhập liệu như Hình 5.9, băng tải 1 sẽ đưa bút chì rơi xuống băng tải 2. BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 40 CHƯƠNG 5. KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ Hình 5.9: Bút chì nhập liệu trên băng tải 1 Sau đó bút chì sẽ được băng tải 2 vận chuyển vào buồng tối và Webcam sẽ bắt đầu chụp ảnh bút chì. Hình 5.10: Bút chì đi vào buồng tối. BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 41 CHƯƠNG 5. KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ Bút chì đi vào buồng tối sẽ được Webcam đặt ở giữa buồng tối chụp ảnh, xử lý để nhận biết màu sắc. Hình 5.11: Bút chì ra khỏi buồng tối. Sau khi xử lý, servo sẽ hoạt động quay 1 góc 90o để đón lấy bút chì đang di chuyển tới. . Hình 5.12: Bút chì được tay gạt mở ra đón lấy. Sau 1 khoảng thời gian mở ra chờ bút chì, tay gạt sẽ đóng lại để gạt để bút chì lăn xuống khay. BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 42 CHƯƠNG 5. KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ Hình 5.13: Tay gạt đóng lại gạt bút chì lăn xuống khay. 5.2.4 Kết quả thống kê Một số trường hợp nhận dạng màu sắc có thể không được chính xác hay không nhận dạng được, nguyên nhân do mô hình băng tải chuyển động liên tục, cùng với độ ổn định của Webcam và nguồn sáng. Bảng 5.1. Kết quả thống kê khi đưa vào bút chì có màu sắc nằm trong dữ liệu. Số lượng bút chì Số lần nhận dạng Màu Độ chính xác (%) đưa vào màu chính xác Đỏ 30 30 100% Cam 30 30 100% Vàng 30 28 93,33% Lục 30 30 100% Lam 30 30 100% Hồng 30 29 96,67% Tím 30 28 93,33% BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 43 CHƯƠNG 5. KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ Bảng 5.2. Kết quả thống kê khi đưa vào bút chì có màu không nằm trong dữ liệu. Số lượng bút chì đưa vào Số lần nhận dạng màu Độ chính xác (%) khác 7 màu trong dữ liệu chính xác 10 10 100% 20 20 100% 30 29 96,67% 40 38 95% 50 46 92% 5.3 NHẬN XÉT VÀ ĐÁNH GIÁ CHUNG Dựa vào kết quả thống kê ở Bảng 5.1 và Bảng 5.2, ta có thể thấy được sự ổn định của hệ thống bị giảm sút khi hoạt động trong thời gian dài. Do kết hợp buồng tối nên nguồn sáng không bị ảnh hưởng từ ánh sáng bên ngoài, làm tăng độ chính xác khi Webcam chụp ảnh và xử lý màu sắc. Kết quả từ việc chạy mô phỏng trong phần mềm Matlab đã đúng với thực tế từng màu đỏ, cam, vàng, lục, lam, hồng, tím của bút chì. Như vậy mô hình đã phản ánh đúng mục đích và yêu cầu đưa ra của đề tài. Hệ thống có những ưu điểm như: không dùng cảm biến để phát hiện vật thể nên sẽ tiết kiệm được chi phí, cùng với việc sử dụng không gian màu HSV cho kết quả nhận dạng màu sắc được chính xác hơn so với dùng không gian màu RGB. Ngoài ra hệ thống còn có buồng tối giúp cho việc chụp ảnh không bị ảnh hưởng bởi ánh sáng môi trường bên ngoài. Bên cạnh đó mô hình còn có những nhược điểm như: một số thuật toán còn chưa tối ưu, kém ổn định khi hoạt động liên tục trong thời gian dài, chưa đánh giá được chất lượng và kích thước của bút chì, cơ sở dữ liệu màu chỉ giới hạn trong 7 màu. BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 44 CHƯƠNG 6. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN Chương 6. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 6.1 KẾT LUẬN Đề tài thiết kế mô hình dây chuyền phân loại được 7 loại màu sắc đỏ, cam, vàng, lục, lam, hồng, tím và đếm số lượng hộp của bút chì khi 1 hộp có đủ 7 màu, sử dụng phương pháp xử lý ảnh trên phần mềm Matlab. Chúng em ứng dụng lý thuyết xử lý ảnh đã học vào thực tiễn, sử dụng Matlab để mô phỏng xử lý màu sắc của ảnh dùng không gian màu HSV cụ thể: ảnh đầu vào là ảnh RGB, chuyển đổi ảnh từ RGB sang HSV để xử lý và xác định màu sắc. Hơn nữa, hệ thống kết hợp giữa camera, Arduino và máy tính để thực hiện việc phân loại. Kết quả nhận dạng và phân loại được màu sắc của bút chì, hiển thị lên giao diện GUI. Hệ thống hoạt động tương đối ổn định với mục tiêu đã đề ra. Tuy nhiên, hệ thống mỗi lần chỉ phân loại được một màu, không đánh giá được chất lượng sản phẩm, chưa đáp ứng đủ tiêu chuẩn về phân loại bút chì trong sản xuất, thuật toán chưa tối ưu. 6.2 HƯỚNG PHÁT TRIỂN Dựa vào những kiến thức tham khảo có sẵn kết hợp với những gì chưa làm được cộng với suy nghĩ của mình, nhóm chúng em nhận thấy đề tài này nên phát triển và mở rộng thêm về phân loại kích thước, chất lượng và màu sắc đa dạng hơn. Chẳng hạn như: phân loại được bút chì bị lỗi màu, kích thước dài hoặc ngắn hơn kích thước tiêu chuẩn. BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH 45 TÀI LIỆU THAM KHẢO TÀI LIỆU THAM KHẢO Sách tham khảo [1] PGS.TS Nguyễn Thanh Hải, “Giáo trình Xử lý ảnh”, Nhà xuất bản ĐH Quốc Gia, Tp.HCM, 2014. [2] PGS.TS Nguyễn Quang Hoan, “Xử Lý Ảnh”, Học Viện Công Nghệ Bưu Chính Viễn Thông, 2006. [3] Nguyễn Xuân Cương, “Nghiên cứu các kỹ thuật xử lý ảnh phục vụ việc nâng cao chất lượng nhận dạng Tiếng Việt”, Luận văn thạc sĩ, ĐH Quốc Gia HN, 2015. [4] Nguyễn Thị Đài Trang, Hà Tiến Dương, “Nhận diện cảm xúc khuôn mặt người ”, Đồ án tốt nghiệp, trường ĐHSPKT Tp.HCM, 2018. [5] Nguyễn Phạm Anh Tuấn, “Nhận dạng biển số xe”, Báo cáo nghiên cứu khoa học, trường ĐH Lạc Hồng, 2010. [6] Nguyễn Tiến Mạnh, “Tìm hiểu phương pháp phát hiện độ dịch chuyển trang tài liệu so với văn bản gốc”, Đồ án tốt nghiệp, trường ĐH Dân lập Hải Phòng, 2010. [7] Ngô Tiến Hóa, Huỳnh Kim Hữu, “Xác định màu quả xoài ”, Báo cáo chuyên đề, trường ĐHSPKT Tp.HCM, 2017. [8] RGB to HSV color conversion, Online Calculators & Tools, RapidTables. (https://www.rapidtables.com/convert/color/rgb-to-hsv.html) [9] Nguyễn Trung Tín, “Hướng dẫn sử dụng cơ bản Arduino”, Học Viện Hàng Không Việt Nam, 05/2014. (https://docs.google.com/viewer?a=v&pid=sites&srcid=ZGVmYXVsdGRvbWFpbn xhcmR1aW5vdmlldHxneDphYjVlNDQxMDdmM2Y1NGY). [10] Tham khảo tài liệu chủ yếu ở trang web: https://www.mathworks.com/. The MathWorks News & Note, Magazine for MATLAB and Simulink, 01/2006. BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH 1 PHỤ LỤC PHỤ LỤC CODE CHƯƠNG TRÌNH function varargout = GUI(varargin) % Edit the above text to modify the response to help GUI % Last Modified by GUIDE v2.5 05-Dec-2019 14:24:02 % Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @GUI_OpeningFcn, ... 'gui_OutputFcn', @GUI_OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); end % End initialization code - DO NOT EDIT % --- Executes just before GUI is made visible. BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH xvi PHỤ LỤC function GUI_OpeningFcn(hObject, eventdata, handles, varargin) handles.output = hObject; logo=imread('D:\DATN\datn\logo.PNG'); % Update handles structure axes(handles.axes_logo); imshow(logo, [], 'XData', [0 .7], 'YData', [0 .1]); guidata(hObject, handles); % --- Executes on button press in start. function start_Callback(hObject, eventdata, handles) global vid; global rgbImage; global xImage; global a; global b; global c; global SL; global s1; global s2; global f1; global f2; global f3; global f4; global f5; BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH xvii PHỤ LỤC global f6; global f7; global g1; global g2; global g3; global g4; global g5; global g6; global g7; global k1; global k2; f1=0; f2=0; f3=0; f4=0; f5=0; f6=0; f7=0; g1=0; g2=0; g3=0; g4=0; g5=0; BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH xviii PHỤ LỤC g6=0; g7=0; k1=0; k2=0; SL=0; set(handles.text_SL,'string',SL); b=set(handles.text_K1,'string',''); c=set(handles.text_K2,'string',''); set(handles.text_KT,'string',''); vid=videoinput('winvideo',2); xImage=image(zeros(640,640,3),'Parent',handles.axes_Video); preview(vid, xImage); a=arduino('COM5', 'Uno'); s1=servo(a,'D6'); writePosition(s1,0.56); s2=servo(a,'D10'); writePosition(s2,0.945); while 1 writeDigitalPin( a, 'D3',1); cla(handles.axes_KQ); cla(handles.axes_AC); set(handles.text_KT,'string',''); set(handles.text_ketqua,'string',''); BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH xix PHỤ LỤC writeDigitalPin( a, 'D5',1); pause(0.7); writeDigitalPin( a, 'D5',0); pause(3); hinh=getsnapshot(vid); imwrite(hinh,'tuan.jpg'); rgbImage=imread('tuan.jpg'); imshow(rgbImage,'parent',handles.axes_AC); pause(0.1); % Convert RGB image to HSV hsvImage = rgb2hsv(rgbImage); % Extract out the H, S, and V images individually hImage = hsvImage(:,:,1); sImage = hsvImage(:,:,2); vImage = hsvImage(:,:,3); % % Assign the low and high thresholds for each color band. % RED hueThresholdLowRed = 0.03; hueThresholdHighRed = 0.99; saturationThresholdLowRed = 0.45; saturationThresholdHighRed = 0.6; valueThresholdLowRed = 0.34; valueThresholdHighRed = 0.5; BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH xx PHỤ LỤC % YELLOW hueThresholdLowYellow = 0.16; hueThresholdHighYellow = 0.18; saturationThresholdLowYellow = 0.57; saturationThresholdHighYellow = 0.77; valueThresholdLowYellow = 0.47; valueThresholdHighYellow = 0.57; % GREEN hueThresholdLowGreen = 0.34; hueThresholdHighGreen = 0.38; saturationThresholdLowGreen = 0.36; saturationThresholdHighGreen = 0.64; valueThresholdLowGreen = 0.31; valueThresholdHighGreen = 0.45; % BLUE hueThresholdLowBlue = 0.51; hueThresholdHighBlue = 0.57; saturationThresholdLowBlue = 0.3; saturationThresholdHighBlue = 0.6; valueThresholdLowBlue = 0.32; valueThresholdHighBlue = 0.46; % ORGANGE hueThresholdLowOrange = 0.06; BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH xxi PHỤ LỤC hueThresholdHighOrange = 0.09; saturationThresholdLowOrange = 0.57; saturationThresholdHighOrange = 0.77; valueThresholdLowOrange = 0.45; valueThresholdHighOrange = 0.58; % PINK hueThresholdLowPink = 0.93; hueThresholdHighPink = 0.96; saturationThresholdLowPink = 0.32; saturationThresholdHighPink = 0.51; valueThresholdLowPink = 0.32; valueThresholdHighPink = 0.53; % PURPLE hueThresholdLowPurple = 0.67; hueThresholdHighPurple = 0.7; saturationThresholdLowPurple = 0.28; saturationThresholdHighPurple = 0.6; valueThresholdLowPurple = 0.27; valueThresholdHighPurple = 0.42; % % Now apply each color band's particular thresholds to the color band % RED hueMaskRed = (hImage = hueThresholdHighRed); BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH xxii PHỤ LỤC saturationMaskRed = (sImage >= saturationThresholdLowRed) & (sImage <= saturationThresholdHighRed); valueMaskRed = (vImage >= valueThresholdLowRed) & (vImage <= valueThresholdHighRed); %YELLOW hueMaskYellow = (hImage >= hueThresholdLowYellow) &(hImage <= hueThresholdHighYellow); saturationMaskYellow = (sImage >= saturationThresholdLowYellow) & (sImage <= saturationThresholdHighYellow); valueMaskYellow = (vImage >= valueThresholdLowYellow) & (vImage <= valueThresholdHighYellow); %GREEN hueMaskGreen = (hImage >= hueThresholdLowGreen) &(hImage <= hueThresholdHighGreen); saturationMaskGreen = (sImage >= saturationThresholdLowGreen) & (sImage <= saturationThresholdHighGreen); valueMaskGreen = (vImage >= valueThresholdLowGreen) & (vImage <= valueThresholdHighGreen); %BLUE hueMaskBlue = (hImage >= hueThresholdLowBlue) &(hImage <= hueThresholdHighBlue); saturationMaskBlue = (sImage >= saturationThresholdLowBlue) & (sImage <= saturationThresholdHighBlue); valueMaskBlue = (vImage >= valueThresholdLowBlue) & (vImage <= valueThresholdHighBlue); BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH xxiii PHỤ LỤC %ORANGE hueMaskOrange = (hImage >= hueThresholdLowOrange) &(hImage <= hueThresholdHighOrange); saturationMaskOrange = (sImage >= saturationThresholdLowOrange) & (sImage <= saturationThresholdHighOrange); valueMaskOrange = (vImage >= valueThresholdLowOrange) & (vImage <= valueThresholdHighOrange); %PINK hueMaskPink = (hImage >= hueThresholdLowPink) &(hImage <= hueThresholdHighPink); saturationMaskPink = (sImage >= saturationThresholdLowPink) & (sImage <= saturationThresholdHighPink); valueMaskPink = (vImage >= valueThresholdLowPink) & (vImage <= valueThresholdHighPink); %PURPLE hueMaskPurple = (hImage >= hueThresholdLowPurple) &(hImage <= hueThresholdHighPurple); saturationMaskPurple = (sImage >= saturationThresholdLowPurple) & (sImage <= saturationThresholdHighPurple); valueMaskPurple = (vImage >= valueThresholdLowPurple) & (vImage <= valueThresholdHighPurple); %Red-------------------------------------------------------------------------------------------------- % Combine the masks to find where all 3 are "true." % Then we will have the mask of only the red parts of the image. coloredObjectsMaskRed = uint8(hueMaskRed & saturationMaskRed & valueMaskRed); BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH xxiv PHỤ LỤC % Tell user that we're going to filter out small objects. smallestAcceptableArea = 1000; % Keep areas only if they're bigger than this. % Get rid of small objects. Note: bwareaopen returns a logical. coloredObjectsMaskRed = uint8(bwareaopen(coloredObjectsMaskRed, smallestAcceptableArea)); % We need to convert the type of coloredObjectsMask to the same data type as edit_hLow. %coloredObjectsMaskRed = cast(coloredObjectsMaskRed, 'like', rgbImage); % Use the colored object mask to mask out the colored-only portions of the rgb image. maskedImageRRed = coloredObjectsMaskRed .* rgbImage(:,:,1); maskedImageGRed = coloredObjectsMaskRed .* rgbImage(:,:,2); maskedImageBRed = coloredObjectsMaskRed .* rgbImage(:,:,3); % Smooth the border using a morphological closing operation, imclose(). structuringElement = strel('disk', 4); coloredObjectsMaskRed = imclose(coloredObjectsMaskRed, structuringElement); % Fill in any holes in the regions, since they are most likely red also. coloredObjectsMaskRed = imfill(logical(coloredObjectsMaskRed), 'holes'); CC1 = bwconncomp(coloredObjectsMaskRed, 4); % Concatenate the masked color bands to form the rgb image. maskedRGBImageRed = cat(3, maskedImageRRed, maskedImageGRed, maskedImageBRed); BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH xxv PHỤ LỤC %YELLOW---------------------------------------------------------------------------------------- coloredObjectsMaskYellow = uint8(hueMaskYellow & saturationMaskYellow & valueMaskYellow); coloredObjectsMaskYellow = uint8(bwareaopen(coloredObjectsMaskYellow, smallestAcceptableArea)); maskedImageRYellow = coloredObjectsMaskYellow .* rgbImage(:,:,1); maskedImageGYellow = coloredObjectsMaskYellow .* rgbImage(:,:,2); maskedImageBYellow = coloredObjectsMaskYellow .* rgbImage(:,:,3); structuringElement = strel('disk', 4); coloredObjectsMaskYellow = imclose(coloredObjectsMaskYellow, structuringElement); coloredObjectsMaskYellow = imfill(logical(coloredObjectsMaskYellow), 'holes'); CC3 = bwconncomp(coloredObjectsMaskYellow, 4); maskedRGBImageYellow = cat(3, maskedImageRYellow, maskedImageGYellow, maskedImageBYellow); %Green--------------------------------------------------------------------------------------------- coloredObjectsMaskGreen = uint8(hueMaskGreen & saturationMaskGreen & valueMaskGreen); coloredObjectsMaskGreen = uint8(bwareaopen(coloredObjectsMaskGreen, smallestAcceptableArea)); BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH xxvi PHỤ LỤC maskedImageRGreen = coloredObjectsMaskGreen .* rgbImage(:,:,1); maskedImageGGreen = coloredObjectsMaskGreen .* rgbImage(:,:,2); maskedImageBGreen = coloredObjectsMaskGreen .* rgbImage(:,:,3); structuringElement = strel('disk', 4); coloredObjectsMaskGreen = imclose(coloredObjectsMaskGreen, structuringElement); coloredObjectsMaskGreen = imfill(logical(coloredObjectsMaskGreen), 'holes'); CC4 = bwconncomp(coloredObjectsMaskGreen, 4); maskedRGBImageGreen = cat(3, maskedImageRGreen, maskedImageGGreen, maskedImageBGreen); %BLUE--------------------------------------------------------------------------------------------- coloredObjectsMaskBlue = uint8(hueMaskBlue & saturationMaskBlue & valueMaskBlue); coloredObjectsMaskBlue = uint8(bwareaopen(coloredObjectsMaskBlue, smallestAcceptableArea)); maskedImageRBlue = coloredObjectsMaskBlue .* rgbImage(:,:,1); maskedImageGBlue = coloredObjectsMaskBlue .* rgbImage(:,:,2); maskedImageBBlue = coloredObjectsMaskBlue .* rgbImage(:,:,3); structuringElement = strel('disk', 4); BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH xxvii PHỤ LỤC coloredObjectsMaskBlue = imclose(coloredObjectsMaskBlue, structuringElement); coloredObjectsMaskBlue = imfill(logical(coloredObjectsMaskBlue), 'holes'); CC5 = bwconncomp(coloredObjectsMaskBlue, 4); maskedRGBImageBlue = cat(3, maskedImageRBlue, maskedImageGBlue, maskedImageBBlue); %ORANGE---------------------------------------------------------------------------------------- coloredObjectsMaskOrange = uint8(hueMaskOrange & saturationMaskOrange & valueMaskOrange); coloredObjectsMaskOrange = uint8(bwareaopen(coloredObjectsMaskOrange, smallestAcceptableArea)); maskedImageROrange = coloredObjectsMaskOrange .* rgbImage(:,:,1); maskedImageGOrange = coloredObjectsMaskOrange .* rgbImage(:,:,2); maskedImageBOrange = coloredObjectsMaskOrange .* rgbImage(:,:,3); structuringElement = strel('disk', 4); coloredObjectsMaskOrange = imclose(coloredObjectsMaskOrange, structuringElement); coloredObjectsMaskOrange = imfill(logical(coloredObjectsMaskOrange), 'holes'); CC2 = bwconncomp(coloredObjectsMaskOrange, 4); BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH xxviii PHỤ LỤC maskedRGBImageOrange = cat(3, maskedImageROrange, maskedImageGOrange, maskedImageBOrange); %PINK---------------------------------------------------------------------------------------------- coloredObjectsMaskPink = uint8(hueMaskPink & saturationMaskPink & valueMaskPink); coloredObjectsMaskPink = uint8(bwareaopen(coloredObjectsMaskPink, smallestAcceptableArea)); maskedImageRPink = coloredObjectsMaskPink .* rgbImage(:,:,1); maskedImageGPink = coloredObjectsMaskPink .* rgbImage(:,:,2); maskedImageBPink = coloredObjectsMaskPink .* rgbImage(:,:,3); structuringElement = strel('disk', 4); coloredObjectsMaskPink = imclose(coloredObjectsMaskPink, structuringElement); coloredObjectsMaskPink = imfill(logical(coloredObjectsMaskPink), 'holes'); CC6 = bwconncomp(coloredObjectsMaskPink, 4); maskedRGBImagePink = cat(3, maskedImageRPink, maskedImageGPink, maskedImageBPink); %PURPLE------------------------------------------------------------------------------------------ coloredObjectsMaskPurple = uint8(hueMaskPurple & saturationMaskPurple & valueMaskPurple); coloredObjectsMaskPurple = uint8(bwareaopen(coloredObjectsMaskPurple, smallestAcceptableArea)); BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH xxix PHỤ LỤC maskedImageRPurple = coloredObjectsMaskPurple .* rgbImage(:,:,1); maskedImageGPurple = coloredObjectsMaskPurple .* rgbImage(:,:,2); maskedImageBPurple = coloredObjectsMaskPurple .* rgbImage(:,:,3); structuringElement = strel('disk', 4); coloredObjectsMaskPurple = imclose(coloredObjectsMaskPurple, structuringElement); coloredObjectsMaskPurple = imfill(logical(coloredObjectsMaskPurple), 'holes'); CC7 = bwconncomp(coloredObjectsMaskPurple, 4); maskedRGBImagePurple = cat(3, maskedImageRPurple, maskedImageGPurple, maskedImageBPurple); %code xu ly dieu kien cua khoi chap hanh------------------------------------------------------- if CC1.NumObjects > 0 set(handles.text_ketqua,'string','Red'); imshow(maskedRGBImageRed,'parent',handles.axes_KQ); if f1==0 b=strcat(b,"Red, "); set(handles.text_K1,'string',b); pause(2); writePosition(s1,1);%90 pause(4); BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH xxx PHỤ LỤC writePosition(s1,0.56);%00 f1=1; k1=k1+1; if k1==7 f1=0; f2=0; f3=0; f4=0; f5=0; f6=0; f7=0; k1=0; SL=SL+1; set(handles.text_SL,'string',SL); b=set(handles.text_K1,'string',''); end elseif g1==0 c=strcat(c,"Red, "); set(handles.text_K2,'string',c); pause(2); writePosition(s2,0.5);%90 pause(4); writePosition(s2,0.945);%00 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH xxxi PHỤ LỤC g1=1; k2=k2+1; if k2==7 g1=0; g2=0; g3=0; g4=0; g5=0; g6=0;

Các file đính kèm theo tài liệu này:

  • pdfdo_an_thiet_ke_va_thi_cong_he_thong_phan_loai_san_pham_but_c.pdf
Tài liệu liên quan