Nghiên cứu Khoa học
Ứng dụng xử lý ảnh trong phát hiện và phân loại sản phẩm theo đặc trưng hình dạng và màu sắc
Trong sản xuất công nghiệp cũng như nông nghiệp, việc kiểm tra và phân loại sản phẩm là rất cần thiết. Công việc này giúp cho sản phẩm khi tung ra thị trường có chất lượng đồng đều, loại bỏ các sản phẩm không phù hợp. Có rất nhiều loại sản phẩm cần được phân loại trước khi cho ra thị trường tiêu thụ và trái cây là một trong những sản phẩm đó. Việc phân loại trái cây theo độ chín cũng như theo kích thước là rất quan trọng, nhất là trong khâu bảo quản cũng như định giá thành khi đưa ra thị trường. Hiện nay việc phân loại này chủ yếu là do con người đảm nhiệm nên khó tránh khỏi các sai sót chủ quan như do mệt mỏi, mất tập trung hay do phân loại mang tính chất tương đối làm ảnh hưởng đến chất lượng cũng như năng suất công việc.
Xuất phát từ những lý do trên, đề tài đã xây dựng chương trình ứng dụng xử lý ảnh để phân loại trái cây theo đặc điểm hình học và màu sắc. Từ kết quả đó có thể mở rộng hơn khi kết hợp với phần cứng để tạo thành hệ thống phân loại sản phẩm thay thế sức lao động của con người.
Đối tượng của bài toán là các loại trái cây được sản xuất công nghiệp. Trong báo cáo này chỉ xét đến một số loại trái cây cơ bản như: cam, chuối, chanh, cà chua.
Ngoài các loại trái cây trên thì còn có rất nhiều các loại trái cây khác với các đặc thù và đặc điểm khác nhau như về hình dạng, kích thước và màu sắc… Vì tính chất phức tạp của các loại trái cây mà báo cáo sẽ tập trung vào nhận biết 4 loại trái cây trên.
Hình 1. Sơ đồ thực hiện chương trình nhận dạng
- Bước 1: Đọc ảnh đầu vào.
- Bước 2: Tiền xử lý: lọc nhiễu, chuyển ảnh từ hệ màu RGB sang HSV.
- Bước 3: Phát hiện vùng có đối tượng theo màu sắc.
Vì đối tượng chương trình cần phát hiện và phân loại là cam, chanh, chuối, cà chua. Các đối tượng này thường khác nhau về kích thước, hình dạng. Màu sắc nhìn chung có 2 màu cơ bản xanh khi còn sống hoặc vàng (đỏ) khi đã chín. Do đó bước này chúng ta tạo các mặt nạ H,S,V có kích thước bằng ảnh gốc. Giá trị H, S, V nằm trong khoảng giá trị của 3 màu xanh, đỏ, vàng. So sánh mặt nạ này với ảnh gốc ta sẽ loại bỏ được các vùng không chứa các màu trên.
- Bước 4: Tìm biên và loại bỏ các biên giả.
Trong xử lý ảnh, có một thuật ngữ gọi là Contour (đường viền), có thể hiểu là đường viền bao quanh khép kín. (Trong OpenCV hỗ trợ hàm findcontour để tìm các biên này). Với mỗi contour tìm được, chương trình sẽ tính được diện tích của đối tượng. Nếu đối tượng nào có diện tích nhỏ hơn ngưỡng ta sẽ tiến hành loại bỏ bởi đây không phải là biên của đối tượng chương trình cần phát hiện và phân loại.
- Bước 5: Sau khi có được các biên của đối tượng, ta xác định các hình chữ nhật (hoặc vuông) bao đóng ngoại tiếp các biên này
- Bước 6: Dựa trên đặc trưng hình học của các đường bao, kết hợp với màu sắc của đối tượng để đưa ra kết quả.
4. Kết quả thực hiện:
Chương trình thực hiện bằng phần mềm OpenCV kết hợp Visual studio 2013
- Ảnh đầu vào:
Ở đâycó 3 màu chính đó là:
Màu vàng: gồm có chuối vàng và cam vàng.
Màu đỏ: gồm có cà chua.
Màu xanh: gồm có chuối xanh, cam xanh và chanh xanh.
Ta có thể phân ngưỡng để tách các loại quả cùng màu ra riêng biệt để nhận dạng.
Các loại quả cùng màu đã được tách ra như cà chua đỏ chỉ có một quả; màu xanh thì có cam xanh, chanh xanh, chuối xanh và màu vàng thì có cam vàng, chuối vàng.Mặc dù có xuất hiện những nhiễu do có sự tương đồng về màu sắc, tuy nhiên ta có thể loại bỏ chúng đi vì những đối tượng nhiễu này là rất nhỏ so với đối tượng cần nhận diện
Hình 6: Xuất các đường bao cho các vật thể
Để nhận diện những loại trái cây cùng màu này thì ở đây ta dùng độ chênh lệch ở hai cạnh liền nhau của hình chữ nhật, hình vuông bao quanh và diện tích của chúng để phân biệt.
Hình 7: Cạnh x và y của các đường bao
Có thể thấy đối với chuối thì giá trị chênh lệch giữa x và y là lớn hơn so với cam và chanh. Đồng thời diện tích của cam sẽ luôn lớn hơn của chanh và từ đó tasẽ đưa ra được kết quả mong muốn.
Kết quả chạy thử thuật toán trên C++
Hình 8: Kết quả phân loại theo chiều ngang và chiều đứng