• Nenhum resultado encontrado

Processamento Digital de Imagens e Visão Computacional no ambiente Mosaicode

N/A
N/A
Protected

Academic year: 2023

Share "Processamento Digital de Imagens e Visão Computacional no ambiente Mosaicode"

Copied!
53
0
0

Texto

Um agradecimento especial ao meu namorado por todo o tempo que dedicou a mim e por me ajudar a superar todas as barreiras que enfrentei. Sou extremamente grato ao meu orientador Flávio Luiz Schiavoni, por todo apoio, paciência, ensinamentos, pelos dois anos de pesquisa juntos e por todas as oportunidades que me foram dadas. O Processamento Digital de Imagens (PDI) e a Visão Computacional (VC) são duas áreas da computação que funcionam de forma interligada, principalmente por compartilharem o mesmo habitat e estarem alinhadas em um processo de processamento gráfico e análise bidimensional.

Voltando ao aspecto artístico, a ferramenta visa facilitar a criação e exportação de aplicativos de forma semelhante à descrita anteriormente para estudantes de informática.

Figura 1 – Fases da revisão sistemática. . . . . . . . . . . . . . . . . . . . . . .
Figura 1 – Fases da revisão sistemática. . . . . . . . . . . . . . . . . . . . . . .

Objetivos

O foco do Mosaicode é permitir que pessoas como estudantes e artistas que teoricamente conheçam um determinado domínio, mas que não tenham conhecimento específico de um LINDE relacionado a ele, programem e criem programas com mais facilidade, sem a necessidade de codificação textual. Além disso, o foco será em alunos específicos das áreas de PDI e VC, onde a ferramenta utilizará técnicas e conceitos sobre isso de forma descomplicada na tentativa de atrair os alunos para o meio de forma mais simples e envolvente, o que elimina o obstáculo causado pela dificuldade imposta na abstração de um framework ou pela programação codificada.

Justificativa

Para abordar ainda outro aspecto, a arte digital, como mencionado anteriormente, não possui uma grande capacidade de ferramentas prontas para uso para gerar aplicações especializadas para o contexto. Além disso, auxilia na criação de programas para quem não possui conhecimentos específicos de programação textual e serve de base para geração de programas complexos e elaborados.

Trabalhos Relacionados

Para abordar o aspecto de ensino por meio de LIDPVs, temos o EarSketch, um ambiente de programação visual para o ensino de linguagens de programação como JavaScript e Python com mixagem e composição musical (20). Além do EarSketch, temos o Processing, uma linguagem de programação textual de código aberto que utiliza a didática visual por meio de artes gráficas para ensinar lógica de programação a iniciantes (21).

Organização do Texto

No nosso caso, procuramos ferramentas ou ambientes de programação visual para gerar código VC e PDI. Estudos primários mostrando evidências ou uso de geração de código para VC e/ou PDI ou arte digital; Mosaicode é um ambiente de programação visual para linguagens específicas de domínio (LINDEs) para fins de geração de código.

Uma extensão Mosaicode consiste em blocos, portas e um padrão de código para gerar o aplicativo. Os blocos podem ser definidos como as unidades mínimas de funcionamento da aplicação, sendo que cada bloco possui uma funcionalidade específica do domínio trabalhado, no caso deste trabalho, PDI ou VC. Os blocos são agrupados na ferramenta de acordo com categorias, onde cada um representa um paradigma de funcionamento; desta forma, os blocos que tiverem a mesma norma de funcionamento pertencerão à mesma categoria.

Nesta região da ferramenta estão as categorias que ela possui onde os blocos podem ser arrastados e utilizados. Como já mencionado, cada bloco se refere a uma função específica; portanto, os filtros arquiteturais são justamente os blocos Mosaicode que correspondem a um algoritmo ou operação, onde naquele determinado padrão eles são como um conjunto de refinamentos, um após o outro, até que o diagrama seja fechado. Aplicando esses conceitos ao método de trabalho de PDI e VC em conjunto, podemos idealizar os blocos como filtros, fontes ou saídas; no caso do PDI, eles podem atuar como funções de refinamento ou processamento ou como um algoritmo de detecção específico em vista do VC.

Após essa consolidação inicial da extensão, será necessário idealizar exemplos de aplicações com blocos embutidos; contextualização, eles podem ser definidos como diagramas de treinamento. Outro aspecto de adicionar blocos a uma extensão é para o ambiente de arte digital, que tenta construir blocos que devolvam os efeitos visuais adequados aos artistas que podem usar a ferramenta, ou não, para que os blocos PDI e VC juntos possam fornecer a funcionalidade necessária para aqueles artistas.

Padrão de código

A partir do segmento "Incluir", este deve se referir a um fragmento de blocos que conterá referências a todos os arquivos de importação OpenCV e módulos necessários para execução. Dessa forma, o código gerado a partir de qualquer diagrama conterá a união de todas as frações com um marcador. Continuando a decompor o código do padrão definido, a parte "Função" refere-se às funções específicas a serem executadas para um determinado bloco, como realizar conversões internas de tipo e cor.

Após isso, ocorre a sequência com a seção "Declaração", que, como o próprio nome já diz, realiza a declaração de todos os tipos utilizados internamente no programa gerado. Logo após, inicia-se uma estrutura de loop interno, que continua até que o usuário a finalize pressionando uma tecla. Com esta estrutura "Loop" é possível gravar vídeo em tempo real, por exemplo, ou manter uma imagem fixa na tela controlada diretamente pelo usuário.

Essencialmente, esta fração contém as funções e todas as operações realizadas nos dados recebidos e encaminhados bloco a bloco. Definido esse processo, conclui-se que o padrão de código construído será o elemento responsável por unir os fragmentos variáveis ​​encontrados em blocos e portas, e servirá como unidade base para a geração do código.

Figura 6 – Estrutura organizacional representativa ao padrão de código idealizado.
Figura 6 – Estrutura organizacional representativa ao padrão de código idealizado.

Portas

Blocos

  • Arithmetic and Logical Operations
  • Basic Data Type
  • Basic Shapes
  • Experimental
  • Feature Detection
  • Filters and Conversions
  • General
  • Gradients, Edges and Corners
  • Image Source
  • Math Functions
  • Morphological Operations

Lidando especificamente com a geração de código e o padrão definido na seção anterior, os blocos atuarão como soquetes mutáveis ​​e fornecerão funcionalidade definida pelo usuário. Como os blocos são definidos como seções variáveis ​​de código a serem geradas, eles serão gerados apenas com as seções acinzentadas destacadas na Figura 6. Essa geração pode ocorrer de duas maneiras, sendo a mais comum inserir a imagem de entrada e definir o propriedades necessárias para a síntese de cada bloco, como tamanho, posição e cor; todos os blocos desta categoria possuem apenas uma porta de saída, onde esta se refere à imagem de entrada em conjunto com a forma sintetizada corretamente.

Entre os blocos atribuídos aqui, estão aqueles com funções para criar bordas, girar, inverter e cortar imagens, inserir textos e várias outras. Ambos os blocos possuem duas saídas alternativas: uma imagem com os padrões encontrados ou um vetor de retângulos com o posicionamento dos artefatos identificados. Dentre os blocos aqui construídos estão algumas operações PDI clássicas como as de Laplace e Sobel, que podem ser claramente classificadas na categoria "Filtros e transformadas", por serem filtros passa-alto.

A principal diferença em relação à seção de operações aritméticas e lógicas é que os blocos pertencentes a esta realizam operações unárias e, portanto, possuem apenas uma imagem como entrada. Por fim, esta seção reúne blocos que realizam operações morfológicas sobre as imagens, como dilatação, erosão, fechamento e abertura. Vale ressaltar que todos os blocos desta categoria possuem o mesmo número de portas de entrada e saída, além de todos fornecerem os mesmos parâmetros para determinação do tamanho da máscara aplicada à operação em questão.

Tabela 1 – Categorias e seus respectivos blocos na extensão OpenCV.
Tabela 1 – Categorias e seus respectivos blocos na extensão OpenCV.

Visão Geral

Podemos visualizar esse feito na Figura 9a e na Figura 9b, que mostram as imagens de entrada e saída do diagrama em questão, respectivamente. Iniciando a análise verticalmente, de cima para baixo, veremos uma sub-aplicação semelhante ao diagrama mostrado na Figura 8. O resultado obtido é mostrado na Figura 11b, onde as linhas pretas criadas na imagem correspondem aos contornos encontrados pelo The Bloco Canny, pois estes foram usados ​​como subtraendos em Subtração.

Seguindo as ramificações do diagrama, o segundo subaplicativo realiza uma equalização de histograma na imagem de entrada. Por fim, o último ramo do diagrama é uma aplicação simplificada em relação aos outros dois anteriores. A imagem de entrada é passada para o bloco Shi Tomasi Corner Detector, que detecta os cantos 𝐾 mais fortes encontrados pelo algoritmo.

Nesta situação, o número de vértices definido para serem exibidos foi 30, onde podem ser visualizados na Figura 11d, semelhantes aos pequenos círculos preenchidos e coloridos. Continuando com outro exemplo embutido junto com a extensão, a Figura 12 apresenta um diagrama que realiza a síntese de círculos e retângulos a partir de detecções realizadas em uma imagem de entrada. Por fim, o bloco Side By Side integra o quadro de origem e a imagem sintetizada lado a lado, expondo o resultado mostrado na Figura 13, onde as elipses amarelas correspondem aos olhos detectados e os retângulos azuis aos sorrisos.

Figura 8 – Diagrama realizando uma subtração de imagens criado através da extensão OpenCV.
Figura 8 – Diagrama realizando uma subtração de imagens criado através da extensão OpenCV.

O Chaos das 5

Por esse motivo, apenas os três exemplos anteriores são mostrados aqui, pois demonstram efetivamente a capacidade fornecida pela extensão. Primeiramente, em setembro de 2018, foi publicado o artigo "O ambiente de programação visual Mosaicode" (10) nos Anais da 9ª Sessão CBSoft Tools (Congresso Brasileiro de Software), onde descreve o que é a ferramenta. , seu funcionamento e as extensões que o ambiente possui. Como estudante de ciência da computação e como pesquisador, tentar combinar essas áreas para que a proposta da ferramenta de atingir diferentes públicos seja cumprida, beneficia ainda mais os resultados já obtidos com sua extensão e uso real.

Já abordando o aspecto educacional da ferramenta, é válido informar que todos os blocos de construção foram idealizados da forma mais simples possível, para que não haja impasses para novos usuários na hora de utilizar a ferramenta, seja pela complexidade das informações geradas códigos ou na construção dos diagramas. Para trabalhos futuros, além da possível aplicação em disciplinas de PDI e VC, a extensão também pode ser distribuída em grupos de Arte Digital, para que os próprios artistas possam avaliar e contribuir com o aprimoramento da ferramenta como um todo. Conforme já mencionado, além da extensão OpenCV, o ambiente possui um conjunto de artefatos nas áreas de Computer Music, Síntese de Imagens, Interfaces Gráficas, entre outros que estão em desenvolvimento.

Para extensões que usam a mesma linguagem de geração de código, os conceitos podem ser combinados para expandir o domínio de aplicações possíveis. Por fim, outra funcionalidade a ser atribuída à extensão OpenCV é a implementação e execução de testes de software para validar a funcionalidade da ferramenta em conjunto com o pacote de blocos gerado. No geral, este projeto contribuiu muito para o desenvolvimento do Mosaicode, permitindo o acesso a novas áreas de computação dentro dele.

Figura 15 – Outra fotografia capturada durante uma execução da performance no 5 o Seminário de Artes Digitais em Belo Horizonte
Figura 15 – Outra fotografia capturada durante uma execução da performance no 5 o Seminário de Artes Digitais em Belo Horizonte

Imagem

Figura 1 – Fases da revisão sistemática. . . . . . . . . . . . . . . . . . . . . . .
Figura 1 – Fases da revisão sistemática.
Figura 2 – Condução e seleção dos estudos primários.
Figura 3 – Visão geral da área de trabalho do ambiente Mosaicode.
+7

Referências

Documentos relacionados

O sentimento da majestas transmite a sensação de anulação da própria existência, (o eu torna-se poeira e cinzas) por um lado, e da onipotência da transcendência, por outro. O