COMANDOS BÁSICOS VOLTADOS AO PROCESSAMENTO...

22
1 COMANDOS BÁSICOS VOLTADOS AO PROCESSAMENTO DE IMAGENS EM MATLAB Processamento Digital de Imagens CURSO TÉCNICO EM GEOPROCESSAMENTO Prof. Daniel C. Zanotta 2015/1

Transcript of COMANDOS BÁSICOS VOLTADOS AO PROCESSAMENTO...

Page 1: COMANDOS BÁSICOS VOLTADOS AO PROCESSAMENTO …academico.riogrande.ifrs.edu.br/~daniel.zanotta/arquivos/Apostila... · A toolbox de processamento de imagens do MATLAB conta com os

1

COMANDOS BÁSICOS

VOLTADOS AO

PROCESSAMENTO DE IMAGENS

EM MATLAB

Processamento Digital de Imagens

CURSO TÉCNICO EM GEOPROCESSAMENTO

Prof. Daniel C. Zanotta

2015/1

Page 2: COMANDOS BÁSICOS VOLTADOS AO PROCESSAMENTO …academico.riogrande.ifrs.edu.br/~daniel.zanotta/arquivos/Apostila... · A toolbox de processamento de imagens do MATLAB conta com os

2

1 INTRODUÇÃO

O MATLAB foi desenvolvido no início da década de 80 por Cleve Moler, no

Departamento de Ciência da Computação da Universidade do Novo México, EUA. É um

software interativo de alta performance voltado para o cálculo numérico. Integra análise

numérica, cálculo com matrizes, processamento de sinais e construção de gráficos em

ambiente de fácil uso, onde problemas e soluções são expressos intuitivamente como eles são

escritos matematicamente, ao contrário da programação tradicional (C, C++, Java). O

MATLAB pode ser entendido como um código de programação interpretado, uma vez que

sempre é traduzido para linguagem de máquina quando executado. Essa característica pode

ser vista como uma comodidade, uma vez que torna sintaxe e comandos mais intuitivos, mas

também como uma desvantagem a medida que o código interpretado é computacionalmente

mais lento.

Figura 1.1. MATLAB R2012a.

O MATLAB caracteriza-se também por ser um sistema cujo elemento básico de

informação é uma matriz, daí surge seu nome MATrix LABoratory (Laboratório de Matrizes).

Esse sistema de organização permite a resolução de muitos problemas numéricos em apenas

uma fração 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 operações matriciais mais eficientes computacionalmente. Além disso, essa

estrutura matricial dos dados é extremamente conveniente para tratamento e processamento

de dados bidimensionais, ou espaciais, como imagens.

1 Isso não impossibilita que o usuário também possa fazer procedimentos matemáticos simples ou vetoriais.

Page 3: COMANDOS BÁSICOS VOLTADOS AO PROCESSAMENTO …academico.riogrande.ifrs.edu.br/~daniel.zanotta/arquivos/Apostila... · A toolbox de processamento de imagens do MATLAB conta com os

3

1.1 Inicialização do MATLAB

Figura 1.2 Tela de inicialização do MATLAB R2012a.

Quando o MATLAB é carregado, algumas janelas básicas são exibidas: a Janela de

Comando (Command Window), o Espaço de Trabalho (WorkSpace) que é onde ficam as

variáveis, a pasta de trabalho atual (Current Folder), e o Histórico de Comandos

(Command History). A Janela de Comando é ativada quando se inicializa o MATLAB, e o

"prompt" padrão (>>) é exibido na tela2.

1.2 Comandos

A partir desse ponto, o MATLAB espera as instruções do usuário. 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 números e separando as linhas por ponto e vírgula.

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 usuário deve

aguardar.

Page 4: COMANDOS BÁSICOS VOLTADOS AO PROCESSAMENTO …academico.riogrande.ifrs.edu.br/~daniel.zanotta/arquivos/Apostila... · A toolbox de processamento de imagens do MATLAB conta com os

4

A variável “A” aparece no workspace. É importante ressaltear que todas as variáveis

(imagens, por exemplo) a serem futuramente trabalhadas devem constar no workspace.

Para fazer uma operação aritmética simples, o usuário pode teclar:

>> soma = 5 + 2

soma = 7

A variável “soma” aparece no workspace para uso futuro.

Se o usuário acrescentar o terminador ponto-e-vírgula ( ; ), o cálculo será executado e

a variável é criada/alterada no workspace, porém, o resultado não será mostrado na tela. Isso

evita que a tela fique cheia de resultados calculados previamente3. Esse procedimento é

especialmente usado em arquivos com extensão ".m" e em situações onde o resultado é uma

matriz de grandes dimensões, como imagens.

O sinal de percentagem (%), indica comentários, e não é lido como parte do comando.

>> soma = 6 + 5 % somatório de dois valores inteiros.

As teclas com setas ↑ podem ser usadas para encontrar comandos digitados

anteriormente, para execução novamente ou sua reedição. Por exemplo, suponha que seja

necessário calcular uma raiz quadrada com a função 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 invés de repetir novamente a digitação 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 Declaração de Variáveis

Como mencionado anteriormente, o MATLAB é uma linguagem interpretada. As expressões

usadas são traduzidas pelo sistema e transformadas em linguagem de máquina. As declarações

no MATLAB são frequentemente da forma:

>> variável = expressão

3 Imagine quando um procedimento realizado com uma imagem de milhões de pixels é executado sem ponto-e-

vírgula? Todos os pixel serão mostrados na tela dificultando a visualização.

Page 5: COMANDOS BÁSICOS VOLTADOS AO PROCESSAMENTO …academico.riogrande.ifrs.edu.br/~daniel.zanotta/arquivos/Apostila... · A toolbox de processamento de imagens do MATLAB conta com os

5

ou simplesmente

>> expressão

A avaliação das expressões produzem matrizes, que são então mostradas na tela e

atribuídas às variáveis para uso futuro. Se o nome da variável e o sinal de igualdade "=" são

omitidos, a variável com o nome ans, que representa a palavra "answer" (resposta), é

automaticamente criada. Por exemplo, digite a expressão:

>> 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 atribuição inicial a

nenhuma variável, o valor antigo de “ans” será substituído pelo novo.

Se a expressão é tão grande que não cabe em apenas uma linha, pode-se continuar a

expressão na próxima linha usando um espaço 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 série, atribuindo o somatório à variável “S”, mas não imprime o

resultado na tela, isto porque adicionou-se um ‘ ; ‘ ao final da expressão. Note que os espaços

em branco entre os sinais ‘=’, ‘+’ e "-" são opcionais, mas o espaço em branco entre "1/4" e

"..." é obrigatório.

As variáveis e funções podem ser formadas por um conjunto de letras, ou por um

conjunto de letras e números, onde somente os primeiros 19 caracteres do conjunto são

identificados. O MATLAB é case-sensitive, isto é, faz distinção entre letras maiúsculas e

minúsculas, assim a e A não são as mesmas variáveis. Todas as funções devem ser escritas

em letras minúsculas: inv(A) calcula a inversa de A, enquanto INV(A) é uma função

indefinida, não existe.

Execute algumas expressões como:

>> A = 5 + 2

>> B = A + 3

>> C = A + B;

>> D = B / C

>> P = (10*A) – (2 / C)*3

Note que todas as novas variáveis criadas vão sendo automaticamente salvas no

workspace. Experimente também criar algumas matrizes:

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

Page 6: COMANDOS BÁSICOS VOLTADOS AO PROCESSAMENTO …academico.riogrande.ifrs.edu.br/~daniel.zanotta/arquivos/Apostila... · A toolbox de processamento de imagens do MATLAB conta com os

6

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

1.4 Números e Expressões Aritméticas

A notação decimal convencional com ponto decimal opcional e o sinal de menos é usada

para números (observe que um números com virgulas, assim como nas calculadoras, são

representados com ponto). A potência de dez pode ser incluída como um sufixo. A seguir são

mostrados alguns exemplos de números aceitos:

3 -99 0.00001

9.6374586 1.602E-20 6.06375e23

As expressões podem ser construídas usando-se os operadores aritméticos básicos e as regras

de precedência:

1 ^ Exponenciação

2 sqrt() Raiz quadrada

3 / Divisão a direita

4 \ Divisão a esquerda

5 * Multiplicação

6 + Adição

7 - Subtração

Deve-se notar que existem dois símbolos para divisão: as expressões 1/4 e 4\1 possuem o

mesmo valor numérico, isto é, 0,25. Parênteses são usados em sua forma padrão para

delimitar a atuação dos operadores aritméticos. Não existem colchetes e chaves, apenas

parênteses em diversos níveis.

2 FUNÇÕES

O MATLAB possui um conjunto extenso de funções incluídas nas mais diversas

bibliotecas internas (MATLAB TOOLBOX), que são na realidade arquivos com a extensão

Page 7: COMANDOS BÁSICOS VOLTADOS AO PROCESSAMENTO …academico.riogrande.ifrs.edu.br/~daniel.zanotta/arquivos/Apostila... · A toolbox de processamento de imagens do MATLAB conta com os

7

‘.m’ criados a partir das funções intrínsecas4. A biblioteca externa pode ser constantemente

atualizada à medida que novas aplicações são desenvolvidas por você.

As categorias gerais de funções matemáticas disponíveis no MATLAB incluem:

matemática elementar;

matemática avançada;

matrizes elementares;

matrizes especiais;

decomposição e fatoração de matrizes;

polinômios;

solução de equações diferenciais;

equações não-lineares e otimização;

derivação e integração numérica;

análise de dados;

análise estatística;

ferramentas para mapas

processamento de sinais;

processamento de imagens.

2.1 Arquivos ‘.m’ (ambiente de programação)

Os comandos do MATLAB são normalmente digitados na Comand Window, onde uma

única linha de comando é introduzida e processada imediatamente. O MATLAB é também

capaz de executar sequências de comandos armazenadas em arquivos. Os arquivos que

contêm as declarações do MATLAB são chamadas arquivos ‘.m’, e consistem de uma

sequências 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 também 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 padrão do Matlab, o

usuário contará com uma série de codificações em forma de cores que auxiliarão a diferenciar

funções, variáveis e operadores lógicos.

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 funções são criadas por desenvolvedores profissionais e atualizadas a cada nova versão do MATLAB.

Page 8: COMANDOS BÁSICOS VOLTADOS AO PROCESSAMENTO …academico.riogrande.ifrs.edu.br/~daniel.zanotta/arquivos/Apostila... · A toolbox de processamento de imagens do MATLAB conta com os

8

aplicações. Um dos principais motivos da utilização do MATLAB por diversos segmentos da

ciência e do mercado de trabalho voltado à utilização de imagens é a qualidade e utilidade do

toolbox de processamento de imagens. Seguem abaixo alguns exemplos de comandos básicos

desta toolbox:

imread = (‘filename’, ‘fmt’) lê uma imagem do arquivo especificado pelo nome

do arquivo string.

Se o arquivo não 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’)). É possível também abrir uma imagem

simplesmente arrastando o arquivo para dentro do workspace com maior facilidade.

O fmt especifica o formato do arquivo, sua extensão de arquivo padrão. Por exemplo,

especifique 'gif' para arquivos de formato Graphics Interchange. Existe uma lista de

formatos suportados, com suas extensões de arquivo, digite imformats para conhecer.

O valor de retorno A é uma matriz que contém os dados de imagem importada para o

workspace do MATLAB. Se o arquivo contém uma imagem em tons de cinza, A é uma matriz

M-por-N, onde M é o número de linhas e N o número de colunas da imagem. Se o arquivo

contém uma imagem truecolor (com cores vermelho, verde e azul5), A é uma matriz M-por-N-

por-3. Se o arquivo for uma imagem de satélite, por exemplo, que possui mais de 3 camadas,

A é uma matriz M-por-N-por-K, sendo K o número 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,

serão 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 composições 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 não pode ser uma matriz vazia. Para arquivos TIFF, A pode ser uma

matriz M-por-N-por-K, onde K é o número de bandas da imagem.

nome do arquivo é uma string que especifica o nome do arquivo de saída.

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, é possível verificar a classe dos

dados do arquivo. Pixels são geralmente representadas por números inteiros e positivos, ou

5 (RED, GREEN e BLUE).

6 Também chamada de Níveis de Cinza ou Monocromática.

Page 9: COMANDOS BÁSICOS VOLTADOS AO PROCESSAMENTO …academico.riogrande.ifrs.edu.br/~daniel.zanotta/arquivos/Apostila... · A toolbox de processamento de imagens do MATLAB conta com os

9

seja, 1, 2, 3, 4, 5, e assim por diante. Essa formatação dos dados confere um tamanho menor

ao arquivo que contém a imagem. Por exemplo, se a imagem tem 8 bits, significa que 28 =

256 e ela poderá assumir apenas 256 níveis diferentes de coloração (de 0 até 255)7, ou níveis

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 níveis de cinza conterão 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 resolução radiométrica da imagem. O MATLAB

representa essa estruturação de dados por uint8 (Inteiros 8 bits) ou uint16 (Inteiros 16 bits),

por exemplo.

Quanto maior o número de bits, maior é a quantidade de níveis de cinza e melhor é a

resolução:

Figura 3.1 Correspondência entre número de bits e qualidade da imagem. Fonte:

CEPSRM-UFRGS.

Para a manipulação da imagem através de operações matemáticas, é preciso “quebrar” essa

formatação padrão para permitir que os cálculos possam ser feitos (ex: valor do pixel 53/2 =

26,5). Uma classe de dados que pode assumir valores fracionários é 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.

Page 10: COMANDOS BÁSICOS VOLTADOS AO PROCESSAMENTO …academico.riogrande.ifrs.edu.br/~daniel.zanotta/arquivos/Apostila... · A toolbox de processamento de imagens do MATLAB conta com os

10

processamento de imagens é muito comum trabalhar com os dados na classe double, uma vez

que esta classe permite a manipulação completa dos dados sem restrições. Portanto, essa é a

classe de dados que devemos trabalhar em PDI9. A figura abaixo mostra a origem dessas

classes dentro do conjunto matemático dos números:

Figura 3.4 Exemplificação de onde se encontram os valores das imagens no conjunto

matemático dos números

Comandos comumente utilizados para transferência entre classes de dados no MATLAB:

double (x) : Converte os dados (x) de qualquer classe para a classe double, números

fracionários 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, é necessário converter a mesma para uint8 ao final dos processos antes de gravar.

Assim, outros softwares poderão ler a imagem processada sem maiores problemas.

Muito importante:

Ao visualizar alguma imagem na tela, a função 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 função imshow desta imagem

mostrará o valor 0 como preto e o valor 255 como branco. Os demais valores intermediários

receberão diferentes níveis de cinza de acordo com o seu valor. Se por acaso a imagem

possuir a classe double, a função imshow mostrará o valor 0 como preto, e o valor 1 como

branco. Os demais valores fracionários entre 0 e 1 receberão diferentes níveis de cinza.

9 Acostume-se a sempre que abrir a imagem no workspace transformar ela para class double.

Page 11: COMANDOS BÁSICOS VOLTADOS AO PROCESSAMENTO …academico.riogrande.ifrs.edu.br/~daniel.zanotta/arquivos/Apostila... · A toolbox de processamento de imagens do MATLAB conta com os

11

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 máximo da classe uint8). Dessa forma,

todos os valores da imagem ficarão entre 0 e 1, e quando a imagem for apresentada na tela por

imshow apresentará os valores corretos de níveis de cinza. Caso essa divisão por 255 não seja

feita, pixels com valores maiores que 1 ficarão 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 operação converte os números 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 (máximo valor)

>> imshow = img(: , : , [R G B]) / 255);

10

4) Processar a imagem

Salvar:

1) Converter a imagem para uint8 >> img = uint8 (img);

2) Salvar com a função imwrite, imsave ou geotiffwrite;

4 REPRESENTAÇÃO DE IMAGENS DIGITAIS

O termo imagem refere-se à função 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 níveis de cinza) da imagem naquele ponto.

Uma imagem digital é uma imagem f(x, y), duas dimensões, 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 nível de cinza naquele

ponto. A Convenção dos eixos para representação de imagens digitais no Processamento de

Imagens é diferente da convenção usada na Computação Gráfica.

10

Se for imagem 8 bits 28 = 256.

11 Onde usam-se penas valores inteiros.

Page 12: COMANDOS BÁSICOS VOLTADOS AO PROCESSAMENTO …academico.riogrande.ifrs.edu.br/~daniel.zanotta/arquivos/Apostila... · A toolbox de processamento de imagens do MATLAB conta com os

12

Figura 4.1 Convenção dos eixos para representação de imagens digitais

Os elementos dessa matriz digital são chamados de elementos da imagem, elementos da

figura, "pixels" , abreviação de "picture elements" (elementos da figura). Quanto mais pixels

uma imagem tiver, melhor é a sua resolução e qualidade. A imagem abaixo mostra como uma

imagem em níveis de cinza é representada através de uma matriz composta por números

inteiros, cada um com um certo valor correspondente a um nível de cinza.

Page 13: COMANDOS BÁSICOS VOLTADOS AO PROCESSAMENTO …academico.riogrande.ifrs.edu.br/~daniel.zanotta/arquivos/Apostila... · A toolbox de processamento de imagens do MATLAB conta com os

13

Figura 4.2 (a) imagem digital com grupo de pixels selecionados; (b) zoom da janela de

9x9 pixels; (c) valor dos contadores digitais da função f(x, y). Fonte: CEPSRM-UFRGS.

4.1 Histograma da Imagem

Numa imagem, a informação da quantidade de vezes que uma determinada cor se repete

representa o histograma dessa imagem. Como as imagens são formadas por diversas matrizes

sobrepostas, o histograma é gerado banda por banda separadamente. Uma informação assim

sobre a imagem é importante, pois pode gerar parâmetros para a avaliação da qualidade da

mesma, como nitidez, luminosidade e profundidade.

A função 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 traçado.

>> imhist (I , N) exibe o histograma usando N posições ao invés de 256.

Page 14: COMANDOS BÁSICOS VOLTADOS AO PROCESSAMENTO …academico.riogrande.ifrs.edu.br/~daniel.zanotta/arquivos/Apostila... · A toolbox de processamento de imagens do MATLAB conta com os

14

Figura 4.3 Exemplo de Histograma de Imagem.

4.2 Imagens Coloridas

As imagens obtidas por sensores eletrônicos, em diferentes canais, são formadas por

níveis de cinza (imagens monocromáticas). A quantidade de energia refletida pelos objetos

vai determinar a intensidade dos níveis de cinza entre o branco (quando refletem toda a

energia) e o preto (quando absorvem toda a energia). Ao combinar as imagens

monocromáticas produzidas por cada banda através das cores azul, verde e vermelho (cores

primárias), é possível gerar imagens ou composições 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 visualização.

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)

Page 15: COMANDOS BÁSICOS VOLTADOS AO PROCESSAMENTO …academico.riogrande.ifrs.edu.br/~daniel.zanotta/arquivos/Apostila... · A toolbox de processamento de imagens do MATLAB conta com os

15

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 técnicas originalmente desenvolvidas para tratamento de sinais unidimensionais

foram, em primeiro lugar, adaptadas para tratamento de imagens obtidas de satélites e de

naves espaciais. Posteriormente, com o rápido avanço das opções de hardware e software,

estas mesmas técnicas passaram a ser aplicadas em inúmeros domínios tais como fotografia,

medicina, ciência dos materiais, microscopia, artes, etc...

O primeiro passo no processo é a aquisição 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 câmera fotográfica que

adquire fotografias de áreas inteiras de uma só vez. O sensor de imageamento poderia também

ser uma câmera de varredura por linha que produza uma única linha de imagem por vez, como

no caso dos Satélites de Sensoriamento Remoto. Vale lembrar que se a saída da câmera ou

outro sensor de imageamento não se encontrar na forma digital, um conversor analógico-

digital realiza a digitalização, um Scanner, por exemplo. A natureza do sensor e da imagem

que ele produz são determinadas pela aplicação. As imagens digitais tomadas por sensores

remotos podem ser adquiridas por provedores na internet. São exemplos desses provedores a

Divisão de Geração de Imagens do Instituto Nacional de Pesquisas Espaciais (DGI-INPE),

acessível em www.dgi.inpe.br através de um pequeno cadastro, ou United States Geological

Survey USGS – NASA em www.usgs.gov .

Após a obtenção de uma imagem digital, o próximo passo trata de pré-processar a

imagem. A função chave no pré-processamento é melhorar a imagem de forma a aumentar as

chances para o sucesso dos processos que serão aplicados na etapa de processamento. Nesse

Page 16: COMANDOS BÁSICOS VOLTADOS AO PROCESSAMENTO …academico.riogrande.ifrs.edu.br/~daniel.zanotta/arquivos/Apostila... · A toolbox de processamento de imagens do MATLAB conta com os

16

exemplo, o pré-processamento tipicamente envolve técnicas para calibração radiométrica,

remoção de ruídos, correção atmosférica e seleção da região a ser estudada.

O processamento, realizado após o pré-processamento, visa à extração de informações

úteis para uma determinada aplicação. São exemplos disso aplicações urbanas, florestais,

cultivo agrícola, desastres naturais, detecção de mudanças, mapeamento de diversos tipos em

diversas escalas e estudos meteorológicos. A variedade desses processos será estudada uma a

uma nos capítulos seguintes.

6 REFERÊNCIAS

BASTOS, V.P. Técnicas de Segmentação de Imagens para Recuperação de Informações

Visuais.

FLORENZANO, Tereza Gallotti. Imagens de satélites para estudos ambientais. São Paulo: Oficina de

Textos, 2002.

CROSTA, Álvaro Penteado - Processamento Digital de Imagens de Sensoriamento Remoto. Ed. Rev. -

Campinas, SP: IG/UNICAMP, 1993.

Engenharia Cartográfica – UFRGS - Página Dinâmica para Aprendizado do Sensoriamento

Remoto (PDASR).

Page 17: COMANDOS BÁSICOS VOLTADOS AO PROCESSAMENTO …academico.riogrande.ifrs.edu.br/~daniel.zanotta/arquivos/Apostila... · A toolbox de processamento de imagens do MATLAB conta com os

17

Histograma da Imagem

O histograma de uma imagem fornece informação útil para fazer realce e análise da

imagem. O histograma de uma imagem revela a distribuição dos níveis de cinza da imagem. É

representado por um gráfico que dá o número de pixels na imagem para cada nível de cinza.

Definição: 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 número de vezes que o nível 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');

Page 18: COMANDOS BÁSICOS VOLTADOS AO PROCESSAMENTO …academico.riogrande.ifrs.edu.br/~daniel.zanotta/arquivos/Apostila... · A toolbox de processamento de imagens do MATLAB conta com os

18

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 técnicas de realce é processar uma imagem, de modo que o

resultado seja mais apropriado para uma aplicação específica do que a imagem original [1].

As Técnicas de realce podem ser baseadas em processamento ponto-a-ponto, que modifica o

nível de cinza de um pixel independentemente da natureza de seus vizinhos, ou pelo processo

de filtragem, onde o novo valor depende também dos valores dos pontos vizinhos do ponto a

ser processado.

Contraste

Page 19: COMANDOS BÁSICOS VOLTADOS AO PROCESSAMENTO …academico.riogrande.ifrs.edu.br/~daniel.zanotta/arquivos/Apostila... · A toolbox de processamento de imagens do MATLAB conta com os

19

A manipulação do contraste de uma imagem tem como objetivo melhorar a sua qualidade

visual sob critérios subjetivos ao olho humano. Esse processo não aumenta a quantidade de

informação contida na imagem, mas torna mais fácil a sua percepção. É normalmente

utilizada como uma etapa de pré-processamento.

Tipicamente, os sensores são capazes de discretizar os valores recebidos da cena em um

intervalo máximo que vai de 0 até 255 (8 bits = 256 possíveis valores). Devido à má

iluminação, defeitos do sensor ou mesmo às características da cena, o intervalo de valores de

intensidade ocupados pelos pixels presentes em uma imagem, pode ser muito menor que esse

intervalo máximo. Diz-se então que a imagem possui baixo contraste, o que torna difícil a sua

visualização ou interpretação por um intérprete 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 são razoavelmente espalhadas

ao longo de todo o intervalo da escala. Por exemplo, a imagem da Figura 05 (Mercado

Público - Pelotas/RS) e seu histograma (Figura 06). Já o histograma mostrado na Figura 08

tem uma forma estreita que indica uma escala dinâmica 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 realçamento de contraste pode ser feito mapeando as variações dentro do intervalo de

tons de cinza [Vmin-Vmax] da imagem original para a variação máxima do dispositivo de

Page 20: COMANDOS BÁSICOS VOLTADOS AO PROCESSAMENTO …academico.riogrande.ifrs.edu.br/~daniel.zanotta/arquivos/Apostila... · A toolbox de processamento de imagens do MATLAB conta com os

20

visualização que, geralmente, é [0, 255]. Vmin e Vmax são os valores de níveis de cinza

mínimos e máximos, respectivamente, presentes na imagem original.

O mapeamento é realizado através de uma função de mapeamento. Cada valor de nível de

cinza na imagem original é mapeado para um novo valor de acordo com uma função de

transferência, que pode ser definida como:

y =f(x)

onde: x é o nível de cinza original e y é o novo valor correspondente.

A escolha da função f determina qual será o efeito visual obtido, e deve ser escolhida de

acordo com a imagem original e o efeito desejado. Em uma transformação linear, os valores

de níveis de cinza dos pixels são escalonados de tal forma que todos os pixels com valores

Vmin e Vmax são mapeados para 0 e 255, respectivamente. Da mesma forma, os outros

valores de níveis de cinza são mapeados para valores entre 0 e 255.

Normalmente, a forma do histograma da imagem realçada é a mesma da imagem original,

pois cada barra do histograma continua tendo a mesma altura, porém em uma posição

diferente. No entanto, algumas vezes a função de transferência causa uma sobreposição de

valores, ou seja, dois ou mais valores x são mapeados para o mesmo valor y.

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

mínimo ou máximo na imagem original diz-se que, ocorreu uma saturação (overflow) e uma

perda de informação, 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 regiões escuras da

imagem com pequenas variações radiométricas correspondem a áreas com o mesmo tipo de

cobertura as quais não se deseja diferenciar.

Um procedimento de modificação de contraste útil é o mapeamento linear por partes

com a função de mapeamento caracterizada por um conjunto de pontos de quebra, que pode

ser escolhido pelo usuário. Funções de mapeamento não-lineares podem ser usadas para

realçar detalhes específicos na imagem.

Uma função linear também utilizada é a função negativa. Ela realiza o mapeamento

inverso dos níveis de cinza, revertendo a ordem do preto para o branco, de tal forma que

pixels com intensidade clara serão mapeados para escuro e vice-versa.

A escolha do mapeamento direto adequado é, em geral, essencialmente empírica, mas

existe uma classe de métodos nos quais o mapeamento tem por finalidade produzir uma

imagem cujo histograma tenha um formato desejado.

Um destes métodos é a equalização de histograma.

Na equalização de histograma o mapeamento tem por finalidade produzir uma imagem cujo

histograma tenha um formato desejado. A equalização modifica o histograma da imagem

original de tal forma que a imagem transformada tenha um histograma uniforme, ou seja,

todos os níveis de cinza devem aparecer na imagem com a mesma freqüência.

Page 21: COMANDOS BÁSICOS VOLTADOS AO PROCESSAMENTO …academico.riogrande.ifrs.edu.br/~daniel.zanotta/arquivos/Apostila... · A toolbox de processamento de imagens do MATLAB conta com os

21

Exemplo:

Dada uma Imagem de n x m Pixels e “g” níveis de cinza.

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

A equalização pode ser obtida através da aplicação da formúla:

Onde: g = níveis de cinza da Imagem Original

q = níveis de cinza da Imagem Equalizada

Figura 09) Imagem original e seu histograma[2]

Figura 10) Imagem equalizada e seu histograma[2]

Page 22: COMANDOS BÁSICOS VOLTADOS AO PROCESSAMENTO …academico.riogrande.ifrs.edu.br/~daniel.zanotta/arquivos/Apostila... · A toolbox de processamento de imagens do MATLAB conta com os

22

Na prática, a obtenção de um histograma perfeitamente uniforme não é possível devido à

natureza das imagens digitais de sensoriamento remoto, cujos pixels podem assumir somente

valores discretos. Existem técnicas para melhorar este problema, mas pode acontecer de áreas

homogêneas na imagem original aparecerem "pipocadas", por que tons de cinza iguais são

mapeados para níveis de cinza diferentes.

O processo de equalização pode levar a falsos contornos na imagem, pois o número de

níveis de cinza pode ser reduzido. A equalização pode ter um efeito de realce notável da

imagem, mas o contraste pode ser muito forte e, por isto a equalização de histograma deve ser

usada com muito cuidado.