Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
VOLTADOS AO
PROCESSAMENTO DE IMAGENS
EM MATLAB
2015/1
1
1 INTRODUO
1
Isso no impossibilita que o usurio tambm possa fazer procedimentos matemticos simples ou vetoriais.
2
1.1 Inicializao do MATLAB
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.
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]
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
1 ^ Exponenciao
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
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.
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.
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.
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:
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].
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
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.
13
Figura 4.3 Exemplo de Histograma de Imagem.
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)
6 REFERNCIAS
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.
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.
a =imread('baronesa.jpg');
17
O resultado e mostrado na FIGURA 03 (Museu da Baronesa - Pelotas/RS).
imhist(a);
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.
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.
19
visualizao que, geralmente, [0, 255]. Vmin e Vmax so os valores de nveis de cinza
mnimos e mximos, respectivamente, presentes na imagem original.
y =f(x)
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.
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.
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.
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:
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.
22