Você está na página 1de 9

Computação Gráfica e Processamento de Imagens I

Gabriel M. da Costa, Jose Mattioni, Talles Viecili


1
Universidade Regional do Noroeste do Estado do Rio Grande do Sul (UNIJUI) - Ijuı́/RS - Brasil
2
Departamento de Ciências Exatas e Engenharias (DCEEng)
gabmertins@gmail.com, viecilitalles@gmail.com

Resumo. Este artigo tem como objetivo fornecer uma visão introdutória e explicativa
sobre as àreas citadas a seguir: introdução ao processamento de imagens, fundamen-
tos de imagens digitais, processamento de histograma e traçamento de raios. Cada
àrea será melhor aprofundada e descrita em tópicos especı́ficos para melhor entendi-
mento.

1. Introdução ao Processamento de Imagens


O processamento de imagens trabalha basicamente com dois tipos de informação: A Visual
que é por exemplo a imagem vista na tela do computador e a Descritiva é referente ao modelo
matemático que representa os objetos visualizdos. A área de processamento de imagens abrange
operações que são realizadas sobre imagens e que resultam em imagens. O modelo usado em
processamento de imagens é o matricial, o qual utiliza uma matriz de dados para armazenar a
informação de cor em cada ponto da imagem, onde o sistema de coordenadas é obivmanete uma
grade de números inteiros que descrevem a posição na matriz. Portanto, no modelo matricial
não há distinção dos objetos contidos na imagem. Uma vez tendo nos situado no contexto de
processamento de imagens podemos agora desdobrar essa área nos tópicos que serão abordados.
Será pontuado dois aspectos importantes que definem a imagem: Resolução e Cor. Concluı́do
este, parte para Captura e Visualização, Armazenamento e por fim Processsamento.

1.1. Função contı́nua x Função discreta


Para introduzir de fato o conceito de imagem digital é necessário antes conhecer funções con-
tinúas e funções discretas. Podemos pensar em uma função contı́nua como um corda sem
emendas que se estende indefinidamente (ou seja infinita). Matematicamente estamos falando
de uma função real definida na reta toda (em Â), onde para cada valor de x fornecido sempre
existe um único valor de f(x) obtido.
Colocando a fórmula em um gráfico:

Figura 1. Representação gráfica da função citada acima.

O computador só é capaz de armazenar bits, um valor que pode ser 0 ou 1. Para simpli-
ficar as coisas juntou-se 8 bits formando uma palavra chamada de byte. Um byte então pode
assumir 28 = 256 valores diferentes, variando de 0 a 255. Quando falamos de sistemas operaci-
onais de 16 bits e 32 bits, estamos falando da maior palavra que aquele sistema pode processar
de uma vez, por isso sistemas de 32 bits são mais eficientes que os de 16.
Assim, o computador trabalha sempre com números inteiros ou na melhor das hipóteses
com uma aproximação de um número real, chamada de ponto flutuante (isso porque o número
de bits dedicado para as casas decimais é flexı́vel de acordo com o número). Por conseqüência,
não é possı́vel representar uma função contı́nua no computador. Podemos apenas simula-la.
O processo para trazer uma função contı́nua para o computador é discretizando-a (ou
digitalizando-a), ou melhor, tomando valores pontuais ao longo de x e guardando o valor de
f(x) correspondente (é claro que o eixo f(x) também é contı́nuo, assim também precisaremos
discretizalo). O processo de discretização do eixo x (o domı́nio) é chamado de Amostragem, o
do eixo f(x) (o contradomı́nio) é chamado de Quantização.
Em resumo, a discretização de qualquer sinal contı́nuo primeiro passa por uma amostra-
gem e depois passa por uma quantização. Além disso, não podemos armazenar um sinal que se
estenda indefinidamente, portanto o sinal digital também é limitado a um intervalo do domı́nio.
A amostragem que vemos na figura é a mais comum de todas e mais popular, imple-
mentada na grande maioria de dispositivos de captura. É chamada de uniformemente espaçada,
pois cada amostra é tomada em intervalos iguais. Embora existam outras técnicas de amostra-
gem que utilizam menos amostras onde a função é monótona e mais amostras onde a função
apresenta mais irregularidades [Scuri 1999].

Figura 2. Representação gráfica.

1.2. O Paradigma dos Quatro Universos


Esse paradigma vai nos ajudar a entender esse processo de sair do mundo real, onde os sinais
são contı́nuos, e ir para o mundo do computador onde tudo é discreto. O paradigma especifica
4 universos. O universo Fı́sico, onde estão os objetos do mundo real. O universo Matemático,
onde formulamos descrições abstratas desses objetos. O universo de Representação vai permitir
trazer essas descrições abstratas para o mundo digital, e é onde se dará a discretização dos sinais
contı́nuos. O universos de Implementação é onde é feita a codificação do sinal discretizado na
memória do computador através de uma estrutura de dados.
Assim, para estudar um determinado fenômeno, ou objeto da natureza, no computador,
nós precisamos associá-lo a um modelo matemático e então encontrar uma representação dis-
creta para esse modelo que pode ser implementada no computador.
A codificação dos dados pode ser decodificada e depois reconstruı́da para podermos vol-
tar com o fenômeno estudado para o mundo real.

Figura 3. Representação das etapas

Para imagem também precisamos fazer esses mesmos passos.


A imagem fotográfica é obtida do mundo real através de câmeras ou sensores que captam
luz. A imagem capturada em um filme fotográfico representa bem a imagem real que queremos
transportar para o computador. Repare que o filme define um plano limitado por um retângulo,
onde cada posição nesse plano contém a informação de cor relativa aquela posição, ou seja, a
imagem neste caso é um sinal de cor 2D contı́nuo, onde o domı́nio é o plano e contradomı́nio
é o espaço de cor. A discretização disso é muito simples, segue os mesmos princı́pios de
discretização de sinais 2D contı́nuos quaisquer.

Figura 4. Representação das etapas

A imagem contı́nua é modelada matematicamente pela função:


f(x,y) = Cor no ponto (x,y)
x ∈ [0, X] e y ∈ [0, Y ]
, onde x e y são números reais, limitados ao intervalo de 0 a X, e de 0 a Y, respectivamente.
Colocando isso em um gráfico:
Figura 5. Gráfico dos pontos X e Y

A imagem digital é obtida a partir de uma amostragem e de uma quantização dessa função,
como já foi visto, e pode ser representada pela mesma função, só que neste caso, x e y são
números inteiros. Uma vez amostrado o plano temos uma matriz de valores que representam a
cor. Cada elemento dessa matriz é chamado de Pixel (abreviação de Picture Element).
A figura a seguir ilustra o processo de discretização da imagem e mostra uma possı́vel
codificação da cor para cada elemento da matriz.

Figura 6. Processo de discretização de imagem

2. Fundamentos
2.1. Análise
O termo análise está relacionada a parte do tratamento onde existe uma descrição da
INFORMAÇÃO presente na imagem. Esta parte é chamada de parametrização e é nela que
várias medidas quantitativas (parâmetros) são utilizadas para descrever diferentes informações
dentro de uma imagem. Algumas aplicações tı́picas são: a determinação do número de células
presentes em um tecido biológico, o cálculo das formas dos contornos de uma célula ou ainda
a determinação da distribuição de uma população especı́fica de um conjunto de células. As
técnicas dedicadas a análise de imagens podem variar significativamente segundo a sua
complexidade e a necessidade em tempo de processamento. E nesta área que vamos encontrar
um nı́vel elevado de complexidade no tratamento da informação. Um exemplo prático e
quando da classificação automática de células doentes dentro de um conjunto de células
observadas em microscopia. Esta análise especı́fica demanda soluções dadas pelas técnicas de
“CLASSIFICAÇÃO E RENCONHECIMENTO DE FORMAS”, que discutiremos brevemente
posteriormente neste artigo. Neste caso devemos rapidamente medir vários parâmetros,
pertinentes ao problema, na imagem, como por exemplo: a superfı́cie, a forma de cada célula,
sua quantidade, o número de células vizinhas a uma dada célula e a densidade de células em
uma dada região. Em seguida comparamos estas medidas com várias classes de células
organizadas em uma base de dados, catalogadas anteriormente. Obteremos então uma
classificação das células com uma dada probabilidade de serem células doentes ou normais.

2.2. “Image Enhancement”


O termo “enhancement” esta associado a melhoria da qualidade de uma imagem, com o
objetivo posterior de ser julgado por um observador humano. De uma forma geral nós vamos
trabalhar nos nı́veis de cinza da imagem, transformando-os para aumentar o contraste ou para
colocar em evidência alguma região de interesse particular. Alguns exemplos deste tipo de
técnica é a subtração da imagem por uma imagem referência, a utilização de cores-falsas, a
utilização de filtros espaciais, a correção de deformações espaciais devido a ótica ou devido a
uma variação de inomogeneidade da iluminação de fundo. Os sistemas dedicados a melhorar a
qualidade da imagem trabalham geralmente muito rápido, pois são construı́dos em “hardware”
ou “firmeware”, permitindo rapidamente ao usuário um julgamento sobre várias imagens
processadas, segundo o tipo de tratamento. Esta técnica é encontrada na maioria dos
programas de tratamento de imagens ou fotografias que estão atualmente no mercado, mas
com algoritmos implementados em software, para computadores do tipo PC.

2.3. Sistema geral de visão


Um sistema geral de visão, isto é, um sistema que deve responder a todas as situações, como é
o caso do Sistema Visual Humano, é extremamente desenvolvido e complexo. O interesse em
se compreender um tal sistema é fundamentalmente de orientar a pesquisa de uma máquina de
reconhecimento genérica com as mesmas caracterı́sticas do SVH. Atualmente algumas
correntes cientı́ficas consideram o cérebro humano uma máquina com grande capacidade de
explorar as informações sensoriais. Filosoficamente não se pretende, com estas linhas de
pesquisas, retirar as qualidades humanas associadas ao cérebro ou aos homens. Mas devemos
atentar para alguns pontos fundamentais: os computadores atuais são extremamente eficientes
para trabalharem com base de dados, cálculos numéricos e formais, mas eles não conseguem
realizar eficientemente algumas tarefas “simples” realizadas por animais e seres-humanos.
Fica então uma questão, que é parte integrante das linhas de pesquisas modernas em
processamento de imagens: Seria realmente o computador a maquina mais adaptada para
resolver estes problemas ? Um exemplo prático é o processo de reconhecimento de uma
pessoa pelo SVH. O trabalho realizado pelo cérebro nos parece muito simples e bastante
elementar; porém uma análise detalhada mostra que o cérebro humano é capaz, a partir de uma
grande quantidade de informações de luminância e crominância (captada pelos olhos) de
realizar esta tarefa de reconhecimento em apenas 150ms. Os computadores atuais são na
pratica sistemas experimentais que nos ajudam a melhor compreender estas tarefas e
consequentemente modelizá-las e reproduzı́-las

3. Sistema de processamento de imagens digitais


Vários modelos de sistemas para processamento de imagens têm sido propostos e
comercializados no mundo inteiro nas duas últimas décadas. Entre meados das décadas de 80
e 90, com a progressiva redução nos custos das tecnologias de hardware, as tendências de
mercado voltaram-se para placas projetadas, segundo padrões industriais, para uso em
computadores pessoais e estações de trabalho. Assim, surgiram diversas empresas que se
especializaram no desenvolvimento de software dedicado ao processamento de imagens. Nos
dias atuais, o extenso uso dos sistemas para processamento de imagens desta natureza ainda é
um fato, sobretudo em aplicações de sensoriamento remoto (processamento de produtos
aerofotogramétricos e orbitais) e imageamento biomédico (processamento de imagens geradas
a partir de MR, CT, PET/ SPEC, tomografia óptica, ultra-sonografia e raios X). Todavia,
tendências recentes apontam para a miniaturização e integração do hardware especializado
para processamento de imagens a computadores de pequeno porte de uso geral.

3.1. Aquisição

A representação do hardware e o diagrama em blocos da Figura 3 ilustram os componentes de


um sistema de uso geral tipicamente utilizado para o processamento digital de imagens. O
papel de cada componente será discutido, em linhas gerais, a seguir. No tocante à aquisição
(também referida como sensoriamento) de imagens digitais, afiguram-se relevantes dois
elementos, a saber: (i) o dispositivo fı́sico sensı́vel à faixa de energia irradiada pelo alvo de
interesse; e (ii) o dispositivo conversor da saı́da do o dispositivo fı́sico de sensoriamento em
um formato digital (usualmente referido como digitalizador). Tome-se como exemplo uma
câmara de vı́deo digital. Os sensores CCD são expostos à luz refletida pelo alvo de interesse, o
feixe de radiação eletromagnética capturada é convertido em impulsos elétricos proporcionais
à intensidade luminosa incidente nos diferentes pontos da superfı́cie do sensor e, finalmente, o
digitalizador converte os impulsos elétricos em dados digitais.

Figura 7. Diagrama em blocos de um sistema tı́pico para processamento de imagens.


3.2. Processamento
Em geral, o hardware especializado para processamento de imagens consiste de um
digitalizador integrado a um hardware destinado à execução de outras operações primitivas,
e.g. uma unidade lógico-aritmética (ULA) para a realização de operações aritméticas e lógicas
em imagens inteiras, à medida que são digitalizadas. O diferencial do hardware desta natureza,
também denominado subsistema front-end, é a velocidade de processamento em operações que
requerem transferências rápidas de dados da entrada para a saı́da, e.g., digitalização e remoção
de ruı́do em sinais de vı́deo capturados a uma taxa de 30 quadros/s, tarefa que um computador
tı́pico não consegue realizar com o mesmo desempenho. Em nı́vel do processamento
propriamente dito, o computador em um sistema para processamento de imagens é um
hardware de uso geral que pode ser desde um PDA até um supercomputador, em função da
capacidade de processamento exigida pela tarefa. Embora aplicações dedicadas possam
requerer computadores especialmente projetados e configurados para atingir o grau de
desempenho exigido pela tarefa de interesse, os sistemas de uso geral para processamento de
imagens utilizam computadores pessoais tı́picos para a execução de tarefas offline.

3.3. armazenamento
O armazenamento é um dos grandes desafios para a área de processamento de imagens, uma
vez que os sistemas de aquisição vêm sendo cada vez mais aprimorados para a captura de
volumes de dados cada vez maiores, o que requer dispositivos com capacidades de
armazenamento cada vez maiores, além de taxas de transferência de dados mais elevadas e
maiores ı́ndices robustez e confiabilidade do processo de armazenamento. Costuma-se
discriminar a etapa de armazenamento em três nı́veis, a saber: (i) armazenamento de curta
duração (memória RAM), durante o uso temporário das imagens de interesse em diferentes
etapas de processamento; (ii) armazenamento online ou de massa, tı́pico em operações
relativamente rápidas de recuperação de imagens; e (iii) arquivamento de imagens, com fins ao
acesso infreqüente e à recuperação quando o uso se fizer necessário.

3.4. Exibição
No âmbito da saı́da do sistema de processamento de imagens, são tı́picas duas alternativas, a
saber: (i) a visualização de dados; e (ii) a impressão de dados. A visualização requer
tipicamente monitores de vı́deo coloridos e preferencialmente de tela plana, que recebem
dados de placas gráficas comerciais ou dedicadas. Há circunstâncias em que se torna
necessário o uso de visualizadores estéreo, e.g. em aplicações que lidam com pares
estereoscópicos de produtos aerofotogramétricos. No tocante à impressão, costuma-se utilizar
diferentes dispositivos de impressão de pequeno, médio e grande porte - impressoras e/ou
traçadores gráficos (plotters) de jato de tinta, sublimação de cera ou laser. Costuma-se também
incluir nesta etapa a geração de produtos em filme, que oferecem a mais alta resolução
possı́vel. O software para processamento de imagens consiste, em geral, de módulos
destinados à realização de tarefas especı́ficas (e.g. operações de processamento radiométrico
e/ou geométrico de imagens monocromáticas ou coloridas, mono ou multiespectrais). Há
pacotes que incluem facilidades de integração de módulos e geração de código em uma ou
mais linguagens de programação. Por fim, faz-se pertinente comentar que a conexão em rede
de sistemas para processamento de imagens parece ser uma função tı́pica nos dias atuais, uma
vez que, para diversas aplicações, se faz necessária a transmissão de grandes volumes de
dados. Para tais aplicações, a consideração mais relevante é a largura de faixa, uma vez que a
comunicação com sites remotos via Internet pode constituir um obstáculo para a transferência
eficiente de dados de imagens.
Ray tracing Raytracing é a técnica de renderização de uma cena que calcula a imagem de uma
cena simulando a forma como os raios de luz percorrem o seu caminho no mundo real. Ela é
utilizada nos mais variados ambientes e bibliotecas gráficas, inclusive em OpenGL. Para tornar
o processamento factı́vel, a técnica de Ray Tracing opera este processo de trás para frente. O
ray tracing tenta descobrir o caminho da luz, imaginando o olho observando uma cena e
fazendo o caminho inverso, até a fonte de luz. A cor de cada pixel deve ser calculada com base
nos objetos de uma cena, na relação entre eles e no número, tipo e posição das fontes de luz da
cena. No mundo real, os raios de luz são emitidos a partir de uma fonte de luz, de acordo com
as caracterı́sticas desta fonte de luz, e iluminam os objetos da cena. A luz é então refletida por
estes objetos pode ainda passar através de objetos transparentes e semitransparentes. Esta luz
refletida então atinge os olhos do observador ou a lente de uma câmera. Como a grande
maioria dos raios de luz nunca atinge um observador, implementar uma simulação exatamente
desta forma é impraticável em termos da quantidade de processamento desnecessário
envolvido. O modo como a luz incide sobre um pano preto é diferente de como ele cai em uma
esfera cromada, é claro, e os algoritmos de traçado de raios precisam levar em conta todas
essas propriedades de cada objeto em vista de cada fonte de luz que incide neles. A luz salta e
reflete também, tornando ainda mais difı́cil o processo de descobrir as cores de milhões de
pixels. Como resultado, é necessário uma enorme quantidade de poder de processamento. Já
vemos cenas utilizando o ray tracing de alta qualidade há anos, mas elas têm sido restritas a
imagens estáticas ou cenas que podem ser processadas com bastante antecedência, cenas de
efeitos especiais em filmes conseguiram implantar o ray tracing muito antes dos videogames,
porque enorme sistemas computacionais podem passar dias calculando a fı́sica de uma cena.
Até agora, os jogos dependiam somente de uma técnica de renderização chamada rasterização,
onde, em vez de bombardear uma cena com milhões de raios de luz virtual em todas as
direções, os processadores gráficos calculam como os milhões de triângulos que compõem os
modelos 3D deveriam parecer convertidos em pixels e imagens planas em 2D, mas somente
um por vez. Raios de luz simulados vindos diretamente de uma fonte de luz virtual
influenciam a cor eo brilho desses pixels renderizados, mas vários triângulos não podem afetar
um ao outro, exigindo sombras, iluminação indireta e reflexos para que todos sejam
inteligentemente simulados.
A Rasterização é um processo rápido e gera imagens de forma mais simples. Para quem joga
faz um tempo, é fácil de lembrar da época em que os primeiros tı́tulos em 3D eram bem
quadradões e com técnicas de iluminação rudimentares. Às vezes, apenas alternando entre os
tons das cores para dar uma ideia de sombreamento e profundidade.
No ray tracing, em vez de “simplesmente” projetar onde os polı́gonos devem aparecer na tela e
então aplicar efeitos para deixá-los mais bonitos; é feita uma simulação fisicamente correta do
caminho percorrido por cada fóton desde sua fonte luminosa, rebatendo pelo ambiente virtual
até chegar à “câmera”. É como cada “rebote” do raio altera as caracterı́sticas da luz que
ajudará a determinar a cor final para cada pixel.

4. Conclusões e trabalhos futuros


Este trabalho apresentou uma análise da aplicação do balanceador de carga G ROUP LB na
execução das aplicações reais Lulesh e Lassen. Os resultados mostraram-se consistentes
Figura 8. Exemplo simples de como funciona a técnica de Rasterização.

quanto as métricas analisadas, conseguindo o algoritmo proposto reduzir o tempo de execução


das duas aplicações com ganhos superiores a outros balanceadores do esta da arte. Além da
redução do desbalanceamento de carga, percebeu-se também uma redução da quantidade de
migração de tarefas o que resultou na redução do tempo de execução das duas aplicações reais
testadas.
Como futuros trabalhos, pretende-se realizar melhorias no algoritmo do G ROUP LB de modo a
implementar o aprendizado de máquina na solução. Também pretende-se analisar os ganhos
alcançados no consumo energético quando utilizada a estratégia proposta considerando outros
sistemas paralelos com uma maior quantidade de processadores e outras aplicações reais de
computação cientı́fica.

Referências
Scuri, A. E. (1999). Fundamentos da Imagem Digital. Tecgraf/PUC-Rio.

Você também pode gostar