VISÃO COMPUTACIONAL APLICADA NA AGROINDÚSTRIA

COMPUTATIONAL VISION APPLIED IN AGROINDUSTRY

REGISTRO DOI:10.5281/zenodo.10385278


Jiorgi Noguti Júnior1
Saulo Savio Leite Santos 2
Fabiana Florian3


Resumo:

A visão computacional é a tecnologia que permite que o computador obtenha dados a partir de entradas visuais. No agronegócio e na agroindústria a visão computacional é utilizada para aumentar a produtividade e reduzir os desperdícios. Este trabalho propõe um sistema de identificação de cores e objeto baseado no processo de classificação de tomates conforme sua maturidade. Para este trabalho foram utilizadas as linguagens de programação Python, auxiliada das bibliotecas OpenCV no processamento de imagem. Os resultados obtidos foram satisfatórios, sendo possível identificar o potencial do uso da aplicação da visão computacional na agroindústria, nas mais diversas atividades que necessite de seleção por características visuais.

Palavras-chave: OpenCV. Visão Computacional. Arduino. Python. PyQt

COMPUTATIONAL VISION APPLIED IN AGROINDUSTRY

Abstract: Computer vision is the technology that allows the computer to obtain data from visual inputs. In agribusiness and agribusiness, computer vision is used to increase productivity and reduce waste. This work proposes a color and object identification system based on the process of classifying tomatoes according to their maturity. For this work, Python programming languages were used, assisted by OpenCV libraries in image processing. The results obtained were satisfactory, making it possible to identify the potential for using computer vision in the agricultural industry, in the most diverse activities that require selection by visual characteristics.

Key-words: OpenCV. Visão Computacional. Arduino. Python. PyQt

1 INTRODUÇÃO

A agroindústria desempenha um papel fundamental no fornecimento de alimentos para a população mundial. A crescente necessidade do aumento da produção de alimentos é um desafio que preocupa constantemente nesse setor (BOLFE, 2020).

A cultura do tomate é de grande importância na alimentação nacional (BOTEON ,2020). Após a colheita, o tomate passa por várias etapas: seleção, lavagem, classificação, embalagem, armazenagem e distribuição (EMBRAPA, 2018).

A classificação dos tomates é importante para garantir que apenas os frutos maduros e de qualidade sejam escolhidos e enviado para o consumidor final. A classificação manual é um processo demorado, passível de erros humanos e inconsistência. O tomate tem os critérios de classificação das características os seguintes aspectos visuais: tamanho e cor da maturidade do fruto (SANTOS, 2020).

Novas tecnologias estão sendo implementas no agronegócio e agroindústria, visando resolver problemas, reduzir perdas, reduzir custo de produção e aumentar a produção sem a necessidade de aumento de área ou aumento do consumo de recursos naturais (SANTOS, 2020). A visão computacional é uma área da ciência da computação que envolve o processamento e análise de imagens para extrair informações e tomar decisões. É uma das tecnologias que está sendo amplamente utilizada no agronegócio e na agroindústria principalmente para: monitoramento de culturas, detecção de pragas e doenças, classificação de produtos, monitoramento e contagem de animais (SANTOS, 2020).

O desenvolvimento de sistemas de visão computacional para realizar a automatização da classificação de tomates conforme a maturidade, permite análise rápida e precisa de muitos tomates, reduzindo significativamente o tempo necessário para a classificação. Outras vantagens na automação é redução de custos com mão de obra e eliminar a variabilidade humana garantindo uma classificação com maior eficiência e confiável.

Este trabalho tem o objetivo desenvolvimento do sistema proposto será com base do conhecimento adquirido na etapa de levantamento bibliográfico, o sistema de visão computacional será desenvolvido utilizada a linguagem de programação Arduino, Python e a biblioteca OpenCV. Foram implementadas as etapas de: captação de imagem, pré-processamento das imagens, segmentação dos tomates e extração de características relevantes para a classificação por maturidade e comunicação com Arduino.

Aplicar as metodologias de detecção de cor e realizar uma análise comparativa dos resultados obtidos em relação à cor real de cada amostra. Por causa da limitação de carga que o braço robô pode movimentar durante a avalição foi utilizado 8 amostras de cores que simula os estágios de maturidade do tomate. Analisar e interpretar os resultados obtidos, identificando as limitações do sistema proposto e propondo possíveis melhorias para trabalhos futuros.

Este trabalho espera-se contribuir para o avanço da aplicação da visão computacional na agroindústria, proporcionando uma solução automatizada e eficiente para o processo de seleção de tomates conforme sua maturidade. Além disso, busca-se aprimorar a qualidade dos produtos agrícolas, reduzir custos e desperdícios, e promover a adoção de práticas mais sustentáveis na cadeia produtiva.

2 TECNOLOGIAS USADAS NA VISÃO COMPUTACIONAL

A visão computacional aplicada com a robótica é usada para capacitar as máquinas para perceberem e interpretarem as informações visuais do ambiente ao seu redor. Para o desenvolvimento desses sistemas é necessário a integração de várias tecnologias que envolvem a identificação e localização de objetos em imagens ou vídeos.

A visão computacional é usada para capacitar as máquinas para perceberem e interpretarem as informações visuais do ambiente.

Para o desenvolvimento desses sistemas foi necessário a integração de várias tecnologias de hardware braço robô e software o sistema para a detecção de objetos através imagem vídeo.

2.1 Python

O Python será uma das linguagens utilizada no desenvolvimento do sistema. A linguagem Python é amplamente utilizada na visão computacional devido a a sua simples.  razão de sua escolha devido a sua versatilidade e por ser uma linguagem de fácil aprendizado. A linguagem Python foi criada em 1989 por Guido Van Rossum. A linguagem foi escolhida por sua versatilidade, por ser de fácil aprendizado e linguagem open source. Segundo pesquisa realizada pelo GITHUB realizada no último trimestre de 2021 a linguagem Python está entre as 10 linguagens, mas utilizada pelo mercado de tecnologia da informação (PYTHON, 2019).

2.2. OpenCV

OpenCV (Open Source Computer Vision, opencv.org) é uma biblioteca de código-fonte aberto que pode ser utilizada em multiplataforma. A biblioteca tem vários módulos com foco na visão computacional. Os algoritmos e as operações de processamento de imagem são altamente otimizados para que possar ter o desempenho da alta velocidade e eficiente. Neste projeto será amplamente utilizado os módulos de detecção de objetos, processamento de imagem e análise de vídeo em tempo real (OPENCV, 2019).

2.3 NumPy

O NumPy é uma biblioteca de código-fonte aberto que oferecem várias funcionalidades para manipulação de matriz e vetores, permitindo o processamento de sinais em tempo real de forma eficiente. A sua utilização é necessária sempre que utiliza a biblioteca OpenCV no sistema operacional Windows (NUMPY, 2009).

2.4 Arduino

O Arduino é uma plataforma eletrônica de prototipagem de código aberto, de baixo custo em comparação com outras plataformas eletrônicas. Devido à fácil utilização, o desenvolvimento de projetos se tornar acessível para qualquer pessoa com conhecimento de eletrônica. Outra característica desta plataforma é sua versatilidade, pois é compatível com vários componentes eletrônicos padrão (Figura 1) (ARDUNIO, 2018).

Figura 1 – Placa Arduino Uno

Fonte: (ARDUNIO, 2018)

2.5 Servo Motor

O servo motor é amplamente utilizado na automação e robótica, devido sua alta confiabilidade e movimentos precisos. Neste projeto foi utilizado o Mini RC Micro SG90 9g. O SG90 (COMPONENTS101, 2017) pode realizar movimento de até 180 graus depende do sinal que recebe da placa controladora Arduino (Figura 2).

Figura 2 – Mini RC Micro SG90 9g

Fonte: (COMPONENTS101, 2017)

2.6 Câmera

As webcams são dispositivos que não exigindo configurações complexas para instalação. São dispositivos compactos e portáteis que facilita o uso em qualquer ambiente. A qualidade da imagem pode variar de um dispositivo para outro e será analisado se ocorre impacto no resultado deste projeto. Neste projeto serão utilizadas individualmente duas webcams para capturar a imagem de vídeo em tempo real.

Figura 3 – Webcams utilizadas no projeto

Fonte: O Autor, 2023

2.7 IDE

Uma Integrad Development Environment (IDE) ou Ambiente de Desenvolvimento Integrado, oferecem vários recursos e ferramentas para facilitar o processo de desenvolvimento de códigos. Neste projeto será utilizada na programação duas IDE. Para a programação de captura e processamento da imagem será usada o Python e a IDE será Pycharm (). Na parte de movimentação do braço robô será utilizado a IDE da própria comunidade Arduino, sua linguagem base é feita em c/c++ (ARDUNIO, 2018).

2.8 Imagem digital

A imagem digital geralmente é a representação em 2D de uma cena 3D. Pode ser capturada via sensor digital (câmera, scaner ou smartphones) e são amplamente utilizadas na visão computacional. No OpenCV a imagem digital são uma estrutura de matriz (coluna, linha) expressas em pixel. As imagens digitais podem exibir algum grau de ruído que pode ser atenuado utilizando o processamento da imagem para obter as características de interesse (GARRIDO; JOSHI, 2018).

2.9 Pixel

O pixel representa um ponto da estrutura de matriz (coluna, linha), é o elemento básico que compõem uma imagem digital. A qualidade de uma imagem tem correlação direta com a quantidade de pixel de uma imagem. Um pixel carreta a informação sobre a cor e intensidade daquele ponto específico na imagem. Na visão computacional o processamento da imagem é realizado manipulando os valores e características das informações extraídas do pixel (DAWSON-HOWE, 2014), (LAGANIERE, 2017). A Figura 4 ilustra conjunto de Pixel de uma imagem.

Figura 4 – Pixel e RGB que compõe um a imagem

Fonte: (LUNGOY, 2016)

2.10 Representação de Cores RGB

O modelo de representação de cores RGB é baseado na combinação de três cores primárias: vermelho (R), verde (G) e azul (B) exibido Figura 5. Os dispositivos eletrônicos como câmeras digitais utilizam amplamente o modelo RGB para armazenagem da imagem. Cada pixel colorido ocupa 3 bytes, sendo que cada cor poder ser exibida em um intervalo de 0 a 255. Combinando diferentes intensidades de vermelho, verde e azul, podemos criar uma ampla gama de cores de mais de 16 milhões de cores (ROSEBROCK,2016).

Figura 5 – Modelo RGB

Fonte: (ESCANDAR, 2016)

2.11 Representação de Cores HSV

O modelo HSV é muito utilizado no processamento de imagens, principalmente na detecção de objetos, segmentação de imagens e ajuste de cor. É bem semelhante à como os humanos percebem as cores (ROSEBROCK,2016). O HSV é um sistema de representação de cores em matiz (Hue), saturação (Saturation) e valor (Value). O matiz exibido na Figura 6 refere-se à tonalidade da cor, representado por um ângulo que varia de 0 a 360 graus, onde 0 e 360 correspondem ao vermelho puro. A saturação representa a pureza ou intensidade da cor e varia de 0 a 1, onde 0 significa uma cor sem saturação (tons de cinza) e 1 representa uma cor totalmente saturada. O valor é uma medida da luminosidade ou brilho da cor, variando de 0 a 1, onde 0 representa o preto e 1 o branco (LAGANIERE, 2017).

Figura 6 – Cores no espaço HSV

Fonte: (BARELLI, 2018)

3 DESENVOLVIMENTO

Este trabalho propõe o desenvolvimento do sistema para automatizar o processo de seleção e classificação dos tomates conforme o seu nível de maturação. Esse sistema utiliza tecnologias de processamento de imagens para a detecção de objetos e cores para identificar os tomates maduros dos verdes ou em estágios intermediários de maturação. O sistema segue as seguintes etapas: captação da imagem, pré-processamento, envio de informação de posição para movimentação do braço robótico. A Figura 7 apresenta o fluxograma do sistema, demonstrando a interação entre as etapas descritas.

Figura 7 – Visão Geral do Fluxo do Trabalho

Fonte: O Autor, 2023

3.1 Interface com usuário

A interface do sistema proposto é desenvolvida utilizando PyQt, uma biblioteca em Python. A interface gráfica representa o front end do sistema, sendo a camada visual com a qual o usuário interage diretamente. A interação em PyQt utiliza de sinais (pyqtSignal) para emitir evento de capturados ou processados por outras partes do código, os slots (pyqtSlot) são métodos acionados quando um sinal é emitido (FITZPATRICK,2023). Os sinais e slots são usados para acionar a captura da imagem, iniciar o processo de pré-processamento e enviar comandos para a movimentação do braço robótico (Figura 8).

Figura 8 – Interface gráfica do sistema

Fonte: O Autor, 2023

3.2 Captação da imagem

O processo inicia com a captura da imagem dos tomates via webcam que está conectada na porta USB do computador. As imagens capturadas serão utilizadas como entrada para o sistema de visão computacional. Nesta etapa é muito importante obter imagens de alta qualidade com iluminação adequada e um fundo contrastante para facilitar a detecção. A Figura 9 demonstra a qualidade de imagem captada das duas webcams que estão sendo utilizadas neste sistema, a imagem da esquerda foi captada pela webcam com melhor qualidade.

Figura 9 – Imagem captada pela webcam

Fonte: O Autor, 2023

3.3 Processamento da Imagem

O pré-processamento de imagem é uma etapa crítica em sistemas de visão computacional. Para melhorar a eficiência dos sistemas, o pré-processamento de imagem desempenha um papel fundamental na preparação das imagens capturadas para um processamento posterior.

No sistema proposto permite o ajuste dinâmico de vários parâmetros, como brilho, saturação e desfoque, durante a captura de vídeo. Isso é feito por meio de métodos como adjust_brightness, adjust_Saturation e adjust_Desfoque, que recebem valores de controles de interface gráfica e aplicam esses ajustes à imagem capturada em tempo real (Figura 10).

Figura 10 – Código do pré-processamento de imagem

Fonte: O Autor, 2023

A detecção de objetos e identificação de suas cores são tarefas recorrentes em sistemas de visão computacional. Após o pré-processamento da imagem são aplicados filtros para a conversão do modelo e cores RGB para o espaço de cor HSV (LAGANIERE, 2017). Ao converter a imagem para o modelo HSV é necessário definir intervalos de matiz, saturação e valor para cada cor que deseja detectar. A Tabela 1 foi elaborada com os limites inferior e superior utilizado como critério os estágios de maturação do tomate (Canal do Horticultor; Revista Campo & Negócios, 2021).

Tabela1 – Limites inferior e superior que representa cor

CORInferiorSuperior
HSVHSV
Vermelho0505010255255
Vermelho3415050360255255
Laranja11505035255255
Amarelo36505060255255
Verde615050120255255

Fonte: O Autor, 2023

Para detectar a cor é aplicada uma máscara que corresponde ao intervalo da cor que se deseja encontrar. A máscara recebe a imagem convertida em HSV e os limites superior e inferior que representa a cor (Figura 11). No caso da cor vermelha foi necessário definir duas máscaras, pois os limites de matiz variam de 0 a 10 e 341 a 360 (Tabela 1).

Figura 11 – Código do detectar cor com uso de máscara

Fonte: O Autor, 2023

Foi desenvolvida uma função que tem como responsabilidade desenha os contornos encontrados na imagem original. Ela recebe a imagem original, os contornos encontrados, a cor do contorno e um texto para identificar a cor do objeto e posição do centro do objeto (Figura 12).

Figura 12 – Código do Contorno no objeto

Fonte: O Autor, 2023

3.4 Movimentação do braço robô

O braço robótico é composto por quatro servomotores, cada um responsável por controlar um grau de liberdade do manipulador. Durante a montagem do braço robô é realizado a calibração dos 4 servos motores (COLARES,2020), registando os limites de movimento de rotação de cada servo motor (Tabela 2). A comunicação entre o braço robótico e a placa Arduino é estabelecida por meio de interfaces adequadas, como PWM (Pulse Width Modulation) para o controle preciso dos servomotores (Figura 13).

Figura 13 – Montagem servo motore na placa arduino

Fonte: O Autor, 2023

Tabela2 – Posição de regulagens dos servos motores

Servo MotorPosição InicialÂngulo Max.Ângulo Min.
Garra15º
Rotação90º180º
Avanço100º180º100º
Altura120º180º80º

Fonte: O Autor, 2023

A movimentação do braço robótico é controlada por meio de comandos enviados pelo sistema interativo. Após a detecção e classificação dos tomates maduros, o sistema determina a posição exata desses frutos. Essa informação é então enviada para o braço robótico, que se move de forma precisa para realizar a seleção dos tomates maduros específicos. A (Figura 14) apresenta trechos de código exemplificando o controle do braço robótico.

Figura 14 – Código de envio de posição para o Arduino

Fonte: O Autor, 2023

A programação da Arduino é realizada utilizando uma linguagem de programação compatível. O programa do Arduino recebe comandos do sistema Python para controlar servos motores, gerenciando a orientação e a posição do braço conforme direções específicas do sistema interativo. A (Figura 14) apresenta trechos de código exemplificando o controle do Arduino.

Figura 14 – Código de receber e controlar os servomotor

Fonte: O Autor, 2023

4 RESULTADOS

A avaliação do desempenho do sistema desenvolvido foi conduzida com base nos critérios a seguir: a detecção precisa de objetos e cores conforme demostrado no (Quadro 1). As amostras foram fabricadas em 8 cores entre verde até vermelha que corresponde no modelo HSV usando a escala de matiz de 0 a 360 graus (Figura 15). A qualidade a imagem captada influência no resultado na precisão da detecção, para avaliar este fator foram utilizadas duas webcams de diferentes qualidades de vídeo.

Quadro 1 – Resultado do desempenho do sistema

AmostraCorWebcam HDWebcam Full HD
ObjetoCorObjetoCor
1VerdeErroAcertoAcertoAcerto
2VerdeAcertoAcertoAcertoAcerto
3AmareloAcertoAcertoAcertoAcerto
4AmareloAcertoAcertoAcertoAcerto
5LaranjaAcertoAcertoAcertoAcerto
6LaranjaAcertoErroAcertoAcerto
7VermelhoAcertoAcertoAcertoAcerto
8VermelhoErroE.rroAcertoAcerto

Fonte: O Autor, 2023

Figura 15 – Amostra projetada para avaliação

Fonte: O Autor, 2023

5 CONCLUSÃO

Este trabalho teve por objetivo implementar um sistema com visão computacional para detectar objetos e cor. A aplicação do sistema para o auxílio no processo de seleção de tomates. Devido às características de maturação do tomate, o sistema foi configurado para a detectar quatro intervalos de cores: ‘vermelho’, ‘laranja’, ‘amarelo’ e ‘verde’.

A avaliação do sistema utilizando uma Webcam Full HD apresentou um desempenho perfeito, alcançando a taxa de acerto de 100% na detecção de objetos e taxa de acerto de 100% na detecção das cores. Outra Webcam HD utilizada para avaliar o sistema apresentou um desempenho bom, com a taxa de acerto de 75% na detecção de objetos e taxa de acerto de 75% na detecção das cores.

Como trabalhos futuros, a utilização de outras tecnologias, como aprendizagem de máquina, será mais apropriada para extrair outras características que facilitarão a identificação e classificação de itens específicos

REFERENCIAS BIBLIOGRÁFICAS

ARDUNIO. “Arduino.” Arduino.cc, 2018, Disponível em: < http://www.arduino.cc/ >. Acesso em: 23 abr. 2023.

BARELLI, Felipe. Introdução à Visão Computacional: Uma abordagem prática com Python e OpenCV. Brasil, Casa do Código, 2018.

BOLFE, Édson Luis; BARBETO, Jayme Garcia Arnal; MASSRUHÁ,Silvia Maria Fonseca Silveira; SOUZA, Kleber Xavier Sampaio de; ASSAD, Eduardo Delgado. Agricultura Digital. Brasília: EMBRAPA 2020. p. ,380 – 406

BOTEON, Margarete; DELEO, João Paulo Bernardes; MOREIRA, Marina Marangon. Hortifruti Brasil: Especial Tomate Hortifruti Brasil faz um balanço completo sobre o perfil da tomaticultura de mesa. Piracicaba, SP, CEPEA- Centro de Estudos Avançados em Economia Aplicada, 2020. p. 13 -22

Canal do Horticultor; Revista Campo & Negócios, Canal do Horticultor: CONHEÇA OS DIFERENTES PONTOS DE COLHEITA DE TOMATES, 28 JUN 2021, Disponível em: < https://canaldohorticultor.com.br/ponto-de-colheita-de-tomates/>. Acesso em: 11 abr. de 2023.

COLARES, Davi, Auto Core Robotica, 15 abr, 2020, Disponível em: <https://autocorerobotica.blog.br/como-montar-um-braco-robotico-educacional-parte-ii/>. Acesso em: 23 abr. 2023

COMPONENTS101, Components101, 8 set 2017-, Disponível em: < https://components101.com/motors/servo-motor-basics-pinout-datasheet >. Acesso em: 16 mar. 2023.

DAWSON-HOWE, Kenneth. A Practical Introduction to Computer Vision with OpenCV, Enhanced Edition. John Wiley & Sons, 24 Apr. 2014.

EMBRAPA – EMPRESA BRASILEIRA DE PESQUISA AGROPECUÁRIA. A cultura do tomate. Brasília: Embrapa Hortaliças, [2018]. Disponível em: < https://www.embrapa.br/hortalicas/tomate-de-mesa/cultivares2 >. Acesso em: 20 abr. 2023.

ESCANDAR, NIZAR, Resumo Fotográfico, 21 dez 2016 Disponível em: <https://www.resumofotografico.com/2016/12/saiba-tudo-sobre-sistema-e-espaco-de-cor-para-fotografia.html>. Acesso em: 4 abr. 2023.

GARRIDO, Gabriel; JOSHI, Prateek. OpenCV 3.x with Python By Example: Make the most of OpenCV and Python to build applications for object recognition and augmented reality. 2ª ed, Birmingham, Uk, Packt Publishing Ltd, 2018.

LAGANIERE, Robert. OpenCV 3 Computer Vision Application Programming Cookbook: Recipes to Help You Build Computer Vision Applications That Make the Most of the Popular C++ Library OpenCV 3. 3ª ed, Birmingham, Uk, Packt Publishing Ltd, 2017.

LUNGOY, Wagner, Apenas Imagens, 21 mai. 2016, Disponível em: <https://apenasimagens.com/pt/pixel-imagem-digital/>. Acesso em: 4 abr. 2023.

NUMPY “NumPy.” Numpy.org, 2009, Disponível em: <http://www.numpy.org/>. Acesso em: 23 abr. de 2023.

OPENCV. “OpenCV Library.”, 2019, Disponível em: <http://www.opencv.org/>. Acesso em: 23 abr. de 2023.

FITZPATRICK, Martin PyQt5 Signals, Slots & Events, 13 set. 2023, Disponível em: <https://www.pythonguis.com>. Acesso em: 29 set. 2023.

PYTHON Software Foundation. “Welcome to Python.org.” Python.org, Python.org, 18 Nov. 2019, Disponível em: <http://www.python.org>. Acesso em: 23 abr. 2023.

ROSEBROCK, Adrian. Practical Python and OpenCV: An Introductory, Example Driven Guide to Image Processing and Computer Vision. 3ª ed, PyImageSearch.com 2016.

SANTOS, Thiago Teixeira; BARBEDO, Jayme Garcia Arnal; TERNES, Sônica; NETO, João Camargo; KOENIGKAN, Luciano Vieira; SOUZA, Kleber Xavier Sampaio de. Agricultura Digital. Brasília: EMBRAPA 2020. p. 146 -164


1Graduando do Curso de Engenharia da Computação da Universidade de Araraquara- UNIARA. Araraquara-SP.
E-mail: jiorginoguti@hotmail.com
2Orientador. Docente Curso de Engenharia de Computação e Sistemas de Informação da Universidade de Araraquara- UNIARA. Araraquara-SP. E-mail: sslsantos@uniara.edu.br
3Economista e Advogada Coorientador. Docente Curso de Engenharia da Computação e Sistemas de informação da Universidade de Araraquara- UNIARA. Araraquara-SP. E-mail: florian@uniara.edu.br