Sei sulla pagina 1di 22

COMANDOS BSICOS

VOLTADOS AO
PROCESSAMENTO DE IMAGENS
EM MATLAB

Processamento Digital de Imagens


CURSO TCNICO EM GEOPROCESSAMENTO
Prof. Daniel C. Zanotta

2015/1

1
1 INTRODUO

O MATLAB foi desenvolvido no incio da dcada de 80 por Cleve Moler, no


Departamento de Cincia da Computao da Universidade do Novo Mxico, EUA. um
software interativo de alta performance voltado para o clculo numrico. Integra anlise
numrica, clculo com matrizes, processamento de sinais e construo de grficos em
ambiente de fcil uso, onde problemas e solues so expressos intuitivamente como eles so
escritos matematicamente, ao contrrio da programao tradicional (C, C++, Java). O
MATLAB pode ser entendido como um cdigo de programao interpretado, uma vez que
sempre traduzido para linguagem de mquina quando executado. Essa caracterstica pode
ser vista como uma comodidade, uma vez que torna sintaxe e comandos mais intuitivos, mas
tambm como uma desvantagem a medida que o cdigo interpretado computacionalmente
mais lento.

Figura 1.1. MATLAB R2012a.

O MATLAB caracteriza-se tambm por ser um sistema cujo elemento bsico de


informao uma matriz, da surge seu nome MATrix LABoratory (Laboratrio de Matrizes).
Esse sistema de organizao permite a resoluo de muitos problemas numricos em apenas
uma frao do tempo que se gastaria para escrever um programa semelhante em linguagem
Fortran, Basic ou C. A estrutura do MATLAB est toda organizada para manipular matrizes1,
tornando todas as operaes matriciais mais eficientes computacionalmente. Alm disso, essa
estrutura matricial dos dados extremamente conveniente para tratamento e processamento
de dados bidimensionais, ou espaciais, como imagens.

1
Isso no impossibilita que o usurio tambm possa fazer procedimentos matemticos simples ou vetoriais.
2
1.1 Inicializao do MATLAB

Figura 1.2 Tela de inicializao do MATLAB R2012a.

Quando o MATLAB carregado, algumas janelas bsicas so exibidas: a Janela de


Comando (Command Window), o Espao de Trabalho (WorkSpace) que onde ficam as
variveis, a pasta de trabalho atual (Current Folder), e o Histrico de Comandos
(Command History). A Janela de Comando ativada quando se inicializa o MATLAB, e o
"prompt" padro (>>) exibido na tela2.

1.2 Comandos

A partir desse ponto, o MATLAB espera as instrues do usurio. Para inserir uma matriz
pequena, por exemplo, pode-se digitar:

>> A = [1 2 3; 4 5 6; 7 8 9]

colocando-se colchetes em volta dos nmeros e separando as linhas por ponto e vrgula.
Quando se pressiona a tecla <Enter> o MATLAB responde com:

2
O software est pronto para receber comandos quando no canto inferior esquerdo aparece a mensagem
Ready. Quando ele est inicializando ou executando algum comando aparece busy e o usurio deve
aguardar.
3
A varivel A aparece no workspace. importante ressaltear que todas as variveis
(imagens, por exemplo) a serem futuramente trabalhadas devem constar no workspace.
Para fazer uma operao aritmtica simples, o usurio pode teclar:
>> soma = 5 + 2
soma = 7
A varivel soma aparece no workspace para uso futuro.

Se o usurio acrescentar o terminador ponto-e-vrgula ( ; ), o clculo ser executado e


a varivel criada/alterada no workspace, porm, o resultado no ser mostrado na tela. Isso
evita que a tela fique cheia de resultados calculados previamente3. Esse procedimento
especialmente usado em arquivos com extenso ".m" e em situaes onde o resultado uma
matriz de grandes dimenses, como imagens.
O sinal de percentagem (%), indica comentrios, e no lido como parte do comando.
>> soma = 6 + 5 % somatrio de dois valores inteiros.
As teclas com setas podem ser usadas para encontrar comandos digitados
anteriormente, para execuo novamente ou sua reedio. Por exemplo, suponha que seja
necessrio calcular uma raiz quadrada com a funo sqrt:
>> sqt(tan(pi/5))
Como o comando foi digitado incorretamente, o MATLAB responde com uma mensagem
de erro:
??? Undefined funcion or variable sqt.
Ao invs de repetir novamente a digitao da linha inteira, simplesmente pressiona-se a
tecla . O comando anterior retorna, podendo-se inserir a letra "r" com maior facilidade.
>>sqrt(tan(pi/5))
ans =
0.8524

1.3 Declarao de Variveis

Como mencionado anteriormente, o MATLAB uma linguagem interpretada. As expresses


usadas so traduzidas pelo sistema e transformadas em linguagem de mquina. As declaraes
no MATLAB so frequentemente da forma:
>> varivel = expresso

3
Imagine quando um procedimento realizado com uma imagem de milhes de pixels executado sem ponto-e-
vrgula? Todos os pixel sero mostrados na tela dificultando a visualizao.
4
ou simplesmente
>> expresso
A avaliao das expresses produzem matrizes, que so ento mostradas na tela e
atribudas s variveis para uso futuro. Se o nome da varivel e o sinal de igualdade "=" so
omitidos, a varivel com o nome ans, que representa a palavra "answer" (resposta),
automaticamente criada. Por exemplo, digite a expresso:
>> 1900 / 81
que produz:
Ans = 23.4568
Ou alternativamente:
>> V = 1900 / 81
que produz:
V = 23.4568
importante observar que se outro comando for dado sem atribuio inicial a
nenhuma varivel, o valor antigo de ans ser substitudo pelo novo.
Se a expresso to grande que no cabe em apenas uma linha, pode-se continuar a
expresso na prxima linha usando um espao em branco e reticencias, ( ... ), ao final das
linhas incompletas. Por exemplo:
>> S = 1 - 1/2 + 1/3 - 1/4 + 1/5 - 1/6 + 1/7 - 1/10 + 1/11 - 1/12 + 1/3 - 1/4 . . .
>> - 1/8 + 1/9 - 1/10 + 1/11 - 1/12 + 1/13;
calcula o resultado da srie, atribuindo o somatrio varivel S, mas no imprime o
resultado na tela, isto porque adicionou-se um ; ao final da expresso. Note que os espaos
em branco entre os sinais =, + e "-" so opcionais, mas o espao em branco entre "1/4" e
"..." obrigatrio.
As variveis e funes podem ser formadas por um conjunto de letras, ou por um
conjunto de letras e nmeros, onde somente os primeiros 19 caracteres do conjunto so
identificados. O MATLAB case-sensitive, isto , faz distino entre letras maisculas e
minsculas, assim a e A no so as mesmas variveis. Todas as funes devem ser escritas
em letras minsculas: inv(A) calcula a inversa de A, enquanto INV(A) uma funo
indefinida, no existe.
Execute algumas expresses como:
>> A = 5 + 2
>> B = A + 3
>> C = A + B;
>> D = B / C
>> P = (10*A) (2 / C)*3
Note que todas as novas variveis criadas vo sendo automaticamente salvas no
workspace. Experimente tambm criar algumas matrizes:
M = [ 1 2 3; 4 5 6; 7 8 9]

5
N = [ 1 1 1; 2 2 2; 3 3 3]

1.4 Nmeros e Expresses Aritmticas

A notao decimal convencional com ponto decimal opcional e o sinal de menos usada
para nmeros (observe que um nmeros com virgulas, assim como nas calculadoras, so
representados com ponto). A potncia de dez pode ser includa como um sufixo. A seguir so
mostrados alguns exemplos de nmeros aceitos:
3 -99 0.00001
9.6374586 1.602E-20 6.06375e23

As expresses podem ser construdas usando-se os operadores aritmticos bsicos e as regras


de precedncia:

1 ^ Exponenciao

2 sqrt() Raiz quadrada

3 / Diviso a direita

4 \ Diviso a esquerda

5 * Multiplicao

6 + Adio

7 - Subtrao

Deve-se notar que existem dois smbolos para diviso: as expresses 1/4 e 4\1 possuem o
mesmo valor numrico, isto , 0,25. Parnteses so usados em sua forma padro para
delimitar a atuao dos operadores aritmticos. No existem colchetes e chaves, apenas
parnteses em diversos nveis.

2 FUNES

O MATLAB possui um conjunto extenso de funes includas nas mais diversas


bibliotecas internas (MATLAB TOOLBOX), que so na realidade arquivos com a extenso

6
.m criados a partir das funes intrnsecas4. A biblioteca externa pode ser constantemente
atualizada medida que novas aplicaes so desenvolvidas por voc.
As categorias gerais de funes matemticas disponveis no MATLAB incluem:
matemtica elementar;
matemtica avanada;
matrizes elementares;
matrizes especiais;
decomposio e fatorao de matrizes;
polinmios;
soluo de equaes diferenciais;
equaes no-lineares e otimizao;
derivao e integrao numrica;
anlise de dados;
anlise estatstica;
ferramentas para mapas
processamento de sinais;
processamento de imagens.

2.1 Arquivos .m (ambiente de programao)

Os comandos do MATLAB so normalmente digitados na Comand Window, onde uma


nica linha de comando introduzida e processada imediatamente. O MATLAB tambm
capaz de executar sequncias de comandos armazenadas em arquivos. Os arquivos que
contm as declaraes do MATLAB so chamadas arquivos .m, e consistem de uma
sequncias de comandos normais do MATLAB, possibilitando incluir outros arquivos .m
escritos no formato texto (ASCII).
Na Janela de Comando do MATLAB selecione New M-File para criar um novo arquivo
ou Open M-File para editar um arquivo j existente, a partir do menu File. Os arquivos
podem tambm ser editados fora do MATLAB utilizando qualquer editor de texto (como o
bloco de notas). Vale notar que ao se editar o arquivo .m no editor padro do Matlab, o
usurio contar com uma srie de codificaes em forma de cores que auxiliaro a diferenciar
funes, variveis e operadores lgicos.

2.2 Toolbox de Processamento de Imagens

A toolbox de processamento de imagens do MATLAB conta com os mais variados


procedimentos aplicados no processamento digital de imagens para as mais diversas

4
Estas funes so criadas por desenvolvedores profissionais e atualizadas a cada nova verso do MATLAB.
7
aplicaes. Um dos principais motivos da utilizao do MATLAB por diversos segmentos da
cincia e do mercado de trabalho voltado utilizao de imagens a qualidade e utilidade do
toolbox de processamento de imagens. Seguem abaixo alguns exemplos de comandos bsicos
desta toolbox:
imread = (filename, fmt) l uma imagem do arquivo especificado pelo nome
do arquivo string.
Se o arquivo no est na pasta atual (aquela cujo caminho foi apontado em current folder), ou
em uma pasta no caminho MATLAB, especificar o caminho completo
((C:/Arquivos/.../filename, fmt)). possvel tambm abrir uma imagem
simplesmente arrastando o arquivo para dentro do workspace com maior facilidade.
O fmt especifica o formato do arquivo, sua extenso de arquivo padro. Por exemplo,
especifique 'gif' para arquivos de formato Graphics Interchange. Existe uma lista de
formatos suportados, com suas extenses de arquivo, digite imformats para conhecer.
O valor de retorno A uma matriz que contm os dados de imagem importada para o
workspace do MATLAB. Se o arquivo contm uma imagem em tons de cinza, A uma matriz
M-por-N, onde M o nmero de linhas e N o nmero de colunas da imagem. Se o arquivo
contm uma imagem truecolor (com cores vermelho, verde e azul5), A uma matriz M-por-N-
por-3. Se o arquivo for uma imagem de satlite, por exemplo, que possui mais de 3 camadas,
A uma matriz M-por-N-por-K, sendo K o nmero de camadas.

imshow (I) exibe a imagem.


imshow (I) exibe a imagem em tons de cinza6 I
imshow (RGB (:,:,ki:kf) exibe uma imagem em cor verdadeira RGB. Os dois
primeiros : indicam que todas as linha e todas as colunas da imagem, respectivamente,
sero mostradas. Ki indica a banda inicial e kf indica a banda final. importante lembrar que,
mesmo que as imagens contenham mais de 3 bandas (o que muito comum), os programas
conseguem mostrar em tela apenas composies coloridas de 3 dessas bandas.
imwrite (A, nome de arquivo, fmt) escreve a imagem A para o arquivo
especificado pelo nome do arquivo no formato especificado pelo fmt.
A pode ser uma matriz M-por-N (escala de cinza da imagem) ou M-por-N-por-3 (imagem em
cor verdadeira), mas no pode ser uma matriz vazia. Para arquivos TIFF, A pode ser uma
matriz M-por-N-por-K, onde K o nmero de bandas da imagem.
nome do arquivo uma string que especifica o nome do arquivo de sada.
fmt pode ser qualquer uma das cadeias de texto listados na tabela de tipos de imagens
suportados.

3 CLASSES DE DADOS

Assim que a imagem aberta no workspace do MATLAB, possvel verificar a classe dos
dados do arquivo. Pixels so geralmente representadas por nmeros inteiros e positivos, ou

5
(RED, GREEN e BLUE).
6
Tambm chamada de Nveis de Cinza ou Monocromtica.
8
seja, 1, 2, 3, 4, 5, e assim por diante. Essa formatao dos dados confere um tamanho menor
ao arquivo que contm a imagem. Por exemplo, se a imagem tem 8 bits, significa que 28 =
256 e ela poder assumir apenas 256 nveis diferentes de colorao (de 0 at 255)7, ou nveis
de cinza entre o branco puro e o preto puro. Imagens de Sensoriamento Remoto usualmente
possuem 8 bits. Se a imagem possuir 16 ou 24 bits, seus nveis de cinza contero 216 = 65536
e 224 = 167772168, respectivamente. Obviamente a imagem contar com um detalhamento
maior, mas o tamanho computacional de cada pixel aumentar de acordo o seu valor em bits.
Esse valor (8, 16, 24) conhecido como a resoluo radiomtrica da imagem. O MATLAB
representa essa estruturao de dados por uint8 (Inteiros 8 bits) ou uint16 (Inteiros 16 bits),
por exemplo.

Quanto maior o nmero de bits, maior a quantidade de nveis de cinza e melhor a


resoluo:

Figura 3.1 Correspondncia entre nmero de bits e qualidade da imagem. Fonte:


CEPSRM-UFRGS.

Para a manipulao da imagem atravs de operaes matemticas, preciso quebrar essa


formatao padro para permitir que os clculos possam ser feitos (ex: valor do pixel 53/2 =
26,5). Uma classe de dados que pode assumir valores fracionrios a classe double. A classe
double pode assumir qualquer valor Real entre menos infinito e mais infinito. Em

7
Onde 0 representa o preto e 255 representa o branco.
8
Nesse caso, 0 representa o preto e 16777216 representa o branco.
9
processamento de imagens muito comum trabalhar com os dados na classe double, uma vez
que esta classe permite a manipulao completa dos dados sem restries. Portanto, essa a
classe de dados que devemos trabalhar em PDI9. A figura abaixo mostra a origem dessas
classes dentro do conjunto matemtico dos nmeros:

Figura 3.4 Exemplificao de onde se encontram os valores das imagens no conjunto


matemtico dos nmeros

Comandos comumente utilizados para transferncia entre classes de dados no MATLAB:

double (x) : Converte os dados (x) de qualquer classe para a classe double, nmeros
fracionrios positivos ou negativos.
uint8(x): Converte os dados (x) de qualquer classe para a classe uint8, inteiros
positivos de 0 a 255.
uint16 (x): Converte os dados (x) de qualquer classe para a classe uint16, inteiros
positivos de 0 a 65536
Ao mesmo tempo que importante trabalhar com as imagens no formato double dentro do
MATLAB, necessrio converter a mesma para uint8 ao final dos processos antes de gravar.
Assim, outros softwares podero ler a imagem processada sem maiores problemas.

Muito importante:
Ao visualizar alguma imagem na tela, a funo imshow(img) pode variar dependendo do tipo
de classe da imagem. Por exemplo, para o MATLAB, se a imagem estiver na classe uint8,
entende-se que ela possui valores variando de 0 at 255, e a funo imshow desta imagem
mostrar o valor 0 como preto e o valor 255 como branco. Os demais valores intermedirios
recebero diferentes nveis de cinza de acordo com o seu valor. Se por acaso a imagem
possuir a classe double, a funo imshow mostrar o valor 0 como preto, e o valor 1 como
branco. Os demais valores fracionrios entre 0 e 1 recebero diferentes nveis de cinza.

9
Acostume-se a sempre que abrir a imagem no workspace transformar ela para class double.
10
Qualquer pixel com valor menor que 0 ficar preto, assim como qualquer pixel com valor
maior que 1 ficar branco. Assim, ao converter uma imagem de uint8 para double, deve-se
tomar o cuidado de dividir seus valores por 255 (valor mximo da classe uint8). Dessa forma,
todos os valores da imagem ficaro entre 0 e 1, e quando a imagem for apresentada na tela por
imshow apresentar os valores corretos de nveis de cinza. Caso essa diviso por 255 no seja
feita, pixels com valores maiores que 1 ficaro brancos (ou seja, muitos pixels na imagem).

IMPORTANTE: Se "A" for uma imagem de intensidade de cinzas ou uma imagem colorida
(RGB) de classe <uint8>, imwrite grava os valores reais da matriz no arquivo. Se "A" for da
classe <double>, imwrite redimensiona os valores da matriz antes de grav-los, usando
uint8(round(255*A)). Esta operao converte os nmeros de ponto-flutuante na faixa [0,1] em
inteiros de 8 bits na faixa [0,255].

Sugere-se a seguinte sequencia de comandos para a abertura e salvamento de imagens:


Abrir:
1) Arrastar a imagem para o worspace;
2) Passar para a classe double >> img = double (img);
3) Se quiser mostrar em tela, dividir por 255 (mximo valor)
10
>> imshow = img(: , : , [R G B]) / 255);
4) Processar a imagem
Salvar:
1) Converter a imagem para uint8 >> img = uint8 (img);
2) Salvar com a funo imwrite, imsave ou geotiffwrite;

4 REPRESENTAO DE IMAGENS DIGITAIS

O termo imagem refere-se funo bidimensional de intensidade da luz f(x,y), onde x e y


denotam as coordenadas espaciais e o valor f em qualquer ponto (x, y) proporcional ao
brilho (ou nveis de cinza) da imagem naquele ponto.
Uma imagem digital uma imagem f(x, y), duas dimenses, discretizada11 tanto em
coordenadas espaciais quanto em brilho. Uma imagem digital pode ser considerada como
sendo uma matriz cujos ndices de linhas e de colunas identificam um nico ponto na
imagem, e o correspondente valor do elemento da matriz identifica o nvel de cinza naquele
ponto. A Conveno dos eixos para representao de imagens digitais no Processamento de
Imagens diferente da conveno usada na Computao Grfica.

10
Se for imagem 8 bits 28 = 256.
11
Onde usam-se penas valores inteiros.
11
Figura 4.1 Conveno dos eixos para representao de imagens digitais

Os elementos dessa matriz digital so chamados de elementos da imagem, elementos da


figura, "pixels" , abreviao de "picture elements" (elementos da figura). Quanto mais pixels
uma imagem tiver, melhor a sua resoluo e qualidade. A imagem abaixo mostra como uma
imagem em nveis de cinza representada atravs de uma matriz composta por nmeros
inteiros, cada um com um certo valor correspondente a um nvel de cinza.

12
Figura 4.2 (a) imagem digital com grupo de pixels selecionados; (b) zoom da janela de
9x9 pixels; (c) valor dos contadores digitais da funo f(x, y). Fonte: CEPSRM-UFRGS.

4.1 Histograma da Imagem


Numa imagem, a informao da quantidade de vezes que uma determinada cor se repete
representa o histograma dessa imagem. Como as imagens so formadas por diversas matrizes
sobrepostas, o histograma gerado banda por banda separadamente. Uma informao assim
sobre a imagem importante, pois pode gerar parmetros para a avaliao da qualidade da
mesma, como nitidez, luminosidade e profundidade.

A funo imhist exibe o histograma da imagem.


>> imhist (I) exibe um histograma de 256 tons de cinza para a imagem. Uma barra de
calibragem de tons de cinza sempre exibida abaixo do traado.
>> imhist (I , N) exibe o histograma usando N posies ao invs de 256.

13
Figura 4.3 Exemplo de Histograma de Imagem.

4.2 Imagens Coloridas

As imagens obtidas por sensores eletrnicos, em diferentes canais, so formadas por


nveis de cinza (imagens monocromticas). A quantidade de energia refletida pelos objetos
vai determinar a intensidade dos nveis de cinza entre o branco (quando refletem toda a
energia) e o preto (quando absorvem toda a energia). Ao combinar as imagens
monocromticas produzidas por cada banda atravs das cores azul, verde e vermelho (cores
primrias), possvel gerar imagens ou composies coloridas. Nas imagens coloridas, a cor
de um objeto vai depender da quantidade de energia por ele refletida nas faixas espectrais de
cada uma das bandas selecionadas para visualizao.

Figura 4.4 Imagem colorida, obtida a partir das imagens ETM+ LANDSAT-7, dos
canais 1, 2 e 3, com as cores azul, verde e vermelho. Fonte: FLORENZANO (2002)
14
Figura 4.5 Imagem colorida, obtida a partir das imagens ETM+ LANDSAT-7, dos
canais 3, 4 e 5, com as cores azul, verde e vermelho. Fonte: FLORENZANO (2002)

5 PASSOS FUNDAMENTAIS DO PROCESSAMENTO DE IMAGENS

A rea de processamento de imagens um excelente exemplo de interdisciplinaridade.


As diversas tcnicas originalmente desenvolvidas para tratamento de sinais unidimensionais
foram, em primeiro lugar, adaptadas para tratamento de imagens obtidas de satlites e de
naves espaciais. Posteriormente, com o rpido avano das opes de hardware e software,
estas mesmas tcnicas passaram a ser aplicadas em inmeros domnios tais como fotografia,
medicina, cincia dos materiais, microscopia, artes, etc...
O primeiro passo no processo a aquisio da imagem, isto , adquirir uma imagem
digital. Para fazer isso, necessitamos de um sensor para imageamento e a capacidade de
digitalizar o sinal produzido pelo sensor. O sensor poderia ser uma cmera fotogrfica que
adquire fotografias de reas inteiras de uma s vez. O sensor de imageamento poderia tambm
ser uma cmera de varredura por linha que produza uma nica linha de imagem por vez, como
no caso dos Satlites de Sensoriamento Remoto. Vale lembrar que se a sada da cmera ou
outro sensor de imageamento no se encontrar na forma digital, um conversor analgico-
digital realiza a digitalizao, um Scanner, por exemplo. A natureza do sensor e da imagem
que ele produz so determinadas pela aplicao. As imagens digitais tomadas por sensores
remotos podem ser adquiridas por provedores na internet. So exemplos desses provedores a
Diviso de Gerao de Imagens do Instituto Nacional de Pesquisas Espaciais (DGI-INPE),
acessvel em www.dgi.inpe.br atravs de um pequeno cadastro, ou United States Geological
Survey USGS NASA em www.usgs.gov .
Aps a obteno de uma imagem digital, o prximo passo trata de pr-processar a
imagem. A funo chave no pr-processamento melhorar a imagem de forma a aumentar as
chances para o sucesso dos processos que sero aplicados na etapa de processamento. Nesse
15
exemplo, o pr-processamento tipicamente envolve tcnicas para calibrao radiomtrica,
remoo de rudos, correo atmosfrica e seleo da regio a ser estudada.
O processamento, realizado aps o pr-processamento, visa extrao de informaes
teis para uma determinada aplicao. So exemplos disso aplicaes urbanas, florestais,
cultivo agrcola, desastres naturais, deteco de mudanas, mapeamento de diversos tipos em
diversas escalas e estudos meteorolgicos. A variedade desses processos ser estudada uma a
uma nos captulos seguintes.

6 REFERNCIAS

BASTOS, V.P. Tcnicas de Segmentao de Imagens para Recuperao de Informaes


Visuais.

FLORENZANO, Tereza Gallotti. Imagens de satlites para estudos ambientais. So Paulo: Oficina de
Textos, 2002.

CROSTA, lvaro Penteado - Processamento Digital de Imagens de Sensoriamento Remoto. Ed. Rev. -
Campinas, SP: IG/UNICAMP, 1993.

Engenharia Cartogrfica UFRGS - Pgina Dinmica para Aprendizado do Sensoriamento


Remoto (PDASR).

16
Histograma da Imagem

O histograma de uma imagem fornece informao til para fazer realce e anlise da
imagem. O histograma de uma imagem revela a distribuio dos nveis de cinza da imagem.
representado por um grfico que d o nmero de pixels na imagem para cada nvel de cinza.

Definio: Seja uma imagem digital g de M linhas e N colunas. O histograma da imagem


g, Hg, pode, analiticamente, ser definido por :

onde nk o nmero de vezes que o nvel de cinza K aparece na imagem.

Pode-se utilizar o MATLAB para gerar o Histograma de uma imagem. Primeiro a


imagem deve ser lida com o comando "imread"

a =imread('baronesa.jpg');

17
O resultado e mostrado na FIGURA 03 (Museu da Baronesa - Pelotas/RS).

FIGURA 03 - Imagem lida no MATLAB

Depois, gera-se o histograma como o comando "imhist"

imhist(a);

O resultado mostrado na FIGURA 04.

FIGURA 04 - Histograma da Figura03

Realce

O objetivo principal das tcnicas de realce processar uma imagem, de modo que o
resultado seja mais apropriado para uma aplicao especfica do que a imagem original [1].
As Tcnicas de realce podem ser baseadas em processamento ponto-a-ponto, que modifica o
nvel de cinza de um pixel independentemente da natureza de seus vizinhos, ou pelo processo
de filtragem, onde o novo valor depende tambm dos valores dos pontos vizinhos do ponto a
ser processado.

Contraste
18
A manipulao do contraste de uma imagem tem como objetivo melhorar a sua qualidade
visual sob critrios subjetivos ao olho humano. Esse processo no aumenta a quantidade de
informao contida na imagem, mas torna mais fcil a sua percepo. normalmente
utilizada como uma etapa de pr-processamento.

Tipicamente, os sensores so capazes de discretizar os valores recebidos da cena em um


intervalo mximo que vai de 0 at 255 (8 bits = 256 possveis valores). Devido m
iluminao, defeitos do sensor ou mesmo s caractersticas da cena, o intervalo de valores de
intensidade ocupados pelos pixels presentes em uma imagem, pode ser muito menor que esse
intervalo mximo. Diz-se ento que a imagem possui baixo contraste, o que torna difcil a sua
visualizao ou interpretao por um intrprete humano ou um sistema de processamento
digital.

O contraste de uma imagem pode ser avaliado observando-se o seu histograma. Uma
imagem com bom contraste possui um histograma cujas barras so razoavelmente espalhadas
ao longo de todo o intervalo da escala. Por exemplo, a imagem da Figura 05 (Mercado
Pblico - Pelotas/RS) e seu histograma (Figura 06). J o histograma mostrado na Figura 08
tem uma forma estreita que indica uma escala dinmica pequena , isto porque corresponde a
uma imagem de baixo contraste.

FIGURA 05 - Imagem com contraste alto FIGURA 06- Histograma da Figura 05

FIGURA 07 - Imagem com contraste baixo FIGURA 08 - Histograma da Figura 07

Um realamento de contraste pode ser feito mapeando as variaes dentro do intervalo de


tons de cinza [Vmin-Vmax] da imagem original para a variao mxima do dispositivo de

19
visualizao que, geralmente, [0, 255]. Vmin e Vmax so os valores de nveis de cinza
mnimos e mximos, respectivamente, presentes na imagem original.

O mapeamento realizado atravs de uma funo de mapeamento. Cada valor de nvel de


cinza na imagem original mapeado para um novo valor de acordo com uma funo de
transferncia, que pode ser definida como:

y =f(x)

onde: x o nvel de cinza original e y o novo valor correspondente.

A escolha da funo f determina qual ser o efeito visual obtido, e deve ser escolhida de
acordo com a imagem original e o efeito desejado. Em uma transformao linear, os valores
de nveis de cinza dos pixels so escalonados de tal forma que todos os pixels com valores
Vmin e Vmax so mapeados para 0 e 255, respectivamente. Da mesma forma, os outros
valores de nveis de cinza so mapeados para valores entre 0 e 255.

Normalmente, a forma do histograma da imagem realada a mesma da imagem original,


pois cada barra do histograma continua tendo a mesma altura, porm em uma posio
diferente. No entanto, algumas vezes a funo de transferncia causa uma sobreposio de
valores, ou seja, dois ou mais valores x so mapeados para o mesmo valor y.

Quando muitos valores de intensidade na imagem original so mapeados para o valor


mnimo ou mximo na imagem original diz-se que, ocorreu uma saturao (overflow) e uma
perda de informao, pois os pixels que originalmente podiam ser diferenciados na imagem
original agora possuem o mesmo valor de intensidade.

No entanto isto pode ser um efeito desejado, por exemplo, quando as regies escuras da
imagem com pequenas variaes radiomtricas correspondem a reas com o mesmo tipo de
cobertura as quais no se deseja diferenciar.

Um procedimento de modificao de contraste til o mapeamento linear por partes


com a funo de mapeamento caracterizada por um conjunto de pontos de quebra, que pode
ser escolhido pelo usurio. Funes de mapeamento no-lineares podem ser usadas para
realar detalhes especficos na imagem.

Uma funo linear tambm utilizada a funo negativa. Ela realiza o mapeamento
inverso dos nveis de cinza, revertendo a ordem do preto para o branco, de tal forma que
pixels com intensidade clara sero mapeados para escuro e vice-versa.

A escolha do mapeamento direto adequado , em geral, essencialmente emprica, mas


existe uma classe de mtodos nos quais o mapeamento tem por finalidade produzir uma
imagem cujo histograma tenha um formato desejado.

Um destes mtodos a equalizao de histograma.

Na equalizao de histograma o mapeamento tem por finalidade produzir uma imagem cujo
histograma tenha um formato desejado. A equalizao modifica o histograma da imagem
original de tal forma que a imagem transformada tenha um histograma uniforme, ou seja,
todos os nveis de cinza devem aparecer na imagem com a mesma freqncia.
20
Exemplo:

Dada uma Imagem de n x m Pixels e g nveis de cinza.

No. Ideal de pixels em cada nvel => I = (n x m)/g

A equalizao pode ser obtida atravs da aplicao da formla:

Onde: g = nveis de cinza da Imagem Original


q = nveis de cinza da Imagem Equalizada

Figura 09) Imagem original e seu histograma[2]

Figura 10) Imagem equalizada e seu histograma[2]

21
Na prtica, a obteno de um histograma perfeitamente uniforme no possvel devido
natureza das imagens digitais de sensoriamento remoto, cujos pixels podem assumir somente
valores discretos. Existem tcnicas para melhorar este problema, mas pode acontecer de reas
homogneas na imagem original aparecerem "pipocadas", por que tons de cinza iguais so
mapeados para nveis de cinza diferentes.

O processo de equalizao pode levar a falsos contornos na imagem, pois o nmero de


nveis de cinza pode ser reduzido. A equalizao pode ter um efeito de realce notvel da
imagem, mas o contraste pode ser muito forte e, por isto a equalizao de histograma deve ser
usada com muito cuidado.

22

Potrebbero piacerti anche