TỔNG QUAN
Đặt vấn đề
Khoa học kỹ thuật đang phát triển mạnh mẽ, đặc biệt trong các ngành sản xuất, nơi việc cải tiến và nâng cấp hệ thống sản xuất trở thành ưu tiên hàng đầu Tự động hóa hệ thống phân loại sản phẩm là một giải pháp hiệu quả, giúp tăng tính linh hoạt, tiết kiệm thời gian và nhân lực, đồng thời nâng cao năng suất và hiệu quả kinh tế Để đáp ứng nhu cầu hiện đại hóa, quá trình sản xuất ngày càng đòi hỏi độ chính xác và tốc độ cao Công nghệ xử lý ảnh và các ứng dụng của nó trở nên cần thiết trong cuộc sống, như phát hiện đám cháy trong kho, giám sát an ninh, phát hiện lỗi bề mặt vật thể, và nhận dạng đường đi cho ô tô tự hành.
Ngành công nghiệp đóng gói sản phẩm yêu cầu độ chính xác cao trong kiểm tra đầu ra Để thay thế con người trong việc kiểm tra thành phẩm với tốc độ và độ chính xác tốt hơn, công nghệ xử lý ảnh đã ra đời và ngày càng phát triển mạnh mẽ.
Gần đây, nhiều nghiên cứu đã được thực hiện thông qua các đề tài Đồ Án Tốt Nghiệp (ĐATN) nhằm đáp ứng nhu cầu thực tế Năm 2020, Trần Hoàng Minh và Lê Duy Ân đã phát triển đề tài “Hệ thống phân loại cà chua theo màu sắc và khối lượng”, kết hợp giữa Matlab và Arduino Hệ thống này nhận tín hiệu từ camera và cảm biến, điều khiển van khí nén để điều khiển xy lanh, và hiển thị kết quả trên màn hình LCD 16x2.
Một đề tài ĐATN tiêu biểu năm 2018 của Trần Khánh Hưng và Hoàng Như Ý là “Hệ thống phân loại cà chua theo màu sắc sử dụng PLC S7-1200” Đề tài này nổi bật trong lĩnh vực nghiên cứu ứng dụng công nghiệp, với sự lựa chọn sử dụng bộ PLC mạnh mẽ S7-1200, nhằm nâng cao hiệu quả phân loại sản phẩm.
Arduino 1200 kết hợp với các cảm biến màu sắc và cảm biến hồng ngoại giúp điều khiển cơ cấu khí nén và băng chuyền Hệ thống này có khả năng nhận diện ba trạng thái màu sắc của cà chua (đỏ, vàng, xanh), mang lại hiệu quả kinh tế cao hơn so với phương pháp kiểm tra bằng cảm quan của con người.
Trong nghiên cứu và phát triển xử lý ảnh cho phân loại sản phẩm, nhiều phương pháp được áp dụng, đặc biệt là phân loại theo màu sắc thông qua cảm biến màu và kính lọc màu Các công nghệ như PLC, Arduino và Matlab cũng được sử dụng trong quá trình này Nhóm chúng em đã quyết định chọn đề tài “THIẾT KẾ VÀ CHẾ TẠO MÁY PHÂN LOẠI CÀ CHUA”, sử dụng phương pháp kết hợp xử lý ảnh với kit Raspberry Pi 3B+ và ngôn ngữ lập trình Python.
Mục tiêu đề tài
Mục tiêu của dự án là nghiên cứu ứng dụng xử lý ảnh trong thực tế để thiết kế hệ thống phân loại cà chua theo màu sắc và kích thước Hệ thống sử dụng camera để thu nhận hình ảnh cà chua và gửi dữ liệu vào cơ sở dữ liệu, nơi ngôn ngữ Python sẽ tiến hành xử lý ảnh Với bộ xử lý trung tâm là kit Raspberry Pi 3B+, hệ thống sẽ xác định màu sắc và kích thước của cà chua, từ đó phân loại chúng dựa trên dữ liệu đã được xử lý.
Nội dung nghiên cứu
Để thiết kế hệ thống tự động, cần kết hợp thiết kế cơ khí với việc điều khiển động cơ thông qua lập trình trên Raspberry Pi Bên cạnh đó, các yếu tố quan trọng khác bao gồm lựa chọn vật liệu mô hình, nguồn cung cấp và tính toán các thông số chi tiết cũng cần được xem xét kỹ lưỡng.
- Nghiên cứu hoạt động của kit Raspberry Pi 3B+, cài hệ điều hành cho kit
- Nghiên cứu xử lý ảnh dựa trên thư viện OpenCV dùng ngôn ngữ lập trình Python
- Nghiên cứu xây dựng mô hình phân loại với băng tải và RC Servo
- Nghiên cứu xây dựng một giao diện web localhost để tùy chỉnh các thông số phân loại, và tìm hiểu realtime database của Firebase.
Phạm vi giới hạn
- Do giới hạn về kinh phí, yếu tố con người cũng như nguyên vật liệu nên mô hình vẫn còn bị nhiều hạn chế:
Đề tài này tập trung vào việc phân loại màu sắc của quả cà chua theo ba màu chính: xanh, vàng và đỏ, cùng với kích thước của chúng Tuy nhiên, nghiên cứu không đánh giá chất lượng hư hỏng hay mức độ chín của quả cà chua.
Ảnh phân tích được chụp trong điều kiện ánh sáng đủ
Đề tài được giới hạn trong mô hình phân loại quy mô nhỏ và chỉ tập chung vào kết quả và cách hoạt động cơ bản của mô hình
Tốc độ phân loại và xử lý vẫn còn chậm
Hệ thống vẫn chưa phân loại được quả bị hư và bị lỗi
Chỉ phân loại chính xác với những quả tương đối tròn.
Bố cục
Chương 1: Tổng quan Đặt vấn đề, giới thiệu khái quát về mục tiêu, nội dung nghiên cứu, các giới hạn của đề tài
Chương 2: Cơ sở lý thuyết
Quả cà chua có nhiều đặc tính quan trọng, và nhu cầu phân loại cà chua tại Việt Nam ngày càng tăng cao Hệ thống máy phân loại cà chua hiện đại giúp nâng cao hiệu quả trong việc phân loại sản phẩm Bài viết sẽ tìm hiểu các khái niệm trong xử lý ảnh, cũng như các phương pháp phân loại dựa trên màu sắc và kích thước của cà chua Đồng thời, chúng tôi sẽ giới thiệu các phần tử chính trong hệ thống phân loại này.
5 sử dụng trong mô hình, khái quát về Kit Raspberry và ngôn ngữ lập trình Python với thư viện OpenCV
Chương 3: Tính toán và thiết kế
Chương này tập trung vào việc lựa chọn Kit và camera, cũng như tính toán và thiết kế phần cứng Hệ thống sẽ được phân chia thành các khối để phục vụ cho quá trình tính toán và thiết kế hiệu quả.
Chương 4: Thi công và lập trình hệ thống
Trong bài viết này, chúng tôi sẽ giới thiệu các bước cần thiết để hoàn thành phần cứng của hệ thống, kèm theo hình ảnh minh họa cho các chi tiết trong mô hình Ngoài ra, chương này cũng sẽ đề cập đến các giải thuật xử lý ảnh và giải thuật điều khiển cho toàn bộ hệ thống, nhằm nâng cao hiệu suất và khả năng hoạt động của thiết bị.
Chương 5: Kết quả, nhận xét, đánh giá
Chỉ rõ những kết quả đã đạt được so với yêu cầu đề ra, đánh giá tổng quan về hệ thống
Chương 6: Kết luận và hướng phát triển
Nêu kết luận, những ưu khuyết điểm của hệ thống Từ đó ra ra hướng phát triển cho đề tài
CƠ SỞ LÝ THUYẾT
Đặc tính của quả cà chua
Cà chua là một loại quả mọng nước, có hình dạng đa dạng từ tròn, méo, bầu dục đến dài Vỏ của cà chua có thể nhẵn hoặc có khía, và màu sắc của quả thay đổi tùy thuộc vào giống và điều kiện vùng miền.
Quả cà chua được chia làm 4 thời kỳ khác nhau:
Thời kỳ quả còn xanh: ở giai đoạn này quả và hạt phát triển chưa hoàn thiện, chưa có mùi vị và màu sắc đặc trưng của cà chua
Trong thời kỳ quả chín xanh, quả đã phát triển đầy đủ với màu xanh sáng, bao quanh hạt đã được hình thành Lúc này, quả chưa chuyển sang màu hồng hay vàng.
Thời kỳ quả chín vàng là giai đoạn lý tưởng để thu hoạch sớm, khi phần đỉnh quả xuất hiện màu hồng, trong khi cuống quả vẫn giữ màu xanh Đây là thời điểm tốt nhất nếu cần vận chuyển quả đi xa.
Thời kỳ quả chín đỏ là giai đoạn được nông dân yêu thích nhất, khi quả thể hiện màu sắc đặc trưng của giống, chủ yếu là màu đỏ Lúc này, quả đã có thể thu hoạch để ăn tươi, và hạt bên trong cũng đã phát triển đầy đủ, sẵn sàng để thu hoạch làm giống.
Hạt cà chua có kích thước nhỏ, hình dẹp, có nhiều lông và màu sắc từ vàng sáng đến hơi tối Mỗi quả cà chua chứa từ 50 đến 350 hạt, nằm trong buồng có dịch bào kiềm giúp ngăn cản quá trình nảy mầm của hạt.
2.1.2 Dinh dưỡng trong quả cà chua [15]
Theo các nhà phân tích, quả cà chua chứa nhiều chất dinh dưỡng tốt cho sức khỏe, bao gồm 94g nước, 0,6g protein, 4,2g carbohydrate, 0,8g cellulose, 0,4g tro, 12mg canxi, 26mg photpho, 1,4mg sắt, cùng với các vitamin như caroten, B1, B2, PP, và C, cung cấp khoảng 20kcal.
Cà chua là một loại quả giàu dinh dưỡng, với màu đỏ đặc trưng cho thấy hàm lượng vitamin A cao Ngoài vitamin A, cà chua còn chứa nhiều vitamin B, C và B6, giúp cải thiện sức khỏe một cách hiệu quả.
Cà chua chứa nhiều vi khoáng như canxi, sắt và kali, cùng với nhiều chất khoáng khác có lợi cho sức khỏe Nhờ vào các khoáng chất này, cà chua được xem là thực phẩm giàu dinh dưỡng, dễ tiêu hóa và giúp tăng cường sức đề kháng cho cơ thể.
2.1.3 Giá trị dinh dưỡng và dược tính chứa trong quả cà chua [16]
Cà chua là nguồn thực phẩm giàu giá trị dinh dưỡng nhờ vào các thành phần vitamin và khoáng chất thiết yếu như vitamin A, vitamin C, kali, magie, photo, chất xơ và protein Đặc biệt, cà chua còn chứa các hợp chất hữu cơ quan trọng như lycopene, sắt và axit chlorogenic, mang lại nhiều lợi ích sức khỏe cho con người.
Cà chua không chỉ giàu vitamin mà còn chứa nhiều hợp chất hóa thực vật và chất xơ, giúp cơ thể loại bỏ cholesterol, giảm nguy cơ hình thành máu đông và phòng ngừa các bệnh tim mạch cũng như béo phì.
Quả cà chua chứa chất Lycopen, có khả năng bảo vệ cơ thể khỏi quá trình oxy hóa Tiêu thụ nhiều cà chua giúp giảm nguy cơ mắc ung thư vú, ung thư đầu và vùng cổ, đồng thời chống lại các chất thoái hóa thần kinh.
Uống nước sốt cà chua xay nhuyễn có thể hỗ trợ điều trị bệnh tiểu đường, đồng thời giúp giảm nguy cơ mắc bệnh tim và tiểu đường loại 2.
Nhu cầu phân loại cà chua hiện nay ở Việt Nam [17]
Sau khi thu hoạch, nông sản cần trải qua quá trình phân loại để loại bỏ sản phẩm không đạt yêu cầu Đối với cà chua, chúng sẽ được đưa vào hệ thống phân loại qua băng tải, nơi chúng được phân loại dựa trên kích thước, khối lượng và màu sắc Quá trình này giúp chọn lọc những quả cà chua chất lượng tốt nhất, đáp ứng nhu cầu của người tiêu dùng.
Cà chua là loại rau quả có giá trị kinh tế và dinh dưỡng cao, được ưa chuộng và có xu hướng phát triển mạnh Mục tiêu của các chuyên gia trong ngành sản xuất rau là sản xuất cà chua với số lượng lớn, đảm bảo chất lượng và an toàn cho người tiêu dùng Để đạt được điều này, việc áp dụng công nghệ điều khiển tự động trong sản xuất là cần thiết, góp phần vào sự phát triển của kỹ thuật cơ điện tử Mặc dù đã có nhiều mô hình phân loại nông sản, nhưng với những sản phẩm nhỏ và có màu sắc biến đổi, cần một phương pháp phân loại mới dựa trên màu sắc và kích thước để phù hợp hơn với đặc tính của nông sản.
Nhiều hệ thống hiện nay chỉ tập trung vào việc phân loại cà chua mà chưa có cơ chế giám sát và quản lý hiệu quả cho quá trình này Do đó, việc xây dựng một hệ thống giám sát cho quá trình phân loại là cần thiết để đảm bảo chất lượng và hiệu quả.
Tổng quan về hệ thống máy phân loại cà chua [17]
Sau khi thu hoạch, nông sản cần trải qua quy trình phân loại để loại bỏ sản phẩm không đạt yêu cầu Đối với cà chua, chúng sẽ được đưa vào hệ thống phân loại qua băng tải, phân loại theo kích thước, khối lượng và màu sắc Mục tiêu là chọn lọc những quả cà chua chất lượng tốt nhất, đáp ứng nhu cầu của người tiêu dùng.
Xử lý ảnh, các vấn đề cơ bản trong xử lý ảnh [1]
2.4.1 Xử lý ảnh là gì?
Xử lý ảnh là một lĩnh vực khoa học công nghệ đang phát triển nhanh chóng, liên quan đến nhiều lĩnh vực khác nhau và đòi hỏi kiến thức nền tảng vững chắc Để thành công trong lĩnh vực này, cần nắm vững xử lý tín hiệu số, các công cụ toán học như đại số tuyến tính và xác suất thống kê, cũng như kỹ năng lập trình để phân tích và xử lý ảnh hiệu quả.
Quá trình xử lý ảnh là thao tác trên hình ảnh đầu vào để đạt được kết quả mong muốn, có thể là một bức ảnh "tốt hơn" hoặc một kết luận cụ thể.
Hình 2.1: Các bước cơ bản trong một hệ thống xử lý ảnh [1]
Ảnh có thể được định nghĩa là tập hợp các điểm ảnh, mỗi điểm ảnh biểu thị cường độ sáng tại một vị trí cụ thể trong không gian, và có thể coi như một hàm n biến P (c1, c2, , cn) Do đó, trong lĩnh vực xử lý ảnh, ảnh có thể được xem như là ảnh n chiều Sơ đồ tổng quát của một hệ thống xử lý ảnh là cơ sở cho việc hiểu và phát triển các ứng dụng liên quan đến công nghệ hình ảnh.
Hình 2.2: Hệ thống xử lý ảnh [1]
2.4.2 Các vấn đề cơ bản trong xử lý ảnh
2.4.2.1 Một số khái niệm cơ bản
Ảnh là một thực thể liên tục về không gian và độ sáng, nhưng để xử lý, cần chuyển đổi nó thành các điểm ảnh, hay còn gọi là Pixel, mỗi điểm có cặp tọa độ (x, y).
Cường độ sáng của điểm ảnh được xác định bằng giá trị số tại mỗi điểm, với các thang đo mức xám phổ biến như 16, 32, 64, 128 và 256 Ảnh thu nhận thường gặp phải biến dạng do thiết bị quang học và điện tử, vì vậy để khắc phục, người ta thường sử dụng các phép chiếu được xây dựng dựa trên tập hợp các điểm điều khiển.
Có 2 loại nhiễu cơ bản trong quá trình thu nhận ảnh, bao gồm:
- Nhiễu hệ thống là nhiễu có quy luật có thể khử bằng các phép biến đổi
- Nhiễu ngẫu nhiên vết bẩn không rõ nguyên nhân thường được khắc phục bằng các phép lọc
Nhằm khắc phục tính không đồng đều của hệ thống gây ra, ta có 2 cách tiếp cận:
Giảm số mức xám trong ảnh có thể thực hiện bằng cách nhóm các mức xám gần nhau thành một bó Nếu chỉ có hai mức xám, điều này đồng nghĩa với việc chuyển đổi ảnh sang đen trắng Ứng dụng phổ biến của phương pháp này là in ảnh màu ra máy in đen trắng.
- Tăng số mức xám: Thực hiện nội suy ra các mức xám trung gian bằng kỹ thuật nội suy nhằm tăng cường độ mịn của ảnh
Việc trích chọn đặc điểm là bước thiết yếu trong phân tích ảnh, giúp nhận dạng đối tượng dựa trên các đặc điểm cụ thể Các đặc điểm này được xác định tùy theo mục đích của quá trình xử lý ảnh, bao gồm màu sắc, hình dạng và kết cấu.
Phân bố mức xám, xác suất, biên độ, điểm uốn,
Các đặc điểm loại này được xác định thông qua kỹ thuật lọc vùng (zonal filtering) Các bộ vùng, hay còn gọi là feature mask, thường có hình dạng đa dạng như chữ nhật, tam giác, và cung tròn.
Đặc điểm biên và đường biên là yếu tố quan trọng trong việc nhận dạng đối tượng, giúp trích xuất các thuộc tính bất biến Các đặc điểm này có thể được xác định thông qua các toán tử như gradient, la bàn, Laplace và toán tử “chéo không” (zero crossing).
Việc trích xuất hiệu quả các đặc điểm giúp cải thiện độ chính xác trong nhận dạng đối tượng ảnh, đồng thời tăng tốc độ tính toán và giảm dung lượng bộ nhớ lưu trữ.
Nhận dạng tự động, mô tả đối tượng, phân loại và phân nhóm mẫu là những vấn đề quan trọng trong lĩnh vực thị giác máy, với ứng dụng rộng rãi trong nhiều ngành khoa học khác nhau Một câu hỏi then chốt trong nghiên cứu này là: mẫu (pattern) là gì? Watanabe, một trong những nhà tiên phong trong lĩnh vực này, đã đưa ra định nghĩa rõ ràng về khái niệm này.
Mẫu là một thực thể được xác định một cách mơ hồ và có thể được gán tên, ví dụ như ảnh vân tay, hình ảnh vật thể, chữ viết, khuôn mặt hoặc ký hiệu tín hiệu tiếng nói Khi đã biết một mẫu, quá trình nhận dạng hoặc phân loại mẫu đó có thể được thực hiện.
Phân loại có mẫu (supervised classification) là một phương pháp trong phân tích dữ liệu, điển hình là phân tích phân biệt (discriminant analysis), trong đó các mẫu đầu vào được gán nhãn thuộc về một lớp đã được xác định trước.
Phân loại không có mẫu, hay còn gọi là clustering, là phương pháp mà các mẫu được phân nhóm vào các lớp khác nhau dựa trên tiêu chí đồng dạng Các lớp này vẫn chưa được xác định hoặc nhận diện cho đến khi quá trình phân loại diễn ra.
Hệ thống nhận dạng tự động bao gồm ba khâu tương ứng với ba giai đoạn chủ yếu sau đây:
1 Thu nhận dữ liệu và tiền xử lý
3 Nhận dạng, ra quyết định
Bốn cách tiếp cận khác nhau trong lý thuyết nhận dạng là:
1 Đối sánh mẫu dựa trên các đặc trưng được trích chọn
4 Phân loại dựa trên mạng nơ - ron nhân tạo
Trong các ứng dụng, việc chỉ sử dụng một phương pháp để phân loại "tối ưu" là không khả thi Do đó, cần áp dụng đồng thời nhiều phương pháp và cách tiếp cận khác nhau Các phương thức phân loại tổ hợp thường được sử dụng để đạt được hiệu quả cao hơn trong quá trình nhận diện.
14 dạng và nay đã có những kết quả có triển vọng dựa trên thiết kế các hệ thống lai (hybrid system) bao gồm nhiều mô hình kết hợp
Giới thiệu ngôn ngữ lập trình Python và thư viện OpenCV
2.5.1 Ngôn ngữ lập trình python [2]
Python là một ngôn ngữ lập trình thông dịch, hướng đối tượng và bậc cao với ngữ nghĩa động Nó hỗ trợ module và gói, khuyến khích việc tái sử dụng mã và lập trình module hóa Trình thông dịch Python cùng với thư viện chuẩn có sẵn dưới dạng mã nguồn hoặc nhị phân miễn phí cho tất cả các nền tảng chính và có thể được phân phối tự do.
Sau đây là các đặc điểm của Python:
- Ngữ pháp đơn giản, dễ đọc
- Vừa hướng thủ tục (procedural - oriented), vừa hướng đối tượng
- Hỗ trợ module và hỗ trợ gói (package)
- Xử lý lỗi bằng ngoại lệ (Exception)
- Kiểu dữ liệu động ở mức cao
- Có các bộ thư viện chuẩn và các module ngoài, đáp ứng tất cả các nhu cầu lập trình
- Có khả năng tương tác với các module khác viết C/C++ (Hoặc Java cho Jython hoặc Net cho IronPython)
- Có thể nhúng vào ứng dụng như một giao tiếp kịch bản (scripting interface)
OpenCV là thư viện mã nguồn mở hàng đầu cho thị giác máy tính, xử lý ảnh và máy học, với khả năng tăng tốc GPU cho các ứng dụng thời gian thực Được phát hành theo giấy phép BSD, OpenCV hoàn toàn miễn phí cho người dùng.
OpenCV là một thư viện mã nguồn mở hỗ trợ nhiều ngôn ngữ lập trình như C++, C, Python, Java và tương thích với các hệ điều hành Windows, Linux, Mac OS, iOS và Android Thư viện này được tối ưu hóa cho hiệu suất và tập trung vào các ứng dụng thời gian thực, cho phép khai thác khả năng xử lý đa lõi Với hơn 47 nghìn người dùng và hơn 6 triệu lượt tải, OpenCV được ứng dụng rộng rãi trong nhiều lĩnh vực, từ nghệ thuật tương tác đến khai thác mỏ, bản đồ trên web và công nghệ robot.
2.5.2.2 Các ứng dụng của OpenCV
OpenCV đang được sử dụng rộng rãi trong các ứng dụng bao gồm:
- Kiểm tra và giám sát tự động
- Robot và xe hơi tự lái
- Phân tích hình ảnh y tế
- Tìm kiếm và phục hồi hình ảnh, video
- Phim - cấu trúc 3D từ chuyển động
- Nghệ thuật sắp đặt tương tác
- Image/video I/O, xử lý, hiển thị (core, imgproc, highgui)
- Phát hiện các vật thể (objdetect, features2d, nonfree)
- Geometry - based monocular or stereo computer vision (calib3d, stitching, videostab)
- Computational photography (photo, video, superres)
- Machine learning & clustering (ml, flann)
Phương pháp phát hiện biên và nhận dạng màu sắc
2.6.1 Phương pháp phát hiện biên của vật thể [10]
Biên là yếu tố quan trọng trong việc trích chọn đặc điểm để hiểu rõ về ảnh, nhưng vẫn chưa có định nghĩa chính xác về biên Mỗi ứng dụng thường sử dụng các độ đo khác nhau, trong đó có độ đo sự thay đổi đột ngột về cấp xám Ví dụ, trong ảnh đen trắng, một điểm được coi là điểm biên nếu nó là điểm đen có ít nhất một điểm trắng bên cạnh Tập hợp các điểm biên sẽ tạo thành biên hay đường bao của đối tượng Dựa trên cơ sở này, hai phương pháp phát hiện biên cơ bản thường được áp dụng.
Phát hiện biên trực tiếp là phương pháp nổi bật trong việc xác định biên của ảnh thông qua sự biến thiên mức xám Kỹ thuật chủ yếu được sử dụng là lấy đạo hàm, trong đó đạo hàm bậc nhất cho ra các kỹ thuật Gradient, còn đạo hàm bậc hai dẫn đến kỹ thuật Laplace Bên cạnh đó, còn tồn tại một số tiếp cận khác trong việc phát hiện biên.
Phát hiện biên gián tiếp liên quan đến việc phân chia ảnh thành các vùng, với ranh giới giữa các vùng được gọi là biên Kỹ thuật dò biên và phân vùng ảnh là hai bài toán đối ngẫu, vì dò biên giúp thực hiện phân lớp đối tượng Khi phân lớp xong, có nghĩa là ảnh đã được phân vùng, và ngược lại, khi phân vùng thành công, các đối tượng cũng được phân lớp, từ đó cho phép phát hiện biên.
Phương pháp phát hiện biên trực tiếp hiệu quả và ít bị ảnh hưởng bởi nhiễu, nhưng lại kém hiệu quả khi độ sáng biến thiên không đột ngột Ngược lại, phương pháp phát hiện biên gián tiếp mặc dù khó cài đặt nhưng lại hoạt động tốt trong những trường hợp này.
2.6.1.2 Phương pháp phát biện biên Canny [4]
Trong xử lý ảnh, hình ảnh thường bao gồm các thành phần như vùng trơn, góc cạnh và nhiễu Cạnh trong ảnh có vai trò quan trọng, thường biểu thị cho đối tượng trong bức ảnh Để phát hiện cạnh hiệu quả, giải thuật Canny là một trong những giải thuật nổi tiếng và phổ biến nhất.
Giải thuật phát hiện cạnh Canny gồm 4 bước chính sau:
Giảm nhiễu là quá trình làm mờ ảnh bằng cách sử dụng bộ lọc Gaussian với kích thước 5x5, thường mang lại hiệu quả tốt cho thuật toán Canny Tuy nhiên, bạn cũng có thể điều chỉnh kích thước của bộ lọc làm mờ để phù hợp với nhu cầu cụ thể của mình.
Để tính toán gradient và hướng gradient, chúng ta sử dụng bộ lọc Sobel X và Sobel Y kích thước 3x3 để thu được ảnh đạo hàm Gx và Gy Tiếp theo, chúng ta tính ảnh Gradient và góc của Gradient theo các công thức đã định Ảnh đạo hàm Gx và Gy có kích thước ma trận (ví dụ: 640x640), do đó, ảnh đạo hàm Edge Gradient cũng sẽ là ma trận 640x640, với mỗi pixel thể hiện độ lớn của sự biến đổi mức sáng tại vị trí tương ứng trên ảnh gốc Tương tự, ma trận Angle cũng có kích thước 640x640, trong đó mỗi pixel thể hiện góc hoặc hướng của cạnh Ví dụ, nếu góc gradient là 0 độ, cạnh trên ảnh sẽ tạo thành một đường thẳng đứng, tức là vuông góc với trục hoành Khi thực hiện tính toán, giá trị hướng gradient sẽ nằm trong khoảng [-180, 180].
180] độ, ta không giữ nguyên các góc này mà gom các giá trị này về 4 bin đại diện cho
4 hướng: hướng ngang (0 độ), hướng chéo bên phải (45 độ), hướng dọc (90 độ) và hướng chéo trái (135 độ)
Non-maximum Suppression (NMS) là bước loại bỏ các pixel không phải cực đại toàn cục trong ảnh gradient Quá trình này sử dụng một filter 3x3 để kiểm tra độ lớn gradient của pixel trung tâm so với các pixel xung quanh Nếu pixel trung tâm là cực đại cục bộ, nó sẽ được giữ lại; ngược lại, độ lớn gradient của nó sẽ được set về zero Việc so sánh chỉ diễn ra với hai pixel lân cận theo hướng gradient Ví dụ, nếu hướng gradient là 0 độ, so sánh với pixel bên trái và bên phải; nếu là 45 độ, so sánh với pixel ở góc trên bên phải và góc dưới bên trái Kết thúc bước này, ta thu được một mặt nạ nhị phân.
Trong bước lọc ngưỡng, chúng ta sẽ phân tích các pixel dương trên mặt nạ nhị phân từ bước trước Nếu giá trị gradient của pixel vượt quá ngưỡng max_val, pixel đó được xác định là cạnh chắc chắn Ngược lại, các pixel có độ lớn gradient nhỏ hơn ngưỡng min_val sẽ bị loại bỏ Đối với các pixel nằm trong khoảng giữa hai ngưỡng, chúng ta sẽ kiểm tra xem chúng có liền kề với các pixel được xác định là "chắc chắn là cạnh" hay không; nếu có, chúng sẽ được giữ lại, còn nếu không thì sẽ bị loại Sau khi hoàn thành bước này, chúng ta có thể tiến hành thêm bước hậu xử lý.
20 loại bỏ nhiễu (tức những pixel cạnh rời rạc hay cạnh ngắn) nếu muốn Ảnh minh họa về ngưỡng lọc Hình 2.4:
2.6.2 Phương pháp nhận dạng màu sắc
2.6.2.1 Giới thiệu về các không gian màu [5]
Hình 2.5: Không gian màu RGB
RGB là không gian màu phổ biến trong các thiết bị kỹ thuật số như máy tính, máy ảnh và điện thoại, tương tự cách mắt người tổng hợp màu sắc Nguyên lý của RGB dựa trên ba màu cơ bản: đỏ (R), xanh lục (G) và xanh lam (B), từ đó tạo ra mọi màu sắc khác.
Trong mô hình 24 bit, không gian màu mặc định của OpenCV sử dụng định dạng BGR, trong đó mỗi kênh màu R, G, B được biểu diễn bằng 8 bit với giá trị từ 0 đến 255 Bộ ba giá trị này thể hiện cường độ của từng màu cho mỗi điểm ảnh.
Với mô hình biểu diễn 24bit, số lượng màu tối đa sẽ là: 255x255×255581375
Không gian màu CMYK là mô hình màu loại trừ, chủ yếu được sử dụng trong ngành in ấn Mô hình này hoạt động dựa trên nguyên tắc trộn các chất màu của bốn màu cơ bản: cyan, magenta, yellow và key (đen).
• C=Cyan trong tiếng Anh có nghĩa là màu xanh lơ hay cánh chả
• M=Magenta trong tiếng Anh có nghĩa là màu cánh sen hay hồng sẫm
• Y=Yellow trong tiếng Anh có nghĩa là màu vàng
K trong tiếng Anh ám chỉ yếu tố then chốt, chủ yếu liên quan đến màu đen, mặc dù màu này được gọi là "black" Điều này xảy ra do chữ B đã được sử dụng để chỉ màu xanh lam (blue) trong mô hình màu RGB.
Hình 2.6: Không gian màu CMYK
Hỗn hợp lý tưởng của các màu CMY sẽ tạo ra màu đen khi in trên nền trắng, do nguyên lý làm việc của CMYK dựa trên sự hấp thụ ánh sáng Màu sắc mà chúng ta thấy là phần ánh sáng không bị hấp thụ Trong hệ màu CMYK, sự kết hợp giữa hồng sẫm và vàng tạo ra màu đỏ, hồng sẫm với xanh lơ cho màu xanh lam, xanh lơ và vàng tạo ra màu xanh lá cây, và sự phối hợp của xanh lơ, hồng sẫm cùng vàng sẽ cho ra màu đen.
Không gian màu HSV (còn gọi là HSB) là một cách tự nhiên hơn để mô tả màu sắc, dựa trên 3 số liệu:
• S: (Saturation) Độ bão hòa màu
• B (hay V): (Bright hay Value) Độ sáng
Hình 2.7: Không gian màu HSV
- Không gian màu CIE LAB:
Không gian màu CIE LAB là một hệ thống màu sắc đồng đều, lý tưởng cho việc so sánh sự khác biệt giữa các màu Các giá trị Lab mô tả toàn bộ màu sắc mà mắt người bình thường có thể nhìn thấy.
TÍNH TOÁN VÀ THIẾT KẾ
Khối xử lý trung tâm
Trong đề tài này, khối xử lý trung tâm sẽ phải thực hiện các nhiệm vụ:
• Nhận dữ liệu về các thông số màu sắc, kích thước được lưu trong database trên nền tảng Firebase để đưa về vi xử lý
• Xử lý ảnh nhận được từ camera, tiến hành phân tích về màu sắc, kích thước để đưa ra kết quả cuối cùng là loại của quả cà chua
Sau khi nhận được kết quả phân loại, hệ thống sẽ gửi tín hiệu điện đến các động cơ RC Servo, nhằm thực hiện việc gạt cà chua vào các khu vực chứa tương ứng với từng loại.
Hình 3.2: Sơ đồ kết nối Raspberry Pi
Để xử lý ảnh, lấy dữ liệu và điều khiển động cơ với tốc độ cao, chúng ta lựa chọn máy tính nhúng Raspberry Pi3 model B+ Raspberry Pi được xây dựng dựa trên bộ xử lý SoC Broadcom BCM2835, một chip xử lý di động mạnh mẽ, nhỏ gọn thường được sử dụng trong điện thoại di động Chip này tích hợp CPU, GPU, bộ xử lý âm thanh/video và nhiều tính năng khác, tất cả đều có điện năng tiêu thụ thấp.
Để chọn thẻ nhớ cho Raspberry Pi, bạn cần có hệ điều hành được cài sẵn trên thẻ nhớ Hệ điều hành Raspbian yêu cầu dung lượng tối thiểu 4GB, chưa bao gồm dữ liệu, chương trình và phần mềm liên quan.
Để đảm bảo hiệu suất tối ưu, nên chọn thẻ nhớ có dung lượng tối thiểu 8GB Nhóm đã quyết định sử dụng thẻ MicroSD 16GB với tốc độ đọc lên tới 48MB/s, vì tốc độ này ảnh hưởng trực tiếp đến khả năng xử lý dữ liệu của các chương trình chính, và 48MB/s được xem là tốc độ hợp lý.
3.1.2 Cài hệ điều hành cho Raspberry Pi:
- Giới thiệu các hệ điều hành cho Raspberry Pi [8]:
Raspberry Pi hỗ trợ nhiều hệ điều hành, với Raspbian là hệ điều hành chính thức từ Raspberry Pi Foundation Bên cạnh đó, còn có 7 hệ điều hành khác được xác nhận hỗ trợ và nhiều hệ điều hành được tối ưu bởi các nhà phát triển độc lập.
Raspbian là hệ điều hành phổ biến nhất do Raspberry Pi Foundation cung cấp và được khuyến cáo sử dụng, đặc biệt cho những người mới bắt đầu làm quen với Raspberry Pi.
Raspbian được hướng đến người dùng có mục đích:
• Sử dụng Raspberry Pi như máy tính văn phòng để lướt web, soạn văn bản, check mail và thi thoảng nghe nhạc, xem phim
• Nghiên cứu phát triển các thiết bị điều khiển tự động
• Sử dụng như một máy chủ cung cấp các dịch vụ như web, file server, printer server, …
Raspbian mang lại hiệu suất ổn định và tốc độ nhanh, đặc biệt trên Raspberry Pi 3, với thời gian khởi động chỉ 7 giây khi sử dụng thẻ Toshiba Exceria 48MB/s Tuy nhiên, giao diện của nó vẫn còn đơn giản và cổ điển.
Hình 3.3: Hệ điều hành Raspbian
Ubuntu Mate, giống như Raspbian, cũng được thiết kế cho người dùng Raspberry Pi sử dụng như một máy tính văn phòng Tuy nhiên, giao diện của Ubuntu Mate đẹp hơn rất nhiều so với Raspbian Hệ điều hành này được phát triển từ Ubuntu, vốn được coi là đối thủ trực tiếp của Windows.
Martin Wimpress và Rohith Madhavan là những người sáng lập Ubuntu Mate, một hệ điều hành được phát triển từ nền tảng Ubuntu gốc Theo tác giả, Ubuntu Mate đã được tối ưu hóa hiệu quả cho Raspberry Pi 2 và 3, nhưng để đạt được tốc độ tối ưu nhất, người dùng nên sử dụng thẻ MicroSD có lớp từ class 6 trở lên.
Hình 3.4: Hệ điều hành Unbuntu Mate
Canonical đã không ngừng mở rộng hệ điều hành Ubuntu và mới đây đã giới thiệu một phiên bản rút gọn của Ubuntu Phiên bản này được thiết kế đặc biệt để chạy các ứng dụng đám mây và đóng vai trò quan trọng trong Internet of Things (IoT), hỗ trợ cho các thiết bị như điện thoại và nhiều sản phẩm khác.
TV, đèn, quạt, đồng hồ, nồi cơm điện, …) trong đời sống kết nối với nhau một cách hoàn hảo
Snappy Ubuntu Core là một phiên bản tối giản của hệ điều hành Ubuntu, được phát triển trong dự án Ubuntu Core Phiên bản này hoạt động trong môi trường hạn chế, cho phép chạy nhiều ứng dụng mà không cần đến một hệ điều hành Ubuntu đầy đủ Sự đơn giản và tính hiệu quả của Snappy Ubuntu Core làm cho nó trở thành một thành phần quan trọng trong hệ sinh thái Ubuntu.
Windows 10 IoT Core, giống như Snappy Core Ubuntu, chỉ bao gồm nhân của Windows mà không có giao diện đồ họa hay phần mềm thông dụng như Office Hệ điều hành này được thiết kế đặc biệt để phát triển các ứng dụng IoT, cho phép các nhà sản xuất dễ dàng cài đặt và phát triển ứng dụng của riêng họ bằng nhiều ngôn ngữ mã nguồn mở.
OSMC và OpenELEC là hai hệ điều hành phổ biến cho giải trí trên Raspberry Pi, với OSMC phát triển từ RaspBMC và OpenELEC từ Xbian Cả hai đều hỗ trợ KODI, nhưng OSMC có nền tảng Debian đầy đủ, cho phép thực hiện nhiều tính năng hơn.
OpenELEC là một hệ điều hành lý tưởng để biến Raspberry Pi thành một Media Center tại nhà hoặc thiết bị phát Video và Audio cho xe ô tô.
OpenELEC sở hữu giao diện đẹp mắt của Koidi, trong khi OSMC lại có thiết kế mới với menu đơn giản trên nền trắng Mặc dù OSMC có thể không thu hút ngay từ cái nhìn đầu tiên, nhưng sự đơn giản của nó lại mang lại nhiều lợi ích khi sử dụng lâu dài Hơn nữa, OSMC cung cấp nhiều tùy chọn hơn so với OpenELEC Tuy nhiên, nếu bạn chỉ cần một hệ điều hành để phát Video/Audio, cả hai đều có thể đáp ứng nhu cầu của bạn.
Dựa vào ưu nhược điểm của các hệ điều hành trên, em quyết định cài hệ điều hành Raspbian cho Raspberry Pi 3B+ để có thể tối ưu tốc độ.
Khối camera
Khối camera có chức năng chính là chụp ảnh với chất lượng rõ nét và màu sắc trung thực, giúp vi xử lý phân tích và nhận diện loại quả cà chua.
Để đáp ứng yêu cầu về tốc độ xử lý ảnh nhanh, kích thước nhỏ gọn và giá thành hợp lý cho mô hình, tôi đã lựa chọn sử dụng camera Pi V1.
Camera Raspberry Pi tích hợp cảm biến 5 Megapixel với độ nhạy sáng cao, cho phép chụp ảnh chất lượng tốt trong nhiều điều kiện ánh sáng, cả trong nhà lẫn ngoài trời Đặc biệt, camera này còn hỗ trợ chụp hình độ nét cao trong quá trình quay phim.
Camera được gắn chắc chắn vào socket CSI, giúp tiết kiệm cổng USB và giảm thiểu tình trạng nghẽn băng thông cho chip xử lý.
Cáp USB trên mạch Raspberry Pi được thiết kế với chiều dài tối ưu, đảm bảo vừa đủ để truyền tải hình ảnh từ module camera về Raspberry Pi mà vẫn duy trì tốc độ truyền ổn định.
Để đảm bảo ánh sáng ổn định và tránh tác động từ luồng sáng bên ngoài, cần thiết kế một buồng chụp với đèn LED cố định Việc này tạo ra môi trường đủ sáng với ánh sáng trắng ổn định, giúp hình ảnh rõ nét và ổn định hơn, từ đó hỗ trợ quá trình xử lý ảnh hiệu quả.
Hình 3.5: Module camera Pi kết nối với Raspberry Pi
Khối cảm biến
Để thực hiện đề tài, chúng ta cần 4 cảm biến vật cản hồng ngoại:
• 1 cảm biến đặt ở buồng chụp ảnh để phát hiện cà chua ở vị trí cần chụp ảnh
• 3 cảm biến đặt ở các vị trí cần phân loại để phát hiện cà chua đi tới vị trí hay chưa
Chúng tôi sẽ sử dụng bốn cảm biến vật cản hồng ngoại E18 - D80NK, nổi bật với tính năng dễ sử dụng và khả năng phát hiện vật thể trong khoảng cách từ 3 đến 80 cm, rất phù hợp cho mô hình của chúng tôi.
Khối động cơ
Để đưa cà chua vào các thùng chứa, cần sử dụng 3 con RC Servo MG996R Có hai phương pháp để thực hiện việc này cho cà chua vào thùng chứa.
• Đẩy cần gạt nghiêng và quả cà chua sẽ đi xuống theo lực cuốn của băng tải
• Xoay cần gạt ra và chờ quả cà chua đến rồi xoay cần gạt về vị trí cũ
Do quả cà chua có đặc tính trơn và dễ lăn, việc thực hiện cách đầu tiên để khiến chúng rơi xuống rất khó khăn và tốn thời gian Vì vậy, tôi đã quyết định chọn cách thứ hai để đảm bảo cà chua rơi đúng yêu cầu Để tạo ra cần gạt, chúng ta có thể sử dụng công nghệ in 3D hoặc tạo hình từ tấm nhựa mica trong mô hình.
Khối nguồn
Việc sử dụng một bộ nguồn chung cho hệ thống hoạt động với các mức điện áp và dòng điện khác nhau có thể dẫn đến tình trạng không ổn định và tiềm ẩn nguy cơ mất an toàn cho toàn bộ hệ thống.
Em sử dụng bộ nguồn riêng và bán sẵn trên thị trường để đảm bảo hệ thống hoạt động với điện áp và dòng điện ổn định, giúp tiết kiệm chi phí thi công mạch nguồn và đảm bảo an toàn cho người sử dụng.
- Để cung cấp dòng điện cho động cơ băng tải và led siêu sáng 12V, ta dùng một nguồn tổ ong 12V - 5A
Nguồn điện cung cấp cho Raspberry Pi là yếu tố quan trọng, cần đảm bảo đầy đủ cho chuột, bàn phím, camera, các cổng GPIO và chip xử lý Sử dụng nguồn điện không đảm bảo công suất và chất lượng có thể dẫn đến hỏng mạch.
Bàn phím và chuột 1000mA
Bảng 3.1: Dòng điện tiêu thụ của Kit và ngoại vi
Dựa vào bảng, ta chọn nguồn 5V - 3A cho Kit hoạt động đúng điện áp và đủ dòng điện
- Một nguồn điện 5V - 3A để cung cấp dòng điện cho 3 RC Servo MG996R và 4 cảm biến vật cản hồng ngoại E18 - D80NK.
Webserver và Firebase
Để điều chỉnh thông số cho từng loại cà chua và giám sát hệ thống từ xa, tôi đã phát triển một trang web cho phép tùy chỉnh và lưu trữ các thông số trên Firebase Vi xử lý sẽ sử dụng những thông số này để nạp vào chương trình điều khiển và cập nhật số lượng cà chua của từng loại lên Firebase.
HTML, viết tắt của HyperText Markup Language, là ngôn ngữ đánh dấu được thiết kế để tạo ra các trang web trên World Wide Web Kết hợp với CSS và JavaScript, HTML hình thành bộ ba nền tảng kỹ thuật cho Internet Được định nghĩa như một ứng dụng đơn giản của SGML, HTML phục vụ cho các tổ chức có yêu cầu xuất bản phức tạp Hiện nay, HTML đã trở thành tiêu chuẩn Internet do tổ chức World Wide Web Consortium (W3C) duy trì, với phiên bản chính thức mới nhất là HTML 4.01, phát hành vào năm 1999.
Các nhà phát triển đã thay thế HTML bằng XHTML, và hiện nay, HTML đang được cải tiến với phiên bản HTML5, hứa hẹn mang đến một diện mạo mới cho web.
- CSS là ngôn ngữ tạo phong cách cho trang web – Cascading Style Sheet language
CSS được sử dụng để tạo phong cách và định kiểu cho các yếu tố trong ngôn ngữ đánh dấu như HTML, giúp điều khiển định dạng của nhiều trang web cùng lúc, tiết kiệm công sức cho người viết web Nó phân biệt cách hiển thị của trang web so với nội dung chính bằng cách điều chỉnh bố cục, màu sắc và font chữ.
CSS, được phát triển bởi W3C vào năm 1996, ra đời để khắc phục hạn chế của HTML, vốn chỉ được thiết kế để đánh dấu nội dung mà không hỗ trợ định dạng trang web.
Tag được giới thiệu trong HTML 3.2 đã gây khó khăn cho lập trình viên do sự đa dạng về font chữ, màu nền và phong cách Việc viết lại mã cho trang web trở nên tốn thời gian và công sức Để khắc phục vấn đề này, W3C đã phát triển CSS.
HTML và CSS có mối quan hệ chặt chẽ, trong đó HTML là ngôn ngữ đánh dấu cơ bản cho website, còn CSS chịu trách nhiệm định hình phong cách và giao diện của nó Sự kết hợp giữa hai ngôn ngữ này là điều không thể thiếu trong việc xây dựng một trang web hoàn chỉnh.
CSS về lý thuyết không có cũng được, nhưng khi đó website sẽ chỉ là một trang chứa văn bản mà không có gì khác
- Firebase Realtime database là một cloud hosted database hỗ trợ đa nền tảng:
Tất cả dữ liệu trên Android, iOS và Web được lưu trữ dưới định dạng JSON, đảm bảo phản hồi ngay lập tức với mọi thay đổi dữ liệu, cho phép hiển thị đồng bộ trên các nền tảng và thiết bị khác nhau.
Khối hiển thị
Python cung cấp Tkinter, một API GUI tiêu chuẩn hướng đối tượng, cho phép phát triển giao diện người dùng di động với giao diện gốc Bên cạnh đó, wxPython, dựa trên thư viện C++, cũng là một lựa chọn thay thế mạnh mẽ để xây dựng GUI di động bằng Python.
Em sẽ thiết kế giao diện hiển thị hình ảnh trước và sau khi xử lý, đồng thời cập nhật số lượng cà chua Để hệ thống gọn gàng, em sử dụng màn hình LCD HDMI 5,5 inch.