You are on page 1of 104

BỘ GIÁO DỤC VÀ ĐÀO TẠO

TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT


THÀNH PHỐ HỒ CHÍ MINH

LUẬN VĂN THẠC SĨ


TRẦN THỊ THẢO VY

ỨNG DỤNG TRÍ TUỆ NHÂN TẠO ĐỂ ĐÁNH GIÁ


CHẤT LƯỢNG CỦA TRÁI DỪA XUẤT KHẨU

NGÀNH: KỸ THUẬT CƠ ĐIỆN TỬ

Tp. Hồ Chí Minh, tháng 11/2022


TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT
THÀNH PHỐ HỒ CHÍ MINH

LUẬN VĂN THẠC SĨ


TRẦN THỊ THẢO VY

ỨNG DỤNG TRÍ TUỆ NHÂN TẠO ĐỂ


ĐÁNH GIÁ CHẤT LƯỢNG CỦA TRÁI DỪA XUẤT KHẨU

NGÀNH: KỸ THUẬT CƠ ĐIỆN TỬ - 1920907


Hướng dẫn khoa học:
PGS.TS NGUYỄN TRƯỜNG THỊNH

Tp. Hồ Chí Minh, tháng 11/2022


LÝ LỊCH KHOA HỌC

I. LÝ LỊCH SƠ LƯỢC:
Họ & tên: Trần Thị Thảo Vy Giới tính: Nữ
Ngày, tháng, năm sinh: 06/07/1991 Nơi sinh: Tây Ninh
Quê quán: Tây Ninh Dân tộc: Kinh
Chỗ ở riêng hoặc địa chỉ liên lạc: Trại Bí, Tân Phong, Tân Biên, Tây Ninh
Chức vụ, đơn vị công tác trước khi học tập, nghiên cứu:
Tư vấn Đào tạo & Phát triển, công ty TNHH SMC Corporation Việt Nam
Điện thoại nhà riêng: 089 996 7723
E-mail: vytranspkt710@gmail.com
II. QUÁ TRÌNH ĐÀO TẠO:

1. Trung học chuyên nghiệp:


Hệ đào tạo: Thời gian đào tạo từ ……/…… đến ……/ ……
Nơi học (trường, thành phố):
Ngành học:

2. Đại học:
Hệ đào tạo: Chính quy Thời gian đào tạo từ 09/2011 đến 05/2016
Nơi học (trường, thành phố): Trường Đại học Sư phạm Kỹ thuật Tp. Hồ Chí Minh
Ngành học: Sư phạm Kỹ thuật Công nghiệp
Tên đồ án, luận án hoặc môn thi tốt nghiệp: “Thiết kế bài giảng phương pháp kiểm
tra đánh giá vật liệu”.
Ngày & nơi bảo vệ đồ án, luận án hoặc thi tốt nghiệp: 29/07/2015 tại phòng Vật liệu
học thuộc khoa Cơ khí chế tạo máy
Người hướng dẫn: ThS. Nguyễn Văn Thức

i
III. QUÁ TRÌNH CÔNG TÁC CHUYÊN MÔN KỂ TỪ KHI TỐT NGHIỆP ĐẠI
HỌC:
Thời gian Nơi công tác Công việc đảm nhiệm
Từ tháng 08
Công ty TNHH Cơ Khí – Thương Hỗ trợ kỹ thuật: vẽ chi tiết máy,
đến tháng 12
Mại Lê Duyên Anh tính toán khối lượng máy
năm 2015
Nhân viên kinh doanh (2016-
2018)
Từ tháng
Công ty TNHH SMC Corporation Chuyên viên đào tạo kỹ thuật
02/2016 đến
Việt Nam (2018-2021)
nay
Tư vấn Đào tạo & Phát triển
(2021-2022)

ii
LỜI CAM ĐOAN

Tôi cam đoan đây là công trình nghiên cứu của tôi.
Các số liệu, kết quả nêu trong luận văn là trung thực và chưa từng được ai công bố
trong bất kỳ công trình nào khác.

Tp. Hồ Chí Minh, ngày … tháng 11 năm 2022


(Ký tên và ghi rõ họ tên)

Trần Thị Thảo Vy

iii
LỜI CẢM ƠN
Trong khoá học tại Trường Đại học Sư Phạm Kỹ Thuật TP.HCM, em đã nhận được
sự tận tình dạy dỗ của quý Thầy (Cô) về kiến thức chuyên môn cũng như những kiến thức
trong cuộc sống. Từ những kiến thức quý Thầy (Cô) truyền đạt đã giúp em hoàn thành
Chuyên đề trong thời gian cho phép.

Em xin chân thành cảm ơn quý Thầy (Cô) đã giảng dạy em những kiến thức về
chuyên môn và giúp em định hướng theo sự hiểu biết và khả năng để em thực hiện tốt đề
tài “Ứng dụng trí tuệ nhân tạo để đánh giá chất lượng của trái dừa xuất khẩu” và tạo điều
kiện thuận lợi cho em hoàn thành khoá học.

Trong suốt quá trình thực hiện đồ án và hoàn thành báo cáo đã nhận được sự giúp
đỡ, hướng dẫn quý báu của các thầy, các anh chị và các bạn cùng khóa học. Với lòng kính
trọng và biết ơn sâu sắc, chúng em xin bày tỏ lời cảm ơn chân thành tới: Thầy PGS. TS.
Nguyễn Trường Thịnh, người thầy kính mến đã hết lòng giúp đỡ, dạy bảo, tạo mọi điều
kiện thuận lợi cho chúng em trong quá trình thực hiện đồ án.

Một lần nữa xin gửi lời tri ân sâu sắc đến quý Thầy (Cô), các anh chị và các bạn.
Ngoài ra, em cũng hết lòng biết ơn gia đình, bạn bè đã hết lòng giúp đỡ, động viên, ủng hộ
và đóng góp ý kiến cho em trong suốt thời gian thực hiện Chuyên đề này. Chúc quý Thầy
(Cô) sức khỏe và thành công.

Em xin chân thành cảm ơn!

Học viên thực hiện


Trần Thị Thảo Vy

iv
TÓM TẮT
Đánh giá và phân loại là một khâu quan trọng sau khi thu hoạch trái cây vì nó ảnh
hưởng đến giá trị của sản phẩm. Việc dùng phương pháp thủ công chưa mang lại hiệu quả
cao trong khâu này nên việc sử dụng một hệ thống phân loại và xử lý thông minh là điều
rất cần thiết để đảm bảo năng suất và chất lượng đầu ra của trái cây. Việc áp dụng các hệ
thống tự động và thông minh cho phép doanh nghiệp tăng năng suất, giảm sức lao động và
đạt độ chính xác cao trong các công đoạn xử lý. Hiện nay, có rất nhiều nghiên cứu liên
quan đến việc đánh giá và phân loại các loại thực phẩm, đặc biệt là trái cây.
Dừa là loại trái cây có hương vị thơm ngon, nhiều chất dinh dưỡng, đa công dụng
nên được ưa chuộng sử dụng không chỉ ở thị trường trong nước mà còn ở các thị trường
nước ngoài. Hiện tại, nhu cầu sử dụng trái dừa và các sản phẩm từ dừa ngày càng được gia
tăng trên toàn thế giới. Mỗi thị trường đều có những tiêu chí đánh giá chất lượng của trái
dừa riêng và đó là điều rất quan trọng. Đề tài nghiên cứu này đã đề xuất một mô hình phân
loại dừa tự động và thông minh dựa trên mạng nơ-ron nhân tạo (ANN). Hệ thống đã sử
dụng phương pháp xử lý hình ảnh truyền thống để trích xuất các đặc trưng của trái dừa và
đưa các đặc trưng đó vào đầu vào của ANN. Sau đó, hệ thống ANN sẽ xử lý và phân loại
thành các loại dừa khác nhau.
Qua nhiều lần thử nghiệm và điều chỉnh, hệ thống phân loại và đánh giá chất lượng
trái dừa bằng mạng nơ-ron nhân tạo ANN đạt độ chính xác hơn 98%, như vậy so với các
phương pháp đánh giá khác hệ thống này đáp ứng yêu cầu phân loại và đánh giá chất lượng
trái dừa xuất khẩu tại các địa phương trong nước.

v
ABSTRACT

Evaluation and grading is an important step after harvesting the fruit as it affects the
value of the product. The use of manual methods has not yet brought high efficiency in this
stage, so the use of a smart sorting and processing system is essential to ensure the yield
and quality of the fruit. The application of automatic and intelligent systems allows
businesses to increase productivity, reduce labor and achieve high accuracy in processing
stages. Currently, there is a lot of research related to the evaluation and classification of
foods, especially fruits.
Coconut is a fruit with a delicious taste, many nutrients, and many uses, so it is
popular not only in the domestic market but also in foreign markets. Currently, the demand
for coconut and coconut products is increasing worldwide. Each market has its own criteria
for evaluating the quality of coconuts and that is very important. This research topic has
proposed an automatic and intelligent coconut classification model based on an artificial
neural network (ANN). The system used the traditional image processing method to extract
the features of the coconut and feed those features into the input of the ANN. Then, the
ANN system will process and classify into different types of coconuts.
After many times of testing and adjusting, the system of classifying and evaluating
coconut quality by artificial neural network ANN achieves an accuracy of more than 98%,
so compared to other evaluation methods, this system meets meet the requirements of
classification and assessment of the quality of exported coconuts in localities in the
country.

vi
MỤC LỤC
LÝ LỊCH KHOA HỌC......................................................................................................... i
LỜI CAM ĐOAN ............................................................................................................... iii
LỜI CẢM ƠN ..................................................................................................................... iv
TÓM TẮT............................................................................................................................ v
ABSTRACT ....................................................................................................................... vi
DANH SÁCH CÁC HÌNH .................................................................................................. x
DANH SÁCH CÁC BẢNG ............................................................................................. xiii
MỞ ĐẦU ............................................................................................................................. 1
1. Đặt vấn đề ................................................................................................ …..1

2. Các nghiên cứu được công bố ....................................................................... 2

a. Nghiên cứu tình hình ngoài nước ............................................................................ 2


b. Nghiên cứu tình hình trong nước ............................................................................ 2

3. Mục tiêu nghiên cứu ...................................................................................... 3

4. Nhiệm vụ và giới hạn .................................................................................... 3

a. Nhiệm vụ ............................................................................................................ 3
b. Giới hạn .............................................................................................................. 4
5. Phương pháp nghiên cứu ............................................................................... 4

a. Phương pháp khảo sát ......................................................................................... 4


b. Phương pháp thu thập thông tin.......................................................................... 4
c. Phương pháp phân tích, tổng hợp ....................................................................... 4
6. Cấu trúc luận văn ........................................................................................... 5

CHƯƠNG I: TỔNG QUAN ................................................................................................ 7


1.1. Thị phần xuất khẩu dừa ................................................................................. 7

1.1.1. Thị phần xuất khẩu dừa trên thế giới ........................................................... 7
1.1.2. Thị phần xuất khẩu dừa tại Việt Nam .......................................................... 9
1.2. Đối tượng được đánh giá ............................................................................. 10

vii
1.3. Vấn đề về xuất khẩu dừa ............................................................................. 13

1.4. Tiêu chuẩn xuất khẩu dừa............................................................................ 14

1.4.1. Yêu cầu về chất lượng..................................................................................... 14

1.4.2. Phân hạng ........................................................................................................ 15

a. Hạng đặc biệt ......................................................................................................... 15

b. Hạng I .................................................................................................................... 15

c. Hạng II ................................................................................................................... 16

1.4.3. Yêu cầu về kích cỡ .......................................................................................... 16

1.5. Các phương pháp đánh giá chất lượng trái dừa ........................................... 17

1.5.1. Đánh giá chất lượng trái dừa qua khối lượng: Phương pháp cân .............. 17
1.5.2. Đánh giá chất lượng trái dừa qua hệ thống thị giác máy tính .................... 18
1.5.3. Đánh giá chất lượng trái dừa qua tỷ trọng ................................................. 18
1.5.4. Đánh giá chất lượng trái dừa qua âm thanh ............................................... 19
1.5.5. Đánh giá chất lượng trái dừa qua siêu âm ................................................. 20
1.6. Giới thiệu hệ thống tự động làm sạch và đánh giá chất lượng dừa bằng trí tuệ nhân
tạo 21

1.6.1. Các ứng dụng đánh giá chất lượng hàng trái cây nông sản bằng trí tuệ nhân tạo
đã công bố ................................................................................................................. 21
1.6.2. Giới thiệu hệ thống tự động làm sạch và đánh giá chất lượng dừa bằng ANN
23
CHƯƠNG II: CƠ SỞ LÝ THUYẾT PHÂN LOẠI DỪA THEO TỶ TRỌNG ................ 25
2.1 Xác định tỷ trọng trái dừa ............................................................................ 25

2.1.1. Thu thập hình ảnh từ máy ảnh ........................................................................ 26


2.1.2. Xử lý hình ảnh................................................................................................. 29
2.1.3. Phân ngưỡng hình ảnh trái dừa ....................................................................... 31
2.1.4. Xác định đường viền trái dừa ......................................................................... 33
2.1.5. Trích xuất các đặc trưng ................................................................................. 34

viii
2.2 Chất lượng của trái dừa liên quan đến mật độ .................................................... 39

CHƯƠNG III: HỆ THỐNG MÁY PHÂN LOẠI DỪA.................................................... 41


3.1. Đề xuất và ý tưởng làm hệ thống máy phân loại dừa .................................. 41

Kết quả thiết kế ......................................................................................................... 42

Kết quả thực nghiệm ................................................................................................. 45

3.2. Khả năng làm sạch trái dừa ................................................................................ 45

3.3 Khả năng phân loại trái dừa......................................................................... 48

CHƯƠNG IV: PHÂN LOẠI DỪA BẰNG MẠNG THẦN KINH NHÂN TẠO .... 51

4.1 Mô hình và cấu trúc nơ ron nhân tạo ........................................................... 51

4.2 Các công thức tính toán cho mạng thần kinh nhân tạo ....................................... 53

CHƯƠNG V: THỰC NGHIỆM VÀ ĐÁNH GIÁ KẾT QUẢ ................................. 54

CHƯƠNG VI: KẾT LUẬN............................................................................................... 59


TÀI LIỆU THAM KHẢO ................................................................................................. 60
PHỤ LỤC .......................................................................................................................... 63

ix
DANH SÁCH CÁC HÌNH

Hình 1. Phân tích dãy âm thanh trong matlab…………………………………………………2

Hình 1.1. Biểu đồ tổng diện tích dừa của thế giới………………………………………..……8

Hình 1.2. Biểu đồ tổng sản lượng dừa của thế giới……….……………………………..…...8

Hình 1.3. Biểu đồ phân bố diện tích dừa năm 2020………………..………………………..10

Hình 1.4. Mặt cắt ngang của trái dừa (nguồn Internet)…………………………….……….11

Hình 1.5. Dừa (Nguồn Internet)…………………………………………..……………………12

Hình 1.6. Sử dụng hệ thống thị giác máy tính để đánh giá chất lượng trái dừa…………18

Hình 1.7. Sử dụng âm thanh để đánh giá chất lượng trái dừa………….….………………20

Hình 1.8. Sử dụng siêu âm để đánh giá chất lượng trái dừa……………..….……………..20

Hình 2.1. Tính thể tích hình Elip………………………………………………………………25

Hình 2.2. Quá trình chiết xuất các đặc trưng của trái dừa về: chiều cao (H), chiều rộng
(L), thể tích (V), khối lượng (m), tỷ trọng (d)…………………….……………………………26

Hình 2.3. Sơ đồ bố trí thu thập lấy mẫu dừa…………………………………………………28

Hình 2.4. Ảnh dừa mẫu………………………………………………………………………….29

Hình 2.5. Hình ảnh trái dừa qua các kênh màu………………………………………….…..30

Hình 2.6. Biểu đồ hiển thị tần suất xuất hiện của các điểm ảnh từ 0 – 255 của kênh màu
HSV qua đó biết vị trí phân vùng của trái dừa nằm ở đâu…………………………………..31

Hình 2.7. Hình ảnh trái dừa được phân ngưỡng bằng hình thái học………………..…….31

Hình 2.8. Phân ngưỡng ảnh BINARY_INV………………………………………………..….32

x
Hình 2.9. Phân ngưỡng ảnh nhị phân hóa bằng thuật toán Otsu………………………….33

Hình 2.10. Hình ảnh trái dừa đầu ra chuẩn bị cho công đoạn trích xuất các đặc trưng.33

Hình 2.11. Bộ hình ảnh trái dừa sau khi đã xử lý thành các loại ảnh: ảnh nhị phân, ảnh
tô màu, ảnh đóng khung, ảnh bao viền…………………………………………………………34
Hình 2.12. Trích xuất điểm trung tâm, chiều cao và chiều rộng của trái dừa……………35

Hình 2.1 Sơ đồ bố trí máy ảnh…………………………………………………………………36

Hình 2.14. Mối quan hệ giữa chiều cao của dừa và chiều cao từ đĩa đối với thân…...…37

Hình 2.2. Đồ thị sai lệch tỷ trọng tính toán so với tỷ trọng thực tế……………………....40

Hình 3.3 Sơ đồ ý tưởng thiết kế hệ thống làm sạch và đánh giá chất lượng trái dừa…..41

Hình 3.2. Sơ đồ hệ thống làm sạch vỏ và kiểm tra chất lượng trái dừa………………..…42

Hình 3.3. Mô hình 3D hệ thống làm sạch và kiểm tra chất lượng dừa (Phần mềm
Inventor)……………………………………………………………………………………………42
Hình 3.4. Hệ thống làm sạch và kiểm tra chất lượng dừa…………………………….…....45

Hình 3.5. Khả năng làm sạch của hệ thống: Trái dừa trước khi đưa vào hệ thống làm
sạch (a), trái dừa sau khi được hệ thống làm sạch (b)…………………………….….……..46

Hình 3.6. Trái dừa được làm sạch bằng hệ thống: Đầu phun nước (a); Rulo lau và đầu
chổi lau (b)……………………………………………………………………………….…….….47

Hình 3.7. Lượng nước còn động lại trái trái dừa khi làm sạch: Trái dừa trước khi đưa
vào hệ thống làm sạch (a), trái dừa sau khi được hệ thống làm sạch (b).……..……….…47

Hình 3.8.4 Bệ cân loadcell……………………………………………………….….….……..49

Hình 3.9. Bộ phận xử lý ảnh: Buồng chụp ảnh (a); Ảnh chụp từ camera (b)…...………49

Hình 3.5 Kích thước nhận được khi xử lý ảnh……………………………………..……….50

xi
Hình 4.1. Cấu trúc của một mô hình ANN đề xuất: lớp input gồm: khối lượng, chiều cao,
chiều rộng, thể tích, tỷ trọng, màu Hue (max, min, mean), màu Sarturation (max, min,
mean)……………………………………………………………………………………………….52
Hình 5.1. Kích thước trái dừa……………………………………………………………….….55

Hình 5.2. Biểu đồ thể tích thực với thể tích tính toán……………………………………..…56

Hình 5.3. Sai số của kích thước………………………………………………………….….….58

xii
DANH SÁCH CÁC BẢNG

Bảng 1.1. Tiêu chuẩn phân loại trái dừa theo khối lượng……………………………………16

Bảng 1.1. Tiêu chuẩn phân loại trái dừa theo mật độ………………………………………..17

Bảng 2.2. Các đặc trưng trái dừa – Số liệu input để huấn luyện model……………………38

Bảng 3.1. Thông số kỹ thuật của hệ thống làm sạch và đánh giá chất lượng trái dừa…..44

Bảng 5.1. Sai số của thể tích thực tế và thể tích tính toán trên 10 mẫu dừa………………57

Bảng 5.2. Độ chính xác của các mô hình khác……………………………………………….57

xiii
MỞ ĐẦU

1. Đặt vấn đề
Nông nghiệp là ngành kinh tế quan trọng của Việt Nam. Hiện nay, Việt Nam vẫn
là một nước nông nghiệp. Mặc dù mặt hàng nông sản Việt Nam có chất lượng cao nhưng
vẫn chưa cạnh tranh được với các đối thủ trên thị trường. Một trong những nguyên nhân
đó là do Việt Nam chưa áp dụng khoa học kỹ thuật tiến bộ để làm tăng chất lượng đầu ra
sản phẩm. Các cơ sở và doanh nghiệp sản xuất dừa ở Việt Nam hiện nay vẫn làm sạch
dừa theo phương pháp thủ công và đánh giá chất lượng dừa dựa vào kinh nghiệm. Nhu
cầu sử dụng dừa trong và ngoài nước rất lớn, yêu cầu các cơ sở và doanh nghiệp sản xuất
dừa phải tuyển dụng số lượng lớn công nhân có kinh nghiệm trong việc làm sạch và đánh
giá chất lượng dừa. Vì vậy, giá thành dừa tăng cao. Mặc khác, Việc kiểm soát chất lượng
thủ công bằng mắt thường theo cách truyền thống rất dễ để sót những lỗi nhỏ của sản
phẩm. Với sự phát triển của công nghệ, máy móc hiện đại ngày nay đã được trang bị
camera với độ phân giải cao hơn mắt chúng ta gấp nhiều lần – và nhờ đó, phát hiện được
những khiếm khuyết dù là nhỏ nhất. Thị giác máy cho phép máy móc soi chiếu mọi sản
phẩm trên dây chuyền sản xuất và phát hiện ra bất kỳ khuyết điểm nào. Không dừng lại ở
việc phát hiện khuyết điểm, hệ thống còn tổng hợp lại các trường hợp sai lỗi, kết hợp với
công nghệ máy học để phát hiện ra các nguyên nhân phổ biến và đề xuất cách khắc phục
góp phần đảm bảo năng suất cho sản lượng dừa tươi xuất khẩu ra thị trường thế giới.
Như đã phân tích, vấn đề ở đây là do chất lượng nông sản không đồng đều, hoạt
động thủ công còn quá nhiều ảnh hưởng đến chất lượng và năng suất đầu ra của trái dừa
xuất khẩu, chính vì vậy em thực hiện đề tài “Ứng dụng trí tuệ nhân tạo để đánh giá chất
lượng của trái dừa xuất khẩu” nhằm tự động hóa quá trình đánh giá chất lượng trái dừa
xuất khẩu, giúp tăng năng suất và chất lượng sản phẩm đầu ra đồng thời giúp dừa Việt
Nam tăng lợi thế cạnh tranh ở thị trường trong nước và quốc tế.

1
2. Các nghiên cứu được công bố
a. Nghiên cứu tình hình ngoài nước
Ngày nay ở nhiều nước trên thế giới sản xuất nông sản đã trở thành một trong những
ngành kinh tế mũi nhọn, đem lại lợi nhuận cao cho nông dân cũng như doanh nghiệp như:
Mỹ, Anh, Nhật… Để đạt được những thành công đó là sự kết hợp khoa học kỹ thuật hiện
đại vào sản xuất. Việc sử dụng các loại máy móc thay thế sức người không chỉ đem lại
năng suất cao, chất lượng tốt mà còn tiết kiệm chi phí cho người nông dân.
Trên thế giới đã có nhiều nghiên cứu về phân loại trái dừa bằng việc phân tích âm
thanh. Phương pháp sử dụng thiết bị ghi lại âm thanh phát ra khi trái dừa va chạm vào bề
mặt đá hoa cương (granite) đứng yên, bản ghi âm sẽ được giải mã và phân tích trong Matlab
hình 1. Tuy nhiên, việc lấy dữ liệu âm thanh đòi hỏi người nghiên cứu phải đảm bảo các
điều kiện như môi trường không tiếng ồn, cơ chế ghi âm không thay đổi, thiết lập môi
trường liên tục, dừa được thả xuống tấm đá hoa cương từ độ cao không đổi một feet.
Phương pháp này có thể giúp nhận biết trình trạng trái cây khác nhau như độ chín của trái,
độ dày mỏng của phần cơm dừa,…

Hình 1. Phân tích dãy âm thanh trong matlab

b. Nghiên cứu tình hình trong nước


Để tăng năng suất, sản xuất hiệu quả và giảm giá thành sản phẩm là yếu tố sống còn
của một doanh nghiệp. Việc ứng dụng công nghệ cao và mới vào hoạt động sản xuất là
bước đi cần thiết của các doanh nghiệp trong nước để phát triển khoa học công nghệ ở Việt
Nam. Việc ứng dụng tự động hóa vào trong công nghiệp đặc biệt là công nghiệp sản xuất
và chế biến nông sản vô cùng cần thiết. Hiện tại Việt Nam hầu như chưa có đơn vị nào ứng

2
dụng tự động hoá vào quá trình sản xuất và phân loại nông sản do giá thành cao từ việc
nhập khẩu thiết bị, máy móc của nước ngoài. Việc ứng dụng công nghệ này vào trong các
dây chuyền sản xuất phân loại nông sản là yếu tố cần thiết mà các doanh nghiệp phải làm
để tiếp cận những thị trường nước ngoài có yêu cầu kỹ thuật cao.
Hơn thế nữa việc ứng dụng trí tuệ nhân tạo vào đánh giá chất lượng trái dừa xuất khẩu kết
hợp với máy móc thiết bị đã chế tạo góp phần làm tối ưu hóa chất lượng sản phẩm đầu ra
và đảm bảo sản lượng xuất khẩu theo nhu cầu ngày càng gia tăng của thị trường hiện nay.
3. Mục tiêu nghiên cứu
Mục tiêu của nghiên cứu là tạo ra một giải pháp có thể phân loại dừa về màu sắc,
khối lượng, kích thước, hình dạng và tỷ trọng thông qua mô hình hệ thống phân loại sử
dụng xử lý hình ảnh kết hợp trí tuệ nhân tạo bao gồm việc lập trình ngôn ngữ Python, thị
giác máy tính và mạng nơ-ron nhân tạo ANN để đánh giá phân loại ra các loại dừa đạt
chất lượng xuất khẩu (Hoặc tiêu dùng nội địa).
Đề tài nghiên cứu ứng dụng trí tuệ nhân tạo vào quá trình đánh giá chất lượng trái dừa
xuất khẩu nhằm đảm bảo chất lượng sản phẩm nông sản Việt Nam khi xuất khẩu sang thị
trường các nước khác, tăng tính cạnh tranh thị trường. Bên cạnh đó giúp các cơ sở, công ty
sản xuất và xuất khẩu dừa không bị lệ thuộc vào yếu tố con người trong việc đánh giá chất
lượng trái dừa.
4. Nhiệm vụ và giới hạn
a. Nhiệm vụ
Nhiệm vụ đề tài nghiên cứu là đảm bảo trái dừa xuất khẩu đạt chất lượng theo các
tiêu chí đã đề ra của thị trường tiêu thụ dừa thế giới.
Tìm cách để đánh giá chất lượng của trái dừa xuất khẩu, để đạt được mục tiêu đó em tập
trung thực hiện các nhiệm vụ nghiên cứu các vấn đề sau:
1. Nghiên cứu cách tính toán tỷ trọng trái dừa để xác định chất lượng trái dừa qua tỷ
trọng.
2. Nghiên cứu kỹ thuật xử lý ảnh – thị giác máy tính truyền thống.

3
3. Nghiên cứu trí tuệ nhân tạo – mạng nơ-ron nhân tạo Artificial Neural Network
(ANN).
4. Nghiên cứu các thuật toán khác để so sánh với ANN
b. Giới hạn
Để đạt được mục tiêu nghiên cứu như trên, tiến hành một số nội dung nghiên cứu
như: Khảo sát thực tế hoạt động phân loại dừa tại các cơ sở xuất khẩu dừa ở chợ nông sản
Thủ Đức, khảo nghiệm để xác định một số thông số cơ bản của dừa, thống kê kích thước
cân nặng, kích thước và thể tích phổ biến của dừa, khảo nghiệm nguyên lý phương pháp
phân loại dừa khả thi nhất,… Qua đó đề xuất ứng dụng trí tuệ nhân tạo vào khâu đánh giá
chất lượng trái dừa xuất khẩu, sau khi trái dừa đã qua các giai đoạn như: Làm sạch bên
ngoài vỏ dừa, tiếp đến xử lý ảnh ứng dụng công nghệ máy học và trí tuệ nhân tạo để tính
thể tích và cân khối lượng để xác định tỷ trọng nhằm phân loại dừa theo chất lượng.
5. Phương pháp nghiên cứu
a. Phương pháp khảo sát
• Khảo sát cách thức phân loại dừa tại các cơ sở và doanh nghiệp khu vực chợ nông
sản Thủ Đức.
• Nghiên cứu tìm hiểu các hệ thống phân loại nông sản đang được sử dụng hiện nay
trong nước và nước ngoài.
• Tìm hiểu tiêu chuẩn đánh giá và phân loại trái dừa xuất khẩu ở các cơ sở và doanh
nghiệp sản xuất khẩu trái dừa tươi.
• Tiến hành đánh giá phân tích các phương án phù hợp, các phương pháp ít sai số và
đem lại hiệu quả cao nhất.
b. Phương pháp thu thập thông tin
• Xác định vấn đề nghiên cứu từ đơn đặt hàng của các cơ sở và doanh nghiệp khu vực
chợ nông sản Thủ Đức.
• Nghiên cứu tổng quan trong và ngoài nước cũng như khảo sát phương án nghiên
cứu ứng dụng mạng thần kinh nhân tạo ANN vào hệ thống phân loại dừa.
c. Phương pháp phân tích, tổng hợp

4
• Xây dựng phương pháp phân loại, sắp xếp các giai đoạn phân loại cho phù hợp dựa
trên các khảo sát thực tế.
• Xây dựng thuật toán, phương pháp tính toán sao cho sai số thấp và hiệu quả cao.
• Bắt đầu thực hiện ứng dụng ANN vào khâu đánh giá chất lượng trái dừa xuất khẩu,
sau đó đánh giá thực nghiệm.

6. Cấu trúc luận văn


Luận văn được trình bày thành 6 chương.
Mở đầu:
Đặt vấn đề, trình bày khái quát về lĩnh vực nghiên cứu, tầm quan trọng của lĩnh vực nghiên
cứu. Từ đó, đưa ra những mục tiêu và nhiệm vụ cụ thể trong đề tài.
Chương I: Tổng quan
Trình bày tình hình xuất khẩu dừa, nêu lên vấn đề về xuất khẩu dừa & giới thiệu hệ thống
tự động làm sạch và đánh giá chất lượng dừa có áp dụng trí tuệ nhân tạo vào quá trình
đánh giá chất lượng trái dài xuất khẩu qua mạng thần kinh nhân tạo ANN.
Chương II: Cơ sở lý thuyết - Phân loại dừa theo tỷ trọng
Trình bày cơ sở phân loại dừa theo tỷ trọng, đưa ra các công thức tính toán tỉnh trọng trái
dừa và từ đó đưa ra bản tiêu chuẩn phân loại dừa theo tỷ trọng.
Chương III: Hệ thống máy phân loại dừa
Trình bày hệ thống máy phân loại dừa, từ đưa ra ý tưởng đến lúc hoàn thành bản phác thảo
và chế tạo máy hoàn chỉnh từ nhóm sinh viên đã nghiên cứu trước.
Chương IV: Phân loại dừa bằng mạng thần kinh nhân tạo
Trình bày cách sử dụng mạng thần kinh nhân tạo để phân loại và đánh giá chất lượng trái
dừa xuất khẩu
Chương V: Thực nghiệm và đánh giá kết quả
Trình bày kết quả trích xuất các đặc trưng trái dừa, biểu đồ so sánh kết quả tính toán và
thực nghiệm của khối lượng và kích thước (chiều rộng, chiều cao) trái dừa, bảng số liệu so
sánh giữa phương án sử dụng ANN với các phương pháp khác.

5
Chương VI: Kết luận
Đưa ra kết luận và cho biết % độ chính xác khi sử dụng kết hợp các phương pháp xử lý
hình ảnh và máy học để đánh giá và và ANN làm cho hệ thống đạt được độ chính xác khá
cao.

6
CHƯƠNG I: TỔNG QUAN
1.1. Thị phần xuất khẩu dừa
1.1.1. Thị phần xuất khẩu dừa trên thế giới
Theo Hiệp hội Dừa Châu Á - Thái Bình Dương (APCC) và Tổ chức Lương thực và
Nông nghiệp Liên Hiệp Quốc (FAO), cây dừa được trồng trên 90 quốc gia vùng nhiệt đới
với tổng diện tích 12,366 triệu ha vào năm 2010 và 11,908 triệu ha năm 2016, trong đó
diện tích dừa của các nước Châu Á – Thái Bình Dương là gần 11 triệu ha, chiếm 85% tổng
điện tích dừa thế giới. Ba nhà sản xuất hàng đầu trên thế giới là: Indonesia, Philippines,
và Ấn Độ - chiếm tới 3/4 sản lượng toàn cầu. Thay vì tăng sản lượng để đáp ứng nhu cầu,
nhưng ngược lại tổng sản lượng dừa của họ đã bị giảm nhẹ. Mặc dù sản lượng hàng năm
đã tăng hơn 2% mỗi năm từ năm 2000 đến năm 2009; nhưng đến nay, sản lượng trung
bình đã giảm 0,1% hàng năm kể từ năm 2010 do năng suất thấp (trung bình 46
trái/cây/năm) và cây già cỗi do được trồng từ cuối thế chiến thứ II cùng với những giống
cũ, thiên nhiên cũng đã không đối xử tốt với người nông dân trồng dừa; chuỗi cung ứng
phần lớn không được tổ chức tốt và sản xuất phân tán với quy mô nhỏ nên bất lợi đến quá
trình cung cấp đầu vào, chế biến sơ cấp và tiếp thị, chi phí hậu cần cao, ảnh hưởng đến cả
người trồng và người chế biến tại 3 quốc gia này. Trong khi đó nhu cầu toàn cầu đã tăng
gần 10% mỗi năm, mỗi tấn dừa đã tăng hơn 50% kể từ năm 2013, và các nhà sản xuất
trên thế giới vẫn chưa kịp bổ sung thêm năng lực sản xuất do khó khăn trong việc mở rộng
quy mô.

Tổng Diện tích dừa của thế giới: 11.908 triệu ha. Trong đó: 1. Indonesia 3.5 triệu
ha; 2. Philippine 3.5 triệu ha; 3. Ấn Độ 2.1 triệu ha; 4. Srilanka 440 ngàn ha; 5. New gui
nea 221 ngàn ha; 6. Thái Lan 206 ngàn ha; 7. Kenya 177 ngàn ha; 8. Việt Nam 159 ngàn
ha.

7
Diện tích trồng dừa của thế giới (Triệu ha)

Indonesia Philippine Ấn Độ Srilanka New gui nea


Thái Lan Kenya Việt Nam Các nước khác

Hình 1.1. Biểu đồ tổng diện tích dừa của thế giới

Tổng Sản lượng dừa của thế giới: 70 tỷ quả. Trong đó: 1. Ấn Độ 22 tỷ; 2. Indonesia
16tỷ; 3. Philippine 15 tỷ; 4. Brazil 3 tỷ; 5. Srilanka 2,9 tỷ; 6. Việt Nam 1,3 tỷ. 7. Mexico
1,1tỷ; 8. Thái Lan 1 tỷ.

Sản lượng dừa của thế giới (Tỷ quả)

Indonesia Philippine Ấn Độ Srilanka Brazil Thái Lan Mexico Việt Nam Các nước khác

Hình 1.2. Biểu đồ tổng sản lượng dừa của thế giới

8
Ngày nay, tất cả các nhà cung cấp dừa hàng đầu thế giới đang phải rất cố gắng đuổi
kịp theo mức tăng trưởng về mức tiêu thụ toàn cầu của các sản phẩm dừa. Mặc cho sự cạnh
tranh rất gay gắt từ các loại ngành nông sản tương tự khác, ngành công nghiệp dừa vẫn
đang hứa hẹn là một ngành công nghiệp đầy lợi nhuận trong tương lai. Tuy nhiên, nhà cung
cấp các sản phẩm về dừa phải học hỏi từ tình hình thực tế hiện tại và có những hành động
phù hợp nhằm chắc chắn rằng doanh nghiệp /nguồn cung /nông trại của họ phát triển đủ
bền vững để đáp ứng được nhu cầu của thị trường này trong tương lai.
1.1.2. Thị phần xuất khẩu dừa tại Việt Nam
Diện tích và sản lượng dừa đến năm 2020 của Việt Nam, do Hiệp hội Dừa Bến Tre
tổng hợp theo Niên giám thống kê của các tỉnh có số liệu về dừa và Niên giám thống kê
của Cộng đồng Dừa Quốc tế cho thấy Bến Tre là tỉnh có diện tích dừa lớn nhất Việt Nam
với diện tích trên 73.000 ha (năm 2020), chiếm hơn 40% diện tích dừa của cả nước. Diện
tích dừa thu hoạch trên 600.000 tấn (năm 2020). Một số giống dừa uống nước như dừa
Xiêm, chất lượng ngon, ngọt (độ brix đạt >7%), hàm lượng protein 2,32g/100 ml, béo
6,31g/100ml. Chính vì vậy giá dừa trái nguyên liệu của Bến Tre luôn cao gấp đôi so với
giá dừa của Indonesia và Philippine trong suốt 10 năm qua.
Trung bình mỗi tháng xuất khẩu khoảng 300.000 - 400.000 trái, sang các nước như
Pháp, Mỹ, Nhật, Australia, Canada, Hàn Quốc… Đối tượng khách hàng của công ty phần
lớn là những tập đoàn bán lẻ, hệ thống siêu thị và chợ nông sản.
Tiền Giang - Theo Cục Thống kê tỉnh Tiền Giang, toàn tỉnh hiện có trên 20.000 ha
dừa, tăng hơn 4.000 ha so với thời điểm cách đây 5 năm, sản lượng mỗi năm trên 180.000
tấn trái.

9
Hình 1.3. Biểu đồ phân bố diện tích dừa năm 2020

(Nguồn: Tổng hợp từ Niên giám thống kê các tỉnh năm 2020)
Một số doanh nghiệp chuyên phân phối và xuất khẩu dừa xiêm xanh lớn trong nước là:
Công ty Cổ phần Xuất Nhập Khẩu Bến Tre (Betrimex), Công ty TNHH xuất khẩu trái cây
Mekong, Công ty Cổ phần thực phẩm tươi ngon Mekong, Công ty Xuất nhập khẩu trái cây
Nhiệt đới, Công ty Vina T&T Group (Dừa xiêm xanh Bến Tre phục vụ khách bay tại các
cảng bay của Vietjet), …
Hiện tại, thị trường xuất khẩu dừa xiêm xanh chủ yếu của các doanh nghiệp trong tỉnh là
Hàn Quốc, Australia, Nhật Bản, Đài Loan (Trung Quốc), Singapore…(Mỹ)
1.2. Đối tượng được đánh giá
Dừa cung cấp rất nhiều sản phẩm hữu ích, từ các thực phẩm chúng ta sử dụng hằng
ngày như nước dừa, nước cốt dừa, giấm dừa cho đến các sản phẩm có giá trị hàng hoá cao
như cơm dừa nạo sấy, dầu dừa tinh khiết, rượu mật hoa dừa, các sản phẩm sử dụng trong
công nghiệp chăn nuôi như probiotic, prebiotic cho đến các mặt hàng thủ công mỹ nghệ
phục vụ xuất khẩu. Chính vì lẽ đó cây dừa được mệnh danh là “cây của cuộc sống”, “cây
trăm công dụng”.

10
Hình 1.4. Mặt cắt ngang của trái dừa (nguồn Internet)
Theo nghiên cứu của Sở khoa học và công nghệ tỉnh Bến Tre, trái dừa thuộc loại
quả hạch, nhân cứng. Trái dừa gồm có ba phần là ngoại quả bì (phần vỏ bên ngoài được
phủ cutin), trung quả bì (xơ dừa) và nội quả bì bao gồm gáo, nước và cơm dừa như hình
1.1. [1] (Nguyễn Thị Lệ Thủy, 2009). Theo đó, vỏ dừa dày từ 1-5cm tùy theo giống, phần
cuống có thể dày đến 10cm. Vỏ dừa bao gồm 30% là xơ dừa và 70% là bụi xơ dừa. Bụi xơ
dừa có đặc tính hút và giữ ẩm cao từ 400 - 600% so với thể tích của chính nó. Gáo dừa có
hình dạng rất khác biệt tùy theo giống, độ dày của gáo từ 3-6mm. Bốn tháng tuổi sau khi
thụ phấn gáo dừa bắt đầu hình thành và chuyển sang màu nâu và cứng hơn khi trái được 8
tháng tuổi. Nước dừa xuất hiện từ tháng thứ ba sau khi thụ phấn và đạt được thể tích lớn
nhất ở tám tháng tuổi. Thể tích sẽ giảm dần khi trái khô. Thành phần hóa học chủ yếu của
nước dừa là đường và muối khoáng.
Cơm dừa bắt đầu hình thành 5 tháng sau khi thụ phấn, có thể thu hoạch để uống
nước vào tháng thứ 7-8. Thời gian để hoa cái thụ phấn, phát triển thành trái và đến khi trái
khô kéo dài 12 tháng. Thu hoạch trái ở giai đoạn 10 tháng sau khi đậu trái có thể giảm năng
suất do trái chưa phát triển đầy đủ nhưng ở giai đoạn từ 11 tháng trở đi thì trái có thể dùng
làm giống. Khối lượng cơm dừa khô của một trái dừa dao động từ 100-350 g/trái và chứa
khoảng 65-74% dầu dừa tùy theo giống. Kích thước, hình dạng trái rất đa dạng, tùy theo
giống.

11
Dừa xiêm lục là cách gọi hiện nay của nhiều người trồng trong và ngoài tỉnh Bến
Tre, hình 1.2. Có nơi gọi là dừa xiêm chu (vì phần dưới trái hơi nhô lên), có nơi gọi là dừa
xiêm lùn. Đây là giống dừa đã có từ lâu nhưng chỉ mới có tên gọi gần đây để phân biệt với
dừa xiêm xanh, xiêm dứa.

Hình 1.5. Dừa (Nguồn Internet)


Về hình dáng bên ngoài thì dừa xiêm lục có màu xanh nhưng hơi nhạt hơn xiêm
xanh và màu xanh hơi giống như màu xanh lục. Giống dừa này trái nhiều hơn dừa xiêm
xanh, trung bình mỗi buồng có hơn một chục dừa (mỗi chục là 12 trái).Trong vườn dừa
xiêm lục buồng có từ 20 trái đến 30 trái rất phổ biến, trong khi ở giống dừa xiêm xanh
buồng trên 20 trái thường không được nhiều. Khối lượng và đường kính trái nhỏ hơn trái
dừa xiêm xanh. Nếu buồng ít trái từ 10 đến 16 trái thì trái có thể to hơn và khối lượng trái
tương đương dừa xiêm xanh, nghĩa là từ 1,4 - 1,7 Kg. Nếu buồng sai trái (trên 30 trái/buồng)
thì khối lượng trái chỉ từ 1,1 Kg đến 1,3 Kg. Vỏ trái rất mỏng, chỗ mỏng nhất ở phần giữa
trái chỉ từ 1,2 cm đến 1,4 cm. Do vỏ mỏng nên lượng nước bên trong trái tương đương với
dừa xiêm xanh, nghĩa là khoảng 220-280 ml. Với lượng nước chừng này cũng vừa đủ cho
một người bình thường uống. Điểm đặc biệt của giống dừa xiêm lục là nước rất ngọt. Nếu
12
vườn dừa có bón phân đầy đủ thì khi thu hoạch sớm hơn 5-7 ngày thì nước vẫn ngọt và
không còn vị chua như dừa xiêm xanh. Thời điểm này thì cơm dừa bên trong chỉ vừa “váng
cháo”, độ brix đo lúc này từ 6% trở lên. Nước dừa nếu đo độ brix từ 6% là đã cảm nhận là
ngọt thanh, nếu đạt đến 8% là nước dừa rất ngọt.
Nhìn chung, dừa xiêm lục thuộc nhóm dừa lùn cho trái sớm, năng suất khá cao và
chất lượng nước ngọt hợp với khẩu vị người tiêu dùng. Tuy nhiên do vỏ trái mỏng nên thời
gian thu hoạch cần hợp lý để trái không bị nứt, bể trong quá trình vận chuyển. Dừa xiêm
lục khi vận chuyển xa hoặc xuất khẩu thì không cần gọt vỏ do trái nhỏ nên có thể chuyên
chở được nhiều trái hơn, người tiêu dùng khi mua trái còn nguyên vỏ cũng an tâm hơn dừa
gọt vì không sợ ảnh hưởng của chất tẩy trắng, chất bảo quản… không an toàn mà trên thị
trường có nhiều người đang sử dụng.
1.3. Vấn đề về xuất khẩu dừa
Xuất khẩu dừa giảm mạnh, doanh nghiệp lo lắng riêng thị trường Hoa Kỳ chiếm
khoảng 40%, nhưng đến nay vẫn chưa xuất khẩu được. Hiện tại, thị trường xuất khẩu dừa
xiêm chủ yếu của các doanh nghiệp trong tỉnh là Hàn Quốc, Australia, Nhật Bản, Đài Loan
(Trung Quốc), Singapore… Trong đó thị trường xuất khẩu dừa sang Trung Quốc cũng
giảm mạnh.

Là doanh nghiệp chuyên xuất khẩu trái cây trong đó có xuất khẩu dừa sang thị
trường Hoa Kỳ, trao đổi với phóng viên Báo Công Thương, ông Nguyễn Đình Tùng - Tổng
giám đốc Công ty Xuất nhập khẩu Vina T&T Group - cho hay, lượng dừa của doanh nghiệp
xuất khẩu đến thị trường Hoa Kỳ rất lớn, trung bình xuất khẩu từ 20 - 30 container/tháng

Tuy nhiên, từ đầu năm đến nay, xuất khẩu dừa của doanh nghiệp gặp khó do quy
định từ phía thị trường Hoa Kỳ. Việc không xuất khẩu được dừa sang thị trường Hoa Kỳ
khiến doanh nghiệp bị thiệt hại. Doanh nghiệp không xuất khẩu được khiến người nông
dân trồng dừa bán giá cũng không được tốt. Hiện, giá thu mua dừa tại Bến Tre cho bà con
cũng đang giảm từ 15 - 20%

13
Riêng tại Bến Tre, lượng dừa xiêm xuất khẩu sang thị trường Hoa Kỳ chiếm khoảng
40%. Nghẽn thị trường, xuất khẩu dừa của các doanh nghiệp tại Bến Tre giảm mạnh. Theo
Sở Công Thương Bến Tre, quý I/2022, các doanh nghiệp tỉnh Bến Tre xuất khẩu dừa xiêm
(dừa uống nước), giảm hơn 50% về lượng so với cùng kỳ năm trước

Đây là quy định của thị trường Hoa Kỳ, do đó, các doanh nghiệp vẫn đang phải chờ
động thái của hai nước. Về giải pháp của các doanh nghiệp, trước mắt sẽ chuyển hướng
xuất khẩu sang các thị trường như: Australia, Hàn Quốc, Nhật Bản, Singapore… “Thị
trường Hoa Kỳ là thị trường rất lớn, chúng tôi cũng hi vọng sắp tới Bộ NN&PTNT sẽ đàm
phán nhanh được việc này”
Dừa là một trong những loại trái cây có hàm lượng tỷ trọng hàng xuất khẩu của Việt
Nam. Theo khảo sát tại một số địa phương, các cơ sở, doanh nghiệp sản xuất dừa ở Việt
Nam hiện nay vẫn làm sạch dừa thủ công và đánh giá chất lượng dừa dựa trên kinh nghiệm
của người thợ. Nhu cầu tiêu thụ dừa trong nước và xuất khẩu lớn. Điều này đòi hỏi các cơ
sở sản xuất dừa phải tuyển dụng một lượng lớn công nhân có kinh nghiệm trong việc làm
sạch và đánh giá chất lượng dừa. Việc sử dụng nhiều lao động gây ra nhiều hạn chế cho
các cơ sở sản xuất. Lương công nhân cao dẫn đến giá dừa cũng tăng theo.
Việc làm sạch và phân loại dừa bằng sức lao động của con người dẫn đến năng suất
thấp, việc phân loại sản phẩm hoàn toàn dựa vào kinh nghiệm cá nhân gây ra nhiều khó
khăn và độ chính xác không cao. Điều này đòi hỏi một hệ thống phân loại hoàn toàn dựa
trên công nghệ có thể cải thiện năng suất trong các cơ sở sản xuất. Việc sử dụng công nghệ
kỹ thuật tự động làm sạch và phân loại dừa không chỉ nâng cao năng suất mà còn cải thiện
độ chính xác của việc phân loại và giảm các sai sót do chủ quan tạo ra.
1.4. Tiêu chuẩn xuất khẩu dừa
1.4.1. Yêu cầu về chất lượng
Không có tiêu chuẩn xuất khẩu chính thức cho dừa tươi. Nhưng chúng vẫn phải tuân thủ
các tiêu chuẩn cơ bản giống như bất kỳ loại trái cây tươi khác. Dựa vào việc khảo sát, thử
nghiệm, đánh giá thực tế tại Công ty TNHH MTV Nông Hải Sản Hoa Mai, tham khảo tiêu

14
chuẩn ASEAN Standard 15:2009 [21] cho trái dừa tươi, dừa nguyên trái (để nguyên phần
vỏ xanh) phải đảm bảo được các yêu cầu tối thiểu như sau:
- Phải được cắt tỉa cuống, hoặc đánh bóng.
- Không có vết nứt ở vỏ.
- Vẻ bề ngoài tươi tắn, sạch sẽ, không có bất kỳ vấn đề bề ngoài có thể nhìn thấy.
- Sản phẩm không bị ảnh hưởng bởi sự thối rửa hoặc hư hỏng.
- Không có thiệt hại do sâu bệnh gây ảnh hưởng đến hình thức chung của sản phẩm.
- Không bị ẩm bất thường ở ngoài vỏ, trừ khi bị ngưng tụ nước do vừa đưa ra khỏi
kho lạnh.
- Không có mùi hoặc vị bên ngoài.
Dừa nên được bảo quản ở nhiệt độ khoảng 32°F đến 35°F. Dừa nên được giữ ở độ ẩm
tương đối khoảng 80% - 85%. Tùy thuộc vào độ chín của dừa, chúng có thể rất dễ bị hư
hại về thể chất, với những trái dừa non dễ bị tách hơn so với dừa già. Tùy thuộc vào điều
kiện bảo quản và các yếu tố khác, dừa tươi có thời hạn sử dụng khoảng 1-2 tháng.
1.4.2. Phân hạng
a. Hạng đặc biệt
Dừa quả tươi hạng này phải có chất lượng cao nhất. Chúng phải đặc trưng cho giống
và/hoặc loại thương phẩm. Không có các khuyết tật, trừ các khuyết tật rất nhẹ không ảnh
hưởng đến hình thức bên ngoài, chất lượng, sự duy trì chất lượng và cách trình bày sản
phẩm trong bao bì.
Cho phép 5 % số lượng hoặc khối lượng dừa quả tươi không đáp ứng các yêu cầu của hạng
“đặc biệt”, nhưng đạt chất lượng hạng I, hoặc nằm trong giới hạn sai số cho phép của hạng
I.
b. Hạng I
Dừa quả tươi thuộc hạng này phải có chất lượng tốt. Chúng phải đặc trưng cho giống
và/hoặc loại thương phẩm. Cho phép có những khuyết tật nhẹ, miễn là không ảnh hưởng
đến hình thức bên ngoài, chất lượng, sự duy trì chất lượng và cách trình bày sản phẩm trong
bao bì:
- Khuyết tật nhẹ về màu sắc và hình dạng.

15
- Khuyết tật nhẹ trên vỏ do va chạm cơ học. Tổng diện tích bị ảnh hưởng không vượt quá
5% tổng diện tích bề mặt quả.
Trong mọi trường hợp, các khuyết tật phải không được ảnh hưởng tới cùi và nước quả.
Cho phép 10 % số lượng hoặc khối lượng dừa quả tươi không đáp ứng các yêu cầu của
hạng I, nhưng đạt chất lượng hạng II, hoặc nằm trong giới hạn sai số cho phép của hạng II.
c. Hạng II
Dừa quả tươi thuộc hạng này không đáp ứng được các yêu cầu trong các hạng cao hơn
nhưng phải đáp ứng được các yêu cầu tối thiểu các yêu cầu về chất lượng. Có thể cho phép
dừa quả tươi có các khuyết tật sau với điều kiện vẫn đảm bảo được các đặc tính cơ bản về
chất lượng, sự duy trì chất lượng và cách trình bày của sản phẩm.
- Khuyết tật nhẹ về màu sắc và hình dạng.
- Khuyết tật nhẹ trên vỏ do va chạm cơ học. Tổng diện tích bị ảnh hưởng không vượt quá
15% tổng diện tích bề mặt quả.
Trong mọi trường hợp, các khuyết tật phải không được ảnh hưởng tới cùi và nước quả.
Cho phép 10 % số lượng hoặc khối lượng dừa quả tươi không đáp ứng các yêu cầu của
hạng II cũng như các yêu cầu tối thiểu, nhưng không có quả bị thối hoặc bất kỳ hư hỏng
nào khác dẫn đến không thích hợp cho việc sử dụng.
1.4.3. Yêu cầu về kích cỡ
Dừa Xiêm xanh có kia khối lượng trái từ 1,2000 - 1,500 g
Bảng 1.1. Tiêu chuẩn phân loại trái dừa theo khối lượng

Mã kích cỡ Khối lượng (g)

1 > 2,400

2 1,901 – 2,400

3 1,401 – 1,900

4 901 – 1,400

5 400 - 900

16
Đối với tất cả các hạng, cho phép 10 % số lượng hoặc khối lượng dừa quả tươi
tương ứng với kích cỡ cao hơn hoặc thấp hơn liền kề được ghi trên bao bì.
Dựa vào thực nghiệm tại Công ty TNHH MTV Nông Hải Sản Hoa Mai và ở phòng
thí nghiệm, cùng với việc tham khảm tiêu chuẩn ASEAN như trên, đưa ra bảng số liệu
đánh giá chất lượng trái dừa qua tỷ trọng như sau:
Bảng 1.1. Tiêu chuẩn phân loại trái dừa theo mật độ

Loại đánh giá Tỷ trọng

Loại 1 (Đạt chất lượng) 𝑑𝑡𝑡 ≥ 0,7

Loại 2 (Kiểm tra lại) 0,57 ≤ 𝑑𝑡𝑡 < 0,7

Loại 3 (Không đạt chất lượng) 𝑑𝑡𝑡 < 0,57

1.5. Các phương pháp đánh giá chất lượng trái dừa
Đánh giá chất lượng trái dừa nhằm mục đích kiểm tra chất lượng bên trong của trái
dừa. Cụ thể hơn, nhận biết bên trong trái dừa có nước, ít nước hay không có nước. Tại
các cơ sở hiện nay, người thợ kiểm tra trái dừa đạt chất lượng hay không bằng cách dùng
lòng bàn tay đập vào phần vỏ của trái, sau đó nghe âm thanh phát ra. Nếu âm thanh phát
ra thanh thì trái dừa đạt chất lượng (có nước, không có vết nứt bên trong sọ dừa), âm
thanh phát ra khác thường thì có khả năng trái đó bị nứt bên trong hoặc bị ít nước.
Phương pháp này đòi hỏi người thợ phải giàu kinh nghiệm mới đánh giá được chất lượng
trái dừa. Như vậy, việc đánh giá chất lượng trái dừa quá phụ thuộc vào yếu tố con người.
Để có thể nâng cao tính chính xác và không phụ thuộc vào yếu tố con người, chúng ta
có một số ý tưởng để đánh giá chất lượng trái dừa như sau.

1.5.1. Đánh giá chất lượng trái dừa qua khối lượng: Phương pháp cân

17
Nguyên lý: Dùng phương pháp thống kê để phân tích khối lượng đạt chuẩn của trái
dừa. Cân sẽ được bố trí gắn liền với phễu, trái dừa khi nằm trên phễu sẽ được xác định
khối lượng. So sánh khối lượng của trái dừa với khối lượng chuẩn đã tìm trước đó để
đánh giá chất lượng trái dừa.

• Ưu điểm: Đơn giản, chi phí thấp.

• Nhược điểm: Độ chính xác rất thấp, vì trái dừa có khối lượng chênh lệch nhau theo
mùa, theo tháng và theo vùng.

1.5.2. Đánh giá chất lượng trái dừa qua hệ thống thị giác máy tính

Nguyên lý: Dùng phương pháp thống kê phân tích thể tích để lựa chọn thể tích
chuẩn của trái dừa. Ứng dụng công nghệ hệ thống thị giác máy tính để tính toán thể
tích của trái dừa. Cuối cùng, so sánh thể tích tính toán với thể tích chuẩn của trái dừa
để đánh giá chất lượng.

Hình 1.6. Sử dụng hệ thống thị giác máy tính để đánh giá chất lượng trái dừa

• Ưu điểm: Lắp đặt dễ dàng

• Nhược điểm: Chi phí đầu tư cao, độ chính xác không cao.

1.5.3. Đánh giá chất lượng trái dừa qua tỷ trọng

18
Để nâng cao độ chính xác, chúng ta kết hợp cả hai ý tưởng sử dụng cân và hệ thống
thị giác máy tính. Khi đó, chúng ta sẽ đánh giá trái dừa dựa vào việc so sánh tỷ trọng
của trái.

Trái dừa có hình dạng tương đồng với hình elip quay quanh trục dài nhất. Nên ta
cần đo kích thước dài nhất và ngắn nhất của trái dừa. Từ đó áp dụng công thức tính thể
tích tròn xoay của hình elip quanh trục dài nhất (2a).

4 2
𝑉𝑒𝑙𝑖𝑝 = 𝜋𝑎 . 𝑏 (2.1)
3

Thể tích tính toán dừa:

𝐿1 2 . 𝐿2
𝑉𝑡𝑡 = 𝜋 (𝑙í𝑡 ) (2.2)
6

Dừa có khối lượng m và thể tích Vtt , nên tỷ trọng dừa sẽ là:

𝑚 𝑘𝑔
𝑑= ( ) (2.3)
𝑉𝑡𝑡 𝑙í𝑡

Việc đánh giá chất lượng dừa bằng cách so sánh tỷ trọng của nó với tỷ trọng chuẩn
(tìm bằng phương pháp thống kê). Để tăng độ chính xác, chúng ta sẽ phân thành 3 loại:
loại 1 (trái dừa đạt chất lượng), loại 2 (cần kiểm tra lại), loại 3 (trái dừa không đạt chất
lượng).

1.5.4. Đánh giá chất lượng trái dừa qua âm thanh

Dựa vào kinh nghiệm của người thợ lâu năm, chúng ta sẽ khảo sát, thu thập âm thanh
phát khi người thợ dùng tay đánh ra vào trái dừa. Sau đó, phân tích và tạo ra thuật toán xử
lý tín hiệu âm thanh phát khi dùng một vật tương tự lòng bàn tay đánh vào trái dừa. Ý
tưởng ứng dụng được công nghệ cao vào xử lý tín hiệu nên chi phí đầu tư sẽ rất lớn. Đồng

19
thời, việc thu thập dữ liệu âm thanh phát ra khi dùng tay đánh vào trái dừa rất khó và mang
đậm yếu tố con người.

Hình 1.7. Sử dụng âm thanh để đánh giá chất lượng trái dừa

1.5.5. Đánh giá chất lượng trái dừa qua siêu âm

Siêu âm thường dùng để kiểm tra vết nứt của các ống nước, kết cấu thép của
công trường. Ứng dụng thiết bị thu phát sóng siêu âm để kiểm tra bên trong trái dừa.
Khi đó, chúng ta có thể nhận biết được các vết nứt bên trong sọ trái dừa. Tuy nhiên,
việc đầu tư thiết bị thu phát sóng đòi hỏi đầu tư chi phí rất lớn mới có thể kiểm tra
toàn bộ trái dừa.

Hình 1.8. Sử dụng siêu âm để đánh giá chất lượng trái dừa

20
Qua việc đánh giá các ý tưởng, em quyết định lựa chọn phương án sử dụng trí
tuệ nhân tạo để đánh giá chất lượng trái dừa. Đây là một ý tưởng tối ưu nhất, mang
đến độ chính xác cao do ứng dụng kỹ thuật công nghệ hiện đại vào việc đánh giá
chất lượng hàng nông sản. Tuy nhiên, việc thu thập dữ liệu hình ảnh, phân tích dữ
liệu về khối lượng và thể tích trái dừa đòi hỏi phải chính xác.

1.6. Giới thiệu hệ thống tự động làm sạch và đánh giá chất lượng dừa bằng trí tuệ
nhân tạo
1.6.1. Các ứng dụng đánh giá chất lượng hàng trái cây nông sản bằng trí tuệ nhân tạo
đã công bố
a. Nghiên cứu ngoài nước
Phát hiện khuyết tật vỏ trái cây bằng hệ thống thị giác máy
Nghiên cứu của sinh viên Trung Quốc đề xuất một phương pháp mới để phát hiện các
khuyết tật trên vỏ quả bằng cách sử dụng hệ thống thị giác máy, được chứng minh là chính
xác hơn, chống nhiễu màu tốt hơn và có chi phí tính toán khiêm tốn hơn. Biểu đồ màu được
trích xuất trong hình ảnh cục bộ dưới dạng tính năng hình ảnh, trong khi SVM tuyến tính
(Máy vectơ hỗ trợ) được sử dụng để học mô hình. Trong trường hợp kiểm tra màu cam, hệ
thống này nhận ra tỷ lệ thu hồi là 96,7% và tỷ lệ phát hiện sai là 1,7%. [12]

Phân loại lỗi của mận xanh dựa trên học sâu
Mận xanh rất giàu axit amin, lipid, muối vô cơ, vitamin và các nguyên tố vi lượng. Nó có
giá trị dinh dưỡng và giá trị dược liệu cao và rất được người dân Trung Quốc ưa chuộng.
Tuy nhiên, trong quá trình sinh trưởng, thu hái, bảo quản và vận chuyển, quả mận xanh dễ
bị va chạm, sâu bệnh, gây ra các khuyết tật trên bề mặt, ảnh hưởng đến chất lượng quả mận
xanh và sản phẩm, giảm giá trị kinh tế. Tại Trung Quốc, việc phát hiện và phân loại sản
phẩm mận xanh vẫn được thực hiện thủ công. Phân loại thủ công truyền thống có độ chính
xác thấp, giá thành cao, còn lâu mới đáp ứng được nhu cầu sản xuất sản phẩm mận xanh.
Để nâng cao giá trị kinh tế của mận xanh và các sản phẩm của chúng, đồng thời cải thiện
mức độ tự động hóa và trí thông minh của quy trình sản xuất sản phẩm, nghiên cứu này đã
áp dụng các phương pháp học sâu dựa trên mạng nơ ron tích chập và công nghệ thị giác
máy tính hiệu quả về chi phí để đạt được sự phân loại hiệu quả các khuyết tật mận xanh.
Đầu tiên, một máy ảnh và đèn LED được sử dụng để thu thập 1240 hình ảnh mận xanh
RGB, và tiêu chuẩn phân loại thử nghiệm mận xanh được xây dựng và chia thành năm loại
là thối, đốm, sẹo, nứt và bình thường. Hình ảnh được chia ngẫu nhiên thành tập huấn luyện
và tập kiểm tra, và số lượng hình ảnh của tập huấn luyện được mở rộng. Sau đó, trình tối
ưu hóa trung bình khối lượng ngẫu nhiên (SWA) và chức năng mất w-softmax đã được sử

21
dụng để cải thiện mạng VGG, mạng này đã được đào tạo và thử nghiệm để tạo ra mô hình
mạng phát hiện lỗi mận xanh. Độ chính xác nhận dạng trung bình của lỗi mận xanh là
93,8%, thời gian thử nghiệm cho mỗi ảnh là 84,69 ms, tỷ lệ nhận dạng lỗi phân rã là 99,25%
và tỷ lệ nhận dạng mận xanh bình thường là 95,65%. Kết quả được so sánh với mạng VGG
nguồn, mạng resnet18 và mạng chanh xanh. Kết quả cho thấy đối với việc phân loại lỗi
mận xanh, độ chính xác nhận dạng của mạng phát hiện lỗi mận xanh tăng 9,8% và 16,6%,
đồng thời tốc độ kiểm tra tăng lần lượt là 1,87 và 6,21 ms, có một số lợi thế nhất định. [13]

Học sâu để tự động phân loại chất lượng xoài: Phương pháp và thông tin chuyên sâu
Việc phân loại chất lượng xoài là một nhiệm vụ quan trọng đối với người trồng xoài vì nó
ảnh hưởng rất lớn đến lợi nhuận của họ. Tuy nhiên, cho đến tận ngày nay, quá trình này
vẫn dựa vào nỗ lực của con người, những người dễ bị mệt mỏi và sai sót. Để khắc phục
điều này, bài báo tiếp cận nhiệm vụ chấm điểm với nhiều mạng thần kinh tích chập (CNN),
một công nghệ học sâu đã được thử nghiệm và thử nghiệm trong thị giác máy tính. Các mô
hình liên quan bao gồm Mặt nạ RCNN (để xóa nền), nhiều người chiến thắng trong thử
thách ImageNet trước đây, cụ thể là AlexNet, VGG và ResNets; và, một nhóm các bộ phân
loại mã hóa tự động tích chập tự xác định (ConvAE-Clfs) lấy cảm hứng từ lợi ích đã được
tuyên bố của việc học đa nhiệm trong các nhiệm vụ phân loại. Học chuyển đổi cũng được
áp dụng trong công việc này thông qua việc sử dụng các trọng số được đào tạo trước của
ImageNet.
Bên cạnh việc xây dựng các kỹ thuật tiền xử lý, chi tiết đào tạo và hiệu suất thu được,
chúng tôi còn tiến thêm một bước để cung cấp thông tin chi tiết có thể giải thích được về
hoạt động của mô hình với sự trợ giúp của bản đồ độ mặn và phân tích thành phần chính
(PCA). [14]
b. Nghiên cứu trong nước
Hệ thống phân loại xoài dựa trên thị giác máy và trí tuệ nhân tạo
Phân loại xoài có màu sắc, trọng lượng, kích cỡ, hình dạng và mật độ khác nhau. Hiện nay,
việc phân loại theo tính năng trên đang được thực hiện chủ yếu bằng thủ công do nhận thức
của người nông dân về độ chính xác thấp, giá thành cao, ảnh hưởng sức khỏe và giá thành
cao, tốn kém về kinh tế. Chất lượng bên trong của trái xoài như độ ngọt, độ cứng, độ già,
độ giòn… rất quan trọng nhưng chỉ được ước lượng bằng đánh giá bên ngoài hoặc do con
người cảm nhận. Vì vậy, cần sử dụng mạng nơ-ron nhân tạo để giải quyết vấn đề này.
Nghiên cứu này được thực hiện trên 3 loài xoài thương phẩm chính của Việt Nam nhằm
tìm ra phương pháp phân loại xoài có chất lượng và độ chính xác cao nhất. Các nghiên cứu
trên thế giới về phân loại xoài theo màu sắc, kích thước, khối lượng và hầu như được thực
hiện trong phòng thí nghiệm chứ chưa áp dụng vào thực tế. Việc đánh giá chất lượng quả
xoài chưa được giải quyết. Ứng dụng công nghệ xử lý ảnh, thị giác máy tính kết hợp với

22
trí tuệ nhân tạo trong bài toán phân loại xoài kém chất lượng. Mục tiêu của nghiên cứu là
tạo ra một hệ thống có thể phân loại xoài về màu sắc, khối lượng, kích thước, hình dạng và
mật độ quả. Hệ thống phân loại sử dụng xử lý ảnh kết hợp trí tuệ nhân tạo bao gồm sử dụng
camera CCD, lập trình ngôn ngữ C, thị giác máy tính và mạng thần kinh nhân tạo. Hệ thống
sử dụng hình ảnh quả xoài được chụp, xử lý tách lớp để xác định khối lượng, thể tích và
khuyết tật trên bề mặt quả xoài. Đặc biệt là xác định tỷ trọng của xoài liên quan đến độ
chín, độ ngọt và xác định tỷ lệ khiếm khuyết của xoài để xác định chất lượng xoài xuất
khẩu và xoài nội địa hay xoài tái chế. [10]
1.6.2. Giới thiệu hệ thống tự động làm sạch và đánh giá chất lượng dừa bằng ANN
Hệ thống tự động và thông minh ngày càng đóng vai trò quan trọng trong hầu hết
các lĩnh vực, đặc biệt là nông nghiệp. Việc áp dụng hệ thống phân loại tự động và thông
minh sau thu hoạch là điều tất yếu để đảm bảo chất lượng cũng như năng suất. Vì vậy, đã
có nhiều nghiên cứu liên quan đến hệ thống phân loại trái cây tự động cho không chỉ dừa
mà còn nhiều loại trái cây khác. Phương pháp xác định độ chín của dừa bằng phương pháp
cảm biến không xâm lấn dựa trên thị giác máy. Hệ thống sử dụng ANN với 11 đầu vào và
3 đầu ra cho biết mức độ chín của dừa kết hợp với hệ thống làm sạch và kiểm tra chất lượng
trái dừa bao gồm các chức năng chính như làm sạch vỏ, làm sạch cuống, đánh giá chất
lượng và phân loại dừa đã được nhóm sinh viên nghiên cứu trước đó. Một nghiên cứu sử
dụng logic mờ để đánh giá độ chín của dừa. Đầu vào của logic mờ sử dụng màu sắc và âm
thanh để xác định màu sắc của dừa và mối quan hệ giữa độ cứng của vỏ và tình trạng thịt.
Từ đó xác định độ chín của dừa. Một mô hình khác để phân loại độ chín của dừa dựa trên
tín hiệu âm thanh cũng được nghiên cứu. Mô hình này dựa trên ba kỹ thuật máy học: mạng
nơ-ron nhân tạo (ANN), Random Forest (RF) và Support Vector Machine (SVM). Đầu vào
của mỗi mô hình là các mẫu phổ tần số được biến đổi của mỗi tín hiệu mẫu để dự đoán loại
quả.
Dừa được xuất khẩu rộng rãi ra thị trường quốc tế, do đó dừa có thể được đánh giá
và phân loại theo các tiêu chuẩn khác nhau để đảm bảo chất lượng của dừa.
Nghiên cứu này đã đề xuất ứng dụng xử lý ảnh kỹ thuật số và máy học để phân loại
dừa, giải quyết vấn đề phân loại của các phân xưởng. Hình ảnh trái dừa được thu thập trong
buồng xử lý hình ảnh, và chúng được trích xuất các đặc điểm về chiều cao và chiều rộng

23
của trái dừa. Các công thức được đề xuất cho khối lượng và mật độ tính toán và sai số của
quá trình tính toán là rất nhỏ (<1 mm). Mạng ANN được đề xuất để phân loại dừa dựa trên
dữ liệu thu thập từ thực tế để đào tạo mô hình. Phương pháp đánh giá và phân loại chất
lượng dừa đạt độ chính xác của cả quy trình lên đến 98,4%.

24
CHƯƠNG II: CƠ SỞ LÝ THUYẾT PHÂN LOẠI DỪA THEO TỶ TRỌNG
2.1 Xác định tỷ trọng trái dừa
Dừa được trồng ở nhiều nơi trên thế giới, được nhiều thị trường ưa chuộng vì hương
vị và chất dinh dưỡng cũng như các loại thực phẩm được sản xuất từ dừa. Dừa được trồng
ngoài trời, không trồng trong nhà kính nên việc dừa bị hư hỏng, kém chất lượng do ảnh
hưởng của các tác nhân bên ngoài là điều không thể tránh khỏi. Để xuất khẩu dừa sang các
thị trường khác, việc loại bỏ những trái dừa có lượng nước thấp hoặc những trái dừa không
có nước là điều cần thiết để đảm bảo chất lượng của dừa xuất khẩu. Do đó, mật độ của dừa
được tính toán để dự đoán hàm lượng nước bên trong quả dừa.
Để có được giá trị mật độ của mỗi trái dừa, tôi tiến hành trích xuất các giá trị kích
thước của dừa thông qua một hệ thống xử lý hình ảnh. Hình dạng thật của trái dừa phức
tạp mà hệ thống khó có thể tính toán chính xác các thông số của nó. Vì vậy, qua một cuộc
khảo sát, tôi nhận thấy rằng hình dạng của quả dừa tương tự như hình Elip khi nó quay
quanh trục dài nhất của nó. Thể tích của khối tròn xoay được tạo ra bởi hình elip khi nó
quay quanh trục dài nhất của nó được cho bởi công thức (1).
4 2
𝑉𝑒𝑙𝑖𝑝 = 𝜋𝑎 . 𝑏 (1)
3
Trong đó 2a: độ dài trục lớn của elip (chiều cao: H), 2b: độ dài trục nhỏ của elip (chiều
rộng: L)

Hình 2.1. Tính thể tích hình Elip

Quá trình chiết xuất các đặc trưng của trái dừa được tiến hành như sau:
25
Thu thập hình ảnh từ máy ảnh (1)

Giảm nhiễu cho hình ảnh (2)


Xử lý hình ảnh

Tách ngưỡng (3)

Xác định đường viền trái dừa (4)

Trích xuất các đặc trưng (5)

Hình 2.2. Quá trình chiết xuất các đặc trưng của trái dừa về: chiều cao (H), chiều rộng
(L), thể tích (V), khối lượng (m), tỷ trọng (d)

2.1.1. Thu thập hình ảnh từ máy ả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 camera CCD (Change Coupled Devices Camera bán dẫn) Panasonic
industrial camera division: 201-329-6674. Sau đó các tín hiệu này sẽ được số hóa. Việc lựa
chọn các thiết bị thu nhận ảnh sẽ phụ thuộc vào đặc tính của các đối tượng cần xử lý. Các
thông số quan trọng ở bước này là độ phân giải, chất lượng màu, dung lượng bộ nhớ và tốc
độ thu nhận ảnh của các thiết bị. Chất lượng một ảnh thu nhận phụ thuộc vào thiết bị thu
và môi trường (ánh sáng, ngoại cảnh).
- Lấy mẫu là một quá trình qua đó ảnh được tạo nên trên một vùng có tính liên tục được
chuyển thành các giá trị rời rạc theo tọa độ nguyên. Quá trình này gồm 2 lựa chọn:

26
• Khoảng lấy mẫu
• Cách thể hiện dạng mẫu
Bố trí hộp chụp ảnh, đèn, máy ảnh CCD và mẫu dừa số lượng 100 trái
Tính toán số lượng mẫu

Sử dụng công thức sau cho trường hợp không biết quy mô tổng thể

Trong đó:

• n: kích thước mẫu cần xác định.

• Z: giá trị tra bảng phân phối Z dựa vào độ tin cậy lựa chọn. Thông thường, độ tin
cậy được sử dụng là 95% tương ứng với Z = 1.96.

• p: tỷ lệ ước lượng cỡ mẫu n thành công. Thường chúng ta chọn p = 0.5 để tích số
p(1-p) là lớn nhất, điều này đảm bảo an toàn cho mẫu n ước lượng.

• e: sai số cho phép. Thường ba tỷ lệ sai số hay sử dụng là: ±01 (1%), ±0.05 (5%),
±0.1 (10%), trong đó mức phổ biến nhất là ±0.05.

Áp dụng công thức trên tính được số lượng mẫu cần dùng:

Sau khi tính toán chọn số lượng mẫu hình ảnh trái dừa cho máy học là 385 hình.
Tiến hành thu thập các hình ảnh trái dừa theo sơ đồ bố trí trong ảnh, được một bộ mẫu gồm
385 tấm hình cùng các số liệu đã đo về trái dừa: chiều cao H, chiều rộng L, khối lượng. Bố
trí lấy mẫu dừa như hình 2.7, trong đó: máy ảnh sẽ được lắp tại vị trí điểm A, khoảng cách
từ mặt đất đến điểm A là 350 mm chia làm 3 đoạn: chiều rộng trái dừa (L), khoảng cách
đế 30 mm, khoảng cách từ máy ảnh đến thân dừa (X)

27
A

Hình 2.3. Sơ đồ bố trí thu thập lấy mẫu dừa

Sau khi bố trí và chụp hình trái dừa, cân trái dừa thu thập được bộ mẫu dừa gồm 385 ảnh
cùng với khối lượng tương ứng của mẫu.

28
Hình 2.4. Ảnh dừa mẫu

2.1.2. Xử lý hình ảnh


Xử lý ảnh là quá trình biến đổi từ một ảnh ban đầu sang một ảnh mới với các đặc tính và
tuân theo ý muốn của người sử dụng. Xử lý ảnh gồm các quá trình phân tích, phân lớp các
đối tượng, làm tăng chất lượng, phân đoạn và tách cạnh, gán nhãn cho vùng hay quá trình
biên dịch các thông tin hình ảnh của ả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ã hoá các
ảnh tự nhiên. Mục đích của xử lý ảnh gồm:

29
• Biến đổi ảnh làm tăng chất lượng ảnh.
• Tự động nhận dạng ảnh, đoán nhận ảnh, đánh giá các nội dung của ảnh.

Nhận biết và đánh giá các nội dung của ảnh là sự phân tích một hình ảnh thành những
phần có ý nghĩa để phân biệt đối tượng này với đối tượng khác, dựa vào đó ta có thể
mô tả cấu trúc của hình ảnh ban đầu. Có thể liệt kê một số phương pháp nhận dạng cơ
bản như nhận dạng ảnh của các đối tượng trên ảnh, tách cạnh, phân đoạn hình ảnh,…
Cụ thể ở bước này ta tiến hành lập trình Python để xử lý ảnh thông qua thị giác máy
tính truyền thống để: điều chỉnh kích thước ảnh, chuyển đổi không gian màu của hình ảnh,
hiển thị tần suất xuất hiện của các điểm ảnh từ 0 – 255, …
Tiến hành chuyển đổi không gian màu của ảnh trái dừa để chọn ra loại màu phù hợp
nhất để trích xuất giá trị đem làm đầu vào của ANN phân loại trái dừa. Sau khi quan sát
hàng loạt kênh màu hiển thị như hình 2.9: kênh màu RGB, HSV, GRAY, YcrCB, LaB, …

Hình 2.5. Hình ảnh trái dừa qua các kênh màu

30
Hình 2.6. Biểu đồ hiển thị tần suất xuất hiện của các điểm ảnh từ 0 – 255 của kênh màu
HSV qua đó biết vị trí phân vùng của trái dừa nằm ở đâu

2.1.3. Phân ngưỡng hình ảnh trái dừa

Hình 2.7. Hình ảnh trái dừa được phân ngưỡng bằng hình thái học

Phân ngưỡng ảnh đơn giản THRESH_BINARY_INV

Nếu pixel có giá trị lớn hơn giá trị ngưỡng thì nó được gán 1 giá trị (thường là 1), ngược
lại nhỏ hơn giá trị ngưỡng thì nó được gán 1 giá trị khác (thường là 0).

Hàm sử dụng là threshold , tham số đầu tiên là 1 ảnh xám, tham số thứ 2 là giá trị
ngưỡng, tham số thứ 3 maxval là giá trị được gán nếu giá pixel lớn hơn giá trị ngưỡng,

31
tham số thứ 4 là loại phân ngưỡng. Tùy theo các loại phân ngưỡng mà pixel được gán giá
trị khác nhau:

THRESH_BINARY_INV

o Nếu giá trị pixel lớn hơn ngưỡng thì gán bằng 0
o Ngược lại bằng gán bằng maxval

Hình 2.8. Phân ngưỡng ảnh BINARY_INV

Otsu’s Binarization - Nhị phân hóa bằng thuật toán Otsu


Trong phương thức phân ngưỡng thường, bạn lấy ngưỡng tùy ý, nhưng giá trị ngưỡng đó
cho kết quả tốt hay không chỉ khi thử bạn mới biết.

Nhưng với ảnh có 2 đỉnh trong histogram, tức là ảnh có 2 vùng sáng nổi bật. Như hình có
nhiễu bên dưới chẳng hạn, khi chưa lọc nhiễu thì chỉ có 1 đỉnh, sau khi lọc nhiễu có tới 2
đỉnh. Như vậy ngưỡng tốt nhất là giá trị trung bình của 2 đỉnh đó. Thuật toán này chỉ hiệu
quả với ảnh có 2 đỉnh, do đó phải sử dụng hàm GaussianBlur để có được kết quả mong
muốn.

32
Hình 2.9. Phân ngưỡng ảnh nhị phân hóa bằng thuật toán Otsu
2.1.4. Xác định đường viền trái dừa
Sau khi phân đoạn tiến hành xác định đường viền trái dừa bằng cách trích xuất đầu
ra các ảnh trái dừa: ảnh nhị phân (ảnh 0), ảnh tô màu trái dừa (ảnh 1), ảnh được đóng
khung (ảnh 2), ảnh được bao viền (ảnh 3)

Hình 2.10. Hình ảnh trái dừa đầu ra chuẩn bị cho công đoạn trích xuất các đặc trưng

33
Kết quả ở bước này là 1 bộ ảnh “Output(Segmentation)” có tổng cộng 385 bộ ảnh

Hình 2.11. Bộ hình ảnh trái dừa sau khi đã xử lý thành các loại ảnh: ảnh nhị phân, ảnh tô
màu, ảnh đóng khung, ảnh bao viền.
2.1.5. Trích xuất các đặc trưng
Dựa vào Output(Segmentation) ở bước 4 tiến hành trích xuất các đặc trưng quả dừa
về: điểm trung tâm (Center Point), chiều cao (Major), chiều rộng (Minor), diện tích (Area),
chu vi (Perimeter), cường độ màu HSV, …

34
Hình 2.12. Trích xuất điểm trung tâm, chiều cao và chiều rộng của trái dừa

Kết quả bước này là Output(Visual Feature Extraction) tập hợp các file Json chứa
các dữ liệu trái dừa đã được trích xuất.
Sau khi đã thu thập được output tiến hành chuyển đổi dữ liệu trong mỗi file Json
thành bảng số liệu trong file csv để làm đầu vào của quá trình huấn luyện bằng mạng nơ
rơn nhân tạo ANN.
Tiến hành tính toán các đặc trưng input còn thiếu là tỷ trọng trái dừa.
𝑚
𝑑𝑡𝑡 =
𝑉

35
Trong đó: d là kích thước thực của quả dừa, m là khối lượng quả dừa được cân thực tế còn
V là thể tích tính toán dựa trên công thức (4).
Hình 2.13 mô tả cách bố trí camera của hệ thống. Đối với cách bố trí này, nguồn sáng chiếu
thẳng vào quả dừa và máy ảnh nên máy ảnh chỉ thu được ảnh ảo của quả dừa trên một màn
chiếu trong không gian. Tức là kích thước của ảnh ảo trên màn chiếu bao giờ cũng lớn hơn
kích thước thật của quả dừa. Dựa trên hình, mối quan hệ giữa kích thước ảnh ảo và kích
thước thực được tính bằng công thức (2) và (3).

Màn chiếu

Nguồn
sáng L
l
Camera

d1 d2 f

Hình 2.1 Sơ đồ bố trí máy ảnh

Nguồn sáng chiếu trực tiếp vào trái dừa và máy ảnh, vì thế máy ảnh chỉ thu nhận được
ảnh ảo của trái dừa trên một màn chiếu trong không gian. Nghĩa là kích thước của ảnh ảo
trên màn chiếu luôn lớn hơn kích thước thực của trái dừa.
Dựa vào hình, ta có:

d d1
= =k (2)
D d1 + d2

d = D.k (3)

Trong đó: d là kích thước thực của quả dừa; D là kích thước của ảnh ảo trên màn
chiếu do nguồn sáng chiếu vào trái dừa; d1 là khoảng cách từ nguồn sáng vào tâm quả dừa;

36
d2 là khoảng cách từ tâm quả dừa lên màn hình; k là hệ số tỷ lệ giữa kích thước thực và ảo
của quả dừa (k <1)
Thể tích trái dừa được tính dựa trên kích thước thực của quả dừa bằng công thức
(4).

𝐿2 . 𝐻
𝑉𝑡𝑡 = 𝜋 (𝑙í𝑡 ) (4)
6

Trong đó: L là chiều rộng của quả dừa, H là chiều cao của quả dừa.
Tuy nhiên, theo thiết kế, tôi phân phối bộ phận đánh giá chất lượng trên dừa chuỗi.
Vì vậy, không thể chụp toàn bộ dừa, chỉ chụp từ bề mặt tấm của băng tải để sơ khai. Do
đó, tôi đã điều tra để tìm ra mối quan hệ giữa chiều cao của quả dừa và chiều cao từ đĩa
đến thân trái dừa.

H’
H

Hình 2.14. Mối quan hệ giữa chiều cao của dừa và chiều cao từ đĩa đối với thân
Mối quan hệ giữa chiều cao của dừa và chiều cao từ đĩa đối với thân được biểu thị
bằng công thức (5)
𝐻′
𝐻= (5)
0,777645535
Trong đó: H là chiều cao của quả dừa; H’ là chiều cao từ đĩa đến thân dừa;
0,777645535 là hệ số tỷ lệ

37
Từ đó, tính thể tích của quả dừa theo công thức sau (6).
Bên cạnh đó, mật độ của dừa được mô tả bởi công thức (7).

L2 . H L2 . H′
Vtt = π =π = (lít) (6)
6 6.0,777645535

Trong đó Vtt là thể tích tính toán của trái dừa (lít); L là chiều rộng quả dừa (mm)
𝑚 𝑚 𝑚. 4,66587321 𝐾𝑔
𝑑𝑡𝑡 = = = ( ) (7)
𝑉 𝐿2 . 𝐻 ′ 𝜋. 𝐿2 . 𝐻 ′ 𝑙í𝑡
𝜋
6.0,777645535

Trong đó, m là khối lượng của dừa được chuyển đổi từ cảm biến cảm biến lực (Kg);
𝑑𝑡𝑡 là tỷ trọng tính toán của trái dừa.
Bảng 2.2. Các đặc trưng trái dừa – Số liệu input để huấn luyện model

38
2.2 Chất lượng của trái dừa liên quan đến mật độ
Hiện nay, các cơ sở sản xuất dừa ở địa phương đều thuê công nhân làm vệ sinh và
phân loại dừa. Công nhân làm sạch dừa bằng tay và xác định các khuyết tật bằng mắt
thường và phân loại hoàn toàn dựa trên kinh nghiệm cá nhân. Điều này khiến các cơ
sở cần một lượng lớn lao động để có thể đảm bảo năng suất. Độ chính xác phân loại
không cao vì phụ thuộc hoàn toàn vào yếu tố con người. Do đó, cần có hệ thống phân
loại tự động để có thể giải quyết các vấn đề trên. Qua khảo sát, tỷ trọng ảnh hưởng
đến chất lượng của quả, nó thể hiện độ cứng và chắc của quả, do đó người ta đưa
ra phương pháp phân loại chất lượng quả theo tỷ trọng.
Đối với giá trị mật độ của dừa được tính toán từ hệ thống xử lý ảnh, một cuộc
khảo sát đã được thực hiện để xác định độ chính xác của giá trị mật độ đó. Dựa vào
bảng thống kê 385 mẫu dừa, tôi đã so sánh sự khác biệt giữa giá trị mật độ tính
toán và giá trị mật độ thực tế của dừa. Sau khi lập bảng thống kê, sự khác biệt giữa
giá trị mật độ thực tế và giá trị mật độ tính toán được hiển thị bằng hàm là y =
1.0034x – 0.003 trong đó y là (Hình 2.15). Lỗi này tồn tại do lỗi của cân trong quá trình
thu nhận khối lượng và lỗi trong quá trình xử lý ảnh để lấy kích thước của quả dừa. Tuy
nhiên, sai số này tương đối nhỏ và không ảnh hưởng đến quá trình đánh giá phân
loại quả dừa.
Theo kết quả khảo sát tại địa phương, mối quan hệ giữa tỷ trọng và chất lượng dừa được
thể hiện trong bảng 1.1.

39
Hình 2.2. Đồ thị sai lệch tỷ trọng tính toán so với tỷ trọng thực tế

Dựa vào thực nghiệm tại Công ty TNHH MTV Nông Hải Sản Hoa Mai và ở phòng
thí nghiệm, cùng với việc tham khảm tiêu chuẩn ASEAN như trên, đưa ra bảng số liệu
đánh giá chất lượng trái dừa qua tỷ trọng như bảng 1.2 (Chương 1).

40
CHƯƠNG III: HỆ THỐNG MÁY PHÂN LOẠI DỪA

3.1. Đề xuất và ý tưởng làm hệ thống máy phân loại dừa

Hệ thống làm sạch và kiểm tra chất lượng trái dừa bao gồm các chức năng chính
như làm sạch vỏ, làm sạch cuống, đánh giá chất lượng và phân loại dừa. Qua quá trình
tìm hiểu các hệ thống làm sạch và phân loại nông sản như trái chanh, chanh dây, cam,
bưởi,… Từ đó, nghiên cứu lựa chọn các ý tưởng áp dụng từng chức năng chính của hệ
thống ở hình 3.1. Sau đó phân tích, so sánh ưu điểm để lựa chọn ý tưởng tối ưu nhất.

Hình 3.1 Sơ đồ ý tưởng thiết kế hệ thống làm sạch và đánh giá chất lượng trái dừa

41
Phương án lựa chọn ý tưởng 3 như hình 3.2

Hình 3.2. Sơ đồ hệ thống làm sạch vỏ và kiểm tra chất lượng trái dừa

Kết quả thiết kế

Hình 3.3. Mô hình 3D hệ thống làm sạch và kiểm tra chất lượng dừa (Phần mềm
Inventor)

42
Dừa sau khi đã được cắt cuống theo yêu cầu, người công nhân đặt dừa lên băng
chuyền để chuyển đến bộ phận phun nước. Băng chuyền sẽ di chuyển và dừng lại trong 6
giây để các bộ phận làm việc đồng thời với nhau.
Bộ phận phun nước có nhiệm vụ đánh bật các vết bẩn, sâu bọ bám trên cuống, phần
dưới và xung quanh trái dừa. Đầu phun tự động quay làm tăng khả năng đánh bật vết bẩn
bám trên dừa. Trong 6 giây làm việc, bộ phận phun nước chỉ phun ra 5ml nước. Vì vậy,
lượng nước bám trên trái dừa không đủ thời gian để thấm.
Bộ phận làm sạch cơ học bao gồm 2 phần làm sạch xung quanh và làm sạch phần
cuống, phần dưới trái dừa. Nhiệm vụ của bộ phận là làm sạch các vết bẩn, sâu bọ bám chặt
trên cuống và vỏ, đồng thời phân tách nước trên trái dừa. Nhằm mục đích làm cho phần
nước trên trái dừa mỏng để dừa nhanh khô.
Bộ phận đánh giá chất lượng có nhiệm vụ phân loại trái dừa có nước và không nước
hoặc nứt. Bộ phận làm việc dựa vào việc so sánh tỷ trọng của quả dừa so với tỷ trọng chuẩn.
Tỷ trọng chuẩn là tỷ trọng được lấy mẫu, phân tích số liệu thực tế tại các cơ sở sản xuất
dừa xuất khẩu theo tháng. Bộ phận gồm cân động và xử lý ảnh. Phần xử lý ảnh cho ra các
kích thước dài và rộng của trái dừa. Riêng phần cân động, được đặt ở phần đầu của băng
chuyền, nhờ vào cơ cấu trục vít nâng phần cân động lên trên ngay lúc băng chuyền dừng
lại. Như vậy, người công nhân khi đặt trái dừa lên thì hệ thống đã thu nhận được giá trị
khối lượng của trái dừa. Từ đó, bộ phận tự động phân tích và đưa ra tính hiệu trái dừa loại
1 (đạt chất lượng), loại 2 (nghi ngờ) và loại 3 (không đạt chất lượng).

43
Bảng 3.1. Thông số kỹ thuật của hệ thống làm sạch và đánh giá chất lượng trái dừa

STT Đặc tính Thông số

1 Kích thước máy (Dài x Rộng x Cao) 2970x1070x1630mm

2 Khối lượng 200 kg

3 Năng suất 600 Trái/giờ

4 Động cơ băng truyền 1 Hp 3Pha 380v

5 Động cơ lau 1/2 HP 3Pha 380v

6 Thời gian hoạt động của máy 10 giờ/ ngày

7 Tốc độ di chuyển của băng truyền 0,6 m/s

8 Loadcell 5 kg

9 Camera f 4,8mm- ∞

44
Hình 3.4. Hệ thống làm sạch và kiểm tra chất lượng dừa

Khi đánh giá sự hoàn thành tổng thể hệ thống làm sạch và kiểm tra chất lượng trái dừa
có 2 vấn để quan trọng cần chú ý: hệ thống phải hoàn chỉnh khả năng làm sạch vỏ trái dừa
và phải phân loại được trái dừa hư hay không hư thông qua việc đánh giá tỷ trọng của trái.
Kết quả thực nghiệm
3.2. Khả năng làm sạch trái dừa

Khả năng làm sạch trái dừa được đánh giá dựa vào một số tiêu chuẩn xuất khẩu bao
gồm:
- Sạch sẽ, thực tế không có bất kỳ vấn đề bên ngoài có thể nhìn thấy
- Không có vết nứt ở vỏ
- Không có độ ẩm bên ngoài bất thường, không bao gồm ngưng tụ sau khi loại bỏ khỏi
kho lạnh.

45
Qua đánh giá thực tế, tôi thu nhận được kết quả qua quá trình làm sạch của hệ thống,
các đối tượng bám trên trái dừa bao gồm đất, bụi, sâu bọ,… tập trung ở phần cuống và
giảm dần về phần cuối của trái dừa. Tôi lựa chọn trái dừa bị bùn đất, sâu bọ bám rất nhiều
trên cuống và xung quanh vỏ tại Công ty TNHH MTV Nông Hải Sản Hoa Mai, để thử
nghiệm (hình 3.5 (a)).

(a) (b)
Hình 3.5. Khả năng làm sạch của hệ thống: Trái dừa trước khi đưa vào hệ thống làm
sạch (a), trái dừa sau khi được hệ thống làm sạch (b)

46
(a) ( b)
Hình 3.6. Trái dừa được làm sạch bằng hệ thống: Đầu phun nước (a); Rulo lau và đầu
chổi lau (b)

Kết quả được thể hiện ở hình 3.5 (b), hệ thống làm sạch hoàn toàn bùn đất và sâu bọ
trên phần cuống và bề mặt vỏ trái dừa. Tuy nhiên lượng nước động lại trên vỏ và cuống
vẫn còn. Tôi tiếp tục thử nghiệm để tìm ra lượng nước động lại trên trái dừa sau khi làm
sạch bằng hệ thống bằng cách cân khối lượng trái trước khi được làm sạch (hình 3.7 a) và
cân lại khối lượng trái sau khi được làm sạch (hình 3.7 b).

(a) (b)
Hình 3.7. Lượng nước còn động lại trái trái dừa khi làm sạch: Trái dừa trước khi đưa
vào hệ thống làm sạch (a), trái dừa sau khi được hệ thống làm sạch (b)

47
Khối lượng trái dừa trước khi được làm sạch bằng hệ thống là 2.633 Kg. Khối lượng
trái dừa sau khi được làm sạch bằng hệ thống là 2.637 Kg. Kết quả thực nghiệm cho thấy
lượng nước động lại trên toàn bộ bề mặt trái dừa là 0.004 Kg tương đương 4 ml nước.
Lượng nước động lại trên trái dừa là quá nhỏ có thể bốc hơi khi để ngoài môi trường trong
một khoảng thời gian. Tuy nhiên để tối ưu, tôi đã kịp thời điều chỉnh lưu lượng nước cấp
vào đầu phun nước.

Như vậy, kết quả của hệ thống làm sạch trái dừa hoàn toàn đạt được 3 tiêu chuẩn
xuất khẩu, cứ mỗi 6s trái dừa sạch sẽ được chuyển qua từng bộ phận (phun nước, rulo lau
xung quanh và đầu chổi lau). Vì vậy, năng suất của hệ thống làm sạch đạt 600 trái/giờ.
3.3 Khả năng phân loại trái dừa

Qua quá trình thực nghiệm, trái dừa được đánh giá dựa vào việc so sánh tỷ trọng trái
dừa, bao gồm 2 quá trình: cân khối lượng (hình 3.8) và xử lý ảnh (hình 3.10)

Cảm biến cân nặng loadcell là cảm biến có thể chuyển đổi một lực, trọng lượng thành
một tín hiệu điện. Giá trị tác dụng tỉ lệ với sự thay đổi điện trở cảm ứng trong cầu điện trở,
do đó trả về tín hiệu điện áp tỉ lệ. Loadcell điện trở làm việc dựa vào nguyên lý áp lực –
trở kháng. Khi đặt trái dừa đúng vị trí thì sẽ có một lực tác động lên cảm biến sẽ làm trở
kháng thay đổi. Sự thay đổi trở kháng này dẫn đến dự thay đổi điện áp đầu ra khi điện áp
đầu vào được cấp. Cách bố trí loadcell cân dừa như hình 3.23.

48
Hình 3.8.2 Bệ cân loadcell

(a) (b)
Hình 3.9. Bộ phận xử lý ảnh: Buồng chụp ảnh (a); Ảnh chụp từ camera (b)

49
Kết quả nhận được từ cân loadcell là giá trị khối lượng và kết quả của bộ phận xử lý
ảnh là kích thước dài và rộng của trái dừa ở dạng pixel (ở phía trên đĩa chứa dừa), hình
3.10. Các kích thước dài và rộng của trái dừa phải được chuyển đổi thành đơn vị mm. (1
mm = 0.378773545 pixel)

Hình 3.3 Kích thước nhận được khi xử lý ảnh

(W: chiều rộng trái dừa; H: chiều cao trái dừa tính từ mặt đĩa)

50
CHƯƠNG IV: PHÂN LOẠI DỪA BẰNG MẠNG THẦN KINH NHÂN TẠO
4.1 Mô hình và cấu trúc nơ ron nhân tạo
Cùng với sự phát triển của khoa học, ngày càng có nhiều nghiên cứu về trí tuệ nhân
tạo (AI) được ứng dụng, đặc biệt là trong lĩnh vực đánh giá và phân loại của các sản phẩm
nông nghiệp sử dụng mạng nơron nhân tạo (ANN), chẳng hạn như phân loại lựu, xoài,
chanh, táo đạt độ chính xác cao và khả năng ứng dụng.
Mạng nơron nhân tạo (ANN) là một hệ thống tính toán lấy cảm hứng từ mạng nơron lôgic
sinh học. ANN sử dụng một mạng lưới các chức năng để hiểu và chuyển đổi một loạt dữ
liệu đầu vào thành các đầu ra mong muốn. ANN giảm thiểu lỗi cho các đầu vào phi tuyến
và cho thấy mối quan hệ giữa đầu vào và đầu ra mà không cần các hàm toán học phức tạp.
ANN có ba thành phần chính: một lớp đầu vào, một số lớp ẩn và một lớp đầu ra. Lớp ẩn là
lớp nằm giữa hai lớp khác, nơi neutron nhận một tập hợp các giá trị đầu vào có trọng số và
tạo ra đầu ra thông qua một kích hoạt hàm số. Nghiên cứu này sử dụng một tập hợp các
biến đầu vào bao gồm khối lượng, chiều rộng, chiều cao, mật độ và khối lượng để đánh
giá, phân loại chất lượng dừa thành 3 loại: T1, T2, T3 với T1 là loại tốt nhất.
Cấu trúc của mô hình ANN trong nghiên cứu này được trình bày trong Hình 4.1.

51
Hình 4.1. Cấu trúc của một mô hình ANN đề xuất: lớp input gồm: khối lượng, chiều cao,
chiều rộng, thể tích, tỷ trọng, màu Hue (max, min, mean), màu Sarturation (max, min,
mean)
Trong lớp đầu vào và đầu ra, số lượng nút tương ứng với số lượng biến đầu vào và
đầu ra. Trong nghiên cứu này, lớp đầu vào có 11 nút đại diện cho các đối tượng được chiết
xuất như chiều rộng, chiều cao, khối lượng, mật độ, tỷ trọng, cường độ màu Hue (3 loại:
Min – Max – Mean) cường độ màu Saturation (3 loại: Min – Max – Mean). So với các lớp
đầu vào và đầu ra, thiết kế của lớp ẩn phức tạp hơn. Lớp ẩn có chức năng tiếp nhận và xử
lý thông tin đến từ lớp đầu vào. Số lượng các lớp ẩn và số lượng nút khác nhau giữa các
lớp, các lớp này có các kết nối khác nhau. Lớp ẩn có hai siêu tham số chính điều khiển kiến
trúc của mạng: số lớp (NL) và số nút trong mỗi lớp ẩn (Nn), hai tham số này khác nhau đối
với mỗi lớp. Đối với một hệ thống ANN, trọng số liên kết là một thành phần rất quan trọng
vì nó thể hiện độ mạnh của dữ liệu đầu vào. Việc học
Quá trình ANN thực chất là quá trình điều chỉnh các trọng số để có được kết quả mong
muốn.

52
4.2 Các công thức tính toán cho mạng thần kinh nhân tạo

Gọi W, b và y là ma trận trọng số, vectơ thiên vị và vectơ đầu ra của mỗi lớp. Đầu
ra của nút thứ i được tính bằng công thức. (8)
(8)

Trong đó σ là một hàm kích hoạt.


Hiệu suất của quá trình đào tạo được xác định bằng cách tìm ra sự khác biệt giữa đầu ra
ANN và đầu ra chính xác. Hàm tổn thất được tính (9) dựa trên sai số bình phương trung
bình (MSE).

(9)
Các trọng số được cập nhật liên tục để hàm mất mát đạt đến giá trị cực trị. Trọng số và độ
lệch được cập nhật theo công thức (10), tương ứng với tỷ lệ học tập. Trong mỗi lần lặp lại,
tốc độ học sẽ kiểm soát tốc độ di chuyển đến điểm tối thiểu. Thông qua các lần lặp lại, độ
dốc đi xuống hội tụ ở mức tối thiểu, nó cung cấp khối lượng và độ chệch tốt nhất. Dự đoán
sản lượng phân loại dừa được xác định bởi công thức (11).

53
CHƯƠNG V: THỰC NGHIỆM VÀ ĐÁNH GIÁ KẾT QUẢ
Theo khảo sát của các địa phương, dừa có hàm lượng nước cao nhất khi dừa được 5–7
tháng tuổi, dừa chứa nhiều men hoạt tính sinh học tự nhiên, khoáng chất, vitamin B-
complex, vitamin C,… Dừa có hàm lượng dinh dưỡng cao được thị trường quốc tế ưa
chuộng. Việc đánh giá, phân loại dừa là công việc cần thiết để có thể xuất khẩu dừa sang
các thị trường khác trên thế giới. Theo khảo sát của các địa phương, dừa được phân thành
3 loại: T1, T2, T3. Phân loại dừa dựa trên các yếu tố về chiều dài, chiều rộng, thể tích của
trái dừa, khối lượng thực của trái dừa thu được từ cảm biến cảm biến lực. Nghiên cứu này
xem xét yếu tố tỷ trọng để dự đoán hàm lượng nước bên trong dừa, từ đó cung cấp một bộ
tiêu chí để phân loại dừa, thay đổi theo mỗi loại dừa khác nhau. Nghiên cứu này sử dụng
xử lý ảnh để trích xuất các đặc điểm của dừa và sử dụng ANN để đánh giá và phân loại
dừa. Đối với quá trình chiết xuất các đặc điểm của quả dừa, sau khi ghi lại hình ảnh từ
camera, một số phương pháp được áp dụng để trích xuất các đặc điểm của quả dừa như
chuyển ảnh sang ảnh thang độ xám, ngưỡng, ảnh nhị phân, đường viền. Kết quả thực
nghiệm của giai đoạn xử lý ảnh được thể hiện trong Hình 6. Kích thước thực của quả dừa
được tính bằng kích thước của pixel nhân với kích thước của pixel. Kết quả thực nghiệm
được sử dụng để xác định hệ số pixel trong hệ thống này, kích thước thực được tính theo
công thức (12). Tuy nhiên, quá trình xử lý hình ảnh có thể bị ảnh hưởng bởi nhiễu. Hình
ảnh bị nhiễu là nguyên nhân gây ra lỗi trong quá trình trích xuất. Vì vậy, loại bỏ nhiễu là
một trong những bước xử lý ảnh quan trọng để có kết quả tốt nhất. Bài báo này sử dụng
điều hòa phương sai sumof [14] để lọc nhiễu, qua đó các chi tiết không mong muốn được
loại bỏ trong khi các chi tiết quan trọng như các cạnh vẫn được giữ lại.
Lr = Lpixel · 2 · 638 (mm) (12)
Trong đó Lr là kích thước tính toán (mm), Lpixel là kích thước tính bằng pixel (pixel).
Sau khi xử lý hình ảnh, các đặc điểm của dừa như chiều rộng và chiều cao sẽ được trích
xuất. Để đánh giá độ chính xác của các kích thước dừa được tính toán từ quá trình xử lý
hình ảnh, tôi so sánh các kích thước đó với kích thước thực của cùng một quả dừa. Việc
đánh giá được thực hiện trên 110 trái dừa được thu hái tại địa phương và kết quả được thể
hiện trong Hình 8, sai số giữa kích thước trích xuất từ hình ảnh và thực tế là rất nhỏ (<1

54
mm), điều này làm cho hệ thống phân loại có độ chính xác cao. Độ chính xác của khối
lượng tính toán của dừa được đánh giá bằng kết quả thí nghiệm và đánh giá trên 10 quả
dừa, sai số giữa khối lượng thực tế và khối lượng tính toán được trình bày trong hình 5.1.

Hình 5.1. Kích thước trái dừa

Việc đánh giá, phân loại chất lượng dừa tươi xuất khẩu là thực sự cần thiết đối với các
nước phát triển loại nông sản này như Việt Nam, Philippines, Malaysia,… Chất lượng nông
sản sẽ quyết định giá cả và thị trường của loại nông sản đó. Mỗi thị trường sẽ có những
tiêu chuẩn nhập khẩu khác nhau, mục đích của việc phân loại dừa là để tránh những trường
hợp như khối lượng nước dừa quá ít, những trái dừa không có nước bị loại bỏ khỏi hệ
thống. Chiều cao và chiều rộng của quả dừa phân loại hình dạng của quả, quả dừa phải có
sự cân đối hình dạng, không quá dài. Tùy từng loại dừa mà có những tiêu chí về hình dáng

55
trái khác nhau. Hình ảnh trái dừa được thu từ máy ảnh, quá trình xử lý hình ảnh trích xuất
các đặc điểm của trái dừa để làm đầu vào cho ANN. Sử dụng ANN để phân loại dừa theo
tiêu chí của từng quốc gia, tập dữ liệu đào tạo cho mô hình được thu thập từ kết quả khảo
sát tại cơ sở phân loại ở Việt Nam.
Dữ liệu là một trong những yếu tố ảnh hưởng trực tiếp đến độ chính xác của mô hình ANN
được đề xuất phân loại dừa theo các yếu tố đầu vào cụ thể là chiều rộng, chiều dài, khối
lượng, tỷ trọng và loại dừa. Đào tạo mô hình ANN dựa trên quá trình tự đào tạo, so sánh
hiệu suất giữa mô hình ANN và 3 mô hình học máy như SVM, Fuzzy và Naive Bayes được
trình bày trong Bảng 1. Các tham số của SVM, Fuzzy Model và Naive Byes là giá trị mặc
định trong thư viện học scikit (Bảng 2).

Hình 5.2. Biểu đồ thể tích thực với thể tích tính toán

56
Bảng 5.1. Sai số của thể tích thực tế và thể tích tính toán trên 10 mẫu dừa
Thể tích Thể tích
STT Sai số
thực tế tính toán
1 1.53 1.64 0.11
2 1.56 1.62 0.06
3 1.54 1.67 0.13
4 1.47 1.54 0.07
5 1.73 1.85 0.12
6 1.65 1.72 0.07
7 1.73 1.78 0.05
8 1.68 1.81 0.13
9 1.81 1.91 0.1
10 1.84 1.87 0.03

Bảng 5.2. Độ chính xác của các mô hình khác

Mô hình Độ chính xác tổng thể (%)

SVM 87,2

Fuzzy 89,6

Naive Bayes 85,2

ANN 98,40

Quá trình đánh giá chất lượng và phân loại dừa bằng ANN đạt được độ chính xác của hệ
thống là 98,4% vì nguồn dữ liệu được thu thập từ thực tế và đủ để đào tạo mô hình. Các
bước xử lý hình ảnh được hiệu chỉnh thông qua quá trình thử nghiệm. Các tính năng của
dừa được trích xuất qua màn hình giúp giảm thiểu lỗi và nhiễu cho quá trình xử lý. Ánh
sáng trong buồng xử lý ảnh được bố trí như hình 8. Điều này làm cho nguồn sáng là không

57
đổi để tăng độ chính xác của hệ thống. Các đầu vào của ANN là đầu ra của xử lý ảnh, sự
kết hợp giữa xử lý ảnh và ANN làm cho hệ thống đạt độ chính xác trên 98%, hệ thống đáp
ứng yêu cầu của các cơ sở phân loại cục bộ, sử dụng công thức tính sai số kích thước là:
e = | ¯y – y0| trong đó: e là sai số kích thước; ¯y là kích thước thực tế; y là kích thước tính
toán

Hình 5.3. Sai số của kích thước

58
CHƯƠNG VI: KẾT LUẬN

Nghiên cứu này kết hợp các phương pháp xử lý hình ảnh và máy học để đánh giá
và ANN làm cho hệ thống đạt được độ chính xác trên 98%, hệ thống đáp ứng
phân loại chất lượng dừa. Hình ảnh được sử dụng để trích xuất các đặc điểm của quả dừa
chẳng hạn như chiều cao, chiều rộng. Khối lượng và mật độ được tính toán dựa trên đề
xuất công thức có sai số tính toán rất thấp (<1 mm). Dừa được trồng và ưa chuộng ở nhiều
nơi bởi hàm lượng chất dinh dưỡng trong dừa rất cao. Dựa trên khảo sát tại xưởng
phân loại dừa, mạng nơron được sử dụng để đánh giá và phân loại dừa thành 3 loại như
T1, T2, T3. Đối với machine learning, dữ liệu là một trong những yếu tố ảnh hưởng
đến độ chính xác của mô hình, việc thu thập dữ liệu về phân loại dừa cũng là một trong
những đóng góp của nghiên cứu này. Mục đích của nghiên cứu này là áp dụng hệ thống
phân loại dừa cho các phân xưởng nhằm giúp giảm bớt sức lao động cho công nhân và
tăng độ chính xác của quá trình phân loại. Điều này giúp dừa có thể xuất khẩu sang
nhiều nước khác trên thế giới. Độ chính xác của toàn bộ quá trình phân loại là 98,2%,
điều này đáp ứng yêu cầu của các phân xưởng, và hệ thống sẽ được đưa vào thực tế
ngay sau khi nghiên cứu hoàn thành và một số thông số được điều chỉnh.
Hướng phát triển đề tài:
Hướng 1: Sử dụng deep learning thay cho machine learning để đánh giá chất lượng trái
dừa xuất khẩu: không cần trích đặc trưng nhiều, chọn thuật toán, mô hình, điều chỉnh tham
số cho đúng, phải hình dung được máy đang làm gì để điều chỉnh, …
Hướng 2: Sử dụng phương pháp phân ngưỡng tự động để khỏi bị phụ thuộc vào môi trường
xung quanh khi lấy mẫu.

59
TÀI LIỆU THAM KHẢO

[1]. Aragon, C.: (2000) Coconut Program Area Research Planning and Prioritization (No.
2000-31). PIDS Discussion Paper Series.
[2]. Suyitno, T.: (2003) Health benefit of coconut milk. Indones. Food Nutri. Progr. 10(2),
106–112.
[3]. Canapi, E.C., Agustin, Y.T., Moro, E.A., Pedrosa, Jr., E., Bendaño, M.L.J.: (2005)
Coconut oil. In: Bailey’s Industrial Oil and Fat Products. Wiley.
[4]. Boateng, L., Ansong, R., Owusu, W., Steiner-Asiedu, M.: (2016) Coconut oil and palm
oil’s role in nutrition, health and national development: a review. Ghana Med. J. 50(3),
189–196.
[5]. Hendrawan, Y., Amini, A., Maharani, D.M., Sutan, S.M.: (2019) Intelligent non-
invasive sensing method in identifying coconut (Coco nucifera var. Ebunea) ripeness using
computer vision and artificial neural network. Pertanika J. Sci. Technol. 27(3).
[6]. Javel, I.M., Bandala, A.A., Salvador, R.C., Bedruz, R.A.R., Dadios, E.P., Vicerra,
R.R.P.: (2019) Coconut fruit maturity classification using fuzzy logic. In: 2018 IEEE 10th
International Conference on Humanoid, Nanotechnology, Information Technology,
Communication and Control, Environment and Management (HNICEM), pp. 1–6. IEEE.
[7]. Caladcad, J.A., et al.: (2020) Determining Philippine coconut maturity level using
machine learning algorithms based on acoustic signal. Comput. Electron. Agric. 172,
105327.
[8]. Alchoubassi, G., Kinska, K., Bierla, K., Lobinski, R., Szpunar, J.: (2021) Speciation
of essential nutrient trace elements in coconut water. Food Chem. 339, 127680.
[9]. Kumar, R.A., Rajpurohit, V.S., Nargund, V.B.: (2017) A neural network assisted
machine vision system for sorting pomegranate fruit. In: 2017 Second International
Conference on Electrical, Computer and Communication Technologies (ICECCT), pp. 1–
9. IEEE.

60
[10]. Thinh, N.T., Thong, N.D., Cong, H.T., Phong, N.T.T.: (2019) Mango classification
system based on machine vision and artificial intelligence. In: 2019 7th International
Conference on Control, Mechatronics and Automation (ICCMA), pp. 475–482. IEEE.
[11]. Thinh, N.T., Trieu N.M., Hieu, NTT.: (2022) Using Artificial Neural Network to
Grade Internal Quality of Coconuts Based on Density
[12]. Lu Wang., Anyu Li., Xin Tian.: (2019) Detection of Fruit Skin Defects Using
Machine Vision System
[13]. Haiyan Zhou., Zilong Zhuang., Ying Liu., Yang Liu and Xiao Zhang.:(2020) Defect
Classification of Green Plums Based on Deep Learning
[14]. Shih-Lun Wu., Hsiao-Yen Tung., and Yu-Lun Hsu.: (2020) Deep Learning for
Automatic Quality Grading of Mangoes: Methods and Insights
[15]. Kaur, M., Sharma, R.: (2015) Quality detection of fruits by using ANN technique.
IOSR J. Electron. Commun. Eng. Ver. II 10(4), 2278–2834.
[16]. Dara, F., Devolli, A.: (2016) Applying artificial neural networks (ANN) techniques
to automated visual apple sorting. J. Hygien. Eng. Des. 17, 55–63.
[17]. Hopfield, J.J.: (1988) Artificial neural networks. IEEE Circuits Devices Mag. 4(5),
3–10.
[18]. Rudin, L.I., Osher, S., Fatemi, E.: (1992) Nonlinear total variation based noise
removal algorithms. Physica D 60(1–4), 259–268.
[19]. Website: http://congthuongbentre.gov.vn/viet-nam-dien-tich-va-san-luong-dua-den-
nam-2020.html
[20]. Website: https://vneconomy.vn/trai-dua-cong-dung-tuyet-voi-cho-suc-khoe.htm
[21]. Website: https://vanbanphapluat.co/tcvn-10738-2015-dua-qua-tuoi

61
Thông tin liên hệ tác giả chính (người chịu trách nhiệm bài viết):
Họ tên: Trần Thị Thảo Vy
Đơn vị: Trường đại học Sư Phạm Kỹ Thuật thành phố Hồ Chí Minh
Điện thoại: 089 996 7723
Email: vytranspkt710@gmail.com
Xác nhận của Giảng viên hướng dẫn
PGS.TS. Nguyễn Trường Thịnh

62
PHỤ LỤC

Code Python phần xử lý ảnh bằng thị giác máy tính truyền thống để trích xuất các
đặc trưng của
Userful Function 1
import os
def ConnectToDataFolder(FolderPath):
print("=" * 80, "- Begin: ConnectToDataFolder")

if (os.path.isdir(FolderPath)):
os.chdir(FolderPath)
print("List of Data in the Folder :")
display(os.listdir())
else:
print(f"{FolderPath} is not correct, please check the folder again")
print("=" * 80, "- Finish: ConnectToDataFolder")
def GetSubFiles(dir, ExtensionList = []):
print("=" * 80, "- Begin: GetSubFiles")
"Get a list of immediate subfiles"
all_names = next(os.walk(dir))[2]
subfile_names = []
if(len(ExtensionList) > 0):
for filename in all_names:
fname, fextension = os.path.splitext(filename)
if any(ext in fextension for ext in ExtensionList):
subfile_names.append(dir + "/" + filename)
else:
subfile_names = [dir + "/" + x for x in all_names]

63
print(f"There are {len(subfile_names)} files are found")
subfile_names.sort()
print("Here is some samples :")
[print(x) for x in subfile_names[0: min(len(subfile_names), 5)]]
print("=" * 80, "- End: GetSubFiles")
return subfile_names
from matplotlib import pyplot as plt
import matplotlib.gridspec as gridspec
def ShowImage(ImageList, nRows = 1, nCols = 2, ImageTitleList = []):
gs = gridspec.GridSpec(nRows, nCols)
plt.figure(figsize=(20,20))
for i in range(len(ImageList)):
ax = plt.subplot(gs[i])
ax.set_xticklabels([])
ax.set_yticklabels([])
ax.set_aspect('equal')
plt.subplot(nRows, nCols,i+1)
image = ImageList[i].copy()
if (len(image.shape) < 3):
plt.imshow(image, plt.cm.gray)
else:
plt.imshow(image)
if(len(ImageTitleList) > 0):
plt.title("Image " + str(ImageTitleList[i]))
else:
plt.title("Image " + str(i))
plt.axis('off')
plt.show()

64
import random
from pylab import imread
def ShowRandomImage(DatasetFiles, nRows = 1, nCols = 5, seedNo = 10):
print("=" * 80, "- Begin: ShowRandomImage")
nFile = nRows * nCols
random.seed(seedNo)
FileNameList = random.sample(DatasetFiles, nFile)
ImageList = []
for filepath in FileNameList:
image_RGB = imread(filepath)
ImageList.append(image_RGB)
ShowImage(ImageList, nRows, nCols, FileNameList)
print("=" * 80, "- Finish: ShowRandomImage")
return FileNameList, ImageList
from skimage.transform import rescale, resize
import cv2
def ResizeImage(image, wresize = 0, hresize = 0):
OrigWidth, OrigHeight = float(image.shape[1]), float(image.shape[0])
if((wresize == 0) & (hresize == 0)):
return image
if(wresize == 0):
wresize = int((OrigWidth * hresize)/OrigHeight)
if(hresize == 0):
hresize = int((OrigHeight * wresize)/OrigWidth)
resize_image = cv2.resize(image, (wresize, hresize), interpolation = cv2.INTER_NEAR
EST)
return resize_image
def ConvertColorSpaces(image, ColorSpace = "GRAY", display = 1):
ImageTitleList = ["RGB", ColorSpace]

65
if(ColorSpace.upper() == "HSV"):
image_convert = cv2.cvtColor(image, cv2.COLOR_RGB2HSV)
ChannelList = ["Chrominance Hue" , "Chrominance Saturation", "Luminance Value"]
elif(ColorSpace.upper() == "YCRCB"):
image_convert = cv2.cvtColor(image, cv2.COLOR_BGR2YCR_CB)
ChannelList = ["Chrominance Red" , "Chrominance Blue", "Luminance Y"]
elif(ColorSpace.upper() == "LAB"):
image_convert = cv2.cvtColor(image, cv2.COLOR_RGB2YCR_CB)
ChannelList = ["Chrominance a(Green To Red)" , "Chrominance b(Blue To Yellow)",
"Luminance L"]
else:
image_convert = cv2.cvtColor(image, cv2.COLOR_RGB2GRAY)
if(display):
if(len(image_convert.shape) == 3):
ShowImage([image, image_convert, image_convert[:,:,0], image_convert[:,:,1], imag
e_convert[:,:,2]], 1, 5,
ImageTitleList + ChannelList)
else:
ShowImage([image, image_convert], 1, 5, ImageTitleList)
return image_convert
import matplotlib.pyplot as plt
from matplotlib.ticker import (AutoMinorLocator, MultipleLocator)
def ShowHistogram(image, Title = "Color Histogram", ChannelList = ["Channel 1", "Ch
annel 2", "Channel 3"]):
fig, ax = plt.subplots(figsize=(20, 10))
if(len(image.shape) == 3):
color = ('r', 'g', 'b')
for channel,col in enumerate(color):

66
histr = cv2.calcHist([image],[channel],None,[256],[0,256])
ax.plot(histr,color = col, label = ChannelList[channel])
plt.title(Title)
plt.legend()
else:
histr = cv2.calcHist([image],[0],None,[256],[0,256])
plt.plot(histr,color = "gray", label = "Gray")
plt.title("Gray Histogram")
plt.legend()
# Set axis ranges; by default this will put major ticks every 25.
ax.set_xlim(0, 255)
# Change major ticks to show every 20.
ax.xaxis.set_major_locator(MultipleLocator(20))
# Change minor ticks to show every 5. (20/4 = 5)
ax.xaxis.set_minor_locator(AutoMinorLocator(4))
# Turn grid on for both major and minor ticks and style minor slightly
# differently.
ax.grid(which='major', color='#CCCCCC', linestyle='--')
ax.grid(which='minor', color='#CCCCCC', linestyle=':')
plt.show()
import numpy as np
def SegmentByThresh(image, channel, segment_range = [], display = 1):
if(len(segment_range) == 0):
thresh, image_mask = cv2.threshold(channel,0,255,cv2.THRESH_BINARY_INV+cv2
.THRESH_OTSU)
print(f"Otsu Threshold : {thresh}")
else:
image_mask = ((channel > segment_range[0]) & (channel < segment_range[1]))

67
image_segment = cv2.bitwise_and(image, image, mask = image_mask.astype(np.uint8))
ImageTitleList = ["Color Image", "Segmented Channel", "Segmented Mask", "Segment
ed Color Image"]
if(display):
ShowImage([image, channel, image_mask, image_segment], 1, 5, ImageTitleList)
image_mask = image_mask.astype(bool)
return image_mask
import skimage
from skimage import measure
def GetLargestBinaryArea(image, image_mask, display = 1):
labels_mask = measure.label(image_mask)
regions = measure.regionprops(labels_mask)
regions.sort(key=lambda x: x.area, reverse=True)
if len(regions) > 1:
for rg in regions[1:]:
labels_mask[rg.coords[:,0], rg.coords[:,1]] = 0
labels_mask[labels_mask!=0] = 1
image_mask = labels_mask
image_segment = cv2.bitwise_and(image, image, mask = image_mask.astype(np.uint8)
)
ImageTitleList = ["Color Image", "Segmented Mask", "Segmented Color Image"]
if(display):
ShowImage([image, image_mask, image_segment], 1, 5, ImageTitleList)
return image_mask
from skimage.measure import label, regionprops
from skimage.segmentation import mark_boundaries
def LabelObjectByMask(image_input, image_mask, type = "BBox", color = (0,255,0)):
image_output = image_input.copy()

68
Marker_Size = int(AnImage.shape[0] * 0.1)
Marker_Thick = int(AnImage.shape[0] * 0.01)
BBoxThick = int(AnImage.shape[0] * 0.01)
ContourThick = int(AnImage.shape[0] * 0.01)
label_img = label(image_mask)
regions = regionprops(label_img)
for props in regions:
minr, minc, maxr, maxc = props.bbox
left_top = (minc, minr)
right_bottom = (maxc, maxr)
at_row, at_col = props.centroid
if(type == "BBox"):
cv2.rectangle(image_output,left_top, right_bottom, color ,BBoxThick)
if(type == "Boundary"):
contours, heirarchy = cv2.findContours(image_mask.astype(np.uint8), cv2.RETR_
TREE, cv2.CHAIN_APPROX_NONE)
cv2.drawContours(image_output, contours, -1, color, ContourThick)
cv2.drawMarker(image_output, (int(at_col), int(at_row)),color, markerType=cv2.
MARKER_STAR,
markerSize= Marker_Size, thickness= Marker_Thick, line_type=cv2.LI
NE_AA)

if(type == "Fill"):
image_output[image_mask > 0] = color

return image_output
def IntensityTransformation(image, gamma = 0.3, display = 1):
image_gamma_corrected = np.array(255*(image / 255) ** gamma, dtype = 'uint8')

69
ShowImage([image, image_gamma_corrected], 1, 5, ["Original Image", f"Gamma = {ga
mma}"])
if(display):
GammaImageList = []
TitleList = []
for g in [0.3, 0.5, 0.9, 1.2, 2.2]:
# Apply gamma correction.
gamma_corrected = np.array(255*(image / 255) ** g, dtype = 'uint8')
GammaImageList.append(gamma_corrected)
TitleList.append(f"Gamma = {g}")

ShowImage(GammaImageList, 1, 5, TitleList)
return image_gamma_corrected
from skimage.morphology import (erosion, dilation, opening, closing, white_tophat)
from skimage.morphology import black_tophat, skeletonize, convex_hull_image
from skimage.morphology import disk
from scipy import ndimage
# Morphology
def Morphology(image, image_mask, morType = "erosion", size = 3, display = 1):
image_mask = image_mask.astype(np.uint8)
kernel = disk(abs(size))
if(morType == "erosion"):
result = erosion(image_mask, kernel)
if(morType == "dilation"):
result = dilation(image_mask, kernel)
if(morType == "opening"):
result = opening(image_mask, kernel)
if(morType == "closing"):
result = closing(image_mask, kernel)

70
if(morType == "gradient"):
result = cv2.morphologyEx(image_mask, cv2.MORPH_GRADIENT, kernel)
if(morType == "tophat"):
result = white_tophat(image_mask, kernel)
if(morType == "blackhat"):
result = black_tophat(image_mask, kernel)
if(morType == "fillhole"):
result = ndimage.binary_fill_holes(image_mask).astype(int)
if(morType == "skeleton"):
result = skeletonize(image_mask == 1)
if(morType == "convexhull"):
result = convex_hull_image(image_mask == 1)
if(display):
image_mask_color = cv2.bitwise_and(image, image, mask = result.astype(np.uint8))
im_erosion = erosion(image_mask, kernel)
im_dilation = dilation(image_mask, kernel)
im_opening = opening(image_mask, kernel)
im_closing = closing(image_mask, kernel)
im_gradient = cv2.morphologyEx(image_mask, cv2.MORPH_GRADIENT, kernel)
im_tophat = white_tophat(image_mask, kernel)
im_blackhat = black_tophat(image_mask, kernel)
im_fillhole = ndimage.binary_fill_holes(image_mask).astype(int)
im_skeleton = skeletonize(image_mask == 1)
im_convexhull = convex_hull_image(image_mask == 1)
ShowImage([image, result, image_mask_color], 1, 5, ImageTitleList= ["Color Image",
"Mask", "Segment By Mask"])
ShowImage([im_erosion, im_dilation, im_opening, im_closing, im_gradient], 1, 5,
ImageTitleList= ["Erosion", "Dilation", "Opening", "Closing", "Gradient"])
ShowImage([im_tophat, im_blackhat, im_fillhole, im_skeleton, im_convexhull], 1, 5,

71
ImageTitleList= ["Tophat", "BlackHat", "FillHole", "Skeleton", "Convexhull"])
result = result.astype(bool)
return result
import numpy as np
def ConcatImage(ImageList, CombineType = "h", display = 1):
if(CombineType == "h"):
result = np.concatenate(ImageList, axis=1)
else:
result = np.concatenate(ImageList, axis=0)
if(display):
ShowImage([result], 1, 1)
result = np.uint8(result)
return result
from pathlib import Path
def GenerateOutput(image, image_mask, FilePath = "", SaveFolderPath = ""):
image_output_rgbmask = cv2.merge([image_mask*255, image_mask*255, image_mas
k*255])
image_output_fill = LabelObjectByMask(image, image_mask, type = "Fill", color = (25
5,0,0))
image_output_bbox = LabelObjectByMask(image, image_mask, type = "BBox", color
= (255,0,0))
image_output_boundary = LabelObjectByMask(image, image_mask, type = "Boundary
", color = (255,0,0))
DemoImage1 = ConcatImage([image_output_rgbmask, image_output_fill], display= 0)
DemoImage2 = ConcatImage([image_output_bbox, image_output_boundary], display=
0)
DemoImage = ConcatImage([DemoImage1, DemoImage2], CombineType = "v", displa
y= 0)

72
if(len(FolderPath) > 0):
filename = Path(FilePath).stem
print(f"Already Save Results to Folder {SaveFolderPath}")
print(f'{SaveFolderPath}/{filename}_rgbmask.jpg')
cv2.imwrite(f'{SaveFolderPath}/{filename}_mask.jpg', image_output_rgbmask)
print(f'{SaveFolderPath}/{filename}_demo.jpg')
cv2.imwrite(f'{SaveFolderPath}/{filename}_demo.jpg', cv2.cvtColor(DemoImage, cv
2.COLOR_RGB2BGR))
return image_output_rgbmask, image_output_fill, image_output_bbox, image_output_bo
undary, DemoImage

Userful Function 2
from skimage.measure import label, regionprops
def GetContourCenter(image, image_mask, display = 1):
image_label = label(GetLargestBinaryArea(image, image_mask, display = 0))
regions = regionprops(image_label, intensity_image= image_mask)
props = regions[0]
(center_y, center_x) = props.centroid
CenterPoints = [int(center_x), int(center_y)]
contours, hierarchy = cv2.findContours(image_mask.astype(np.uint8), cv2.RETR_TRE
E, cv2.CHAIN_APPROX_NONE)
ContourPoints = np.squeeze(contours[0], axis=1)
if(display):
print(f"Center Point at X = {CenterPoints[0]} and Y = {CenterPoints[1]}")
print(f"Contours Points are \n {ContourPoints}")
image_demo = image.copy()
cv2.drawMarker(image_demo, (CenterPoints[0], CenterPoints[1]),(255,255,0),
markerType=cv2.MARKER_STAR, markerSize=25, thickness=2, line_type=
cv2.LINE_AA)

73
count = 0
for x_idx, y_idx in ContourPoints:
count = count + 1
if(count % 15 == 0):
cv2.drawMarker(image_demo, (x_idx, y_idx),(255,0,0),
markerType=cv2.MARKER_STAR, markerSize=10, thickness=2, line_type
=cv2.LINE_AA)
ShowImage([image_mask, image_demo], 1, 5)
return CenterPoints, ContourPoints
import math
def GetMinorMajorLength(image, image_mask, display = 1):
image_label = label(GetLargestBinaryArea(image, image_mask, display = 0))
regions = regionprops(image_label, intensity_image= image_mask)
props = regions[0]
minorLength = props.minor_axis_length
majorLength = props.major_axis_length
orientation = props.orientation
if(display):
print(f"Minor Length = {minorLength} and Major Length = {majorLength} and Orient
ation = {orientation}")
y0, x0 = props.centroid
minr, minc, maxr, maxc = props.bbox
x1 = int(x0 + math.cos(orientation) * 0.5 * minorLength)
y1 = int(y0 - math.sin(orientation) * 0.5 * minorLength)
x2 = int(x0 - math.sin(orientation) * 0.5 * majorLength)
y2 = int(y0 - math.cos(orientation) * 0.5 * majorLength)
x0 = int(x0)
y0 = int(y0)

74
image_demo = image.copy()
cv2.line(image_demo, (x0, y0), (x1, y1), (0, 255, 0), thickness=3)
cv2.line(image_demo, (x0, y0), (x2, y2), (0, 255, 0), thickness=3)
ShowImage([image_mask, image_demo], 1, 5)
return minorLength, majorLength, orientation
def GetAreaPerimeterSolidity(image, image_mask, display = 1):
image_label = label(GetLargestBinaryArea(image, image_mask, display = 0))
regions = regionprops(image_label, intensity_image= image_mask)
props = regions[0]
Area = int(props.area)
Perimeter = int(props.perimeter)
# Ratio of pixels in the region to pixels of the convex hull image.
Solidity = props.solidity
Roundness = (4 * math.pi * Area) / (Perimeter * Perimeter)
if(display):
print(f"Area : {Area}, Perimeter : {Perimeter}, Solidity : {Solidity}, Roundness : {Rou
ndness}")
return Area, Perimeter, Solidity, Roundness
import numpy as np
def GetMinMaxMeanQuantileIntensity(image, image_mask, image_value, display = 1):
image_label = label(GetLargestBinaryArea(image, image_mask, display = 0))
regions = regionprops(image_label, intensity_image= image_value)
props = regions[0]
image_value[image_mask != 1] = 0
vectorized = image_value.reshape(-1)
vectorized = np.float32(vectorized)
vectorized = vectorized[vectorized != 0]
IntensityMax = np.max(vectorized)
IntensityMean = np.mean(vectorized)

75
IntensityMin = np.min(vectorized)
IntensityQ1 = np.quantile(vectorized, 0.25)
IntensityQ2 = np.quantile(vectorized, 0.5)
IntensityQ3 = np.quantile(vectorized, 0.75)
if(display):
print(f"Min : {IntensityMin}, Max : {IntensityMax} , Mean : {IntensityMean}")
print(f"Q1 : {IntensityQ1}, Q2 : {IntensityQ2}, Q3 : {IntensityQ3}")
return IntensityMin, IntensityMax, IntensityMean, IntensityQ1, IntensityQ2, IntensityQ
3
import json
def WriteJSON(filename, DataDict, SaveFolderPath):
content = json.dumps(DataDict, indent=4)
try:
f = open(f'{SaveFolderPath}/{filename}.json', "w")
f.write(content)
print("Finish Writing to file with contents: ", f'{SaveFolderPath}/{filename}.json')
except OSError:
print("Could not write file:", filename)
finally:
f.close()
def ReadJSON(fname):
import json
data = []
try:
with open(fname, "r") as fid:
data = json.load(fid)
print("Finish Reading fname \n")
except OSError:
print("Could not read file:", fname)

76
finally:
fid.close()
return data

Userful Function 3
from skimage.feature import hog
from skimage import exposure
def HogFeatureExtraction(image, display = 1):
HoGfeature, hog_image = hog(AnImage, orientations=9, pixels_per_cell=(8, 8),
cells_per_block=(2, 2), visualize=True, feature_vector = True, multi
channel=True)
if(display):
print(f"Len of HoG Feature is {len(HoGfeature)} and Values are :")
print(HoGfeature)
# Rescale histogram for better display
hog_image_rescaled = exposure.rescale_intensity(hog_image, in_range=(0, 10))
ShowImage([image, hog_image, hog_image_rescaled], 1, 3, ImageTitleList= ["Origin"
, "HoG Image", "Rescaled HoG Image"])

return HoGfeature
from skimage.feature import corner_harris, corner_peaks
def DetectHarisCorner(image, image_value, image_mask, display = 1):
coords = corner_peaks(corner_harris(image_value), min_distance=5, threshold_rel=0.00
5)
coordsList = []
image_mask_dilated = Morphology(image, image_mask, morType = "dilation", size = 5
, display = 0)
for x_idx, y_idx in coords:
if (image_mask_dilated[x_idx, y_idx]):

77
coordsList.append((x_idx, y_idx))
if(display):
image_demo = AnImage.copy()
for x_idx, y_idx in coordsList:
cv2.drawMarker(image_demo, (y_idx, x_idx),(0,255,255),
markerType=cv2.MARKER_STAR, markerSize=10, thickness=2, line_type=
cv2.LINE_AA)
ShowImage([image_demo], 1, 3, ["Harris Corner Detection"])
return coordsList
from skimage.feature import match_descriptors, plot_matches, ORB
def DetectORBKeypoints(image, image_value, image_mask, NumKeypoints = 50, displa
y = 1):
descriptor_extractor = ORB(n_keypoints = NumKeypoints)
descriptor_extractor.detect_and_extract(image_value)
keypoints = descriptor_extractor.keypoints
KeyPointsList = []
image_mask_dilated = Morphology(image, image_mask, morType = "dilation", size = 5
, display = 0)
for x_idx, y_idx in keypoints:
if (image_mask_dilated[int(x_idx), int(y_idx)]):
KeyPointsList.append((int(x_idx), int(y_idx)))
if(display):
image_demo = image.copy()
print(f"Original there are {NumKeypoints} ORB features points but only {len(KeyPoi
ntsList)} ORB features inside")
for x_idx, y_idx in KeyPointsList:
cv2.drawMarker(image_demo, (y_idx, x_idx),(0,255,255),
markerType=cv2.MARKER_STAR, markerSize=5, thickness=2, line_type=c
v2.LINE_AA)

78
ShowImage([image_demo], 1, 3, ["ORB Keypoints Detection"])
return KeyPointsList
Observations
from google.colab import drive
drive.mount('/content/drive')
→ Drive already mounted at /content/drive; to attempt to forcibly remount, call
drive.mount("/content/drive", force_remount=True).
FolderPath = "/content/drive/MyDrive/LVTN - Ứng dụng AI/Hình dừa 10-07-2022"
ConnectToDataFolder(FolderPath)
===============================================================
================= - Begin: ConnectToDataFolder
List of Data in the Folder :
['Output(Segmentation2)',
'Output(VisualFeatureExtraction)',
'Màu OK - Loại 1',
'Trầy xước nặng - Loại 3',
'Trầy xước nhẹ - Loại 2',
'Màu NG - Loại 3',
'Khối lượng dừa 10-07.xlsx',
'Datasets',
'Output(Segmentation)',
'Coconuts_Segmentation_Traditional_CVs.ipynb',
'Giải thích code - AI Specialist - Traditional Computer Vision Step 2(Feature
Extraction).ipynb',
'Running man - AI Specialist - Traditional Computer Vision Step 2(Feature
Extraction).ipynb',
'AI Specialist - Traditional Computer Vision Step 2 Extra (Feature Descriptors).ipynb',
'AI Specialist - Traditional Computer Vision Step 2(Feature Extraction) (1).ipynb',
'AI Specialist - Traditional Computer Vision-Step 1(Boundary Segmentation).ipynb']

79
===============================================================
================= - Finish: ConnectToDataFolder
DatasetFiles = GetSubFiles("Datasets", ExtensionList = ["jpg"])
print(DatasetFiles)
===============================================================
================= - Begin: GetSubFiles
There are 385 files are found
Here is some samples :
Datasets/10.1.jpg
Datasets/10.2.jpg
Datasets/10.3.jpg
Datasets/10.4.jpg
Datasets/11.1.jpg
===============================================================
================= - End: GetSubFiles
['Datasets/10.1.jpg', 'Datasets/10.2.jpg', 'Datasets/10.3.jpg', 'Datasets/10.4.jpg',
'Datasets/11.1.jpg', 'Datasets/11.2.jpg', 'Datasets/11.3.jpg', 'Datasets/11.4.jpg',
'Datasets/12.1.jpg', 'Datasets/12.2.jpg', 'Datasets/12.3.jpg', 'Datasets/12.4.jpg',
'Datasets/13.1.jpg', 'Datasets/13.2.jpg', 'Datasets/13.3.jpg', 'Datasets/13.4.jpg',
'Datasets/14.1.jpg', 'Datasets/14.2.jpg', 'Datasets/14.3.jpg', 'Datasets/14.4.jpg',
'Datasets/15.1.jpg', 'Datasets/15.2.jpg', 'Datasets/15.3.jpg', 'Datasets/15.4.jpg',
'Datasets/16.1.jpg', 'Datasets/16.2.jpg', 'Datasets/16.3.jpg', 'Datasets/16.4.jpg',
'Datasets/17.1.jpg', 'Datasets/17.2.jpg', 'Datasets/17.3.jpg', 'Datasets/17.4.jpg',
'Datasets/18.1.jpg', 'Datasets/18.2.jpg', 'Datasets/18.3.jpg', 'Datasets/18.4.jpg',
'Datasets/19.1.jpg', 'Datasets/19.2.jpg', 'Datasets/19.3.jpg', 'Datasets/19.4.jpg',
'Datasets/2.3.jpg', 'Datasets/2.4.jpg', 'Datasets/20.1.jpg', 'Datasets/20.2.jpg',
'Datasets/20.3.jpg', 'Datasets/20.4.jpg', 'Datasets/21.1.jpg', 'Datasets/21.2.jpg',
'Datasets/21.3.jpg', 'Datasets/21.4.jpg', 'Datasets/22.1.jpg', 'Datasets/22.2.jpg',
'Datasets/22.3.jpg', 'Datasets/22.4.jpg', 'Datasets/23.1.jpg', 'Datasets/23.2.jpg',

80
'Datasets/23.3.jpg', 'Datasets/23.4.jpg', 'Datasets/24.1.jpg', 'Datasets/24.2.jpg',
'Datasets/24.3.jpg', 'Datasets/24.4.jpg', 'Datasets/25.1.jpg', 'Datasets/25.2.jpg',
'Datasets/25.3.jpg', 'Datasets/25.4.jpg', 'Datasets/26.1.jpg', 'Datasets/26.2.jpg',
'Datasets/26.3.jpg', 'Datasets/26.4.jpg', 'Datasets/27.1.jpg', 'Datasets/27.2.jpg',
'Datasets/27.3.jpg', 'Datasets/27.4.jpg', 'Datasets/28.1.jpg', 'Datasets/28.2.jpg',
'Datasets/28.3.jpg', 'Datasets/28.4.jpg', 'Datasets/29.1.jpg', 'Datasets/29.2.jpg',
'Datasets/29.3.jpg', 'Datasets/29.4.jpg', 'Datasets/3.1.jpg', 'Datasets/3.2.jpg',
'Datasets/3.3.jpg', 'Datasets/3.4.jpg', 'Datasets/30.1.jpg', 'Datasets/30.2.jpg',
'Datasets/30.3.jpg', 'Datasets/30.4.jpg', 'Datasets/31.1.jpg', 'Datasets/31.2.jpg',
'Datasets/31.3.jpg', 'Datasets/31.4.jpg', 'Datasets/32.1.jpg', 'Datasets/32.2.jpg',
'Datasets/32.3.jpg', 'Datasets/32.4.jpg', 'Datasets/33.1.jpg', 'Datasets/33.2.jpg',
'Datasets/33.3.jpg', 'Datasets/33.4.jpg', 'Datasets/34.1.jpg', 'Datasets/34.2.jpg',
'Datasets/34.3.jpg', 'Datasets/34.4.jpg', 'Datasets/35.1.jpg', 'Datasets/35.2.jpg',
'Datasets/35.3.jpg', 'Datasets/35.4.jpg', 'Datasets/36.1.jpg', 'Datasets/36.2.jpg',
'Datasets/36.3.jpg', 'Datasets/36.4.jpg', 'Datasets/37.1.jpg', 'Datasets/37.2.jpg',
'Datasets/37.3.jpg', 'Datasets/37.4.jpg', 'Datasets/38.1.jpg', 'Datasets/38.2.jpg',
'Datasets/38.3.jpg', 'Datasets/38.4.jpg', 'Datasets/39.1.jpg', 'Datasets/39.2.jpg',
'Datasets/39.3.jpg', 'Datasets/39.4.jpg', 'Datasets/4.1.jpg', 'Datasets/4.2.jpg',
'Datasets/4.3.jpg', 'Datasets/4.4.jpg', 'Datasets/40.1.jpg', 'Datasets/40.2.jpg',
'Datasets/40.3.jpg', 'Datasets/40.4.jpg', 'Datasets/41.1.jpg', 'Datasets/41.2.jpg',
'Datasets/41.3.jpg', 'Datasets/41.4.jpg', 'Datasets/42.1.jpg', 'Datasets/42.2.jpg',
'Datasets/42.3.jpg', 'Datasets/42.4.jpg', 'Datasets/43.1.jpg', 'Datasets/43.2.jpg',
'Datasets/43.3.jpg', 'Datasets/43.4.jpg', 'Datasets/44.1.jpg', 'Datasets/44.2.jpg',
'Datasets/44.3.jpg', 'Datasets/44.4.jpg', 'Datasets/45.1.jpg', 'Datasets/45.2.jpg',
'Datasets/45.3.jpg', 'Datasets/45.4.jpg', 'Datasets/46.1.jpg', 'Datasets/46.2.jpg',
'Datasets/46.3.jpg', 'Datasets/46.4.jpg', 'Datasets/47.1.jpg', 'Datasets/47.2.jpg',
'Datasets/47.3.jpg', 'Datasets/47.4.jpg', 'Datasets/48.1.jpg', 'Datasets/48.2.jpg',
'Datasets/48.3.jpg', 'Datasets/48.4.jpg', 'Datasets/49.1.jpg', 'Datasets/49.2.jpg',
'Datasets/49.3.jpg', 'Datasets/49.4.jpg', 'Datasets/5.1.jpg', 'Datasets/5.2.jpg',

81
'Datasets/5.3.jpg', 'Datasets/5.4.jpg', 'Datasets/50.1.jpg', 'Datasets/50.2.jpg',
'Datasets/50.3.jpg', 'Datasets/50.4.jpg', 'Datasets/51.1.jpg', 'Datasets/51.2.jpg',
'Datasets/51.3.jpg', 'Datasets/51.4.jpg', 'Datasets/52.1.jpg', 'Datasets/52.2.jpg',
'Datasets/52.3.jpg', 'Datasets/52.4.jpg', 'Datasets/53.1.jpg', 'Datasets/53.2.jpg',
'Datasets/53.3.jpg', 'Datasets/53.4.jpg', 'Datasets/54.1.jpg', 'Datasets/54.2.jpg',
'Datasets/54.3.jpg', 'Datasets/54.4.jpg', 'Datasets/55.1.jpg', 'Datasets/55.2.jpg',
'Datasets/55.3.jpg', 'Datasets/55.4.jpg', 'Datasets/56.1.jpg', 'Datasets/56.2.jpg',
'Datasets/56.3.jpg', 'Datasets/56.4.jpg', 'Datasets/57.1.jpg', 'Datasets/57.2.jpg',
'Datasets/57.3.jpg', 'Datasets/57.4.jpg', 'Datasets/58.1.jpg', 'Datasets/58.2.jpg',
'Datasets/58.3.jpg', 'Datasets/58.4.jpg', 'Datasets/59.1.jpg', 'Datasets/59.2.jpg',
'Datasets/59.3.jpg', 'Datasets/59.4.jpg', 'Datasets/6.1.jpg', 'Datasets/6.2.jpg',
'Datasets/6.3.jpg', 'Datasets/6.4.jpg', 'Datasets/60.1.jpg', 'Datasets/60.2.jpg',
'Datasets/60.3.jpg', 'Datasets/60.4.jpg', 'Datasets/61.1.jpg', 'Datasets/61.2.jpg',
'Datasets/61.3.jpg', 'Datasets/61.4.jpg', 'Datasets/62.1.jpg', 'Datasets/62.2.jpg',
'Datasets/62.3.jpg', 'Datasets/62.4.jpg', 'Datasets/63.1.jpg', 'Datasets/63.2.jpg',
'Datasets/63.3.jpg', 'Datasets/63.4.jpg', 'Datasets/64.1.jpg', 'Datasets/64.2.jpg',
'Datasets/64.3.jpg', 'Datasets/64.4.jpg', 'Datasets/65.1.jpg', 'Datasets/65.2.jpg',
'Datasets/65.3.jpg', 'Datasets/65.4.jpg', 'Datasets/66.1.jpg', 'Datasets/66.2.jpg',
'Datasets/66.3.jpg', 'Datasets/66.4.jpg', 'Datasets/67.1.jpg', 'Datasets/67.2.jpg',
'Datasets/67.3.jpg', 'Datasets/67.4.jpg', 'Datasets/68.1.jpg', 'Datasets/68.2.jpg',
'Datasets/68.3.jpg', 'Datasets/68.4.jpg', 'Datasets/69.1.jpg', 'Datasets/69.2.jpg',
'Datasets/69.3.jpg', 'Datasets/69.4.jpg', 'Datasets/7.1.jpg', 'Datasets/7.2.jpg',
'Datasets/7.3.jpg', 'Datasets/7.4.jpg', 'Datasets/70.1.jpg', 'Datasets/70.2.jpg',
'Datasets/70.3.jpg', 'Datasets/70.4.jpg', 'Datasets/71.1.jpg', 'Datasets/71.2.jpg',
'Datasets/71.3.jpg', 'Datasets/71.4.jpg', 'Datasets/72.1.jpg', 'Datasets/72.2.jpg',
'Datasets/72.3.jpg', 'Datasets/72.4.jpg', 'Datasets/73.1.jpg', 'Datasets/73.2.jpg',
'Datasets/73.3.jpg', 'Datasets/73.4.jpg', 'Datasets/74.1.jpg', 'Datasets/74.3.jpg',
'Datasets/74.4.jpg', 'Datasets/75.1.jpg', 'Datasets/75.2.jpg', 'Datasets/75.3.jpg',
'Datasets/75.4.jpg', 'Datasets/76.1.jpg', 'Datasets/76.2.jpg', 'Datasets/76.3.jpg',

82
'Datasets/76.4.jpg', 'Datasets/77.1.jpg', 'Datasets/77.2.jpg', 'Datasets/77.3.jpg',
'Datasets/77.4.jpg', 'Datasets/78.1.jpg', 'Datasets/78.2.jpg', 'Datasets/78.3.jpg',
'Datasets/78.4.jpg', 'Datasets/79.1.jpg', 'Datasets/79.2.jpg', 'Datasets/79.3.jpg',
'Datasets/79.4.jpg', 'Datasets/8.1.jpg', 'Datasets/8.2.jpg', 'Datasets/8.3.jpg',
'Datasets/8.4.jpg', 'Datasets/80.1.jpg', 'Datasets/80.2.jpg', 'Datasets/80.3.jpg',
'Datasets/80.4.jpg', 'Datasets/9.1.jpg', 'Datasets/9.2.jpg', 'Datasets/9.3.jpg',
'Datasets/9.4.jpg']

FileNameList, ImageList = ShowRandomImage(DatasetFiles, seedNo = 30)

===============================================================
================= - Begin: ShowRandomImage

===============================================================
================= - Finish: ShowRandomImage
Idx = 0
filename = Path(FileNameList[Idx]).stem
print(f"Here is the image {FileNameList[Idx]}")
AnImage = ResizeImage(ImageList[Idx], 0, 300)
image_gray = ConvertColorSpaces(AnImage, ColorSpace = "GRAY")
image_hsv = ConvertColorSpaces(AnImage, ColorSpace = "HSV")
image_ycrcb = ConvertColorSpaces(AnImage, ColorSpace = "YCrCb")
image_lab = ConvertColorSpaces(AnImage, ColorSpace = "Lab")
Here is the image Datasets/73.3.jpg

83
image_mask = imread("Output(Segmentation2)/" + filename + "_mask.jpg")
image_mask = image_mask[:,:,0] > 200
image_demo = imread("Output(Segmentation2)/" + filename + "_demo.jpg")
ShowImage([AnImage, image_mask], 1, 5)
ShowImage([image_demo], 1, 3)

84
fname = f"Output(VisualFeatureExtraction)/{filename}.json"
JsonData = ReadJSON(fname)
Finish Reading fname
===============================================================
================= - Begin: ConnectToDataFolder
List of Data in the Folder :
['AI Specialist - Traditional Computer Vision Step 2 Extra (Feature Descriptors).ipynb',
'AI Specialist - Traditional Computer Vision Step 2(Feature Extraction) (1).ipynb',
'Khối lượng dừa 10-07.xlsx',
'Datasets',
'Output(Segmentation)',
'Coconuts_Segmentation_Traditional_CVs.ipynb',
'Output(Segmentation2)',

85
'Giải thích code - AI Specialist - Traditional Computer Vision Step 2(Feature
Extraction).ipynb',
'Running man - AI Specialist - Traditional Computer Vision Step 2(Feature
Extraction).ipynb',
'Output(VisualFeatureExtraction)',
'ANN-1.png',
'data_train.csv',
'HHH',
'179-LVTN-TTTV.docx',
'179-Get-Json-data.ipynb',
'AI Specialist - Traditional Computer Vision-Step 1(Boundary Segmentation).ipynb',
'Copy of AI Specialist - Traditional Computer Vision 1_D - Image Segmentation.ipynb',
'TRAINING-MODEL-1.ipynb']
===============================================================
================= - Finish: ConnectToDataFolder
JsonData
{'FileName': '73.3', 'CenterPoints': '[186, 139]', 'ContourPoints': '[[174 39]\n [173 40]\n
[172 40]\n ...\n [177 39]\n [176 39]\n [175 39]]', 'minorLength': '195.47990614179184',
'majorLength': '222.94392743209482', 'orientation': '1.460999717217968', 'Area': '34185',
'Perimeter': '694', 'Solidity': '0.9931725740848344', 'Roundness': '0.8919212422905852',
'IntensityMinHue': '5.0', 'IntensityMaxHue': '40.0', 'IntensityMeanHue': '31.888807',
'IntensityQ1Hue': '31.0', 'IntensityQ2Hue': '33.0', 'IntensityQ3Hue': '34.0',
'IntensityMinSaturation': '53.0', 'IntensityMaxSaturation': '255.0',
'IntensityMeanSaturation': '134.48741', 'IntensityQ1Saturation': '121.0',
'IntensityQ2Saturation': '132.0', 'IntensityQ3Saturation': '145.0', 'IntensityMinValue':
'14.0', 'IntensityMaxValue': '155.0', 'IntensityMeanValue': '99.26366', 'IntensityQ1Value':
'83.0', 'IntensityQ2Value': '104.0', 'IntensityQ3Value': '117.0'}

86
hue = image_hsv[:,:,0]
saturation = image_hsv[:,:,1]
value = image_hsv[:,:,2]
Feature Descriptors
HoGfeature = HogFeatureExtraction(AnImage, display = 1)

87
S K L 0 0 2 1 5 4

You might also like