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 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 KHOA ĐIỆN-ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH

CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM ĐỘC LẬP - TỰ DO - HẠNH PHÚC ----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 Phạm Văn Long Kỹ thuật Điện - Điện tử Chuyên ngành: Đại học chính quy Hệ đào tạo: 2013 Khóa:

MSSV: 13141414 MSSV: 13141171 Mã ngành: 01 1 Mã hệ: 13141DT1A Lớp:

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 KHOA ĐIỆN-ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH

CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM ĐỘC LẬP - TỰ DO - HẠNH PHÚC ----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

- Gặp GVHD nhận đề tài. Tuần 1

Từ 7/10/2019 - Viết đề cương chi tiết.

đến 13/10/2019

- Tìm hiểu và tham khảo các đề tài đã nghiên cứu có liên Tuần 2

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.

- Gặp và báo cáo với GVHD về hướng thực hiện đề tài. Tuần 3

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.

- Tìm hiểu vi điều khiển Arduino Uno R3. Tuần 4

Từ 28/10/2019 - Tìm hiểu động cơ, webcam phục vụ cho đề tài.

đến 3/11/2019

- Cài đặt driver cho webcam và cài đặt Arduino cho Tuần 5

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.

- Báo cáo tiến độ cho GVHD. Tuần 6

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

- Báo cáo tiến độ cho GVHD. Tuần 7

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ơ.

- Báo cáo tiến độ cho GVHD. Tuần 8

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.

- Báo cáo tiến độ cho GVHD. Tuần 9

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.

- Báo cáo tiến độ cho GVHD. Tuần 10

Từ 9/12/2019 - Hoàn thành mô hình.

đến 15/12/2019

- Báo cáo tiến độ cho GVHD. Tuần 11

Từ 16/12/2019 - Viết báo cáo luận văn.

đến 22/12/2019

- Hoàn thiện báo cáo, chuẩn bị gặp GVPB và bảo vệ. Tuần 12

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:

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ử lý ảnh.

Ảnh đầu vào sẽ được thu nhận qua các thiết bị như camera, máy scan. Sau đó các tín

hiệu này sẽ được số hóa. Các thông số quan trọng ở đây là độ phân giải, chất lượng

màu và tốc độ thu nhận ảnh của các thiết bị. Chất lượng của một ảnh thu nhận được

phụ thuộc vào thiết bị thu, vào môi trường (ánh sáng, phong cảnh).

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 4

CHƯƠNG 2. CƠ SỞ LÝ THUYẾT

2.1.2 Tiền Xử Lý Ảnh

Ở bước này, ảnh sẽ được xử lý để cải thiện về độ tương phản, khử nhiễu,…

với mục đích làm cho chất lượng ảnh trở nên tốt hơn, rõ nét hơn. Quá trình này thường

được thực hiện bởi các bộ lọc. Bộ lọc trung bình được sử dụng chính trong bước tiền

xử lý ảnh này, nó là bộ lọc mà mỗi điểm ảnh được thay thế bằng trung bình trọng số

của các điểm lân cận nhằm loại bỏ những điểm ảnh biến đổi lớn hơn so với điểm lân

cận (hay còn gọi là nhiễu). Bộ lọc trung bình được định nghĩa:

(k,l)∈W

(2.1) g(x, y) = ∑ ∑ a(k, l)f(x − k, y − l)

Trong kỹ thuật lọc trên, nếu ta dùng các trọng số như nhau thì phương trình

1

trên trở thành:

(k,l)∈W

N

∑ ∑ (2.2) g(x, y) = f(x − k, y − l)

Với: f(x, y) là ảnh đầu vào.

g(x, y) là ảnh đầu ra.

a(k, l) là cửa sổ lọc (mặt nạ).

Trong lọc trung bình, người ta thường ưu tiên cho các hướng để bảo vệ biên

của ảnh khỏi bị mờ khi làm trơn ảnh. Các kiểu mặt nạ được sử dụng tùy theo các

trường hợp khác nhau.

Hình 2.2: Cách thức nhân chập điểm ảnh với cửa sổ lọc [7].

𝑔(𝑥, 𝑦) = [𝑓(𝑥 − 1, 𝑦 − 1) + 𝑓(𝑥 − 1, 𝑦) + 𝑓(𝑥 − 1, 𝑦 + 1) 1 9

+ 𝑓(𝑥, 𝑦 − 1) + 𝑓(𝑥, 𝑦) + 𝑓(𝑥, 𝑦 + 1)

+ 𝑓(𝑥 + 1, 𝑦 − 1) + 𝑓(𝑥 + 1, 𝑦) + 𝑓(𝑥 + 1, 𝑦 + 1)]

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 5

CHƯƠNG 2. CƠ SỞ LÝ THUYẾT

2.1.3 Phân Đoạn Ảnh

Phân đoạn hay còn gọi phân vùng ảnh là phân tích ảnh thành những thành phần

có cùng tính chất nào đó dựa theo biên hay các vùng liên thông. Tiêu chuẩn để xác

định các vùng liên thông có thể là cùng màu, cùng mức xám,… Mục đích của phân

đoạn ảnh là để có một miêu tả tổng hợp về nhiều phần tử khác nhau cấu tạo nên ảnh

thô, để tìm ra các đặc trưng của ảnh. Với các thao tác: tìm biên, tách biên, phân loại

đối tượng. Sử dụng các phương pháp: phát hiện biên cục bộ, dò biên, phân vùng theo

miền đồng nhất, phân vùng dựa theo đường biên.

Trong đề tài này nhóm chúng em đã sử dụng bộ tách biên Sobel để tách biên

ảnh. Bộ tách biên Sobel dùng mặt nạ Sobel để tính các đạo hàm bậc nhất Gx và Gy.

Các mặt nạ này được thiết kế để tìm ra các đường biên theo chiều đứng và chiều

ngang một cách tốt nhất.

Mặt nạ Sobel theo hàng: [ ] (2.3)

1 0 −1 2 0 −2 1 0 −1

Mặt nạ Sobel theo cột: [ ] (2.4)

−1 −2 −1 0 0 0 1 2 1

Để tính Gx và Gy ta dựa vào mặt nạ Sobel như sau. Gọi z là giá trị pixel trong

] một lân cận kích thước 3x3: [ (2.5)

𝑧1 𝑧4 𝑧7 𝑧2 𝑧5 𝑧8 𝑧3 𝑧6 𝑧9

2

Công thức tính:

2

(2.6) 𝐺𝑋=

1 2

(2.7) [(𝑧7 + 2𝑧8 + 𝑧9) − (𝑧1 + 2𝑧2 + 𝑧3)]2 [(𝑧3 + 2𝑧6 + 𝑧9) − (𝑧1 + 2𝑧4 + 𝑧7)]2 𝐺𝑌=

2] 2 + 𝐺𝑌

(2.8)

𝑔 = [𝐺𝑋

2.1.4 Biểu Diễn Và Mô Tả Ảnh

Kết quả của bước phân đoạn ảnh thường được cho dưới dạng dữ liệu điểm ảnh

thô, trong đó có hàm chứa biên của một vùng ảnh, hoặc tập hợp tất cả các điểm ảnh

thuộc về chính vùng ảnh đó. Việc biến đổi các số liệu này thành dạng thích hợp là

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 6

CHƯƠNG 2. CƠ SỞ LÝ THUYẾT

cần thiết cho xử lý tiếp theo bằng máy tính. Việc chọn các tính chất để thể hiện ảnh

gọi là trích chọn đặc trưng gắn với việc tách các đặc tính của ảnh dưới dạng các thông

tin định lượng hoặc làm cơ sở để phân biệt lớp đối tượng này với đối tượng khác

trong phạm vi ảnh nhận được. Dựa vào phần tử đặc trưng của ảnh đó là pixel. Ta có

thể biểu diễn ảnh bằng hàm toán học, hoặc các ma trận điểm.

2.1.5 Nhận Dạng Và Nội Suy

Nhận dạng ảnh có thể nhìn nhận một cách đơn giản là quá trình xác định ảnh,

liên quan đến mô tả đối tượng mà ta muốn đặc tả về nó. Quá trình này thường thu

được bằng cách so sánh với mẫu chuẩn đã được học (hoặc lưu) từ trước.

Nội suy là phán đoán theo ý nghĩa dựa trên cơ sở nhận dạng. Theo lý thuyết

về nhận dạng, các mô hình toán học về ảnh được phân theo hai loại nhận dạng ảnh

cơ bản là: nhận dạng theo tham số và nhận dạng theo cấu trúc. Một số đối tượng nhận

dạng khá phổ biến hiện nay là: nhận dạng ký tự, nhận dạng vân tay, nhận dạng khuôn

mặt.

Ứng dụng trong đề tài này, sau khi ảnh được phân tích và xử lý xong, quá trình

nhận dạng màu sắc của ảnh được thực hiện so sánh với ảnh ban đầu được chụp từ

webcam. Dựa trên cơ sở nhận dạng, ta biết được màu sắc là màu gì.

2.2 KHÔNG GIAN MÀU CỦA ẢNH

Không gian màu là những phương pháp định lượng màu sắc được thiết lập

công thức một cách khoa học. Hệ thống không gian màu dùng mô hình toán học để

xác định màu, biểu diễn mỗi màu dưới dạng số học, bằng cách đó ta có thể chọn và

lặp lại màu nào đó thật chính xác. Trên thực tế, có rất nhiều không gian màu khác

nhau để sử dụng vào những mục đích khác nhau như: RGB, HSV, HSL, CMYK.

Trong đó, RGB và HSV là hai không gian màu cơ bản và ứng dụng nhiều nhất. Còn

không gian màu CMYK thường được sử dụng trong in ấn màu.

2.2.1 Không Gian Màu RGB

Không gian màu RGB là một không gian màu cơ bản trong xử lý ảnh, sử dụng

mô hình bổ sung trong đó ánh sáng đỏ, xanh lá cây, xanh da trời được tổ hợp với nhau

theo nhiều phương thức khác nhau để tạo thành các màu khác nhau. Tất cả đều là sự

pha trộn của 3 màu cơ bản là Red, Green và Blue.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 7

CHƯƠNG 2. CƠ SỞ LÝ THUYẾT

Hình 2.3: Không gian màu RGB

Ta cũng cần lưu ý rằng, tự bản thân mô hình màu RGB không định nghĩa thế

nào là “đỏ”, “xanh lá”, “xanh dương” một cách chính xác, vì thế với cùng các giá trị

như nhau của RGB có thể mô tả các màu tương đối khác nhau trên các thiết bị khác

nhau có cùng một mô hình màu. Trong khi chúng cùng chia sẻ một mô hình màu

chung, không gian màu thực sự của chúng là dao động một cách đáng kể.

Trong biểu diễn số trên máy tính, ảnh màu RGB có thể sử dụng số bit màu là

16, 24, 32 hoặc 48 bit. Điểm ảnh có số bit màu càng cao thì màu sắc của điểm ảnh

càng được biểu diễn chính xác.

Mô hình màu RGB được biểu diễn bởi khối lập phương với các trục R, G, B

như sau:

Hình 2.4: Hệ tọa độ màu RGB

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 8

CHƯƠNG 2. CƠ SỞ LÝ THUYẾT

Thông thường ảnh số được mã hóa bằng 24 bit thông tin cho mỗi điểm ảnh

(bit per pixel hay bpp), nghĩa là 8bit ứng với mỗi kênh R, G, B, thì mỗi kênh màu này

sẽ nhận giá trị từ 0-255. Với một giá trị của mỗi kênh màu khác nhau kết hợp lại với

nhau ta sẽ được một màu khác nhau, như vậy mô hình RGB có thể biểu diễn 28*28*28

= 16,777,216 màu.

Khi biểu diễn dưới dạng số, các giá trị RGB trong mô hình 24bpp thông thường

được ghi bằng cặp ba số nguyên giữa 0-255, mỗi số đại diện cho cường độ của màu

đỏ, xanh lá, xanh lam. Ví dụ như màu đen là sự kết hợp của các kênh màu (R, G, B)

với giá trị tương ứng (0, 0, 0), màu trắng có giá trị (255, 255, 255), màu đỏ có giá trị

(255, 0, 0), màu xanh lơ có giá trị (0, 255, 255), màu vàng có giá trị (255, 255, 0),

màu hồng có giá trị (255, 0, 255) và một số màu khác.

Tuy nhiên, do tính tương quan cao giữa các kênh, giá trị cảm nhận không đồng

nhất, sự pha trộn giữa dữ liệu thành phần màu và dữ liệu về độ sáng mà không gian

màu RGB không được ưa chuộng sử dụng cho việc phân tích màu cũng như trong

các thuật toán nhận dạng dựa trên màu sắc.

2.2.2 Không Gian Màu HSV

Không gian màu HSV được dùng nhiều trong việc phân tích và chỉnh sửa ảnh.

Hệ màu này dựa vào 3 thông số để mô tả màu sắc bao gồm: H = Hue: vùng màu; S =

Saturation: độ bão hòa; V = Value: giá trị hay cường độ sáng. Không gian màu này

thường được biểu diễn dưới dạng hình nón ngược hoặc hình trụ.

Hình 2.5: Không gian màu HSV

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 9

CHƯƠNG 2. CƠ SỞ LÝ THUYẾT

Theo như cách biểu diễn không gian màu như trên, giá trị màu thuần khiết (H)

chạy từ 0-360o. Độ bão hòa (S) đi từ tâm ra mặt ngoài có giá trị từ 0-1. Giá trị S = 0

ứng với trục nón là nơi màu sắc nhạt nhất, giá trị S = 1 ở ngoài mặt nón là nơi mà giá

trị màu sắc đậm đặc nhất. Độ sáng của màu (V) được biểu diễn bằng cách đi từ dưới

chóp nón lên và cũng nằm trong khoảng từ 0-1. Giá trị V = 0 là tối hoàn toàn và V =

1 là độ sáng lớn nhất. Như vậy ứng với mỗi cặp ba giá trị (H, S, V) sẽ cho ta một màu

sắc mà ở đó mô tả đầy đủ thông tin về màu sắc, độ đậm đặc và độ sáng của màu đó.

2.2.3 Chuyển Đổi RGB Sang HSV

Từ đầu vào là không gian màu RGB ta có thể tìm không gian màu HSV như

sau. Giả sử ta có một điểm màu trong hệ RGB có giá trị là (R, G, B). Mỗi giá trị R,

G, B thay đổi trong phạm vi từ 0 đến 255, lấy mỗi giá trị này chia cho 255 ta được

R', G', B' có giá trị thay đổi từ 0 đến 1. Ta chuyển sang không gian HSV như sau [8]:

Ta có: R' = R/255, G' = G/255, B' = B/255.

Đặt các biến: Cmax = Max(R', G', B'), Cmin = Min(R', G', B'),  = Cmax – Cmin.

Tính toán giá trị H:

0 𝑘ℎ𝑖 = 0

60. ( mod 6) 𝑘ℎ𝑖 𝐶𝑚𝑎𝑥 = 𝑅′

(2.9) H′ = 60. ( + 2) 𝑘ℎ𝑖 𝐶𝑚𝑎𝑥 = 𝐺′

(G′−B′)  (B′−R′)  (R′−G′) 

H′

60. ( + 4) 𝑘ℎ𝑖 𝐶𝑚𝑎𝑥 = 𝐵′ [

360

(2.10) Và: H =

Tính toán giá trị S:

𝐶𝑚𝑎𝑥

(2.11) S = [ 0 𝑘ℎ𝑖 Cmax = 0 𝑘ℎ𝑖 Cmax ≠ 0

Tính toán giá trị V:

(2.12) V = Cmax

Như vậy, với ba thông số H, S, V ta có thể xác định được khoảng giá trị ngưỡng

một cách dễ dàng và việc chuyển đổi màu từ không gian RGB sang không gian HSV

giúp cho quá trình xử lý nhận biết màu sắc của phần mềm được chính xác hơn.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 10

CHƯƠNG 3. TÍNH TOÁN VÀ THIẾT KẾ

Chương 3. TÍNH TOÁN VÀ THIẾT KẾ

Để giảm thiểu sai sót và không xảy ra sự cố khi thi công mô hình theo như ý

tưởng đã đề ra, ta bắt buộc phải tính toán và thiết kế. Với đề 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” mục tiêu chính là phân loại được

từng cây bút chì theo màu sắc và phân vào từng hộp thì công việc tính toán, thiết kế

bao gồm những bước cụ thể như sau:

- Thiết kế sơ đồ khối của hệ thống.

- Tính toán, thiết kế từng khối của hệ thống:

 Khối nguồn.

 Khối thu nhận hình ảnh.

 Khối lập trình và xử lý dữ liệu đầu vào (máy tính).

 Khối điều khiển.

 Khối thực thi.

Hình 3.1: Sơ đồ khối của hệ thống phân loại bút chì

Chức năng của từng khối:

- Khối nguồn: cung cấp nguồn điện cho các khối thu nhận hình ảnh, khối xử lý

dữ liệu, khối điều khiển và khối thực thi hoạt động.

- Khối thu nhận hình ảnh: sử dụng webcam để chụp ảnh, giao tiếp với máy tính

giúp nhận diện khi có bút chì đi vào.

- Khối máy tính: ở đây chúng em dùng laptop có cài đặt những công cụ lập trình

để nhận dạng màu sắc, xử lý dữ liệu.

- Khối điều khiển: dùng board Arduino UNO R3 làm bộ điều khiển trung tâm,

có nhiệm vụ nhận tín hiệu từ máy tính để điều khiển khối thực thi.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 11

CHƯƠNG 3. TÍNH TOÁN VÀ THIẾT KẾ

- Khối chấp hành: bao gồm 2 động cơ DC 12V điều khiển kéo băng tải chuyển

động, 2 động cơ servo có nhiệm vụ gạt bút chì để phân loại màu sắc.

3.1 THIẾT KẾ PHẦN CỨNG

Bảng 3.1. Danh sách các linh kiện.

STT Tên linh kiện Giá trị Số lượng Chú thích

1 Webcam Logitech 270p Nguồn USB Laptop 5V 1

Board Arduino UNO R3 Nguồn USB Laptop 2 5V 1

3 Động cơ DC 12V 2

4 RC Servo 5V 2

5 Module 2 relay 5V 1

6 Adapter 12V 1

7 Led 3.3V 2 Ánh sáng trắng

8 Băng tải 30cm 1 Vải màu xanh

9 Băng tải 100cm 1 Vải màu trắng

3.1.1 Khối Nguồn

Đề tài chúng em sử dụng nguồn 1 chiều Adapter có sẵn.

Hình 3.2: Nguồn Adapter 12V.

Thông số kỹ thuật:

- Điện áp đầu vào: AC100-240V 50/60Hz.

- Điện áp đầu ra: 12V DC.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 12

CHƯƠNG 3. TÍNH TOÁN VÀ THIẾT KẾ

- Dòng điện đầu ra: 3A.

- Nhiệt độ hoạt động: 0~45oC.

- Tổng chiều dài: 1.5m.

- Công suất tối đa: 36W.

Với 2 động cơ 12V định mức và dòng tối đa 1.5A, như vậy với nguồn 12V 3A

cho công suất tối đa 36W sẽ đủ cho 2 động cơ.

3.1.2 Khối Thu Nhận Ảnh

Nhóm chúng em sử dụng Webcam Logitech C270p vì có giá thành rẻ, hoạt

động ổn định. Với độ phân giải lên tới 720p/30fps cho chất lượng video sáng và rõ

nét, tích hợp mic giảm tiếng ồn, nhỏ gọn linh hoạt và có thể điều chỉnh góc quay.

Hình 3.3: Webcam Logitech C270p.

Thông số kỹ thuật:

- Độ phân giải video 1280 x 720 pixel.

- Độ phân giải ảnh lên tới 3.0 megapixel.

- Phạm vi quan sát: 60o.

- USB 2.0 tốc độ cao.

- Webcam có dây dài 1.5m.

Camera được đặt phía trên, vuông góc với mặt băng tải và cách mặt băng tải

30cm để cho hình ảnh tốt nhất.

3.1.3 Khối Điều Khiển

Board Arduino có rất nhiều phiên bản với hiệu năng và mục đích sử dụng khác

nhau. Trong đề tài này chúng em sử dụng board Arduino UNO R3 bởi chi phí và tính

linh động của nó. Arduino UNO R3 là một board điều khiển dựa trên vi điều khiển

ATmega328. Những Model hiện tại được trang bị gồm 1 cổng giao tiếp USB, 6 chân

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 13

CHƯƠNG 3. TÍNH TOÁN VÀ THIẾT KẾ

đầu vào analog, 14 chân I/O tín hiệu số tương thích với nhiều board mở rộng khác

nhau. Nó có thể nạp chương trình qua cổng USB, cấp nguồn qua USB hoặc adapter.

Hình 3.4: Mặt trước và sau của board Arduino UNO R3 [9].

Bảng 3.2: Thông số kỹ thuật của Arduino Uno R3.

Vi điều khiển ATmega328 họ 8bit

Điện áp hoạt động 5V DC (cấp qua cổng USB)

Điện áp vào khuyên dùng 7-12V DC

Điện áp vào giới hạn 6-20V DC

Tần số hoạt động 16 MHz

Dòng tiêu thụ khoảng 30mA

Số chân Digital I/O 14 (6 chân hardware PWM)

Số chân Analog 6 (độ phân giải 10bit)

Dòng tối đa trên mỗi chân I/O 30 mA

Dòng ra tối đa (5V) 500 mA

Dòng ra tối đa (3.3V) 50 mA

32 KB (ATmega328) với 0.5KB dùng bởi Bộ nhớ flash bootloader

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 14

CHƯƠNG 3. TÍNH TOÁN VÀ THIẾT KẾ

SRAM 2 KB (ATmega328)

EEPROM 1 KB (ATmega328)

Xung nhịp 16MHz

Bảng 3.1 cho chúng ta cái nhìn tổng quát về Board Arduino UNO R3 với

những thông số chính về điện áp hoạt động, điện áp đầu vào đề nghị và giới hạn, số

lượng cũng như dòng tối đa trên các chân I/O, bộ nhớ Flash, SRAM, EEPROM, tốc

độ của xung đồng hồ. Thông qua những thông số này, chúng ta sẽ có những cách lựa

chọn các linh kiện cho phù hợp với những quy định về điện áp, dòng điện, mục đích

lập trình để đảm bảo cho mô hình hoạt động ổn định.

3.1.4 Khối Thực Thi

 Động cơ DC

Động cơ DC (Direct Current) là động cơ điện một chiều có cấu tạo gồm hai

dây (dây nguồn và dây tiếp đất). Động cơ phụ thuộc vào lực mà từ trường tạo ra. Khi

cấp điện thì động cơ DC sẽ chuyển điện năng thành cơ năng và quay với tốc độ được

tính bằng rpm. Tốc độ của động cơ DC được điều khiển bằng cách biến đổi điện áp

cung cấp, thay đổi cường độ dòng điện hoặc điều biến độ rộng xung (PWM).

Hình 3.5: Động cơ DC.

Thông số kỹ thuật:

- Điện áp định mức: 12V 24V.

- Dòng tối đa: 1.5A.

- Tốc độ quay: 50 vòng/phút với điện áp 12V, 150 vòng/phút với điện áp 24V.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 15

CHƯƠNG 3. TÍNH TOÁN VÀ THIẾT KẾ

Động cơ trong mô hình dùng để kéo băng tải hoạt động, vận chuyển bút chì di

chuyển từ đầu băng tải đến cuối băng tải.

 Động cơ Servo

Động cơ RC Servo S3003 được ứng dụng rộng rãi và đóng vai trò quan trọng

trong việc chế tạo và vận hành mô hình, robot. Bên trong một servo có bốn thành

phần chính gồm động cơ DC, hộp số, biến trở và mạch điều khiển được tích hợp sẵn

driver điều khiển theo cơ chế phát xung – quay góc.

Hình 3.6: Động cơ RC Servo S3003.

Thông số kỹ thuật:

- Trọng lượng: 55g.

- Kích thước: 40.7mm x 19.7mm x 42.9mm.

- Điện áp hoạt động: 4.8 – 7.2VDC.

- Lực kéo: 8.5kg/cm (4.8V), 10kg/cm (6V).

- Tốc độ quay: 0.17sec/60degree (4.8v), 0.14sec/60degree (6v).

- Dòng tối đa: 1A.

- Phạm vi nhiệt độ: 0 ºC – 55 ºC.

- Công suất tối đa: 5W.

Trong đề tài, động cơ RC Servo S3003 được dùng để hoạt động gạt sản phẩm

vào 2 vị trí đã quy định.

 Module 2 Relay

Module 2 Relay với opto cách ly nhỏ gọn, có opto và transistor cách ly giúp

cho việc sử dụng trở nên an toàn, mạch được sử dụng để đóng ngắt nguồn điện công

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 16

CHƯƠNG 3. TÍNH TOÁN VÀ THIẾT KẾ

suất cao AC hoặc DC, có thể chọn đóng khi kích mức cao hoặc mức thấp bằng

Jumper.

Tiếp điểm đóng ngắt gồm 3 tiếp điểm NC (thường đóng), NO (thường mở) và

COM (chân chung) được cách ly hoàn toàn với board mạch chính, ở trạng thái bình

thường chưa kích, NC-COM sẽ ngắn mạch còn NO-COM sẽ hở mạch, khi có trạng

thái kích thì NC-COM sẽ hở mạch và NO-COM sẽ ngắn mạch, hay nói cách khác

COM sẽ chuyển sang nối với NO và mất kết nối với NC.

Hình 3.7: Module 2 Relay.

Thông số kỹ thuật:

- Sử dụng điện áp nuôi DC 5V

- Điện thế đóng ngắt tối đa: AC 250V ~ 10A, DC 30V ~ 10A

- Dòng điện kích hoạt: 5mA

- Kích thước Module: 39 x 51 x 20mm

- Relay tiêu thụ dòng khoảng: 80mA

- Có đèn báo đóng ngắt trên Relay.

- Công suất tối đa: 4W.

Trong đề tài này module 2 relay được dùng để đóng ngắt động cơ.

3.2 PHẦN MỀM XỬ LÝ ẢNH

MATLAB là phần mềm 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ế. MATLAB cho phép tính toán số với ma trận, vẽ đồ thị hàm

số hay biểu đồ thông tin, thực hiện thuật toán, tạo các giao diện người dùng và liên

kết với những chương trình máy tính viết trên nhiều ngôn ngữ lập trình khác.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 17

CHƯƠNG 3. TÍNH TOÁN VÀ THIẾT KẾ

Hình 3.8: Giao diện chính của Matlab

Hệ thống được xây dựng toàn bộ trên nền Matlab nhúng dữ liệu xuống kit

Arduino nên quá trình tính toán và thiết kế được thực hiện chủ yếu trên phần mềm.

Matlab nhận dữ liệu hình ảnh từ Webcam và xử lý, sau đó truyền tín hiệu xuống

Arduino để điều khiển động cơ DC và Servo.

3.2.1 Kết nối Webcam với Matlab

Ta kết nối thiết bị Webcam Logitech C270p với máy tính thông qua cổng USB.

Để kiểm tra có giao tiếp giữa Webcam và phần mềm Matlab hay không, ta gõ dòng

lệnh trong Command Window của Matlab như sau: >>webcamlist [10].

Hình 3.9: Cửa sổ Command Window của Matlab khi gõ lệnh webcamlist.

Trên cửa sổ hiển thị 2 webcam có trong máy là webcam có sẵn của laptop và

webcam Logitech C270p vừa kết nối, nghĩa là Matlab đã được giao tiếp với Webcam.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 18

CHƯƠNG 3. TÍNH TOÁN VÀ THIẾT KẾ

3.2.2 Kết nối Arduino với Matlab

Ta gắn board Arduino Uno R3 vào máy tính qua cáp USB. Sau đó kiểm tra

giao tiếp giữa Matlab và board Arduino bằng lệnh: >>arduino [10].

Hình 3.10: Cửa sổ Command Window của Matlab khi gõ lệnh arduino.

Cửa sổ Command Window hiển thị đúng như Hình 4.19 nghĩa là board

Arduino Uno đã giao tiếp được với Matlab và sử dụng cổng USB COM5.

3.3 PHƯƠNG PHÁP XÁC ĐỊNH MÀU CỦA BÚT CHÌ

Như đã trình bày trong phần Cơ sở lý thuyết ở chương 2, dưới đây là sơ đồ

khối của phương pháp xác định màu bút chì. Sơ đồ bao gồm 6 khối chính: khối thu

nhận ảnh, bộ lọc trung bình, bộ chuyển đổi RGB sang HSV, phân ngưỡng, tái hiện

ảnh, xác định màu của bút chì.

Hình 3.11: Sơ đồ khối xác định màu của bút chì.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 19

CHƯƠNG 3. TÍNH TOÁN VÀ THIẾT KẾ

3.3.1 Bộ lọc trung bình

Ảnh thu nhận được thường có hai nguồn nhiễu là: nhiễu cuộn và nhiễu muối

tiêu. Cả hai nguồn nhiễu này phân bố ở các thành phần tần số cao, sau khi ảnh qua bộ

lọc trung bình thì ảnh đã được lọc đi một phần nhiễu và trở nên mịn hơn so với ảnh

ban đầu.

Hình 3.12: Sơ đồ hoạt động của bộ lọc trung bình.

Lọc trung bình có giá trị điểm ảnh chính là tích nhân chập ảnh đầu vào với cửa

1

sổ lọc H. Cửa sổ lọc H trong trường hợp này có dạng:

9

] (3.1) H =

1 1 1 [ 1 1 1 1 1 1

Giả sử đầu vào biểu diễn bởi ma trận I:

(3.2) I =

[ 4 7 2 7 1 5 7 1 7 1 6 6 1 8 3 5 7 5 7 1 5 7 6 1 2]

1

Ảnh số thu được bởi lọc trung bình Y = H⊗I:

9

(3.3) Y =

[ 23 26 31 19 16 35 39 46 31 27 36 43 49 34 27 36 48 48 34 22 24 35 33 22 11]

a) b)

Hình 3.13: a) Ảnh RGB gốc của bút chì.

b) Ảnh RGB đã qua bộ lọc trung bình của bút chì.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 20

CHƯƠNG 3. TÍNH TOÁN VÀ THIẾT KẾ

Nhận xét: Từ ảnh trên ta thấy bộ lọc đã lọc đi một phần nhiễu, làm ảnh mịn

hơn so với ảnh gốc khi chưa qua bộ lọc trung bình.

3.3.2 Chuyển đổi RGB sang HSV

Ảnh webcam thu nhận thường là ảnh ở không gian màu RGB, nhưng không

gian màu RGB việc xử lý nhận dạng màu sắc sẽ không hoàn toàn chính xác. Để việc

nhận dạng màu sắc được chính xác hơn, ta phải chuyển đổi ảnh từ không gian màu

RGB sang không gian màu HSV. Đây là bước tiếp theo trong quá trình xử lý ảnh của

hệ thống, giúp cho chương trình có thể phân biệt màu sắc bút chì một cách tối ưu

nhất.

Hình 3.14: Sơ đồ hoạt động bộ chuyển đổi RGB sang HSV.

Để chuyển đổi từ không gian màu RGB sang không gian màu HSV ta dùng

hàm rgb2hsv() như sau:

hsvImage = rgb2hsv(rgbImage);

Hình 3.15: Ảnh khi được chuyển đổi sang HSV.

3.3.3 Phân ngưỡng

Hình 3.16: Ảnh vòng màu HSV 360o.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 21

CHƯƠNG 3. TÍNH TOÁN VÀ THIẾT KẾ

Dựa trên dữ liệu màu bút chì có sẵn để phân loại (đỏ, cam, vàng, lục, lam,

hồng, tím), cùng với vòng màu HSV ta sẽ xác định được thông số Hue, Saturation,

Value của từng màu. Các giá trị này dùng để phân ngưỡng, từ đó xác định được các

màu sắc khác nhau của bút chì.

Với 1 ảnh f(x,y) ta sẽ có ảnh đã phân ngưỡng g(x,y) được định nghĩa như sau:

(3.4) 𝑔(𝑥, 𝑦) = { 1; 𝑓(𝑥, 𝑦) ≥ 𝑇 0; 𝑓(𝑥, 𝑦) < 𝑇

Trong đó với T là ngưỡng. Như vậy, các điểm ảnh được đánh nhãn 1 tương

ứng với vật thể trong khi đó nhãn 0 tương ứng với nền [1].

Hình 3.17: Ảnh nhị phân của bút chì sau khi phân ngưỡng.

Tái hiện ảnh

Ta tiến hành nhân chập ảnh nhị phân sau khi phân ngưỡng với ảnh gốc ban

đầu, ta sẽ thu được ảnh phân vùng màu sắc của cây bút chì.

Hình 3.18: Ảnh RGB của bút chì được tái hiện sau khi nhân chập.

Dùng hàm tái hiện lại ảnh rgb sau khi phân ngưỡng: maskedRGBImageGreen

= cat(3, maskedImageRGreen, maskedImageGGreen, maskedImageBGreen);

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 22

CHƯƠNG 3. TÍNH TOÁN VÀ THIẾT KẾ

3.3.4 Xác định màu bút chì

Do tính chất cấu trúc tuần tự của ngôn ngữ lập trình Matlab, sau khi tái hiện

ảnh ta sẽ nhận biết được và phân loại màu bút chì theo thứ tự: Đỏ → Cam → Vàng

→ Lục → Lam → Hồng → Tím.

Bảng 3.3. Bảng giá trị thông số HSV của từng màu.

Giá trị ngưỡng Màu sắc Hue Saturation Value

Đỏ H<0.05 & H>0.97 0.2 < S < 0.9 0.3 < V < 0.6

Cam 0.04 < H < 0.1 0.3 < S < 1 0.3 < V < 0.7

Vàng 0.15 < H < 0.19 0.1 < S < 0.9 0.4 < V < 0.8

Lục 0.28 < H < 0.45 0.1 < S < 0.5 0.3 < V < 0.7

Lam 0.52 < H < 0.6 0.2 < S < 0.7 0.1 < V < 0.6

Hồng 0.9 < H < 0.97 0.1 < S < 0.5 0.2 < V < 0.45

Tím 0.66 < H < 0.75 0.1 < S < 0.8 0.2 < V < 0.5

3.4 SƠ ĐỒ KẾT NỐI HỆ THỐNG

Hình 3.19: Sơ đồ kết nối hệ thống.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 23

CHƯƠNG 3. TÍNH TOÁN VÀ THIẾT KẾ

Hình 3.20: Sơ đồ nguyên lý hệ thống.

Giải thích sơ đồ kết nối

Hình 3.19 là sơ đồ kết nối phần cứng của hệ thống. Đầu tiên ta có

Webcam Logitech C270p và Board Arduino Uno R3 kết nối với máy tính thông qua

cổng USB. Máy tính cung cấp nguồn để Webcam Logitech C270p và Board Arduino

Uno R3 hoạt động. Board Arduino Uno R3 kết hợp với 2 Module 1 Relay để điều

khiển 2 động cơ DC kéo băng tải chuyển động, và kết hợp với 2 servo để gạt sản

phẩm vào 2 khay.

Với Module 2 Relay và động cơ DC: kết nối chân NO với chân V+ của động

cơ DC, chân COM nối với chân V+ của nguồn adapter 12V. Kết nối chân VCC và

GND của Module 2 Relay lần lượt với chân 5V và chân GND và của Arduino Uno,

chân V- của động cơ DC nối với chân V- của nguồn adapter 12V, còn chân tín hiệu

IN1 và IN2 của Module 2 Relay lần lượt được nối với chân D3 và D5 của Arduino

Uno.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 24

CHƯƠNG 3. TÍNH TOÁN VÀ THIẾT KẾ

Với động cơ Servo: kết nối chân V+, V- lần lượt với chân 5V và chân GND.

Còn chân tín hiệu của servo thứ nhất và thứ hai lần lượt nối với chân D6, D10 của

board Arduino Uno.

3.5 NGUYÊN LÝ HOẠT ĐỘNG

Đầu tiên ta cấp nguồn cho hệ thống, khởi động máy tính, mở phần mềm Matlab

và giao diện GUI để điều khiển. Arduino Uno R3 và Webcam Logitech C270p được

kết nối trực tiếp với máy tính. Nhấn nút Start để 2 băng tải hoạt động, băng tải vận

chuyển sẽ luôn chạy. Băng tải nhập liệu chạy 1s rồi dừng, sau 2.5s webcam sẽ chụp

ảnh. Nếu không có bút chì hoặc bút chì có màu khác những màu cần phân loại, băng

tải nhập liệu sẽ lại bắt đầu chạy 1s rồi dừng, nếu có màu cần phân loại nhưng 2 khay

đều đang có màu đó thì băng tải nhập liệu đợi 4s rồi tiếp tục chạy 1s. Nếu webcam

phát hiện có màu bút chì cần phân loại và chưa có trong khay, băng tải nhập liệu sẽ

chờ cho đến khi servo gạt xong thì băng tải nhập liệu mới tiếp tục chạy lại.

Ta đặt cây bút chì lên băng tải nhập liệu, băng tải nhập liệu sẽ hoạt động sẽ

đưa bút chì xuống băng tải vận chuyển. Khi bút chì đi vào buồng tối Webcam

Logitech C270p phát hiện và thu thập dữ liệu, cụ thể là sẽ chụp ảnh của cây bút chì

và truyền dữ liệu thu thập được cho máy tính. Máy tính sau khi nhận dữ liệu từ

webcam sẽ thực hiện công việc xử lý phân tích màu sắc dựa trên phần mềm lập trình

Matlab. Sau khi xử lý xong, máy tính sẽ gửi tín hiệu điều khiển xuống board Arduino

Uno R3 để thực hiện điều khiển 2 động cơ Servo hoạt động phân loại. Nếu ở khay 1

chưa có một trong các màu đỏ, cam, vàng, lục, lam, hồng, tím thì Servo 1 sẽ gạt, nếu

cây bút chì tiếp theo đi vào và màu đã có ở khay 1 thì động cơ Servo 2 sẽ gạt, nếu cây

bút chì tiếp theo nữa đi vào và màu đã có ở cả 2 khay thì cả 2 Servo sẽ không gạt và

băng tải sẽ đưa cây bút chì đi thẳng. Khi 1 trong 2 khay đủ 7 màu, màn hình sẽ hiển

thị số lượng hộp bút chì tăng thêm 1. Màn hình cũng hiển thị tên những màu đã có

trong từng khay. Quá trình thực hiện diễn ra liên tục, lặp lại cho đến khi nhấn nút

Stop thì hệ thống sẽ ngừng hoạt động.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 25

CHƯƠNG 4. THI CÔNG HỆ THỐNG

Chương 4. THI CÔNG HỆ THỐNG

Buồng tối

Băng tải 1

Băng tải 2

Servo

Động cơ 1

Động cơ 2

Adruino và Module 2 Relay

Khay chứa bút chì

Hình 4.1: Hình dạng mô hình thực tế hoàn chỉnh

Mô Hình băng tải thực tế chính là kết quả thu được sau khi chúng ta tính toán

và thiết kế. Khi bắt tay vào thi công, chúng ta cần phải có những bước thực hiện hợp

lý, tuần tự như vậy mới chính xác được. Hình 4.1 là Hình dạng băng tải thực tế sau

khi đã thi công xong.

4.1 THI CÔNG HỆ THỐNG

Tổng quan về phần cứng của mô hình:

- 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 có nhiệm vụ thu nhận ảnh đầu vào, khoảng cách đặt

Webcam để thu nhận ảnh tối đa là 30cm tính từ mặt băng tải.

- Dùng 2 động cơ Servo 5V để gạt sản phẩm.

- 2 Động cơ DC 12V hoạt động điều khiển băng tải với tốc độ 50 vòng/phút.

- Board Arduino Uno R3 được đặt phía dưới băng tải, đây là bộ điều khiển trung

tâm của mô hình.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 26

CHƯƠNG 4. THI CÔNG HỆ THỐNG

Mô hình băng tải nhỏ gọn, có thể di chuyển dễ dàng. Các vị trí của thiết bị có

thể thay đổi và điều chỉnh được. Quá trình lắp ráp các thiết bị thực hiện như sau:

Led 1 Led 2 Webcam

Khay chứa bút chì

Tay gạt 2 Tay gạt 1

Băng tải 2

Hình 4.2: Vị trí đặt Webcam Logitech C270p.

Theo Hình 4.2 thì Webcam Logitech C270p được đặt theo phương thẳng đứng

từ trên xuống, vuông góc và cách bề mặt băng tải 30cm để thu ảnh tốt nhất. Còn 2

Led được đặt song song với nhau và song song với Webcam như Hình 4.1.

Băng tải 1 Băng tải 2

Động cơ 1

Động cơ 2

Hình 4.3: Vị trí đặt động cơ DC.

Động cơ DC 12V được gắn phía dưới băng tải để kéo băng tải hoạt động như

Hình 4.3. Băng tải 1 có màu xanh, băng tải 2 có màu trắng.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 27

CHƯƠNG 4. THI CÔNG HỆ THỐNG

Mặt băng tải 2

Board Arduino Module Relay

Hình 4.4: Vị trí đặt board Arduino Uno R3 và Module Relay

Board Arduino Uno R3 và Module Relay được gắn trên đế gỗ của mô hình,

nằm dưới băng tải như Hình 4.5 để gọn gàng, dễ điều khiển.

Servo 1 Tay gạt 1

Mặt băng tải 2

Servo 2 Tay gạt 2

Hình 4.5: Vị trí đặt 2 động cơ Servo.

Hai động cơ Servo được đặt song song nhau, cách đoạn cuối của băng tải 15cm

và nằm ở 2 bên băng tải như Hình 4.2.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 28

CHƯƠNG 4. THI CÔNG HỆ THỐNG

Khay chứa bút chì 2 Khay chứa bút chì 1

Hình 4.6: Vị trí đặt 2 khay chứa bút chì.

Hai khay chứa bút chì được đặt 2 bên của băng tải, ở vị trí sát động cơ servo

như Hình 4.3.

Buồng tối

Băng tải 1

Băng tải 2

Hình 4.7: Vị trí đặt buồng tối.

Buồng tối nằm ở sau băng tải 1 và trước 2 khay chứa bút chì cùng servo, được

gắn vào khung bao quanh vị trí của Webcam. Webcam được đặt ở ngay chính giữa

buồng tối, bên trong có 2 đèn led 3.3V để cung cấp nguồn sáng cho buồng tối.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆ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

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

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Ộ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 32

CHƯƠNG 4. THI CÔNG HỆ THỐNG

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

4

2

3

5

1

8

7

6

9

Bước 3: Nhấn Start trên giao diện Guide

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 Độ chính xác (%) Màu đưa vào màu chính xác

30 30 100% Đỏ

30 30 100% Cam

30 28 93,33% Vàng

30 30 100% Lục

30 30 100% Lam

30 29 96,67% Hồng

30 28 93,33% Tím

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

[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.

xhcmR1aW5vdmlldHxneDphYjVlNDQxMDdmM2Y1NGY).

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 <= hueThresholdLowRed) |(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;

g7=0;

k2=0;

SL=SL+1;

set(handles.text_SL,'string',SL);

c=set(handles.text_K2,'string','');

end

else

set(handles.text_KT,'string','ALREADY HAVE');

pause(1);

end

elseif CC2.NumObjects > 0

set(handles.text_ketqua,'string','Orange');

imshow(maskedRGBImageOrange,'parent',handles.axes_KQ);

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH xxxii

PHỤ LỤC

if f2==0

b=strcat(b,"Orange, ");

set(handles.text_K1,'string',b);

pause(2);

writePosition(s1,1);%90

pause(4);

writePosition(s1,0.56);%00

f2=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 g2==0

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH xxxiii

PHỤ LỤC

c=strcat(c,"Orange, ");

set(handles.text_K2,'string',c);

pause(2);

writePosition(s2,0.5);%90

pause(4);

writePosition(s2,0.945);%00

g2=1;

k2=k2+1;

if k2==7

g1=0;

g2=0;

g3=0;

g4=0;

g5=0;

g6=0;

g7=0;

k2=0;

SL=SL+1;

set(handles.text_SL,'string',SL);

c=set(handles.text_K2,'string','');

end

else

set(handles.text_KT,'string','ALREADY HAVE');

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH xxxiv

PHỤ LỤC

pause(1);

end

elseif CC3.NumObjects > 0

set(handles.text_ketqua,'string','Yellow');

imshow(maskedRGBImageYellow,'parent',handles.axes_KQ);

if f3==0

b=strcat(b,"Yellow, ");

set(handles.text_K1,'string',b);

pause(2);

writePosition(s1,1);%90

pause(4);

writePosition(s1,0.56);%00

f3=1;

k1=k1+1;

if k1==7

f1=0;

f2=0;

f3=0;

f4=0;

f5=0;

f6=0;

f7=0;

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH xxxv

PHỤ LỤC

k1=0;

SL=SL+1;

set(handles.text_SL,'string',SL);

b=set(handles.text_K1,'string','');

end

elseif g3==0

c=strcat(c,"Yellow, ");

set(handles.text_K2,'string',c);

pause(2);

writePosition(s2,0.5);%90

pause(4);

writePosition(s2,0.945);%00

g3=1;

k2=k2+1;

if k2==7

g1=0;

g2=0;

g3=0;

g4=0;

g5=0;

g6=0;

g7=0;

k2=0;

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH xxxvi

PHỤ LỤC

SL=SL+1;

set(handles.text_SL,'string',SL);

c=set(handles.text_K2,'string','');

end

else

set(handles.text_KT,'string','ALREADY HAVE');

pause(1);

end

elseif CC4.NumObjects > 0

set(handles.text_ketqua,'string','Green');

imshow(maskedRGBImageGreen,'parent',handles.axes_KQ);

if f4==0

b=strcat(b,"Green, ");

set(handles.text_K1,'string',b);

pause(2);

writePosition(s1,1);%90

pause(4);

writePosition(s1,0.56);%00

f4=1;

k1=k1+1;

if k1==7

f1=0;

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH xxxvii

PHỤ LỤC

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 g4==0

c=strcat(c,"Green, ");

set(handles.text_K2,'string',c);

pause(2);

writePosition(s2,0.5);%90

pause(4);

writePosition(s2,0.945);%00

g4=1;

k2=k2+1;

if k2==7

g1=0;

g2=0;

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH xxxviii

PHỤ LỤC

g3=0;

g4=0;

g5=0;

g6=0;

g7=0;

k2=0;

SL=SL+1;

set(handles.text_SL,'string',SL);

c=set(handles.text_K2,'string','');

end

else

set(handles.text_KT,'string','ALREADY HAVE');

pause(1);

end

elseif CC5.NumObjects > 0

set(handles.text_ketqua,'string','Blue');

imshow(maskedRGBImageBlue,'parent',handles.axes_KQ);

if f5==0

b=strcat(b,"Blue, ");

set(handles.text_K1,'string',b);

pause(2);

writePosition(s1,1);%90

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH xxxix

PHỤ LỤC

pause(4);

writePosition(s1,0.56);%00

f5=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 g5==0

c=strcat(c,"Blue, ");

set(handles.text_K2,'string',c);

pause(2);

writePosition(s2,0.5);%90

pause(4);

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH xl

PHỤ LỤC

writePosition(s2,0.945);%00

g5=1;

k2=k2+1;

if k2==7

g1=0;

g2=0;

g3=0;

g4=0;

g5=0;

g6=0;

g7=0;

k2=0;

SL=SL+1;

set(handles.text_SL,'string',SL);

c=set(handles.text_K2,'string','');

end

else

set(handles.text_KT,'string','ALREADY HAVE');

pause(1);

end

elseif CC6.NumObjects > 0

set(handles.text_ketqua,'string','Pink');

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH xli

PHỤ LỤC

imshow(maskedRGBImagePink,'parent',handles.axes_KQ);

if f6==0

b=strcat(b,"Pink, ");

set(handles.text_K1,'string',b);

pause(2);

writePosition(s1,1);%90

pause(4);

writePosition(s1,0.56);%00

f6=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

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH xlii

PHỤ LỤC

elseif g6==0

c=strcat(c,"Pink, ");

set(handles.text_K2,'string',c);

pause(2);

writePosition(s2,0.5);%90

pause(4);

writePosition(s2,0.945);%00

g6=1;

k2=k2+1;

if k2==7

g1=0;

g2=0;

g3=0;

g4=0;

g5=0;

g6=0;

g7=0;

k2=0;

SL=SL+1;

set(handles.text_SL,'string',SL);

c=set(handles.text_K2,'string','');

end

else

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH xliii

PHỤ LỤC

set(handles.text_KT,'string','ALREADY HAVE');

pause(1);

end

elseif CC7.NumObjects > 0

set(handles.text_ketqua,'string','Purple');

imshow(maskedRGBImagePurple,'parent',handles.axes_KQ);

if f7==0

b=strcat(b,"Purple, ");

set(handles.text_K1,'string',b);

pause(2);

writePosition(s1,1);%90

pause(4);

writePosition(s1,0.56);%00

f7=1;

k1=k1+1;

if k1==7

f1=0;

f2=0;

f3=0;

f4=0;

f5=0;

f6=0;

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH xliv

PHỤ LỤC

f7=0;

k1=0;

SL=SL+1;

set(handles.text_SL,'string',SL);

b=set(handles.text_K1,'string','');

end

elseif g7==0

c=strcat(c,"Purple, ");

set(handles.text_K2,'string',c);

pause(2);

writePosition(s2,0.5);%90

pause(4);

writePosition(s2,0.945);%00

g7=1;

k2=k2+1;

if k2==7

g1=0;

g2=0;

g3=0;

g4=0;

g5=0;

g6=0;

g7=0;

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH xlv

PHỤ LỤC

k2=0;

SL=SL+1;

set(handles.text_SL,'string',SL);

c=set(handles.text_K2,'string','');

end

else

set(handles.text_KT,'string','ALREADY HAVE');

pause(1);

end

else

set(handles.text_ketqua,'string','No Pencil or Other Pencil');

cla(handles.axes_KQ);

cla(handles.axes_AC);

pause(1);

end

end

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH xlvi