Processamento e Reprodução de Imagem com Arduíno 1



Documentos relacionados
Unidade Curricular: Informática

Introdução à Informática

2 Segmentação de imagens e Componentes conexas

INSTITUTO NACIONAL DE PESQUISAS ESPACIAIS PROGRAMA DE PÓS-GRADUAÇÃO EM SENSORIAMENTO REMOTO DIVISÃO DE PROCESSAMENTO DE IMAGENS

Kit didático para controle de velocidade e posição de um motor de corrente contínua

BRAÇO ROBÓTICO ARTICULADO CONTROLADO POR ARDUÍNO PARA DEMONSTRAÇÃO DO EMPREGO DA ROBÓTICA NAS INDÚSTRIAS

Plano de Trabalho Docente Ensino Técnico

Introdução à Plataforma ARDUINO

4 Sistema Computacional:

INFORMAÇÕES GERAIS DO TRABALHO

Autor: Diego Gouvêa Macharete Trally

Computação Gráfica - 12

Conceitos básicos sobre computadores

INTERPOLAÇÃO LINEAR E BILINEAR: APLICAÇÃO EM TRANSFORMAÇÕES GEOMÉTRICAS DE IMAGEM INTRODUÇÃO

Controle a Distância de um Barco com Arduino+Bluetooth

PLANIFICAÇÃO INTRODUÇÃO ÀS TECNOLOGIAS DE INFORMAÇÃO BLOCO I

VISUALIZAÇÃO DE DADOS MÉDICOS

Arquitetura de Von Neumann

Matéria: Sistema Computacional - SC. Prof.: Esp.: Patrícia Dias da Silva Peixoto

Capítulo 2 Livro do Mário Monteiro Componentes Representação das informações. Medidas de desempenho


Hardware Livre Arduino. Givanaldo Rocha de Souza

Controle de Tensão de Mini Aerogerador e Interface com Plataformas Computacionais Utilizando Arduíno

Introdução à Computação

ARDUINO BÁSICO E T A P A 1 O QUE É ARDUINO? Prof. Amadeu Zanon Neto

A protoboard ou Matriz de contatos é utilizada para fazer montagens provisórias e/ou teste de projetos. É constituída por uma base plástica, contendo

Figura 16 Niagara - Visão de grupos de notas.

Programação embarcada para rastreamento de veículos de transporte terrestre

PROJETO VIPER. 1. Abstract. 2. Resumo. 3. Objetivos.

Projeto Panzer. Fabio Henrique Mazarotto Margareth Suchÿ

ENG1000 Introdução à Engenharia

Tutorial. Georreferenciamento de Imagens. versão /08/2008. Autores: Rafael Bellucci Moretti, Vitor Pires Vencovsky

-CURSO DE REPARO EM IMPRESSORA EPSON LX-300

Processamento Digital de Imagens

Processamento Digital de Imagens

Unidade temática. Curso Científico-Humanístico de Artes Visuais. Áreas de Conteúdo Objectivos Aulas (de 45 )

METODOLOGIA DE MEDIÇÃO AUTOMÁTICA DE DUREZA BRINELL POR MEIO DE TÉCNICAS DE VISÃO COMPUTACIONAL

INTRODUÇÃO AO ARDUINO DUE, CANAL DIGITAL, FUNÇÃO DELAY

Sistemas Operacionais

Correção do fenômeno NODATA na transformação de 16 para 8 bits em imagens QuickBird.

MINICURSO - PLATAFORMA ARDUINO Eixo de Informação e Comunicação Gil Eduardo de Andrade

E-Faces - Um classificador capaz de analisar imagens e classificá-las como faces ou não faces utilizando o método Eigenfaces

2.1 NesC Seguem alguns dos principais desafios impostos à linguagem NesC:

Microprocessadores vs Microcontroladores

Hardware: Componentes Básicos. Sistema de Computador Pessoal. Anatomia de um Teclado. Estrutura do Computador. Arquitetura e Organização

Aula 03. Processadores. Prof. Ricardo Palma

Tecnologias Digitais

Sistemas de Entrada e Saída

ESCOLA SUPERIOR DE TECNOLOGIA

Sistemas Embarcados. Projeto de Sistemas Embarcados

Pequenos Projetos com Arduino

Estrutura de Dados (DPADF 0056)

Curso de Sistemas de Informação Campus Guaíba Cursos de Informática Projeto de Inclusão Digital APOSTILA APOSTILA CONCEITOS BÁSICOS DE INFORMÁTICA

MouseCam: aplicação de controle do mouse via câmera

SEGMENTAÇÃO E RECONHECIMENTO DA ÍRIS

INF Fundamentos da Computação Gráfica Professor: Marcelo Gattass Aluno: Rogério Pinheiro de Souza

DIVISÃO DE REGISTROS ACADÊMICOS Registros Acadêmicos da Graduação. Ementas por Currículo 07/02/ :25. Centro de Ciências Exatas e Naturais

Mídias Discretas. Introdução à Ciência da Informação

Organização de Computadores I

Produtos e Aplicações

Arduino Lab 02 Sensor de luminosidade e display de LCD 16 2

PROJETO DO CURSO TÉCNICO DE NÍVEL MÉDIO INTEGRADO EM INFORMÁTICA

Prof. Daniel Gondim Informática

ORGANIZAÇÃO DE COMPUTADORES

Arquitetura de Computadores. Infraestrutura de TI: Hardware

Introdução. Aula 02. Estrutura de Dados II. UFS - DComp Adaptados a partir do material da Profa. Kenia Kodel Cox

INTRODUÇÃO. Introdução a Informática. Vinícius Pádua

SISTEMAS DE INFORMAÇÃO GEOGRÁFICA SIG FORMATOS DE REPRESENTAÇÃO DE DADOS FORMATO VETORIAL

SISTEMAS OPERACIONAIS. 3ª. Lista de Exercícios

Imagem e Gráficos. vetorial ou raster?

Sensores que fazem uso de ultrassons encontram uma grande gama de

Processamento Digital de Imagens

Processamento Digital de Imagem

PLANIFICAÇÃO ANUAL Documentos Orientadores: Programa da disciplina

PIBIC/PIBITI/IC Jr Relatório das Atividades de Pesquisa 23ª SEMIC

Técnicas de Processamento Paralelo na Geração do Fractal de Mandelbrot

Ciências da Computação Disciplina:Computação Gráfica

O Sistema de Computação

Fundamentos da Informática e Manutenção de Computadores. Professor: Orlando Filho Graduação: Sistemas de Informação

Sistemas de Entrada e Saída

X SOFTWARE DESENVOLVIDO EM DELPHI PARA SELEÇÃO DE BOMBAS HIDRÁULICAS PARA ADUTORAS MODELADAS COM O SOFTWARE EPANET 2.0

Introdução a Análise de Imagens Digitais

FILTROS ESPACIAIS PASSA-BAIXA

Noções básicas de SIG com QGIS

Tecnologias. de Informação e Comunicação. 7ºAno. 1.º Período. Aula 5, 6. 1 Magda Lopes

Frederico Damasceno Bortoloti. Adaptado de: Claudio Esperança Paulo Roma Cavalcanti

AULA 6 - INTRODUÇÃO AO ARDUINO Revisão de Eletrônica Digital e introdução aos Sistemas Computacionais.

Processamento de Dados aplicado à Geociências. AULA 1: Introdução à Arquitetura de Computadores

Algoritmos e Técnicas de Programação. Professora Luciana Faria

PROTÓTIPO DE AUTOMAÇÃO DE UMA ESTEIRA TRANSPORTADORA COM UM SISTEMA DE PICKING UTILIZANDO TECNOLOGIA DE RFID

Sistema Operacional. Etapa

Sistemas Operacionais I

Processamento de Imagens

Imagem ou Desenhos e Gráficos vetorial ou raster?

SISTEMA DE MEDICAO DE ENERGIA E MONITORIA DA QUALIDADE DA REDE ELÉTRICA

Transcrição:

Processamento e Reprodução de Imagem com Arduíno 1 Enrique A. Frade 1, Geiza M. H. da Silva 1 1 Universidade Federal do Estado do Rio Janeiro - (UNIRIO) Avenida Pasteur, 458 Urca Rio de Janeiro / RJ CEP:22290-240 {enrique.frade, geiza.hamazaki}@uniriotec.br Abstract. This work aims the integration of computing with art with a tool in which the image silhouette is reproduced in a physical medium (paper). The printing is performed using a printer prototype performs printing by analyzing straight lines which form the silhouette. For the development of the project was used knowledge of image processing, electronics and programming techniques for the Arduino microcontroller. Resumo. Este trabalho tem como objetivo a integração da computação com arte através de uma ferramenta na qual a partir de uma imagem digital é reproduzida a sua silhueta em um meio físico (folha de papel). A impressão é realizada utilizando um protótipo de impressora que realiza a impressão através da análise de retas que compõe a silhueta. Para o desenvolvimento do projeto foram utilizados conhecimento de processamento de imagens, eletrônica e programação do microcontrolador Arduíno 1. Introdução Os avanços tecnológicos influenciam as artes através da disponibilização de ferramentas que atuam na sua criação e execução, possibilitando o surgimento de um novo tipo de arte denominada Arte Digital. Neste tipo de arte, a computação gráfica possui grande destaque por gerar a cada dia novas técnicas para a manipulação de imagens digitais, através dos processadores de imagens que permitem reconstituições, montagens e colagens diversas. Couchot [Couchout 2003] afirma que o surgimento de uma técnica não é fator determinante para o surgimento de uma nova forma de arte, mas a técnica impõe diretrizes que moldam uma nova percepção e oferece condições para uma nova lógica figurativa, o que pode gerar uma nova expressão artística[ufscar 2011]. Os processadores de imagens atuam sobre as imagens digitais através de cálculos matemáticos, sendo necessário o conhecimento sobre esses cálculos, bem como os métodos numéricos para ter um grande poder de expressão computacional capaz de expressar o modelo contido na imaginação do artista. Existem alguns softwares que utilizam uma interface gráfica que facilita a utilização de seus recursos pelo artista; entretanto, este tipo de ferramenta restringe a utilização das funções, impedindo o artista de utilizar todos os recursos computacionais dos processadores de imagens. 1 Este projeto foi financiado pelo Projeto de Extensão em Arte e Cultura da UNIRIO.

Por outro lado, o domínio da linguagem de programação que permite ao usuário o total acesso às funcionalidades matemáticas não é trivial, pois para a programação é necessário o desenvolvimento de um raciocínio lógico próprio. Esses fatos motivaram a implementação deste projeto, no qual a partir de uma imagem é reproduzido a silhueta da imagem em um meio físico (folha de papel) através de réguas que controlam as posições a serem impressas nos eixos vertical e horizontal. Para o desenvolvimento do projeto foi utilizado a Linguagem de Programação Processing[Processing 2011][Fry,Reas2007] - que permite criar imagens, animações e interações - bem como a plataforma de hardware Arduíno[Arduino 2011] - que comandará a régua de impressão. 2. Desenvolvimento Para o desenvolvimento da "régua de impressão" foi essencial a utilização de Hardware - motores, correias, plataforma de hardware Arduíno, etc - e Software - funções desenvolvidas na linguagem de programação Processing. A reprodução da silhueta de uma imagem em um meio físico (folha de papel) através de uma "régua de impressão" pode ser dividida em três partes: 1- Desenvolvimento da estrutura física da régua de impressão, 2- Desenvolvimento do programa para comandar a régua de impressão e 3- a Integração entre o programa e a regra de impressão. Essas três partes serão explicadas nesta seção. 2.1. Estrutura Física A parte física visa a prototipação de uma impressora capaz de imprimir a silhueta da imagem. Esta impressora entende a região impressa como uma matriz e seu modo de impressão é fundamentado na impressão de retas. A parte física é composta de dois motores servo, duas correias, uma plataforma Arduíno e um Protoboard para montagem dos circuitos elétricos. O Arduino é uma plataforma de hardware projetada com um microcontrolador de placa única, com suporte a uma linguagem de programação própria derivada da linguagem C e C++. Com este hardware é possível criar ferramentas de baixo custo, flexíveis e fáceis de serem utilizadas. É possível a comunicação do Arduíno através de interface utilizando diversas linguagens de programação. O controle de motores é realizado pelo Arduino. Como os motores servos não suportavam rotações superiores a 180, foi utilizado um circuito eletrônico conhecido por "ponte H"[Al 2002](circuito eletrônico que permite amplificar voltagens e invertêlas) que permite rotações superiores a 180 e inversão de sentido de rotação em tais condições. A estrutura da impressora é definida através de dois motores que giram as roldanas movendo correias que movimentam hastes, definindo a posição do ponto ordenado via software. A base da impressora foi construída em madeira.(figura1)

Correias Posição motores dos Ponto de impressão Hastes Figura 1. Estrutura Física da Impressora 2.2. Software Neste projeto foi necessário o desenvolvimento de um programa composto de funções para o processamento da imagem além do comando dos motores com o Arduíno. A Figura 2 descreve as funcionalidades implementadas. Abrir Imagem Tratamento da Imagem Gravar Nova Imagem Carregar Estabelecer Conexão Arduino Informar Próxima Verificar se Imagem Impressa Figura 2. Comunicação entre funcionalidades do programa A linguagem de programação utilizada para a implementação dos algoritmos foi o Processing[Fry,Reas2007], que facilita a programação de interações com periféricos e artes gráficas através de suas bibliotecas, essa linguagem foi escolhida por possuir grande interação com o arduino. O Processing é uma linguagem de programação desenvolvida com o objetivo de ser utilizado por artistas para novas formas de artes que possuem interação entre suas obras e o ambiente. As funções para "Abrir Imagem", "Gravar Nova Imagem", "Estabelecer Conexão Arduíno" são oferecidas na biblioteca do Processing. Será descrito a função para o Tratamento da Imagem, visto que as outras funções fazem somente o acesso as estruturas de dados para o controle dos pontos impressos. A função "Verificar se Imagem Impressa" verifica se após a impressão da coordenada toda a imagem foi impressa ou não. Em caso de resposta afirmativa o sistema é finalizado.

2.2.1 Tratamento da Imagem O Tratamento da Imagem é formado pela aplicação de um filtro e o armazenamento das retas em um vetor. A aplicação do filtro define os contornos da imagem através de um filtro high pass[mather 2004] (filtro que valoriza as frequências altas e reduz as frequências baixas de cor, gerando um forte contraste entre elas) e uma conversão de valores de cor RGB 2 para preto e branco. Neste processo os contornos são representados pela cor branca para uma melhor análise é realizado a inversão dos padrões seguindo a detecção de contornos desrito em [Gopal, Jayanthi 2006]. Montagem das retas no vetor A impressão das retas é realizada utilizando o princípio de proximidade. No qual dado um ponto a ser impresso é analisado os pontos adjacentes a este, havendo pontos próximos estes serão armazenados ordenadamente nos vetores. Estabelecendo assim as retas a serem impressas. Neste processo foram utilizados dois vetores um para o armazenamento dos pontos que formam a imagem e outro para marcar dos pontos lidos, isto é, pontos que já foram impressos. Algoritmo do tratamento de imagem //Matriz do núcleo da imagem float[][] kernel = { { -1, -1, -1 }, { -1, 8.2, -1 }, { -1, -1, -1 }}; imagem img; imagem novaimg; //carrega os pixels da imagem em um vetor na variável img.pixels[] img.loadpixels(); //variável que recebe a largura da imagem int larguradaimagem; enquanto(int y = 1;y < alturadaimagem;y++){ enquanto(int x=1;x<larguradaimagem;x++){ float somatorio = 0; enquanto(int auxy = -1; auxy<1;auxy++){ enquanto(int auxx = -1;auxX;auxX++){ int pos = (y + auxy)*larguradaimagem + (x + auxx); float r = red(img.pixels[pos]); 2 Padrão de cores baseado na quantidade de 3 cores bases RED(vermelho), GREEN(verde) e BLUE(azul)

float g = green(img.pixels[pos]); float b = blue(img.pixels[pos]); float valor = (r+g+b)/3; } // Multiplica os pontos adjacentes baseados no valor central verificando o //contraste entre eles somatorio += kernel[auxy+1][auxx+1] * valor; } //esse comparativo define os valores de preto e de branco Se(somatorio>=100) então{ somatorio = 0; } senão{ somatorio =255; } //função cor converte valor inteiro para cor e transferi para um pixel em tons de cinza //carrega cor no pixel correspondente } novaimagem.pixels[y*larguradaimagem +x] = cor(soma);} 2.3. Integração A comunicação entre o programa e a estrutura física é realizada através da biblioteca FIRMATA[FIRMATA] que possui um protocolo de mesmo nome permitindo a comunicação do software diretamente com o Arduino através da porta serial. As ações integradas entre software e hardware são descritas pelo esquema na Figura 3.

Software Início 1 Abrir Imagem 2 Aplicar Filtro 3 Gerar Nova Imagem 4 Carregar 5 Hardware Estabelecer Conexão Arduino 8 6 7 Inicializar Motores Informar 9 Mover motor para coordenadas 9 10 Imprimir Próximo Ponto Detectar Próxima Aguardar 10 Verificar se Imagem Impressa Imagem Impressa Fim Figura 3. Esquema de Comunicação entre os módulos para o processo de Impressão 4. Conclusão Este projeto faz parte do estudo da utilização de novas tecnologias no desenvolvimento de Arte Digital, proporcionando a integração de múltiplos conhecimentos no processo criativo de uma expressão artística. O experimento pode ser facilmente reproduzido, decomposto e ampliado a outras funcionalidades, sua estrutura pode ser aplicada a outras formas de impressão não baseadas em tinta como corte digital (dispositivos que efetuam cortes de matérias com base em arquivos de computacional) e sua estrutura de captura de retas pode ser utilizada para formatos de arquivos não baseados em pontos como arquivos vetoriais.

Como trabalhos futuros podemos citar a otimização do processo de impressão de retas, a interação da régua de impressão com outros dispositivos remotos e o desenvolvimento de formas de impressão 2D e 3D. O contato dos estudantes com novas tecnologias e desafios, aumentam significativamente seu conhecimento, motivação, criatividade, sendo estes instrumentos fundamentais na formação de recursos humanos nas áreas de Computação. 5.Referências Bibliográficas Al,W. (2002)."Microcontroller projects using the Basic Stamp". Focal Press. Arduino (2011) - http://www.arduino.cc/, Agosto. Couchot, E. (2003) "A tecnologia na arte: da fotografia à realidade virtual"; trad. de Sandra Rey. Porto Alegre: Editora da UFRGS. Fry, B. Reas, C. (2007) Processing: A Programming Handbook for Visual Designrs and Artists. MIT Press. Gopal D. J. e Jayanthi S. (2006) A Simple Scheme for Contour Detection - http://cvit.iiit.ac.in/papers/gopal06asimple.pdf, Agosto. Margolis, M.(2011) Arduino Cookbook. O Reilly Press Mather P. M. (2004). Computer processing of remotely sensed images: an introduction. John Wiley and Sons. Processing (2011) Linguagem de Programação Processing - http://processing.org/, Agosto. UFSCar (2011)"Caminhos da Produção audiovisual contemporânea: arte, mídia e tecnologia digital", http://www.ufscar.br/rua/site/?p=673, Agosto.