processamento de imagens: métodos e...

57
Processamento de Imagens: Métodos e Análises Márcio Portes de Albuquerque e Marcelo Portes de Albuquerque [email protected] e [email protected] Centro Brasileiro de Pesquisas Físicas – CBPF/MCT Coordenação de Atividades Técnicas - CAT Rua Dr. Xavier Sigaud n.150 – 22290-180 – Rio de Janeiro - Brasil Resumo Neste artigo procuramos dar uma visão da área de processamento digital de imagens e suas aplicações. Abordamos conceitos importantes sobre a representação espacial de um pixel, a medida de distâncias, a segmentação de uma imagem e o reconhecimento de formas. Utilizamos situações reais para exemplificarmos as técnicas apresentadas. É nosso objetivo abordar de forma introdutória e simplificada o tema. Ao final discutimos sobre os diversos pacotes existentes para processamento digital de imagens e apresentamos uma bibliografia útil para se aprofundar em processamento de imagens e visão por computador. I. Introdução O Processamento de imagens é certamente uma área em crescimento. Diversos temas científicos são abordados e em alguns casos de caráter interdisciplinar. Entre eles podemos citar: a compreensão de imagens, a análise em multi-resolução e em multi-frequência, a análise estatística, a codificação e a transmissão de imagens, etc. Mas o que faz do processamento de imagens uma disciplina tão particular e complexa ? O que faz com que não tenhamos ainda sistemas de alta performance de reconhecimento de caracteres ou de formas mais complexas ? A resposta a estas questões serão discutidas ao longo deste artigo onde apresentaremos problemas e aplicações que demandam técnicas especializadas de processamento de imagens com o intuito de compreender e responder a estas questões. A disciplina “Processamento de Imagens” vem na realidade do Processamento de Sinais. Os sinais, como as imagens, são na realidades um suporte físico que carrega no seu interior uma determinada INFORMAÇÃO. Esta INFORMAÇÃO pode estar associada a uma medida (neste caso falamos de um sinal em associação a um fenômeno físico), ou pode estar associada à um nível cognitivo (neste caso falamos de conhecimento). Processar uma imagem consiste em transformá-la sucessivamente com o objetivo de extrair mais facilmente a INFORMAÇÃO nela presente. Cabe neste momento fazer uma comparação entre o Processamento de Imagem e área de Computação Gráfica, técnica que encontramos freqüentemente aplicadas através de seqüências animadas na televisão ou em filmes de cinema. A Computação Gráfica parte de uma INFORMAÇÃO precisa para obter uma imagem ou um filme. O Processamento de Imagens parte da imagem (de uma informação inicial que é geralmente captada por uma camera) ou de uma seqüência de imagens para obtermos a “INFORMAÇÃO”. Deste ponto de vista o Processamento de Imagens e a Computação Gráfica são exatamente métodos opostos, mas isto não quer dizer que as técnicas envolvidas em cada caso não possam ser as mesmas ou pelo menos complementares [1, 2 e 3]. É evidente que neste sentido processar uma imagem, como é feito pelo sistema visual humano (SVH), é extremamente complexo [4, 5, 6 e 7]. Realizar as mesmas tarefas que o SVH, com a ajuda de máquinas, exige por antecedência uma compreensão “filosófica” do mundo ou dos conhecimentos humanos. Esta característica faz com que o processamento de imagens seja, atualmente, uma disciplina com extrema dependência do sistema no qual ele está associado, não existindo no entanto uma solução única e abrangente para todos os problemas. Daí a NÃO existência, até o momento, de sistemas de análise de imagens complexos e que funcionem para todos os casos. A analise quantitativa e a interpretação de imagens representa atualmente um ponto de apoio importante em diversas disciplinas científicas. Tal é o caso por exemplo na ciência dos materiais, na biofísica, na medicina, na física da matéria condensada, etc. Na realidade a diversidade de aplicações

Upload: phamnguyet

Post on 09-Nov-2018

226 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Processamento de Imagens: Métodos e Análisesmesonpi.cat.cbpf.br/e2002/cursos/NotasAula/PDSI.pdf · processamento de imagens e visão por computador. I. Introdução ... codificação

Processamento de Imagens: Métodos e Análises

Márcio Portes de Albuquerque e Marcelo Portes de Albuquerque [email protected] e [email protected]

Centro Brasileiro de Pesquisas Físicas – CBPF/MCT Coordenação de Atividades Técnicas - CAT

Rua Dr. Xavier Sigaud n.150 – 22290-180 – Rio de Janeiro - Brasil

Resumo Neste artigo procuramos dar uma visão da área de processamento digital de imagens e suas aplicações. Abordamos conceitos importantes sobre a representação espacial de um pixel, a medida de distâncias, a segmentação de uma imagem e o reconhecimento de formas. Utilizamos situações reais para exemplificarmos as técnicas apresentadas. É nosso objetivo abordar de forma introdutória e simplificada o tema. Ao final discutimos sobre os diversos pacotes

existentes para processamento digital de imagens e apresentamos uma bibliografia útil para se aprofundar em processamento de imagens e visão por computador.

I. Introdução

O Processamento de imagens é certamente uma área em crescimento. Diversos temas

científicos são abordados e em alguns casos de caráter interdisciplinar. Entre eles podemos citar: a

compreensão de imagens, a análise em multi-resolução e em multi-frequência, a análise estatística, a

codificação e a transmissão de imagens, etc. Mas o que faz do processamento de imagens uma

disciplina tão particular e complexa ? O que faz com que não tenhamos ainda sistemas de alta

performance de reconhecimento de caracteres ou de formas mais complexas ? A resposta a estas

questões serão discutidas ao longo deste artigo onde apresentaremos problemas e aplicações que

demandam técnicas especializadas de processamento de imagens com o intuito de compreender e

responder a estas questões.

A disciplina “Processamento de Imagens” vem na realidade do Processamento de Sinais. Os

sinais, como as imagens, são na realidades um suporte físico que carrega no seu interior uma

determinada INFORMAÇÃO. Esta INFORMAÇÃO pode estar associada a uma medida (neste caso falamos

de um sinal em associação a um fenômeno físico), ou pode estar associada à um nível cognitivo (neste

caso falamos de conhecimento). Processar uma imagem consiste em transformá-la sucessivamente

com o objetivo de extrair mais facilmente a INFORMAÇÃO nela presente. Cabe neste momento fazer uma

comparação entre o Processamento de Imagem e área de Computação Gráfica, técnica que

encontramos freqüentemente aplicadas através de seqüências animadas na televisão ou em filmes de

cinema. A Computação Gráfica parte de uma INFORMAÇÃO precisa para obter uma imagem ou um filme.

O Processamento de Imagens parte da imagem (de uma informação inicial que é geralmente captada

por uma camera) ou de uma seqüência de imagens para obtermos a “INFORMAÇÃO”. Deste ponto de

vista o Processamento de Imagens e a Computação Gráfica são exatamente métodos opostos, mas

isto não quer dizer que as técnicas envolvidas em cada caso não possam ser as mesmas ou pelo

menos complementares [1, 2 e 3]. É evidente que neste sentido processar uma imagem, como é feito

pelo sistema visual humano (SVH), é extremamente complexo [4, 5, 6 e 7]. Realizar as mesmas tarefas

que o SVH, com a ajuda de máquinas, exige por antecedência uma compreensão “filosófica” do mundo

ou dos conhecimentos humanos. Esta característica faz com que o processamento de imagens seja,

atualmente, uma disciplina com extrema dependência do sistema no qual ele está associado, não

existindo no entanto uma solução única e abrangente para todos os problemas. Daí a NÃO existência,

até o momento, de sistemas de análise de imagens complexos e que funcionem para todos os casos.

A analise quantitativa e a interpretação de imagens representa atualmente um ponto de apoio

importante em diversas disciplinas científicas. Tal é o caso por exemplo na ciência dos materiais, na

biofísica, na medicina, na física da matéria condensada, etc. Na realidade a diversidade de aplicações

Page 2: Processamento de Imagens: Métodos e Análisesmesonpi.cat.cbpf.br/e2002/cursos/NotasAula/PDSI.pdf · processamento de imagens e visão por computador. I. Introdução ... codificação

2

do processamento de imagens, está associada diretamente a análise da INFORMAÇÃO que falamos

acima. Pois em todas estas disciplinas estamos na realidade em busca de informações quantitativas

que representem um fenômeno estudado. Quando observamos do ponto de vista da ótica, uma

imagem é um conjunto de pontos que convergem para formar um todo, mas podemos dizer de uma

maneira mais ampla que uma imagem é o suporte para efetuarmos troca de INFORMAÇÕES. O termo

imagem estava inicialmente associado ao domínio da luz visível, porém atualmente é muito freqüente

ouvirmos falar de imagens quando uma grande quantidade de dados estão representados sob a forma

bidimensional (por exemplo: as imagens acústicas, sísmicas, de satélites, infravermelhas, magnéticas

etc). Os métodos recentes de exploração automática desta informação permitiu o desenvolvimento de

técnicas complexas, que podem ser globalmente classificadas em duas grandes linhas. A primeira está

associada a uma ANÁLISE da informação e a segunda representa as técnicas que permitam obter uma

MELHORIA (do termo em inglês “ENHANCEMENT”) significativa da imagem. Nos parágrafos posteriores

vamos discutir cada uma destas linhas.

I.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.

I.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 é

Page 3: Processamento de Imagens: Métodos e Análisesmesonpi.cat.cbpf.br/e2002/cursos/NotasAula/PDSI.pdf · processamento de imagens e visão por computador. I. Introdução ... codificação

3

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.

I.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.

I.4 - Sistemas Experimentais

Quando o sistema se restringe a sistemas experimentais, isto é, ele é orientado para a solução

de um problema específico, a tarefa prática é de uma certa forma simplificada, pois poderemos

controlar alguns parâmetros que um sistema geral de visão não tem acesso. A dificuldade está no fato

de que devemos dar uma descrição objetiva ao problema e para aquelas análises que são científicas é

ainda importante que esta descrição seja quantitativa. O objetivo neste caso é desenvolver um sistema

de tratamento da informação onde cada fase vai exigir métodos para retirar da imagem os parâmetros

que exprimam esta informação. Fica assim evidente que o processamento de imagens, quando

associado a sistemas experimentais, é bastante dependente do problema a ser resolvido. Neste

instante as fases de pré-tratamento (seja na imagem ou fora dela, como por exemplo o controle da

iluminação externa) podem ter um peso importante quando queremos aumentar a performance

computacional do sistema. Um sistema de processamento de imagens pode ser de uma maneira geral

dividido nas seguintes etapas:

Page 4: Processamento de Imagens: Métodos e Análisesmesonpi.cat.cbpf.br/e2002/cursos/NotasAula/PDSI.pdf · processamento de imagens e visão por computador. I. Introdução ... codificação

4

ETAPA DESCRIÇÃO

1. Tratamento fora da imagem Correção de iluminação, uso de colorantes químicos, etc.

2. Aquisição da imagem Amostragem, armazenamento e compactação. 3. Melhoramento (“image enhancement”) * Pré-tratamento digital da imagem. 4. Segmentação da informação * Extração dos “objetos” do “fundo” da imagem

5. Parametrização * Determinação de grandezas sobre cada “objeto”: área, perímetro, forma, descrição estrutural, topologia, etc

6. Reconhecimento * Classificação dos “objetos”

7. Análise Quantitativa: * Aplicação da ferramenta a outras áreas científicas.

Associação das grandezas ao problema: determinação de funções de correlação espacial ou temporal, análise de seqüência de imagens, etc.

* - Fases com extrema dependência ao problema onde o Proc. de Imagens está aplicado.

Discutimos até aqui questões importantes e essenciais para a compreensão de um sistema de

processamento de imagens quando utilizado como ferramenta para a solução de um determinado

problema. Nos pontos seguintes vamos entrar mais em detalhes nas técnicas de processamento e em

especial discutiremos os elementos principais de um sistema digital de processamento de imagens.

Discutiremos também as técnicas e os problemas que podemos encontrar na implementação de

sistemas de processamento de imagens: como a discretização, a medida de distâncias em imagens

digitais, a conectividade entre pixels etc. Veremos ao final técnicas de filtragem espacial, segmentação

de imagem e reconhecimento de formas.

II - Sistema de Processamento de Imagens

Um sistema de processamento de imagens pode ser dividido em diversos componentes

independentes, como mostrados na figura 1.

Figura 1 - Diagrama em blocos de um sistema genérico de processamento de imagens. O retângulo

pontilhada indica as partes encontradas atualmente nos sistemas de processamento de imagens comercializados. O poder do processamento esta associado a potencialidade do processador gráfico e a capacidade de estocagem de imagens na memória principal. A organização desta memória pode variar segundo a resolução ou a necessidade de

estocagem de grande quantidades de imagens. Veja o texto para maiores detalhes.

Page 5: Processamento de Imagens: Métodos e Análisesmesonpi.cat.cbpf.br/e2002/cursos/NotasAula/PDSI.pdf · processamento de imagens e visão por computador. I. Introdução ... codificação

5

O módulo de entrada é constituído por uma camera que capta a imagem real de uma cena.

Esta camera envia a informação sob a forma de sinal analógico de vídeo, à um conversor analógico

digital. A imagem é então representada na forma digital. Uma imagem digital é discretizada

espacialmente (ou seja em x e y) e em luminância (níveis de cinza). A título de exemplo, uma imagem

típica de 640x480 por 256 níveis-de-cinza tem 307.200 bytes. Alguns exemplos de módulos de

aquisição são: as cameras à tubo (Vidicom) ou CCD, os scanners ou ainda alguns sensores dedicados

(como sistemas de infravermelho, mapeamento magnético de uma superfície, sensoriamento de

radares, etc). A camera de vídeo é o sensor de aquisição de imagem mais freqüentemente utilizado.

Uma camera de vídeo apresenta características de sensibilidade, resolução e função de transferência

(entre a imagem captada da cena e a intensidade do sinal de vídeo fornecido). Algumas cameras mais

sofisticadas permitem ainda controlar o “offset” ou ganho do sinal de vídeo, possibilitando uma correção

do contraste da imagem em tempo real. Em alguns casos podemos encontrar módulos que permitem o

ajuste da iluminação de fundo ou ainda realçar os contornos dos objetos através da execução de

funções específicas [2].

O sinal de vídeo gerado pelo dispositivo de aquisição é convertido em sinal discreto pelo

conversor A/D. Este conversor é um dispositivo de conversão especial para sinais de vídeo, onde a

aquisição é realizada segundo a padronização do sinal de vídeo (linha a linha). Após a conversão da

imagem pelo módulo de conversão analógica digital, cada intensidade indexa uma tabela de conversão.

Esta tabela é conhecida como "Look-up table" ou simplesmente LUT. As LUTs são na realidade

memórias que possibilitam a modificação das intensidades adquiridas por valores pré-programados.

Podemos por exemplo configurar uma LUT com uma função específica e corrigir, em tempo real, o

contraste de uma imagem que esta sendo adquirida pelo ADC. A imagem digital é em seguida

armazenada em uma memória principal de acesso exclusivo de um processador gráfico. Este

processador é bastante dependente do sistema de processamento de imagens utilizado. Em alguns

casos, por questões de custos, ele pode mesmo não existir, deixando todo o processamento para o

processador principal no computador de controle.

Neste texto considerarmos somente imagens em níveis de cinza, pois grande parte dos

algoritmos de análise de imagens coloridas são feitas recombinando as componentes de cores e

trabalhando com a informação de luminância somente. No caso de imagens coloridas cada

componente da imagem ("Red", "Green" e "Blue") é armazenada separadamente na memória principal.

A imagem de saída é geralmente reconstruída através de conversores digitais /Analógicos

(DAC), onde são somados pulsos de sincronização para geração do sinal de vídeo. Este formato de

sinal é bastante utilizado por ser padrão adotado por todos os fabricantes de equipamentos de vídeo.

Antes de ser reconvertido o sinal pode passar por outra LUT, desta vez a LUT de saída, que é uma

tabela de indexação dos níveis de cinza na imagem para os níveis de saído enviado ao display gráfico.

Podemos por exemplo configurar esta tabela com falsas cores e observarmos "on-line" diferentes

regiões com cores diferentes. A figura 2 apresenta um exemplo da técnica de "falsas cores" usada em

uma imagem de aglomerações de líquidos magnéticos. As células observadas na figura correspondem

a uma maior densidade do líquido magnético, observada através de uma técnica conhecida como

Densimetria. A fonte luminosa envia um feixe de luz através do líquido. Cada pixel na imagem digital

Page 6: Processamento de Imagens: Métodos e Análisesmesonpi.cat.cbpf.br/e2002/cursos/NotasAula/PDSI.pdf · processamento de imagens e visão por computador. I. Introdução ... codificação

6

representa na realidade uma medida da absorção da luz pelo líquido. Nas regiões mais escuras a

absorção da luz é maior, nas mais claras esta é menor. As falsas cores permitem rapidamente

relacionar as regiões equivalentes (em intensidade luminosa) em diferentes partes da imagem.

Figura 2 - Uso de falsas cores : A imagem da esquerda corresponde a uma estrutura hexagonal de um

liquido magnético semi-transparente observada em detalhes. Cada célula apresenta aproximadamente 0.5cm de diâmetro. Cada ponto da imagem corresponde a uma medida de absorção da luz. A absorção é maior no centro das

células que nas suas bordas. Numa imagem em níveis de cinza é praticamente impossível identificar as mesmas intensidades (absorção) em diferentes objetos. A imagem da direita corresponde a mesma da esquerda, mas com uma LUT de cores. Cada nível, ou regiões contíguas são associadas a diferentes cores, indo do preto ao amarelo,

passando pelo vermelho.

III - Pixel e Conectividade.

Um pixel ("picture element" ou "pel") é o elemento básico em uma imagem. A forma mais

comum para o pixel é a forma retangular ou quadrada. O pixel é também um elemento de dimensões

FINITAS na representação de uma imagem digital. Freqüentemente, a organização de uma imagem

sob a forma de uma matriz de pixels é feita em uma simetria quadrada, i.e., na forma de um tabuleiro

de xadrez. Isto se deve a facilidade de implementação eletrônica, seja dos sistemas de aquisição seja

dos sistemas de visualização de imagens. É importante lembrar que este tipo de organização provoca o

aparecimento de dois problemas importantes nas técnicas de processamento. Em primeiro lugar um

pixel não apresenta as mesmas propriedades em todas as direções, i.e., ele é anisotrópico. Esta

propriedade faz com que um pixel tenha 4 vizinhos de borda e 4 vizinhos de diagonal. Esta propriedade

nos força a definir o tipo de conectividade que vamos trabalhar, ou D4 (onde levamos em consideração

apenas os vizinhos de borda) ou em D8 (onde levamos em consideração os vizinhos de borda e os de

diagonal). O segundo problema é conseqüência direta do primeiro, ou seja as distâncias entre um

ponto e seus vizinhos não é a mesma segundo o tipo de vizinho (ela é igual a 1 para vizinhos de borda

e 2 para aqueles na diagonal). Alguns tipos de algoritmos que são sensíveis a este problema são : as

operações morfológicas que usam uma matriz de análise do tipo 3x3, as operações de esqueletização

em análise de formas e principalmente as transformações de Distâncias (na transformação de distância

cada ponto da imagem ao invés de representar uma intensidade luminosa, representa uma distância de

um dado ponto referência ao ponto calculado). A solução para este tipo de representação discreta da

imagem, é a correção dos valores calculados através de máscaras (pequenas matrizes) que ajustam ou

ponderam estas distâncias em função da direção. O leitor deve atentar para as possíveis complicações

em medidas de distâncias quando trabalhamos com um pixel que não seja de forma quadrada.

Região de Interesse

Um conceito importante em processamento de imagens é a Região de Interesse. Entende-se

como Região de Interesse (ROI - "Region Of Interest" ou AOI - "Area Of Interest") a região definida

Page 7: Processamento de Imagens: Métodos e Análisesmesonpi.cat.cbpf.br/e2002/cursos/NotasAula/PDSI.pdf · processamento de imagens e visão por computador. I. Introdução ... codificação

7

automaticamente a partir de parâmetros obtidos na própria imagem (ou por um usuário) onde o

processamento estará totalmente concentrado. Podemos, por exemplo, definir uma região de interesse

onde sabemos por antecedência que a iluminação de fundo é constante ou foi corrigida. Normalmente,

nas técnicas de processamento de imagens iremos sempre encontrar problemas no tratamento das

bordas da imagem. A criação de regiões de interesse faz com que apareçam também problemas nas

bordas das regiões de interesse. A solução deste problema é completamente dependente do problema

ao qual o processamento de imagens esta associado, i.e., ao que conhecemos e podemos levar em

consideração anteriormente ao processamento.

IV - Distâncias

Quando trabalhamos com imagens é muito freqüente medirmos distâncias. Em muitos casos

usamos a definição clássica de distância euclidiana entre dois pontos. Porem devido aos problemas

apresentados no parágrafo anterior se torna evidente que a simetria quadrada interfere na execução de

alguns algoritmos. Existem diferentes medidas de distância em função da conectividade utilizada. Por

exemplo se considerarmos dois pontos p(x,y), q(s,t), da figura 3, teremos as seguintes definições de

distância.

Figura 3 - Conexão entre dois pontos p(x,y) e q(s,t). A distância entre estes dois pontos pode

ser determinada de diversas maneiras. Os números 1 e 2 representam os pixels que seriam percorridos somente uma vez nas duas representações possíveis quando saímos de p para q. O número 3 indica

os pixels percorridos pelos dois caminhos.

• Distância Euclidiana :De p q x s y t( , ) ( ) ( )= − + −2 2

• D4 ou Distância “Manhattan” : D p q x s y t4( , ) = − + − . É importante lembrar que em D4 só podemos nos movimentar para a horizontal e para vertical. Os caminhos mostrados pela figura 3 não servem para D4.

• D8 ou Distância Tabuleiro de Xadrez: D p q Max x s y t8( , ) ( , )= − − . Veja os dois caminhos representados na figura 3.

Por exemplo, considere a medida do perímetro de uma determinada forma, como aquela

mostrada na figura 4. Em uma imagem digital o perímetro de uma determinada forma corresponde a

contagem dos pixels pertencente a borda do objeto. É importante lembrar que em alguns casos, antes

de realizarmos a medida de distâncias devemos antes isolar a forma do resto da image (discutiremos

este tópico no capitulo dedicado a Segmentação). Devemos conectar todos os pixels que pertençam ao

seu contorno para em seguida podermos medir o seu perímetro. Na forma representada na figura 4

estamos supondo já conhecermos todos os pontos que pertençam a sua borda, para em seguida

calcularmos o seu perímetro.

Page 8: Processamento de Imagens: Métodos e Análisesmesonpi.cat.cbpf.br/e2002/cursos/NotasAula/PDSI.pdf · processamento de imagens e visão por computador. I. Introdução ... codificação

8

Figura 4 - Determinação do perímetro de uma forma usando conectividade D8. Após isolar o objeto do

fundo da imagem, devemos identificar os pontos que pertençam ao seu contorno. Escolhemos um ponto inicial ao acaso e em seguida estes pontos devem ser conectados para efetuarmos o cálculo do seu comprimento. O leitor deve atentar para o fato de que segundo o tipo de conectividade adotada (D4 ou D8) teremos valores diferentes

para o perímetro.

V - Filtragem

Em processamento de imagens, os filtros lineares são geralmente descritos através de

matrizes de "convolução". Não iremos aqui entrar em detalhes de filtros lineares, pois este assunto foge

ao escopo deste artigo, mas apenas descrever basicamente alguns pontos importantes em filtragens.

Maiores detalhes sobre este assunto pode ser encontrado em [1, 8 e 9]. Um filtro numérico vai

influenciar a variação da freqüência espacial em uma imagem. Na freqüência temporal a escala usada

é geralmente o Hertz (s-1), em uma imagem usamos o 1/metro (m-1) ou 1/pels (pix-1). O termo

freqüência espacial é análogo ao termo freqüência temporal e ela descreve a velocidade de

modificação de uma luminosidade em uma direção em uma imagem.

Na prática, para realizarmos uma operação de filtragem espacial, devemos escolher uma

matriz de dimensão n x n com valores que dependem do filtro que queremos usar, seja ele passa baixa

(filtrando as altas freqüências), passa faixa (filtrando uma região específica de freqüências espaciais)

ou passa alta (filtrando as baixas freqüências). Em uma imagem, as altas freqüências correspondem as

modificações abruptas dos níveis de cinza, i.e., as bordas dos objetos. As baixas freqüências

correspondem as variações suaves dos níveis de cinza. Logo quando queremos evidenciar os

contornos de um determinado objeto podemos usar filtros do tipo passa-alta. Em outros casos podemos

estar interessado na forma da iluminação de fundo, onde devemos usar filtros passa-baixa para

eliminarmos todas as altas freqüências correspondendo a borda dos objetos, e chegar a iluminação de

fundo.

Resumidamente na figura 5 apresentamos 3 filtros clássicos representados em uma pequena

matriz 3x3 e seu efeito numa imagem exemplo (Fig. 5a). Toda as operações realizadas consistem em

gerar uma nova imagem onde cada ponto desta imagem corresponde a uma soma dos produtos termo

a termo da matriz 3x3 com imagem original. Por exemplo a aplicação do filtro Médio (todos os

elementos iguais a 1 - Fig. 5b) em uma imagem, eqüivale a um imagem final onde cada pixel

corresponde a media local, na imagem original, dele com os 8 pixels vizinhos. Veja o seu efeito na

figura 5b. Considere agora o efeito do filtro passa-alta da figura 5c. Todas as variações fortes

horizontais, que correspondem as bordas horizontais do objeto, ficaram na imagem final filtrada. Não

detalhamos aqui os problemas de representação em números inteiro dos níveis de cinza e de

operações em "ponto flutuante", como média ou médias ponderadas. Neste caso os valores da nova

imagem devem ser truncados ou renormalizados em função dos valores máximos e mínimos

trabalhados.

Page 9: Processamento de Imagens: Métodos e Análisesmesonpi.cat.cbpf.br/e2002/cursos/NotasAula/PDSI.pdf · processamento de imagens e visão por computador. I. Introdução ... codificação

9

1 1 1 1 1 1 1 1 1

-1 -1 -10 0

+1 +1

0 -1 0-1 + 5 -10 -1

01 0+

(a) (b) (c) (d)

Figura 5 - Matrizes para Filtragem de uma imagem. (a) - Imagem original. (b) - A imagem eqüivale à um filtro Médio (passa-baixas). Os contornos perdem ligeiramente a nitidez. (c) - Filtro de detecção de variações bruscas no

sentido horizontal (Passa-Alta). (d) - Filtro também Passa-Alta que melhora o contraste da imagem realçando os contornos do objeto.

VI - Segmentação

A segmentação consiste na primeira etapa de processamento da imagem quando

consideramos uma análise do ponto de vista da INFORMAÇÃO nela presente. O termo segmentação

vem do termo em inglês "image segmentation", criado durante os anos 80 [11]. Esta área representa

até hoje uma linha de pesquisa importante do processamento de imagens, principalmente por ela estar

na base de todo o processamento da informação em uma imagem.

Segmentar consiste na realidade em dividir a imagem em diferentes regiões, que serão

posteriormente analisadas por algoritmos especializados em busca de informações ditas de "alto-nível".

Por exemplo cada pixel na imagem da figura 2 poderia ser segmentadas em duas regiões: aqueles

pertencentes as células e aqueles pertencentes ao fundo da imagem. A imagem obtida neste caso é

composta por apenas duas regiões, por exemplo uma região branca (fundo) e outra preta

(células/objeto). Esta imagem, com 2 níveis de cinza, é conhecida como Imagem Binária. Devido as

grandes facilidades na manipulação deste tipo de imagens, principalmente porque reduzimos

significativamente a quantidade de dados, elas são freqüentemente utilizadas no processo de

tratamento da informação.

Existem diversas técnicas de segmentação de imagens, mas não existe nenhum método único

que seja capaz de segmentar todos os tipos de imagem. Globalmente, uma imagem em níveis de cinza

pode ser segmentada de duas maneiras: ou consideramos a semelhança entre os níveis de cinza ou

consideramos as sua diferenças. A detecção de um contorno de um objeto, através de matrizes do tipo

Passa-Alta, é um exemplo de técnicas baseado nas diferenças. Neste caso estamos segmentando as

imagens em regiões que pertencem a borda do objeto.

VII - Reconhecimento

Reconhecimento é a parte do processamento que vai classificar os objetos a partir de

informações encontradas na imagem, geralmente tendo como apoio uma base de conhecimento

previamente estabelecida [6]. Esta fase é normalmente aplicada após uma fase de segmentação e

Page 10: Processamento de Imagens: Métodos e Análisesmesonpi.cat.cbpf.br/e2002/cursos/NotasAula/PDSI.pdf · processamento de imagens e visão por computador. I. Introdução ... codificação

10

parametrização da imagem. A fase de parametrização identifica e calcula parâmetros nos objetos

segmentados. Um exemplo de parâmetros pertinentes a um objeto é o seu perímetro ou sua área [12].

A figura 6a apresenta uma imagem onde estão presentes duas classes, facilmente

identificadas pelo SVH. Para construir um sistema de decisão que seja capaz de identificar estes dois

objetos devemos segmentar a imagem em regiões: objeto e fundo. Os objetos da imagem

correspondem às áreas dos pixels situados na região escura da imagem. O fundo correspondem

aqueles pixels situados nas áreas claras da imagem. Esta etapa é realizada através da criação de uma

imagem binária onde classificamos dois níveis, aqueles correspondentes ao objeto e ao fundo. Em

seguida devemos atribuir a cada região contígua de pixels, na área pré-classificada “objeto”, um

indicador (“label”) que os identifica, figura 6b. Nestes objetos, definidos ainda por uma área contígua de

pixels, podemos aplicar algoritmos que executem medidas específicas, como área (A), perímetro (P),

posição na imagem (xc,yc), número de furos, retângulo ou elipse que melhor se adapta a figura, etc.

Adotamos aqui dois parâmetros específicos para criar um espaço de medias, são eles: a relação entre

os eixos menor (b) e maior (a) da ELIPSE que melhor se aproxima do objeto e o FATOR DE FORMA (FF). O

fator de forma é um parâmetro definido pela equação:

FF = P2/(4π A)

O valor de FF tenderá para 1 toda vez que a figura se aproximar de um circulo ideal. A figura

6c apresenta este espaço de medida para dois tipos de parâmetros. Os pontos presentes na figura

representam diversos objetos da mesma classe, sendo os apresentados em negrito aqueles da figura

6a. A realização de medidas, destes parâmetros na imagem, pode se tornar imprecisa, principalmente

devido ao processo de binarização da imagem. A qualidade final da imagem binária é diretamente

dependente da qualidade de iluminação da mesma. Um bom espaço de medidas significa na prática

um eficiente sistema de reconhecimento de formas, e este deve ser o mais independente possível dos

erros provenientes da segmentação ou da parametrização. A figura 6c apresenta uma função

discriminante que permite separar as duas populações de pontos. No caso de utilização de mais

parâmetros para auxiliar a identificação esta função será um hiper-plano no espaço.

É importante ressaltar que para diferenciarmos as duas classes da figura 6 poderíamos utilizar

apenas um dos dois parâmetros, reduzindo o espaço 2D em um único eixo. Porem as duas nuvens de

pontos passariam a estar muito próximas uma da outra podendo o resultado ser comprometido pela por

esta redução. Devemos ressaltar que espaços de medidas são muito importantes e utilizados em

reconhecimento de formas, seja por métodos clássicos ou aqueles que usam métodos baseados em

Redes Neurais.

(a) (b)

Page 11: Processamento de Imagens: Métodos e Análisesmesonpi.cat.cbpf.br/e2002/cursos/NotasAula/PDSI.pdf · processamento de imagens e visão por computador. I. Introdução ... codificação

11

4 5 6 7 8 9 10 11 12

2

4

6

8

10

12

Classe dosAlicates

Classe dasCanetas

Elip

se (a

/b)

Fator de Forma

(c)

Figura 6 - Uso de “espaço de medidas” no reconhecimento de duas Formas. (a) Imagem original com a presença de duas classes de objetos: canetas e alicate. (b) A imagem foi binarizada e os “objetos” receberam um identificador (“label”). (c) Os parâmetros são obtidos de cada um dos objetos identificados e o espaço de medidas

separa as duas classes. Na imagem observamos uma população de pontos que caracterizam a região que corresponde a classe. Os três pontos em destaque identificam os três objetos da figura original. Veja o texto para

maiores detalhes. VIII - Conclusão

Neste artigo discutimos técnicas básicas e introdutórias de processamento de imagens e

quando foi o caso exemplificando-as diretamente em uma imagem. Devemos lembrar que na prática o

processamento de imagens é uma técnica extremamente dependente do problema que queremos

resolver. Muitos dos procedimentos usados em processamento de imagens ou visão por computador

podem ser caracterizados de rudimentares ou mesmo artezanais quando comparados ao complexo

sistema visual humano, pois serão específicos para cada aplicação.

Normalmente as técnicas de processamento de imagens estão baseadas em métodos

matemáticos que permitem descrever quantitativamente imagens das mais diversas origens. Uma

imagem pode, de alguma forma, ser descrita independentemente do que ela representa e, a princípio

todos os parâmetros que tem uma característica bidimensional ou topológico são convenientes. Em

cada objeto definido em um espaço 2D nós podemos efetuar medidas de superfície, perímetros,

comprimentos, espessura, posição, etc, e em seguida deduzir grandezas estatísticas de uma forma

automática. É importante ressaltar que a análise automática é imprescindível quando queremos efetuar

transformações sucessivas na imagem.

Informações sobre equipamentos: O investimento em equipamento de processamento de

imagens são ainda muito caros. Um hardware dedicado de processamento de imagens com um bom

software de análise pode custar mais de R$100.000, (e são dificilmente encontrados no Brasil). Alguns

fabricantes importantes de sistemas de processamento de imagens são: Data Translation, Matrox e a

Hamamatsu. Do ponto de vista do grande público podemos encontrar sistemas de processamento de

imagens mais simples, mas em geral muito dependente do processador do computador onde esta

associado a placa de processamento. Um sistema barato pode custar na faixa de R$3.000, permitindo

apenas a aquisição e alguns tratamentos que visam melhorar a qualidade visual da imagem. É

importante lembrar que existe, para o ambiente Mac-OS e Unix, sistemas de boa qualidade de domínio

público. Para o Macinstosh o software é o NIH-Image do Instituto Americano de Saúde ("National

Page 12: Processamento de Imagens: Métodos e Análisesmesonpi.cat.cbpf.br/e2002/cursos/NotasAula/PDSI.pdf · processamento de imagens e visão por computador. I. Introdução ... codificação

12

Institute of Health") ver : ftp anonymous : zippy.nimh.nih.gov (pub/nih-image). Para o Unix existe o

sistema Khoros, desenvolvido pela Universidade do Novo México, ver http://www.khoros.unm.edu/.

IX - Referencias:

1. "Digital Image Processing" - R.C.Gonzalez / R.Woods - Addison Wesley - 1992.

2. "Video Microscopy" - S. Inoué - Plenun Press – Nova Iorque - 4Th edition – 1989

3. “Computação Gráfica: Imagem” – J. Gomes e L.Velho – Ed. IMPA – 1994

4. “Vision” – D. Marr – Freeman – Nova Iorque – 1982

5. “Image Analysis and Computer Vision” – A. Rosenfeld – Computer Vision Graphics and Image

Processing – vol 59, p.367-404 – 1993

6. “Neural Networks and application tutorial” – I. Guyon – Physics Reports – vol207, p.215-259 –

1991

7. “Ignorance, Myopia and naiveté in Computer Vision Systems” – T.O. Binford e R.C. Jain –

Computer Vision Graphics and Image Processing – vol.53 p.112-117 – 1991

8. “The Scientist and Engineer’s Guide to Digital Signal Processing” – 2nd Edition - 1999

9. “Precis d’analyse d’images” – M. Coster e J.L. Chermant – Editora do CNRS – 1989

10. “Fundamentals of Digital Image Processing”. A. K. Jain – Prentice Hall – 1989

11. “A survey on image segmentation” – K.S. Fu e J. K. Mui – Pattern Recognition vol. No. 13 p.3-

16 – 1980.

12. “Visual Language and software development environment for image processing” – J. Rasure,

D.Argiro, T.Sauer e C.Williams – Jour. of Imaging System and Technology – vol.2, p. 183-199

– 1990

Page 13: Processamento de Imagens: Métodos e Análisesmesonpi.cat.cbpf.br/e2002/cursos/NotasAula/PDSI.pdf · processamento de imagens e visão por computador. I. Introdução ... codificação

PROCESSAMENTO DIGITAL DE SINAIS

Marcio Portes de Albuquerque e Marcelo Portes de Albuquerquempa,marcelo @cbpf.br

Centro Brasileiro de Pesquisas Fısicas(CBPF)Rua Dr. Xavier Sigaud no 150, Urca

Rio de Janeiro, julho de 2002

Resumo

Esta apostila fornece uma visao geral de sinais e metodos de processamento de sinais. Acaracterizacao matematica dos sinaise primeiramente abordada em conjunto com a classificacaode sinais. Alguns sinais tıpicos serao apresentados em detalhes e as informacoes carregadas poreles serao descritas. Sera feita uma revisao em algumas operacoes utilizadas em processamentode sinais. Discutiremos as vantagens e desvantagens do processamento digital de sinais.

1 Introduc ao

Sinais realizam um papel importante em nosso cotidiano. Exemplos de sinais que encontramosfrequentemente sao voz, musica, fotografias e vıdeo. Um sinale uma funcao de variaveis indepen-dentes como tempo, distancia, posicao, temperatura, pressao. Seja uma musica ou um sinal de voz,por exemplo, eles representam a pressao do ar como funcao do tempo em um ponto no espaco. Umafotografia em preto e branco representa a intensidade de luz como funcao de duas coordenadas es-paciais. Um sinal de vıdeo de uma televisao consiste em sequencias de imagens, chamadas quadros,como funcao de tres variaveis: duas coordenadas espaciais e o tempo.

A maioria dos sinais que encontramos sao gerados de modo natural. No entanto, um sinal podeser gerado sinteticamente ou por simulacao. Um sinal carrega informacao, e o objetivo do proces-samento de sinaise extrair a informacao carregada pelo sinal. O metodo de extracao de informacaodepende do tipo de sinal e da natureza da informacao carregada por ele. Portanto, superficialmentefalando, processamento de sinais esta interessado com a representacao matematica de sinais e com asoperacoes algoritmicas realizadas para a extracao da informacao presente. A representacao de sinaispode ser em termos de funcoes base no domınio das variaveis independentes originais ou em termosde funcoes base no domınio da transformada. Do mesmo modo, o processo de extracao de informacaopode ser representado no domınio original do sinal ou no domınio de sua transformada. Neste cursoestaremos interessados nos sinais representados no tempo discreto e seu processamento discreto notempo.

Esta apostila fornece uma visao geral de sinais e metodos de processamento de sinais. A caracterizacaomatematica dos sinaise primeiramente abordada em conjunto com a classificacao de sinais. Algunssinais tıpicos serao apresentados em detalhes e as informacoes carregadas por eles serao descritas.Sera feita uma revisao em algumas operacoes utilizadas em processamento de sinais. Discutiremosas vantagens e desvantagens do processamento digital de sinais.

1

Page 14: Processamento de Imagens: Métodos e Análisesmesonpi.cat.cbpf.br/e2002/cursos/NotasAula/PDSI.pdf · processamento de imagens e visão por computador. I. Introdução ... codificação

2 Caracterizacao e classificacao de sinais

Dependendo da natureza das variaveis independentes e dos valores das funcoes que definem osinal, varios tipos de sinais podem ser definidos. As variaveis independentes, por exemplo, podem sercontınuas ou discretas. Do mesmo modo, os sinais podem ser tanto funcoes contınuas ou discretasdas variaveis independentes. Alem disso, os sinais podem ser tanto funcoes de variaveis reais comode variaveis complexas.

Um sinal pode ser gerado por uma fonteunica ou por multiplas fontes. No primeiro caso,e umsinal escalar e no segundo teremos um vetor de sinais tambem chamado de sinal em multicanais.

Um sinal de uma dimensao(1-D) e uma funcao de umaunica variavel independente. Um sinalbidimensional (2-D)e uma funcao de duas variaveis independentes. Um sinal multidimensional (M-D) e uma funcao de mais de uma variavel. O sinal de voze um exemplo de sinal unidimensional (1-D),onde a variavel independentee o tempo. Um sinal de imagem, como uma fotografia,e um exemplode sinal bidimensional (2-D), onde es variaveis independentes sao as duas coordenadas espaciais. Umsinal de vıdeo em preto e brancoe um sinal 3-D, onde cada quadroe uma imagem 2-D em funcao deduas variaveis espaciais e uma temporal. O sinal de vıdeo colorido, por sua vez,e um sinal de trescanais cada um com tres dimensoes, onde um canale o sinal 3-D das intensidades de vermelho (R), osegundoe um canal com as intensidades do verde (G) e o terceiroe um canal com as intensidades doazul (B). Para a finalidade de transmissao, o sinal RGB da televisaoe transformado em outro tipo desinais de tres canais, composto pela luminancia e por duas componentes de crominancia.

O valor do sinal em valores especıficos das componentes independentese chamado deamplitude.A variacao da amplitude em funcao das variaveis independentese chamadoforma de onda.

Para um sinal 1-D, a variavel independente normalmentee chamada de tempo. Se a variavel in-dependente for contınua, o sinale chamadosinal contınuo no tempo. Se a variavel independente fordiscreta, o sinale chamadosinal discreto no tempo. Um sinal contınuo no tempoe definido a cadainstante de tempo. De outra forma, um sinal discretoe definido em instantes discretos do tempo e,portanto,e uma sequencia de numeros.

Um sinal contınuo no tempo com amplitudes contınuas normalmentee chamado desinal analogico,como, por exemplo, um sinal de voz. Sinais analogicos sao comumente encontrados em nosso cotidi-ano e sao normalmente gerados por meios naturais. Um sinal discreto no tempo com valores discretosde amplitudes sao representados por um numero finito de dıgitos ee referenciado comosinal discre-to. Um exemplo de sinal digital sao musicas digitalizadas e aramzenadas em discos de CD-ROM.Um sinal discreto no tempo e contınuo em amplitudee chamado desinal de dados amostrados. Esteultimo tipo de sinal ocorre em circuitos de chaveamento de capacitores (SC). Um sinal digitale por-tanto uma quantizacao de um sinal de dados amostrados. Finalmente, um sinal contınuo no tempocom valores discretos de amplitudese chamado dequantizer boxcar signal[1]. A Figura2 ilustra osquatro tipos de sinais.

2

Page 15: Processamento de Imagens: Métodos e Análisesmesonpi.cat.cbpf.br/e2002/cursos/NotasAula/PDSI.pdf · processamento de imagens e visão por computador. I. Introdução ... codificação

Figura 1: (a) sinal contınuo no tempo, (b) sinal digital, (c) sinal de dados amostrados e (d)quantizerboxcar signal

A representacao matematica da dependencia funcionale frequentemente mostrada explicitamente.Para um sinal 1-D contınuo no tempo, as variaveis independentes contınuas sao normalmente de-notadas port, visto que para um sinal 1-D discreto no tempo, as variaveis independentes discretassao normalmente denotadas porn. Por exemplo,u(t) representa um sinal 1-D contınuo no tempoe v[n] representa um sinal 1-D discreto no tempo. Cada membro,v[n], de um sinal discreto notempoe chamadoamostra. Em muitas aplicacoes, sinais discretos no tempo sao gerados a partir daamostragem de sinais contınuos no tempo. Se os instantes discretos discretos no tempo estiveremequidistantes, ou seja, uniformemente separados, as variaveis independentes discretasn podem sernormalizadas para assumir valores inteiros.

No caso de sinais 2-D contınuos no tempo, as duas variaveis independentes sao as coordenadas es-paciais, que sao normalmente denominadas porx e y. As intensidades de luminosidade em imagensem nıveis de cinza, por exemplo, podem ser expressas poru(x, y). De outro modo, uma imagemdigital e um sinal discreto 2-D, e suas duas variaveis independentes sao discretizadas no espaco nor-malmente denotado porm en. Desta forma, uma imagem digital pode ser representada porv[m,n].Do mesmo modo, uma sequencia de vıdeo em preto e brancoe um sinal 3-D que pode ser represen-tado comou(x, y, t), ondex ey representam as duas variaveis espaciais et a variavel temporal. Umsinal de vıdeo coloridoe um vetor de sinais composto por tres sinais que representam as tres coresprimarias, que sao o vermelho (R), o verde (G) e o azul (B):

u(x, y, t) =r(x, y, t)g(x, y, t)b(x, y, t)

(1)

Existe outra classificacao de sinais que depende da certeza na qual os sinais sao unicamente de-scritos. Um sinaldeterminıstico e aquele definido por um processo como uma expressao ou regramatematica. A geracao aleatoria de um sinal, no entanto, torna o mesmo imprevisıvel no tempo edesta formae chamado desinal aleatorio. Inicialmente iremos ver o processamento de sinais de-terminısticos discretos no tempo. No entanto, como na pratica sistemas discretos no tempo utiliza”palavras” finitas para o armazenamento dos sinais e a implementacao dos algoritmos de processa-mento de sinais,e necessario o desenvolvimento de ferramentas para analise dos efeitos de palavrasde comprimento finito na performance de sistemas discretos no tempo. Para esta finalidade, foi con-veniente representar alguns sinais pertinentes como sinais aleatorios e aplicar tecnicas estatısticas emsuas analises. Algumas operacoes tıpicas de processamento de sinais serao revisadas na proximasecao.

3

Page 16: Processamento de Imagens: Métodos e Análisesmesonpi.cat.cbpf.br/e2002/cursos/NotasAula/PDSI.pdf · processamento de imagens e visão por computador. I. Introdução ... codificação

3 Operacoes tıpicas de processamento de sinais

Diversos tipos de operacoes de processamento de sinais sao utilizadas na pratica. No caso desinais analogicos, a maioria das operacoes de processamento de sinais sao normalmente aplicadasno domınio do tempo, enquanto que no caso de sinais discretos, sao utilizadas operacoes tanto nodomınio do tempo como no da frequencia. Em ambos os casos, as operacoes desejadas sao imple-mentadas como uma combinacao de algumas operacoes elementares. Estas operacoes sao usualmenteimplementadas em tempo real, em algumas aplicacoes, elas podem ser implementadas ”off-line”.

4 Operacoes elementares no domınio do tempo

As tres operacoes mais elementares no domınio do tempo sao a adicao, o atraso e o escalamento.O escalamentoconsiste na multiplicacao do sinal por uma constante positiva ou negativa. No caso desinais analogicos esta operacao normalmentee chamada amplificacao se a magnitude da constante demultiplicacao, chamada ganho, for maior que 1. Caso contrario a operacaoe chamada de atenuacao.Portanto dex(t) for um sinal analogico, a operacao de escalamento gera um sinaly(t) = αx(t)ondeα e a constante de multiplicacao. Duas outras operacoes elementares podem ser mencionadas, aintegracao e a diferenciacao. A integracao de um sinal aleatorio x(t) gera o sinaly(t) =

∫ t−∞ x(ξ)dξ,

enquanto sua diferenciacao resulta em um sinalw(t) = dx(t)/dt.

A operacao deatrasogera um sinal identico ao original e deslocado no tempo. Para sinais analogicosx(t), y(t) = x(t− t0) e o sinal obtido pelo atraso det0, positivo, emx(t). Set0 for negativo ocorrerauma operacao deavancono sinal.

Muitas aplicacoes necessitam operacoes com mais de dois sinais para a geracao de um sinal. Poexemplo,y(t) = x1(t) + x2(t) − x3(t) e o sinal gerado pela adicao de tres sinais analogicosx1(t),x2(t) ex3(t). Outra operacao elementare o produto de dois sinais. Portanto, o produto de dois sinaisx1(t) ex2(t) geram o sinaly(t) = x1(t)x2(t).

As operacoes elementares mencionadas acima tambem podem ser utilizadas em sinais discretos notempo, como discutiremos mais tarde no texto. Em seguida vamos rever algumas operacoes com-plexas bastante utilizadas em processamento de sinais, que sao uma combinacao de duas ou maisoperacoes elementares.

5 Filtragem

Uma das operacoes mais utilizadas em processamento de sinaise a filtragem. Sua utilizacao epassar algumas componentes de frequencia de um sinal atraves de um sistema sem que haja nen-huma distorcao, e bloquear outras componentes de frequencia. Os sistemas que implementam estasoperacoes sao chamados de filtros. A faixa de frequencia que sera permitida passar pelo filtroechamada de passa banda, e a faixa de frequencias bloqueadas pelo filtro sao chamadas de rejeita ban-da. Varios tipos de filtros podem ser definidos, dependendo da natureza da operacao de filtragem. Na

4

Page 17: Processamento de Imagens: Métodos e Análisesmesonpi.cat.cbpf.br/e2002/cursos/NotasAula/PDSI.pdf · processamento de imagens e visão por computador. I. Introdução ... codificação

maior parte dos casos, a operacao de filtragem para sinais analogicose linear ee descrita pela integralde convolucao

y(t) =∫ ∞

−∞h(t− ξ)x(ξ)dξ (2)

ondex(t) e o sinal de entrada ey(t) a saıda do filtro caracterizada pela resposta ao impulsoh(t).

Um filtro passa baixa permite a passagem de todas as componentes de frequencia abaixo defc,denominada de frequencia de corte, e bloqueia todas as altas frequencias acima defc. Um filtropassa alta realiza a tarefa opsta de um passa baixa, deixando passar as frequencias superiores afc

e rejeitando as frequencias abaixo defc. Um filtro passa banda permite a passagem de frequenciasdentro do intervalo definido porfc1 e fc2 e rejeita qualquer frequencia fora deste intervalo. O filtrorejeita banda realiza a operacao contraria ao filtro passa banda, rejeitando somente as frequenciasdefinidas dentro da faixafc1 e fc2 e permitindo a passagem de quaisquer outras componentes defrequencia. A Figura5(a) apresenta um sinal composto por tres componentes de frequencia com50Hz, 110Hz e 210Hz, respectivamente. As Figuras5(b) a (e) apresentam os resultados das quatrooperacoes de filtragem mencionadas acima.

Um filtro rejeita banda que permite a passagem de somente uma componente de frequencia echamado de filtronotch. Um filtro multibandae aquele que possui mais de um filtro passa bandae rejeita banda. Um filtrocombe projetado para rejeitar frequencias que sao multiplos inteiros defrequencias baixas.

Um sinal pode ser corrompido por interferencias indesejaveis chamadas ruıdo. Em muitas aplicacoesos sinais desejados ocupam bandas de frequencias baixas desde DC ate fLHz, e e corrompida porruıdos de altas frequencias acima defHHz comfH > fL. Nestes casos, podemos remover o ruıdoaplicando um filtro passa baixa com frequencia de cortefc ondefL < fc < fH . Uma fonte comumde ruıdo sao radiacoes de campos eletricos e magneticos. Os sinais gerados pelas linhas de forcaaparecem como uma senoide com frequencia de 60Hz corrompendo o sinal desejado. Este ruıdopode ser removido por um filtronotch de 60Hz.

6 Geracao de sinais complexos

Os sinais podem possuir valores reais ou valores complexos. Todos os sinais gerados naturalmentesao sinais de valores reais, no entanto desejamos desenvolver um sinal complexo a partir de um sinalreal. Este sinal complexo pode ser obtido a partir datransformada de Hilbertdo sinal real, queecaracterizada pela resposta ao impulsohHT (t) dada por [2, 3]:

hHT =1πt

(3)

5

Page 18: Processamento de Imagens: Métodos e Análisesmesonpi.cat.cbpf.br/e2002/cursos/NotasAula/PDSI.pdf · processamento de imagens e visão por computador. I. Introdução ... codificação

Figura 2: (a) sinal de entrada, (b) saıda do filtro passa baixa com frequencia de corte de 80Hz, (c)saıda do filtro passa alta comfc = 150Hz , (d) saıda de um filtro passa banda comfc1 = 80Hz efc2 = 150Hz, (e) saıda de um filtro rejeita banda comfc1 = 80Hz efc2 = 150Hz.

6

Page 19: Processamento de Imagens: Métodos e Análisesmesonpi.cat.cbpf.br/e2002/cursos/NotasAula/PDSI.pdf · processamento de imagens e visão por computador. I. Introdução ... codificação

Para ilustrar o metodo, considere um sinal realx(t) com a transformada de Fourier contınua notempoX(jΩ) dada por:

X(jΩ) =∫ ∞

−∞x(t)e−jΩtdt (4)

X(jΩ) e chamado de espectro dex(t). A magnitude do espectro de um sinal real apresenta a simetriapar enquanto o espectro de fase apresenta a simetriaımpar. Portanto, o espectroX(jΩ) de um sinalrealx(t) contem tanto frequencias positivas como negativas e por isso pode ser expresso como:

X(jΩ) = Xp(jΩ) + Xn(jΩ) (5)

ondeXp(jΩ) e a porcao de frequencias positivas deX(jΩ) e Xn(jΩ) e a porcao de frequenciasnegativas deX(jΩ). Se realizarmos a transformada de Hilbert emx(t) a saıda x(t) sera dada pelaconvolucao linear dex(t) comhHT (t):

x(t) =∫ ∞

−∞hHT (t− ξ)x(ξ)dξ (6)

O espectroX(jΩ) de x(t) e dado pelo produto da transformada de Fourier dex(t) e hHT (t) daequacao (3), qee dado por:

HHT (jΩ) =

−j, Ω > 0j, Ω < 0

(7)

Desta forma,X(jΩ) = HHT (jΩ)X(jΩ) = −jXp(jΩ) + jXn(jΩ) (8)

As funcoes pares eımpares correspondem a magnitude e fase, respectivamente. Considere o sinaly(t) formado pela soma dex(t) e x(t):

y(t) = x(t) + x(t) (9)

Os sinaisx(t) e x(t) sao chamados de componentes em fase e quadratura dey(t). Utilizando asEquacoes (5) e (8) na transformada discreta de Fourier dey(t), nos obeteremos

Y (jΩ) = X(jΩ) + X(jΩ) = 2Xp(jΩ) (10)

Em outras palavras, o sinal complexoy(t), chamado de sinal analıtico, possui somente componentescom frequencias positivas.

A Figura ?? apresenta um diagrama de blocos que ilustra o processo de obtencao de um sinalanalıtico a partir de um sinal real.

7

Page 20: Processamento de Imagens: Métodos e Análisesmesonpi.cat.cbpf.br/e2002/cursos/NotasAula/PDSI.pdf · processamento de imagens e visão por computador. I. Introdução ... codificação

Figura 3: Geracao de um sinal analıtico utilizando transformada de Hilbert.

7 Modulacao e demodulacao

Para transmissao de sinais em longas distancias sao utilizados meios de transmissoes como cabo,fibra optica ou a atmosfera. Cada um desses meios possui uma banda quee mais eficiente natransmissao de sinais de alta frequencia. Como resultado, para transmitirmos um sinal de baixafrequencia em um canal,e necessario transformar este sinal para alta frequencia atraves da operacaode modulacao. Ao chegar no receptor o sinal tem que der demodulado para obtencao do mesmo embaixa frequencia. Existem quatro tipos de modulacao de sinais analogicos: modulacao em ampli-tude, modulacao em frequencia, modulacao em fase e modulacao em quadratura. Discutiremos, nestaapostila, os conceitos da modulacao em amplitude [2, 3].

No esquema de modulacao em amplitude, a amplitude de um sinal de alta frequencia senoidalAcos(Ω0t), chamado de sinal da portadora,e variado pelo sinal de baixa frequenciax(t), chamadode sinal de modulacao, gerando um sinal de alta frequenciay(t), chamado de sinal modulado deacordo com:

y(t) = Ax(t)cos(Ω0t) (11)

Portanto, a modulacao em amplitude pode ser implementada atraves do produto do sinal de modulacaocom o sinal da portadora. Para demostrar a propriedade de translacao em frequencia do processo demodulacao por amplitude, sejax(t) = cos(Ω1t) ondeΩ1 e muito menor que a frequenciaΩ0 daportadora, i.e.,Ω1 << Ω0. Pela Equacao (11) obtemos

y(t) = Acos(Ω1t).cos(Ω0t) (12)

=A

2cos((Ω0 + Ω1)t) +

A

2cos((Ω0 − Ω1)t) (13)

Desta forma, o sinal moduladoy(t) e composto por dois sinais senoidais de frequenciasΩ0 + Ω1 eΩ0 − Ω1, que estao proximas aΩ0 uma vez que assumimos queΩ1 e muito menor que a frequenciada portadoraΩ0.

Atraves das propriedades da transformada de Fourier podemos mostrar que o espectroY (jΩ) dey(t) e dado por:

Y (jΩ) =A

2X(j(Ω− Ω0)) +

A

2X(j(Ω + Ω0)) (14)

ondeX(jΩ) e o espectro do sinal moduladox(t). A Figura 7apresenta o espectro do sinal demodulacao e do sinal modulado assumindo que a frequencia da portadoraΩ0 e muito maior que

8

Page 21: Processamento de Imagens: Métodos e Análisesmesonpi.cat.cbpf.br/e2002/cursos/NotasAula/PDSI.pdf · processamento de imagens e visão por computador. I. Introdução ... codificação

Figura 4: (a) Espectro do sinal moduladox(t), e (b) espectro do sinal moduladoy(t). Por con-veniencia, ambos espectros sao de funcoes reais.

Ωm, quee a frequencia mais alta contida emx(t). Como ilustrado na figuray(t) e agora limitadopor banda de alta frequencia e centrado emΩ0. Este processo de modulacao e chamado deDoubleSideband Supressed Carrier(DSB-SC), devido as porcoes de frequenciaΩ0 + Ωm eΩ0 − Ωm.

A demodulacao dey(t), e feita em dois estagios. Primeiro, o produto dey(t) com um sinal senoidalde mesma frequencia da portadorae formado:

r(t) = y(t)cos(Ω0t) = Ax(t)cos2(Ω0t) (15)

que pode ser reescrito como

r(t) =A

2x(t) +

A

2x(t)cos(2Ω0t) (16)

Este resultado indica que o produto do sinale composto pela modulacao do sinal senoidal escaladopor um fator 1/2 e uma modulacao do sinal em amplitude com uma frequencia de portadora de2Ω0.O espectroR(jΩ) der(t) esta indicado na Figura7. O sinal modulado original pode ser recuperado apartir der(t) atraves da utilizacao de um filtro passa baixas com frequencia de corteΩc satisfazendo arelacaoΩm < Ωc < 2Ω0−Ωm. A saıda do filtroe entao uma replica escalada do sinal de modulacao.

A Figura7apresenta a representacao em diagrama de blocos dos esquemas de modulacao e demodulacaoem amplitude. O princıpio fundamental na assuncao do processo de demodulacao descrito acimaeque o sinal senoidal deve ser identico ao sinal da portadora e pode ser gerado no receptor. Em geral,e difıcil garantir que o sinal senoidal de demodulacao possui frequencia igual ao da portadora todo

9

Page 22: Processamento de Imagens: Métodos e Análisesmesonpi.cat.cbpf.br/e2002/cursos/NotasAula/PDSI.pdf · processamento de imagens e visão por computador. I. Introdução ... codificação

Figura 5: Espectro do produto do sinal modulado e da portadora.

Figura 6: Representacao esquematica da modulacao e demodulacao em amplitude: (a) mdulador e(b) demodulador.

o tempo. Para solucionar o problema, na transmissao do sinal modulado em amplitude,e incluıdo osinal da portadora. Istoe feito atraves da redefinicao da operacao de modulacao como segue:

y(t) = A[1 + mx(t)]cos(Ω0t) (17)

ondem e o numero escolhido para assegurar que[1 + mx(t)] seja positivo para todot. A Figura7 apresenta a forma de onda do sinal de modulacao senoidal de frequencia 2Hz e modulacao deamplitude por portadora obtida de acordo com a Equacao (17) para uma frequencia de portadora de40Hz em = 0.5. Note que a envoltoria do sinal modulado pela portadorae a forma de onda dosinal de modulacao. A portadora tambem esta presente no sinal modulado, o processoe chamado deDouble Sideband Modulation(DSB).

8 Multiplexacao e demultiplexacao

Para uma utilizacao eficiente do canal de transmissao em banda larga, varios sinais de banda estreitae baixas frequencias sao combinados formando um sinal de banda larga quee transmitido como umunico sinal. O processo de combinacao destes sinaise chamado demultiplexacaoquee implementadode forma a assegurar que uma replica dos sinais originais de baixa frequencia e banda estreita podemser recuperados no receptor. O processo de recuperacao destes sinais no receptore chamado dedemodulacao.

Um metodo amplamente utilizado que combina diferentes sinais de voz em um sistema de comunicacaoe chamadoFrequency Dvision Multiplexing(FDM) [4, 3]. Cada sinal de voz tipicamentee limitadopor uma banda de baixa frequencia com largura2Ωm, a frequenciae transladada em alta frequenciautilizando o metodo de modulacao por amplitude da Equacao (11). A frequencia da portadora do

10

Page 23: Processamento de Imagens: Métodos e Análisesmesonpi.cat.cbpf.br/e2002/cursos/NotasAula/PDSI.pdf · processamento de imagens e visão por computador. I. Introdução ... codificação

Figura 7: (a) Um sinal de modulacao senoidal de 2Hz, e (b) sinal da portadora com a frequencia de40Hz baseado na modulacao DSB.

sinal adjacente modulado por amplitudee separada porΩ0, comΩ0 > 2Ωm para assegurar que naohavera nenhuma sobreposicao nos sinais individuais modulados. Depois o sinale modulado em umaportadora principal e transmitido. A Figura8 ilustra o esquema do processo de multiplexacao pordivisao de frequencia.

No receptor, a decomposicao dos sinais em bandae feita por demodulacao FDM. Depois cada sinalindividual transladado em frequenciae demultiplexado atraves de filtros passa banda com banda umpouco maior que2Ωm. A saıda do filtro passa bandae demodulado utilizando o metodo da Figura7recuperando uma replica escalada do sinal original de voz.

No caso da modulacao em amplitude convencional, como apresentado na Figura7, o sinal mod-ulado possui largura de banda2Ωm. Para aumentar a capacidade de transmissao media, uma formamodificada da modulacao em amplitudee frequentemente empregada, onde sao transmitidas as ban-das altas quanto ou baixas do sinal. Este metodoe chamado deSingle Sideband Modulation(SSB)para distinguir do metodo DSB representado no esquema da Figura7.

Uma maneira de implementar a modulacao em amplitude SSB esta indicado na Figura8, onde atransformada de Hilberte definida pela equacao (7). Os espectros referentes aos sinais da Figura8sao apresentados na Figura8.

9 Por que processamento digital de sinais?

A origem das tecnicas de processamento digital de sinais foi no seculo XVII quando metodosde diferenciacao finita, metodos de integracao numerica e metodos de interpolacao numerica foramdesenvolvidos para resolver problemas fısicos envolvendo variaveis e funcoes contınuas. O interessemais recente de processamento de sinais digitais apareceu em 1950 com a disponibilizacao de umnumero crescente de computadores digitais. As aplicacoes iniciais foram a simulacao de metodos deprocessamento analogico de sinais. No inıcio da decada de 1960, pesquisadores passaram a considerar

11

Page 24: Processamento de Imagens: Métodos e Análisesmesonpi.cat.cbpf.br/e2002/cursos/NotasAula/PDSI.pdf · processamento de imagens e visão por computador. I. Introdução ... codificação

Figura 8: Ilustracao da operacao de multiplexacao por divisao de frequencias.

Figura 9: Esquema de modulacao SSB empregando a transformada de Hilbert.

Figura 10: Sinais pertinentes ao espectro da Figura8.

12

Page 25: Processamento de Imagens: Métodos e Análisesmesonpi.cat.cbpf.br/e2002/cursos/NotasAula/PDSI.pdf · processamento de imagens e visão por computador. I. Introdução ... codificação

Figura 11: Diagrama de blocos dos passos de um processamento digital de um sinal analogico.

Figura 12: Esquema de supressao de eco.

o processamento digital de sinais como uma novaarea disciplinar. Desde entao ocorreram descobertase desenvolvimentos significantes tanto na teoria quanto nas aplicacoes de processamento digital desinais.

O processamento digital de sinais analogicos consiste basicamente de tres passos: conversao dosinal analogico para digital, processamento da versao digital e a conversao do sinal digital de voltaem analogico. A Figura9 ilustra o diagrama de blocos desse processo.

Como a amplitude do sinal analogico varia com o tempo um circuito desample-and-hold(S/H)e utilizado para amostrar o sinal analogico em intervalos periodicos congelando o valor da amostracom valor constante na entrada do circuito de conversao analogico-digital (A/D), permitindo, destaforma, uma maior fidelidade na conversao dos dados. A entrada de um conversor A/De um sinalanalogico do tipo escada se o circuito S/H segurar a amostra ate o instante seguinte de conversao.A saıda de um conversor A/De uma cadeia de dados binarios que sera processada em seguida peloalgoritmo desejado de processamento digital de sinais. A saıda do processador digitale outra cadeiabinaria de dados que sera convertida em um sinal analogico tipo escada atraves do conversos digital-analogico (D/A). O filtro passa baixas na saıda do conversor D/A remove todas as componentes emaltas frequencias indesejaveis ee obtido o sinal analogico na saıda atraves do processamento digital.A Figura9 apresenta as formas de onda dos sinais em cada um dos estagios do processamento digital,os sinais binarios foram representados por pulsos positivos e negativos.

O processamento analogico de sinais analogicose conceitualmente muito mais simples e envolvesomente umunico processador, como ilustra a Figura9. E natural perguntarmos quais as vantagensdo processamento digital de sinais analogicos.

Direntemente dos circuitos analogicos, as operacoes nos circuitos digitais nao dependem de valoresprecisos dos sinais digitais. Como resultado, um circuito digitale menos sensıvel as tolerancias dosvalores dos componentes ee razoavelmente independente da temperatura, envelhecimento e a maioria

13

Page 26: Processamento de Imagens: Métodos e Análisesmesonpi.cat.cbpf.br/e2002/cursos/NotasAula/PDSI.pdf · processamento de imagens e visão por computador. I. Introdução ... codificação

Figura 13: Formas de onda tıpicas dos sinais nos diversos estagios da Figura9. (a) Sinal de entradaanalogico, (b) circuito de saıda S/H, (c) saıda do conversor A/D, (d) saıda do processador digital, (e)saıda do conversor D/A, e (f) saıda do sinal analogico. Em (c) e (d), os nıveis digitais ALTO e BAIXOsao os pulsos positivos e nagativos.

Figura 14: Processamento analogico de sinais analogicos.

14

Page 27: Processamento de Imagens: Métodos e Análisesmesonpi.cat.cbpf.br/e2002/cursos/NotasAula/PDSI.pdf · processamento de imagens e visão por computador. I. Introdução ... codificação

dos parametros externos. Um circuito digital pode ser reproduzido facilmente em larga escala e naorequer nenhum ajuste durante a fabricacao ou em sua utilizacao. Alem disso,e simples sua integracaocompleta como, por exemplo, em circuitos VLSI, o que foi possıvel uma integracao sofisticada ecomplexa em sistemas de processamento digital de sinais em umunico chip.

Em um processador digital, os sinais e os coeficientes que descrevem as operacoes de processa-mento sao representados por palavras binarias. Desta forma, a precisao desejada pode ser alcancadavariando o tamanho da palavra, estando sujeito a variacoes nos custos. Alem disso, a faixa dinamicapara sinais e coeficientes pode ser aumentada, se necessario, utilizando aritmetica de ponto flutuante.

Referencias

[1] K. Steiglitz.Mathematical foundations of signal processing. In S.K. Mitra and J.F. Kaiser, editors,Handbook for Digital Signal Processing, chapter 2, pages 57-59. Wiley-Interscience, New York,1993.

[2] M.E. Frerking,Digital signal procesing im communication systems. Van Nostrand Reinhold, NewYork, 1994

[3] A.V. Oppenheim and A.S. Willsky.Signals and sistems. Prentice-Hall, Englewood Cliffs, 1989.

[4] L.W. Cooley and J.W Turkey.An algorithm for the machine calculation of complex Fourier series.Macmillan, New York, 1983

15

Page 28: Processamento de Imagens: Métodos e Análisesmesonpi.cat.cbpf.br/e2002/cursos/NotasAula/PDSI.pdf · processamento de imagens e visão por computador. I. Introdução ... codificação

MATLAB

Curso Introdutório

Centro Brasileiro de Pesquisas Físicas

2002

Page 29: Processamento de Imagens: Métodos e Análisesmesonpi.cat.cbpf.br/e2002/cursos/NotasAula/PDSI.pdf · processamento de imagens e visão por computador. I. Introdução ... codificação

Curso Introdutório de MATLAB

Sumário

1. INTRODUÇÃO ................................................................................................................ 2

1.1 O que é o Matlab? ........................................................................................................ 22. INICIANDO ........................................................................................................................ 3

2.1 Variáveis ...................................................................................................................... 32.1.1 ENTRANDO COM VALORES ................................................................................ 32.1.2 VARIÁVEIS PERMANENTES ................................................................................ 4

2.2 Expressões e Comandos Básicos ................................................................................ 42.2.1 SALVANDO/APAGANDO O WORKSPACE........................................................... 52.2.2 O COMANDO MAIS IMPORTANTE....................................................................... 52.2.3 EXERCÍCIOS ......................................................................................................... 6

3. FAMILIARIZANDO-SE COM MATRIZES........................................................................... 73.1 Manipulação de Matrizes .......................................................................................... 7

3.1.1 ELEMENTOS DE UMA MATRIZ ............................................................................ 73.1.2 GERANDO VETORES ........................................................................................... 83.1.3 MATRIZES DENTRO DE MATRIZES .................................................................... 93.1.4 EXERCÍCIOS ....................................................................................................... 10

3.2 Operações Elemento – por – Elemento .................................................................. 113.3 Operadores Lógicos e Relacionais ......................................................................... 123.4 Operadores e Manipulação de Matrizes ................................................................. 13

3.4.1 EXERCÍCIOS ................................................................................................... 133.5 Algumas Funções................................................................................................... 14

4. POLINÔMIOS.................................................................................................................. 144.1 Representando Polinômios no MATLAB..................................................................... 144.2 Funções Relacionadas à Polinômios.......................................................................... 14

4.2.1 EXERCÍCIOS ....................................................................................................... 155. GRÁFICOS...................................................................................................................... 15

5.1 Gráficos 2-D ............................................................................................................... 155.1.2 EXERCÍCIOS ....................................................................................................... 17

5.2 Gráficos 3-D ............................................................................................................... 185.2.1 FUNÇÕES ELEMENTARES PARA GRÁFICOS 3-D............................................ 185.2.2 MESHGRID.......................................................................................................... 185.2.3 MELHORANDO A APARÊNCIA........................................................................... 195.2.4 EXERCÍCIOS ....................................................................................................... 20

6. PROGRAMAÇÃO............................................................................................................ 206.1 Controladores de Fluxo .............................................................................................. 21

6.1.1 FOR ..................................................................................................................... 216.1.2 WHILE.................................................................................................................. 216.1.3 IF.......................................................................................................................... 226.1.4 BREAK, INPUT, PAUSE ...................................................................................... 22

6.2 Arquivos M ................................................................................................................. 236.2.1 SCRIPTS.............................................................................................................. 236.2.2 ARQUIVOS-FUNÇÃO .......................................................................................... 246.2.3 FUNÇÕES FUNÇÃO............................................................................................ 256.2.4 EXERCÍCIOS ....................................................................................................... 26

7. BIBLIOGRAFIA................................................................................................................ 268. RESPOSTA DOS EXERCÍCIOS...................................................................................... 27

Page 30: Processamento de Imagens: Métodos e Análisesmesonpi.cat.cbpf.br/e2002/cursos/NotasAula/PDSI.pdf · processamento de imagens e visão por computador. I. Introdução ... codificação

Curso Introdutório de MATLAB 2

1. INTRODUÇÃO

1.1 O que é o Matlab?

MATLAB (Matrix Laboratory) é um software para computação numérica e visualização

de alta performance, fácil de ser usado, onde os problemas e soluções são expressos quase

que da mesma forma que no papel.

Seus elementos básicos são matrizes que não requerem dimensionamento. Ele

permite implementar e resolver problemas matemáticos muito mais rápida e eficientemente

que através de outras linguagens como C, Basic, Pascal ou Fortran.

Ainda, o MATLAB possui uma família de aplicativos específicos (toolboxes1), que são

coleções de funções usadas para resolver determinados problemas tais como: otimização,

manipulação algébrica, redes neurais, processamento de sinais, simulação de sistemas

dinâmicos, entre outros.

Provavelmente, a característica mais importante do MATLAB é a sua extensibilidade,

que permite que engenheiros, matemáticos cientistas, e até mesmo você, contribuam para o

enriquecimento.

1 Para maiores informações sobre as últimas novidades do software, consulte a página na internet da MathWorksInc. em http://www.mathworks.com

Page 31: Processamento de Imagens: Métodos e Análisesmesonpi.cat.cbpf.br/e2002/cursos/NotasAula/PDSI.pdf · processamento de imagens e visão por computador. I. Introdução ... codificação

Curso Introdutório de MATLAB 3

2. INICIANDO

2.1 Variáveis

O MATLAB trabalha essencialmente com um tipo de variável: uma matriz contendo

números, complexos ou não (um escalar é uma matriz 1 x 1). Em alguns casos, um

tratamento especial é dado a uma matriz 1 x 1 (escalar) ou a matrizes 1 x n ou n x 1

(vetores).

2.1.1 ENTRANDO COM VALORES

No MATLAB não é necessário que sejam declaradas as variáveis para iniciá-las, como

é feito em outras linguagens de programação. Ao jogar dados numa variável, o programa

aloca memória automaticamente.

A maneira mais fácil de entrar com pequena quantidade de valores é digitando

diretamente os dados:

• envolva os elementos com colchetes, [ ];

• separe cada elemento com espaços ou vírgulas;

• use ponto-e-vírgula (;) para indicar fim da linha.

Por exemplo, para entrar com a matriz abaixo na memória do computador, e guardá-la

na variável A:

1 2 3A = 4 5 6

7 8 9

Variáveis

VetoresEscalares Matrizes

Vetores Linha Vetores Coluna

“Strings”Numéricos

4 7 5 9 t e x t o

B = 4.9

7.6

8

2

A = 1 -7 3

2 0 8

4.7

(matrix 1x1)

Page 32: Processamento de Imagens: Métodos e Análisesmesonpi.cat.cbpf.br/e2002/cursos/NotasAula/PDSI.pdf · processamento de imagens e visão por computador. I. Introdução ... codificação

Curso Introdutório de MATLAB 4

Basta digitar:

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

Que a saída será: A =

1 2 3

4 5 6

7 8 9

OBS: Para que o computador realize a operação e não mostre a saída, basta terminar

a expressão com ponto-e-vírgula (;). Isto é muito útil para evitar que o computador fique

mostrando números de cálculos intermediários e para acelerar as operações.

2.1.2 VARIÁVEIS PERMANENTES

Existem algumas variáveis que são intrínsecas ao MATLAB e que não podem ser

apagadas. Algumas são interessantes:

ans Resposta mais recente, que não

foi atribuída a nenhuma variável.

flops Contador de operações

matemáticas.

eps Precisão da máquina. NaN Not a Number (indeterminação)

realmax Maior número de ponto flutuante. inf Infinito.

realmin Menor número de ponto flutuante. computer Tipo de computador.

pi 3,14159265358979 why Resposta sucinta.

i, j Unidade imaginária version Versão do MATLAB.

Para saber a precisão da máquina, basta digitar eps.

2.2 Expressões e Comandos Básicos

MATLAB é uma linguagem de expressão. Ele interpreta e avalia as expressões

digitadas, que são geralmente na forma:

variável = expressão

Os números são em notação decimal. Pode-se criar números complexos basta

escrever i (ou j) depois da parte imaginária. Alguns exemplos de números permitidos:

1/3 -99 .0001

9.63973 1.602E-20 6.025E23

3 + 2i -3.1459i 3E5i

Page 33: Processamento de Imagens: Métodos e Análisesmesonpi.cat.cbpf.br/e2002/cursos/NotasAula/PDSI.pdf · processamento de imagens e visão por computador. I. Introdução ... codificação

Curso Introdutório de MATLAB 5

A precisão de todas as operações é eps, embora os números mostrados ocultem

algumas casa decimais. Para mudar o formato de saída dos números, altere o item numeric

format ou no menu options, ou então use o comando format.

Pode-se construir expressões com os operadores aritméticos usuais:

+ adição / e \ divisão

- subtração ^ potenciação

* multiplicação ’ matriz transposta

O MATLAB possui uma vasta gama de funções matemáticas elementares, com seno

(sin), tangente (tan), logaritmo (log10), etc. Por exemplo, para calcular o seno de 5 e

guardar na variável x:

» x=sin(5)

Subtraindo matrizes:

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

» B=[4 5 6;1 2 3;8 7 6];

» C=A'-B

OBS: X = A/B é a solução de A * X = B

X = B/A é a solução de X * A = B

2.2.1 SALVANDO/APAGANDO O WORKSPACE

Ao sair do MATLAB (através do comando quit ou exit) todas as variáveis do

workspace são perdidas, a menos que sejam guardadas do comando save. Digitando save,

todas as variáveis são salvas em um arquivo chamado matlab.mat. O comando save

nome_de_arquivo salva as variáveis no arquivo. Já o comando:

save nome_de_arquivo nome_da(s)_variável(is) , salva somente as variáveis

especificadas. O comando load carrega as informações salvas, e é análogo ao save.

O comando clear nome_de_variável apaga a variável do workspace. Digitar somente

clear apaga todas as variáveis do workspace!

2.2.2 O COMANDO MAIS IMPORTANTE

O comando mais importante no MATLAB é o help, que fornece ajuda on-line sobre

qualquer outro comando. Por exemplo, para obter ajuda sobre o comando who:

Page 34: Processamento de Imagens: Métodos e Análisesmesonpi.cat.cbpf.br/e2002/cursos/NotasAula/PDSI.pdf · processamento de imagens e visão por computador. I. Introdução ... codificação

Curso Introdutório de MATLAB 6

0.32 2.5 + pi 2

A = 1e2 4 12

9 51 24

5 34 87

B = 32 4.65 74

0 13 -43

» help who

WHO List current variables.

WHO lists the variables in the current workspace.

WHOS lists more information about each variable.

WHO GLOBAL and WHOS GLOBAL list the variables in the global workspace.

Um comando igualmente importante é lookfor, que procura entre todas as funções do

MATLAB a palavra-chave especificada.

» lookfor max

BITMAX Maximum floating point integer.

REALMAX Largest positive floating point number.

MAX Largest component.

2.2.3 EXERCÍCIOS

Comandos: who, whos, eps, format, quit, save, load, clear, help, lookfor.

Exercícios:

1) Armazene no workspace os seguintes valores:

a = 3.132;

b = -23.004;

c = 5*pi;

d = (3 5.4 7.43)

e = (-2.234 0 pi/2)

2) Verifique o resultado das seguintes das seguintes operações:

a) a + b +eps e) g – c * f

b) c – b * (a / b) f) A * B

c) d – e g) a * A – B / c

d) e’ + 2 * f h) f * B

3) Verifique o resultado das seguintes operações:

a) sin(a) * log(b) e) max(log(g + f + dt))*B

b) tan(c+eps) – asin(b) f) sin(cos(tan(A)))

-9.81

f = 0

1

12e-8

g = 4i

pi*i

Page 35: Processamento de Imagens: Métodos e Análisesmesonpi.cat.cbpf.br/e2002/cursos/NotasAula/PDSI.pdf · processamento de imagens e visão por computador. I. Introdução ... codificação

Curso Introdutório de MATLAB 7

c) mind(d^2) – max(e) g) inv(A)

d) log(f) h) inv(At) * cos(B)

4) Atribua as seguintes expressões às variáveis:

a) 3.34 * a – pi/c para x

b) log(d + 34.0054) para y

c) log(A) para Z

d) ft * B para t

5) Salve as variáveis x, Z, B em um arquivo chamado exerc1.mat.

6) Saia do MATLAB, entre novamente e carregue as variáveis salvas anteriormente.

7) Apague a variável Z.

3. FAMILIARIZANDO-SE COM MATRIZES

3.1 Manipulação de Matrizes

3.1.1 ELEMENTOS DE UMA MATRIZ

Elementos de uma matriz podem ser qualquer expressão do MATLAB. Por exemplo:

» x=[-1.3 log(4.23^3) (1+2+3)/4*5]

Resulta em:

x =

-1.3000 4.3266 7.5000

Elementos individuais de uma matriz podem ser referenciados com seus respectivos

índices entre parêntesis. No exemplo anterior, para referenciar o segundo elemento do vetor x:

» x(2)

ans =

4.3266

Analogamente em uma matriz, com linha e coluna determinada tenho um elemento. Seja:

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

x =

1 2 3

4 5 6

7 8 9

Page 36: Processamento de Imagens: Métodos e Análisesmesonpi.cat.cbpf.br/e2002/cursos/NotasAula/PDSI.pdf · processamento de imagens e visão por computador. I. Introdução ... codificação

Curso Introdutório de MATLAB 8

» x(2,3)

ans =

6

Repare que a referência é sempre na forma matriz(linha,coluna).

3.1.2 GERANDO VETORES

O dois pontos ( : ) é um caracter importante no MATLAB. Escrevendo:

» x = 1:8

Cria um vetor cujo primeiro elemento é 1, o último é 8 e o passo 1.

x =

1 2 3 4 5 6 7 8

Pode-se modificar o passo:

» x = 1:1.5:8

x =

1.0000 2.5000 4.0000 5.5000 7.0000

Os dois pontos significam início : passo : fim. O valor de passo pode ser qualquer

número real (≅ 0). A notação ( : ) é muito útil para gerar tabelas e plotar gráficos, como

veremos adiante.

» x=0:0.2:3;

» y=exp(-x) + sin(x);

» z=[x'y']

z =

0 1.0000

0.2000 1.0174

0.4000 1.0597

0.6000 1.1135

0.8000 1.1667

1.0000 1.2094

1.2000 1.2332

1.4000 1.2320

1.6000 1.2015

1.8000 1.1391

2.0000 1.0446

2.2000 0.9193

Page 37: Processamento de Imagens: Métodos e Análisesmesonpi.cat.cbpf.br/e2002/cursos/NotasAula/PDSI.pdf · processamento de imagens e visão por computador. I. Introdução ... codificação

Curso Introdutório de MATLAB 9

1 2 3 4

A = 5 6 7 8

9 10 11 12

14 83 23 0

2.4000 0.7662

2.6000 0.5898

2.8000 0.3958

3.0 0.1909

3.1.3 MATRIZES DENTRO DE MATRIZES

É possível construir matrizes maiores a partir de matrizes menores. Por exemplo:

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

» r=[13 32 5];

» A=[A;r]

A =

1 2 3

4 5 6

7 8 9

13 32 5

Seguindo o mesmo raciocínio, pode-se extrair matrizes menores a partir de uma

maior. Já é sabido o comando

» x=A(1,3)

x =

3

atribui à variável “x” o elemento da 1a linha e 3a coluna da matriz A. Da mesma forma que é

possível atribuir um elemento de uma matriz (que é um escalar, ou seja, uma matriz 1 x 1),

também é possível atribuir pedaços inteiros da mesma matriz. Por exemplo, seja a matriz A:

Pegar os elementos da 2a linha e 3a e 4a

colunas:

» A=[1 2 3 4; 5 6 7 8;9 10 11 12;14 83 23 0]

A =

1 2 3 4

5 6 7 8

9 10 11 12

14 83 23 0

» A(2,[3 4])

ans =

7 8

Page 38: Processamento de Imagens: Métodos e Análisesmesonpi.cat.cbpf.br/e2002/cursos/NotasAula/PDSI.pdf · processamento de imagens e visão por computador. I. Introdução ... codificação

Curso Introdutório de MATLAB 10

1 2 3 4

A = 5 6 7 8

9 10 11 12

14 83 23 0

O que aconteceu? Ao invés de passar um escalar como índice para as colunas da

matriz A, passou-se o vetor [3 4]. O MATLAB interpretou isto como sendo: pegue os

elementos a23 e a24. Um outro exemplo ainda na matriz A. Para pegar a parte selecionada.

» A([1 2 3],[2 3])

ans =

2 3

6 7

10 11

ou ainda um comando equivalente:

» A(1:3,2:3)

ans =

2 3

6 7

10 11

Usar os dois pontos sozinhos significa todos os elementos da respectiva linha ou

coluna:

» A(3,:)

ans =

9 10 11 12

Este tipo de notação facilita enormemente a criação de programas.

3.1.4 EXERCÍCIOS

1) Sejam as matrizes abaixo:

1 2 3 4 7.4 pi 0

A = 5 6 7 8 B= -4.01 2 3

9 10 11 12 0.1 10 0

14 83 23 0

a) Atribua o elemento a32 à variável c

b) Atribua o elemento b22 à variável c

c) Atribua os elementos a11, a12 e a13 à um vetor d

d) Atribua a 3a coluna da matriz B a um vetor d

e) Atribua a 2a linha de B à primeira linha de A. Dica: preencha os espaços restantes com 0.

f) Atribua a 4a linha de A à 2a linha de A.

Page 39: Processamento de Imagens: Métodos e Análisesmesonpi.cat.cbpf.br/e2002/cursos/NotasAula/PDSI.pdf · processamento de imagens e visão por computador. I. Introdução ... codificação

Curso Introdutório de MATLAB 11

2) Gerar os seguintes vetores:

a) x começa em 0, vai até 15, passo 1

b) x começa em –3.4 vai até 8, passo 0.32

c) x começa em 10, vai até 1, passo –1.23

d) x começa em 0, vai até 152, passo 10*pi

3) Quais destes comandos são válidos?

a) c = A(2,3) e) c = A([1:4],2)

b) c = A[1 2 3] f) c = A(2,:)

c) c = A([ 1 2 3],4) g) c = A(:,:)

d) c = A(1:3,4) h) c = A(2:4,[1 3 4])

4) Extrair das matrizes do item 1 as submatrizes selecionadas

3.2 Operações Elemento – por – Elemento

Operações elemento – por – elemento, ao contrário das operações tradicionais como

multiplicação de matriz ou divisão de matriz, são operações entre elementos. Por exemplo:

» [1 2 3;4 5 6;7 8 9] * [1 2 3;4 5 6;7 8 9]

ans =

30 36 42

66 81 96

102 126 150

» [1 2 3;4 5 6;7 8 9] .* [1 2 3;4 5 6;7 8 9]

ans =

1 4 9

16 25 36

49 64 81

Pode-se perceber que no segundo caso p que ocorreu foi: elemento a11 * b11, a12 * b12, a21

* b21…. Diferente do primeiro caso, onde ocorreu uma multiplicação de duas matrizes 3 x 3.

As operações elemento por elemento são:

Símbolo Operação

.* multiplicação

./ ou .\ divisão

.^ potenciação

Page 40: Processamento de Imagens: Métodos e Análisesmesonpi.cat.cbpf.br/e2002/cursos/NotasAula/PDSI.pdf · processamento de imagens e visão por computador. I. Introdução ... codificação

Curso Introdutório de MATLAB 12

3.3 Operadores Lógicos e Relacionais

Existem seis operadores relacionais no MATLAB. São eles:

Símbolo Operador

< menor que

<= menor ou igual que

> maior que

>= maior ou igual que

== igual

~= não igual

O resultado da comparação é 1 se verdadeiro e 0 se falso. por exemplo:

» 2 + 2 == 4

ans =

1

No caso de comparação com matrizes, o resultado será uma matriz de 0 e 1:

» x=[2 3 4;5 2 7;9 2 7]

x =

2 3 4

5 2 7

9 2 7

» x>4

ans =

0 0 0

1 0 1

1 0 1

Para os operadores lógicos, tem-se:

Símbolo Operador

& e

| ou

~ não

Existem ainda algumas funções que são úteis com os operadores lógicos, com any ou

all. Por exemplo:

» x = [1 2 3 4 5 6]

x =

1 2 3 4 5 6

Page 41: Processamento de Imagens: Métodos e Análisesmesonpi.cat.cbpf.br/e2002/cursos/NotasAula/PDSI.pdf · processamento de imagens e visão por computador. I. Introdução ... codificação

Curso Introdutório de MATLAB 13

» any(x>5)

ans =

1

» all(x>5)

ans =

0

3.4 Operadores e Manipulação de Matrizes

Pode-se usar os vetores de 0 e 1, geralmente criados a partir de operações de

comparação, como referência para matrizes. Seja a matriz A descrita anteriormente. para

atribuir os elementos de A que satisfazem determinada comparação a uma outra variável,

faz-se:

variável = A(comparação)

Por exemplo:

» b = A(A>5)

b =

9

14

6

10

83

7

11

23

8

12

3.4.1 EXERCÍCIOS

Comandos: any, all.

Exercícios:

1) Seja o vetor x = 1:10. Verifique as afirmativas:

a) (x.^2) == ( x.*x) d) A = [1 2 3; 4 5 6; 7 8 9];

b) any((x.^3)>(3*x)) A^2 == A.^2

c) all((x./(x+1))>((x+1)./(x+1.5)))

Page 42: Processamento de Imagens: Métodos e Análisesmesonpi.cat.cbpf.br/e2002/cursos/NotasAula/PDSI.pdf · processamento de imagens e visão por computador. I. Introdução ... codificação

Curso Introdutório de MATLAB 14

2) Extrair a partir do vetor x do exercício anterior:

a) elementos maiores que 5 d) elementos cujo resto da divisão

b) elementos diferentes de 3 e 5 por 3 é 1. Dica: utilize a função

c) elementos iguais a 2 5 8 9 rem.

3.5 Algumas Funções

Eis abaixo alguns exemplos de funções básicas no MATLAB. Qualquer dúvida em

como usá-las basta usar o comando help,

exp e poly polinômio característico

log logaritmo natural det determinante

log10 logaritmo base 10 abs módulo

find índice de matriz sqrt raiz quadrada

max máximo valor real parte real de número complexo

min mínimo valor imag parte imaginária de número complexo

mean média aritmética conj conjunto de número complexo

std desvio padrão round arredondar

4. POLINÔMIOS

4.1 Representando Polinômios no MATLAB

O MATLAB representa polinômios como vetores de uma linha, contendo os

coeficientes ordenados em ordem decrescente. Por exemplo, o polinômio:

x3 – 6x2 –72x – 27

é representado da forma

» p=[1 -6 -72 -27]

p =

1 -6 -72 -27

4.2 Funções Relacionadas à Polinômios

roots raízes do polinômio deconv divisão

polyval valor do polinômio no ponto polyder derivadas

conv multiplicação polyfit melhor curva

Page 43: Processamento de Imagens: Métodos e Análisesmesonpi.cat.cbpf.br/e2002/cursos/NotasAula/PDSI.pdf · processamento de imagens e visão por computador. I. Introdução ... codificação

Curso Introdutório de MATLAB 15

Exemplo de ajuste de curva:

» x=1:7;

» y=[1.2 1.6 2.3 2.8 3.9 4.5 5.6];

» [x' y']

ans =

1.0000 1.2000

2.0000 1.6000

3.0000 2.3000

4.0000 2.8000

5.0000 3.9000

6.0000 4.5000

7.0000 5.6000

» faj=polyfit(x,y,1);

» faj=polyval(faj,x);

» plot(x,y,'+blue',x,faj,'black')

4.2.1 EXERCÍCIOS

1) Sejam os polinômios p = x4 – 3x2 +5x – 30 e q = 2x4 –7x3 +2x –15. Calcule:

a) p x q e) 1ª derivada de p

b) p ÷ q f) 1ª derivada de p no ponto x =3

c) p(2) g) 1ª derivada de p ÷ q

d) raízes q

5. GRÁFICOS

O MATLAB proporciona técnicas sofisticadas para visualização de dados. Ele trabalha

essencialmente com objetos gráficos, tais como linhas e superfícies, cuja aparência pode

ser controlada através de propriedades de objeto. Entretanto, como o MATLAB possui

uma vasta gama de funções para gráficos que automatizam essas propriedades, na maioria

das vezes não será necessário lidar com estes objetos.

5.1 Gráficos 2-D

A função básica para desenhar gráficos em duas dimensões é a função plot. Quando

esta função recebe um conjunto de ponto x e y, ela desenha-os em um plano cartesiano.

Por exemplo, seja o conjunto de pontos abaixo:

Page 44: Processamento de Imagens: Métodos e Análisesmesonpi.cat.cbpf.br/e2002/cursos/NotasAula/PDSI.pdf · processamento de imagens e visão por computador. I. Introdução ... codificação

Curso Introdutório de MATLAB 16

x y = x2

0 0

1 1

2 4

3 9

4 16

5 25

Para plotar o gráfico y = f(x), primeiro cria-se um vetor x contendo os valores de x, e

depois um vetor y com os valores de y. Então chama-se a

função plot, que é usada da seguinte maneira:

» x=[0 1 2 3 4 5];

» y=x.^2;

» plot(x,y)

Lembrando que para definir o vetor x pode-se usar os

comandos mostrados na seção 3.1.2 (“Gerando Vetores”) e

colocar a função diretamente num dos parâmetros da função

plot. Por exemplo:

» plot(x,y)

» x=[0:5];

» plot(x,x.^2)

O MATLAB criará uma janela com a figura do gráfico ( vide figura 1). Na verdade, a

função plot recebe um número variável de argumentos. Sua forma mais geral é

plot(x1,y1,jeito1,x2,y2,jeito2,…,xn,yn,jeiton). Ou seja, você pode traçar mais de uma curva no

mesmo gráfico. O argumento jeito representa as várias opções para o gráfico, que pode ser

qualquer um dos seguintes strings2:

y amarelo w branco + cruz

m roxo k preto - sólida

c azul claro -- tracejada * estrela

r vermelho . ponto : pontilhada

g verde o círculo -. traço ponto

b azul x x

Figura 1 – Gráfico f(x) = x2

2 Um string é uma seqüência de caracteres que o MATLAB interpreta como um texto. Os strings são

sempre denotados entre apóstrofos.

0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 50

5

10

15

20

25

Page 45: Processamento de Imagens: Métodos e Análisesmesonpi.cat.cbpf.br/e2002/cursos/NotasAula/PDSI.pdf · processamento de imagens e visão por computador. I. Introdução ... codificação

Curso Introdutório de MATLAB 17

Seja a função y = e-x ⋅ sen(x). Como seria seu gráfico no intervalo [ 0 ; e*π ] ?

Para desenhá-lo, primeiro cria-se um vetor “x” do tamanho do intervalo desejado com

um passo suficientemente pequeno para que a curva do desenho seja suave (um passo 0.1

neste caso é suficiente). Depois cria-se o vetor “y = f(x)” (ou coloca-se diretamente a função

no parâmetro da função plot), e plota-se o gráfico com o comando plot. Alguns detalhes

podem ser acrescentados:

title título do gráfico xlabel nome do eixo x

text escreve no local especificado ylabel nome do eixo y

gtext escreve texto no usando mouse grid desenha linhas de grade

semilogx gráfico mono-log em x semilogy gráfico mono-log em y

loglog gráfico di-log axis intervalo dos eixos no gráfico

» x=[0:0.1:exp(1)*pi];

» y=exp(-x).*sin(x);

» plot(x,y,'--b');

» title('gráfico f(x)=exp(-x)*sin(x)');

» xlabel('eixo x');

» ylabel('eixo y');

» gtext('ponto de máximo local');

O gráfico da figura 2 foi gerado a partir

dos comandos acima.

5.1.2 EXERCÍCIOS

Comandos: plot, title, xlabel, ylabel, axis, gtext, grid, semilogx, loglog

Exercícios:

1) Plote o gráfico das seguintes funções, no intervalo especificado:

a) y = x3 –5x +2, x ∈ [-20;20] c) y = cos(ex), x ∈ [0;20]

b) y = sin(x)*cos(x), x ∈ [-2π;π] d) y = d(x3 –5x + 2)/dx, x ∈ [0;10]

2) Plote em escala mono-log ou di-log as funções acima, acrescentando elementos

como título, nome aos eixos, etc.

Figura 2 – Exemplo do uso dos

vários comandos relacionados aos gráficos

0 1 2 3 4 5 6 7 8 9-0.05

0

0.05

0.1

0.15

0.2

0.25

0.3

0.35gráfico f(x)=exp(-x)*sin(x)

eixo x

eixo

y

ponto de máximo local

Page 46: Processamento de Imagens: Métodos e Análisesmesonpi.cat.cbpf.br/e2002/cursos/NotasAula/PDSI.pdf · processamento de imagens e visão por computador. I. Introdução ... codificação

Curso Introdutório de MATLAB 18

5.2 Gráficos 3-D

5.2.1 FUNÇÕES ELEMENTARES PARA GRÁFICOS 3-D

O MATLAB cria uma variedade de funções para gráficos em 3 dimensões. Entre elas:

plot3 Plota curvas em 3D surf, surfc, surfl superfícies 3D

contour Curvas de nível mesh, meshc, meshz cria linhas em perspectiva 3D

Por exemplo:

» t=0:pi/50:10*pi;

» plot3(sin(t),cos(t),t);

Gera a figura 3. Todos os outros

comandos de escala, título, nome aos eixos

continuam valendo (nome ao eixo z: zlabel).

5.2.2 MESHGRID

O MATLAB define uma superfície do tipo mesh (rede) pelas coordenadas Z sobre um

plano x-y. Superfícies tipo mesh são úteis para visualizar matrizes demasiadamente grandes

para serem mostradas na forma numérica, ou para plotar funções de duas variáveis.

O primeiro passo para plotar uma função de 2 variáveis z=f(x,y) é gerar matrizes X e Y

contendo linhas e colunas repetidas, respectivamente, para funcionarem como o domínio da

função. A função meshgrid transforma o domínio especificado por dois vetores x y em duas

matrizes X e Y. Essas matrizes então são usadas para avaliar a função de 2 variáveis. Por

exemplo, seja a função:

Figura 3 – Gráfico de uma hélice circular

Gráfico 3D

Curvas Superfícies

-1-0.5

00.5

1

-1

-0.5

0

0.5

10

10

20

30

40

Page 47: Processamento de Imagens: Métodos e Análisesmesonpi.cat.cbpf.br/e2002/cursos/NotasAula/PDSI.pdf · processamento de imagens e visão por computador. I. Introdução ... codificação

Curso Introdutório de MATLAB 19

f(x,y) = sen(x2 + y2)½

/ (x2 + y2)½

» plot3(sin(t),cos(t),t);

» [X,Y]=meshgrid(-8:0.5:8,-8:0.5:8);

» r= sqrt(X.^2+Y.^2)+eps;

» Z=sin(r)./r;

» mesh(X,Y,Z)

5.2.3 MELHORANDO A APARÊNCIA

É possível especificar o ponto de vista no qual se enxerga a figura usando o comando

view. O comando view recebe dois argumentos. O primeiro é a rotação em graus no plano

xy, e o segundo é a elevação em graus do ponto de vista. O padrão é view(-37.5,30).

Também é possível colocar vários tipos de gráficos em uma mesma figura, usando o

comando subplot. Por exemplo, subplot(m,n,p) quebra a figura em m por n subgráficos e

seleciona o p-ésimo como o atual. Mais detalhes ver help on-line.

Page 48: Processamento de Imagens: Métodos e Análisesmesonpi.cat.cbpf.br/e2002/cursos/NotasAula/PDSI.pdf · processamento de imagens e visão por computador. I. Introdução ... codificação

Curso Introdutório de MATLAB 20

É possível ainda mudar o mapa de cores dos gráficos. Para tal, utilize a função

colormap.

» subplot(221)

» mesh(X,Y,Z)

» title('Sombrero')

» subplot(222)

» plot3(sin(t),cos(t),t);

» title('Hélice')

» subplot(223)

» mesh(a,b,c)

» title('Esfera')

» subplot(224)

» mesh(X,Y,3*sqrt(X.^2+Y.^2))

» title('Cone')

5.2.4 EXERCÍCIOS

Comandos: plot3, mesh, contour, surf, meshgrid, view, subplot, colormap

1) Plote as seguintes funções no intervalo especificado:

a) f(x,y) = x2 + y2, x, y ∈ [-5;5] e) f(x,y) = (x + y)/(x – y), x, y ∈ [-10;10]

b) f(x,y) = (1 - x2 - y2)½

, x, y ∈ [-0.5;0.5] f) f(x,y) = x ⋅ y /(x2 + y2), x, y ∈ [-10;10]

c) f(x,y) = x ⋅ y , x, y ∈ [0;1] g) f(x,y) = sen(x/2) ⋅ cos(y/3), x, y ∈ [-π;π]

d) f(x,y) = arctg(x2 + y2) , x, y ∈ [-8;8]

2) Plote os seis primeiros gráficos do item anterior na mesma figura.

6. PROGRAMAÇÃO

Figura 4 - Gráfico usando comando subplot

Arquivos

Scripts Funções

Funções Função

à matrizes extensas

à comandos freqüentemente digitados

Page 49: Processamento de Imagens: Métodos e Análisesmesonpi.cat.cbpf.br/e2002/cursos/NotasAula/PDSI.pdf · processamento de imagens e visão por computador. I. Introdução ... codificação

Curso Introdutório de MATLAB 21

Outra grande vantagem do MATLAB é a facilidade para criar programas, da mesma

forma que linguagens como o C, BASIC ou Fortran.

6.1 Controladores de Fluxo

6.1.1 FOR

O laço for permite um comando, ou grupo de comandos, repetir-se um número

determinado de vezes. A forma geral de um laço for é:

for variável = expressão

comandos

end

Um laço for é sempre terminado com um end.

Por exemplo,

» for i = 1:10

v(i)=3*i;

end

Cria um vetor “v” com 10 elementos:

» v

v =

3 6 9 12 15 18 21 24 27 30

6.1.2 WHILE

O laço while permite que o comando seja repetido um número indefinido de vezes,

enquanto uma condição lógica seja satisfeita. A forma geral do laço while é:

while (expressão verdadeira)

comandos

end

Assim, como no caso de for, while precisa de um end para indicar o fim do laço. O

exemplo abaixo calcula o fatorial de n enquanto n! < 10100.

» n=1;

Page 50: Processamento de Imagens: Métodos e Análisesmesonpi.cat.cbpf.br/e2002/cursos/NotasAula/PDSI.pdf · processamento de imagens e visão por computador. I. Introdução ... codificação

Curso Introdutório de MATLAB 22

» while prod(1:n)<1.e100

n=n+1;

end

» n

n =

70

6.1.3 IF

O comando if estabelece caminhos alternativos para a fluência do programa. Sua

forma geral é:

if condição verdadeira

comandos

elseif condição 2 verdadeira

comandos

else

comandos

end

A primeira condição é sempre escrita com if, a última com else, e todas as

intermediárias com elseif.

» a=round(10*rand(1));

» if a>5

b=3*a;

elseif a<5;

b=a/3;

else

b=a;

end

6.1.4 BREAK, INPUT, PAUSE

Além dos controladores de fluxo tradicionais, existem mais algumas funções que são

bastante úteis para programação. Entre elas:

break – termina um laço

input – recebe dados através do teclado. Por exemplo, n = input(‘Entre com valor: ‘)

atribui o valor digitado no teclado à variável n.

Page 51: Processamento de Imagens: Métodos e Análisesmesonpi.cat.cbpf.br/e2002/cursos/NotasAula/PDSI.pdf · processamento de imagens e visão por computador. I. Introdução ... codificação

Curso Introdutório de MATLAB 23

pause – pausa na execução do programa, até que qualquer tecla ser digitada.

Pause(n) dá uma pausa de n segundos.

6.2 Arquivos M

Quando uma linha de comandos é digitada no MATLAB, ele imediatamente processa e

devolve o resultado. Porém, é possível executar seqüências de comandos, que podem ser

guardados em arquivos. Arquivos que contém comandos do MATLAB são chamados

arquivos M porque possuem extensão .m.

Um arquivo M é formado por uma seqüência de comandos ou de referência para

outros arquivos. Eles podem ser criados a partir de qualquer editor d texto (como por

exemplo, o Notepad do Windows), e são arquivos de texto comuns. Existem dois tipos

distintos de arquivos: Scripts e Funções. Existe ainda uma classe especial de funções

chamada funções função.

6.2.1 SCRIPTS

Os arquivos script automatizam uma seqüência de comandos. Quando um script é

chamado, o MATLAB simplesmente executa os comandos contidos no arquivo. Scripts são

úteis para entrar com matrizes muito extensas (pois erros de digitação podem ser facilmente

corrigidos) e comandos que seriam digitados freqüentemente.

O exemplo abaixo foi escrito do editor de texto Notepad, e calcula os primeiros

números de Fibonacci, mostrando o resultado em um gráfico.

% Arquivo M que calcula os primeiros

% números de Fibonacci

f = [1 1];

i=1;

while f(i) + f(i+1) < 1000

f(i+2) = f(i) + f(i+1)

i=i+1;

end

plot(f)

O símbolo “%” significa comentários. Tudo que estiver na linha após “%” não será

considerado pelo MATLAB.

Page 52: Processamento de Imagens: Métodos e Análisesmesonpi.cat.cbpf.br/e2002/cursos/NotasAula/PDSI.pdf · processamento de imagens e visão por computador. I. Introdução ... codificação

Curso Introdutório de MATLAB 24

Estando este arquivo salvo em um dos diretórios path do MATLAB com uma extensão

.m, toda vez que seu nome for digitado, todas as linhas de comandos acima serão

executadas.

OBS: Para saber o path do MATLAB, use o comando path. Com este comando é

possível inclusive alterar o path original. Lembre-se de salvar o arquivo com uma extensão

.m, com a opção salvar como tipo: todos os arquivos (*.*).

6.2.2 ARQUIVOS-FUNÇÃO

Uma função difere de um script já que argumentos podem ser passados para a

função, e as variáveis criadas e manipuladas na função são locais para a mesma.

Na primeira linha de um arquivo função deverá aparecer a palavra function, definirá o

nome da função.

function y = escal(a,b)

% ESCAL Produto escalar de dois vetores

%

% ESCAL retorna um vetor que é o resultado do produto

% escalar de dois vetores.

% Os dois vetores devem ser do mesmo tamanho

if size(a) ~= size(b)

error(‘Erro: vetores não tem mesmo tamanho’);

end

y=sum(a.*b);

Salve este texto como um arquivo escal.m no path do MATLAB. Crie dois vetores de

mesmo tamanho e chame a função escal. A resposta será o produto escalar de dois vetores.

OBS: As primeiras linhas de comentários, que começam na 2ª linha do arquivo são

tratadas pelo help on-line como a explicação da função, sendo que a 2ª linha é usada pelo

comando lookfor. Por exemplo,

function y=próximo(x)

% PRÓXIMO Número consecutivo

% PRÓXIMO(x) retorna o próximo número natural depois de x.

%

% Veja também ANTERIOR, BLABLABLABLA

Quando dor digitado help próximo todas as linhas de comentários vão aparecer. E ao

Page 53: Processamento de Imagens: Métodos e Análisesmesonpi.cat.cbpf.br/e2002/cursos/NotasAula/PDSI.pdf · processamento de imagens e visão por computador. I. Introdução ... codificação

Curso Introdutório de MATLAB 25

digitar lookfor próximo, o MATLAB irá procurar todas as funções que contenham esta

palavra, e mostrar suas 2as linhas.

6.2.3 FUNÇÕES FUNÇÃO

A função função (Function Functions) é uma classe especial de função do MATLAB,

que ao invés de receber variáveis numéricas como argumento (como no item 6.2.2)

recebem strings que são nomes de funções.

Abaixo algumas funções função e suas utilidades:

fplot gráfico de uma função fzero raiz de uma função de uma variável

quad integração numérica fmin/fmins mínimo de uma função

As funções matemáticas são representadas por arquivos-função. Por exemplo, seja a

função representando a velocidade de uma partícula:

v(t) = sen(t) ⋅ t2 +8t +1

Para plotar o gráfico da velocidades em função do tempo existem duas poções:

• criar um vetor “t” do tamanho desejado, criar um vetor v = sin(t).* t.^2 +8*t +1, e

usar a função plot com v e t;

• criar um arquivo função com a função “v(t)” e usar a função fplot.

A vantagem da 2ª opção é que o MATLAB escolherá pontos suficientemente

espaçados para que a curva seja suave. Crie um arquivo chamado velocid:

» !notepad velocid.m

function v=velocid(t)

% VELOCID velocidade de uma

% partícula num instante t

%

v=sin(t).*t.^2+8*t+1;

Agora usando o comando fplot:

» fplot('velocid',[0,12])

Da mesma forma, para avaliar o espaço percorrido no mesmo intervalo de tempo

(integral da função), ou quando a partícula está parada (v=0), basta usar as outras funções:

» x=quad('velocid',0,12)

x =

453.2952

Page 54: Processamento de Imagens: Métodos e Análisesmesonpi.cat.cbpf.br/e2002/cursos/NotasAula/PDSI.pdf · processamento de imagens e visão por computador. I. Introdução ... codificação

Curso Introdutório de MATLAB 26

» t2=fzero('velocid',10)

t2 =

10.3261

6.2.4 EXERCÍCIOS

1) Crie scripts para as seqüências de comandos

a) item 5.1.1 c) item 6.2.1

b) item 5.2.2 d) que geram números primos de 2 a 1000

2) Crie uma função que:

a) calcule a média de um vetor

b) calcule o produto de duas matrizes

c) diz se um número é positivo ou negativo, par ou ímpar

d) dados T e v, a e b calcula a pressão de um gás de Van der Waals

3) Crie um script que plote o gráfico p x v de um gás de Van der Waals cujas

constantes a e b sejam determinadas ao carregar o script e cuja a temperatura

seja digitada pelo usuário. dica: use a função criada no exercício 2-d.

4) Plote o gráfico do item 2-d usando fplot. Encontre o mínimo da função através de

fmin. Assuma v, a, b constantes quaisquer.

5) Calcule a integral de:

a) f(x) = sen(x) entre 0 e 1

b) f(x) = x2 –6x +7 entre –3 e 3

7. BIBLIOGRAFIA

• MATLAB User’s Guide, The MathWorks Inc.

• TODESCO, José Leomar, Curso Introdutório de MATLAB, UNIVERSIDADE

FEDERAL DE SANTA CATARINA, 1995.

Page 55: Processamento de Imagens: Métodos e Análisesmesonpi.cat.cbpf.br/e2002/cursos/NotasAula/PDSI.pdf · processamento de imagens e visão por computador. I. Introdução ... codificação

Curso Introdutório de MATLAB 27

8. RESPOSTA DOS EXERCÍCIOS

2.2.3

1)

» f=[-9.81;0;1]

f =

-9.8100

0

1.0000

» g=[12e-8; 4i; pi*i]

g =

0.0000

0 + 4.0000i

0 + 3.1416i

» A=[0.32 2.5+pi 2; 1e2 4 12; 9 51 24]

A =

0.3200 5.6416 2.0000

100.0000 4.0000 12.0000

9.0000 51.0000 24.0000

» B=[5 34 87;32 4.65 74; 0 13 -43]

B =

5.0000 34.0000 87.0000

32.0000 4.6500 74.0000

0 13.0000 -43.0000

2)

a) –19.8720

b) 12.5760

c) 5.2340 5.4000 5.8592

d) –24.8540

0

3.5708

e) 1.0e+002 *

1.5410

0 + 0.0400i

-0.1571 + 0.0314i

f) 1.0e+003 *

0.1821 0.0631 0.3593

0.6280 3.5746 8.4800

1.6770 0.8552 3.5250

g)

0.6893 15.5050 0.7254

311.1628 12.2320 32.8730

28.1880 158.9044 77.9055

h) –49.0500 –350.5400 –896.4700

3)

a) 0.0301 + 0.0301i

b) 1.5708 – 3.8283i

c) min(d.^2)-max(e)

7.4292

d) 2.2834 + 3.1416i

- Inf

0

e) 1.0e+002 *

0.0959+0.1571i 0.6523+1.0681i 1.6690+2.7332i

0.6139+1.0053i 0.0892+0.1461i 1.4196+2.3248i

0 0.2494+0.4084i -0.8249-1.3509i

f) 0.8108 0.6696 -0.5450

0.7396 0.3906 0.7205

0.7830 0.5804 -0.5095

g) 0.1739 0.0113 -0.0201

0.7723 0.0035 -0.0661

-1.7064 -0.0116 0.1897

h) -1.0128 -1.7442 -0.7156

-0.0055 -0.0203 0.0006

0.1288 0.1933 0.0825

4)

a) x = 10.2609

b) y = 3.6111 3.6739 3.7241

c) Z =

-1.1394 1.7302 0.6931

4.6052 1.3863 2.4849

2.1972 3.9318 3.1781

d) t=f*’B

5) save exerc1.mat x Z B

6) load exerc1.mat

7) clear Z

3.1.4

1) a) c=A(3,2) c=10

b) c=B(2,2) c=2

c) d=A(1,[1 2 3]) d = 1 2 3

d) d=B(:,3)

d = 0

3

0

e) A(1,:)=[B(2,:),0]

f) A(2,:)=A(4,:)

2)

a) x=0:1:15

b) x=-3.4:0.32:8

Page 56: Processamento de Imagens: Métodos e Análisesmesonpi.cat.cbpf.br/e2002/cursos/NotasAula/PDSI.pdf · processamento de imagens e visão por computador. I. Introdução ... codificação

Curso Introdutório de MATLAB 28

c) x=10:-1.23:1

d) x=0:10*pi:15^2

3)

a) válido

b) inválido, sugestão: » c=A([1 2 3],:)

c) válido

d) válido

e) válido

f) válido

g) válido, resulta na própria matriz A

h) válido

4) t=A([1 2],[2 3]) t=B(1,:)

3.4.1

a) 1 1 1 1 1 1 1 1 1 1

b) 1

c) 0

d)

0 0 0

0 0 0

0 0 0

2)

a) t=x(x>5)

b) t=x(x~=3 & x~=5)

c) t=x(x==2 | x==5 | x==8 | x==9)

d) t=x(rem(x,3)==1)

4.2.1

1)

a)» conv(p,q)

2 -7 -6 33 -110 204 55 -135 450

b) » deconv(p,q)

0.5000

d) polyval(p,2)

-16

e) » roots(q)

3.5850

0.5709 + 1.1745i

0.5709 - 1.1745i

-1.2268

f) » polyval(polyder(q),3)

g) » polyder(deconv(p,q))

5.1.2

1) a) x=[-20:20];

y=x.^3-5*x+2;

plot(x,y)

b) x=[-2*pi:0.1pi];

y=sin(x).*cos(x)

plot(x,y)

d) x=0:0.1:10;

y=polyder([1 0 –5 2]);

y=polyval(y,x);

plot(y)

2) Para aplicar escala usando mono-log ou

di-log ao gráfico basta usar os comandos

semilgox(…), semilgoy(…) ou loglog(…).

5.2.4

1) a)

x=[-5:0.5:5];

y=x;

[x,y]=meshgrid(x,y);

z=x.^2 + y.^2;

mesh(z)

b)

x=[-0.5:0.1:0.5];

y=x;

[x,y]=meshgrid(x,y);

z=sqrt(1 - x.^2 - y.^2);

mesh(z)

c)

x=[0:0.1:1];

y=x;

[x,y]=meshgrid(x,y);

z=x.*y;

mesh(z)

d)

x=[-10:0.5:10];

y=x;

[x,y]=meshgrid(x,y);

z=atan(x.^2 + y.^2);

mesh(z)

e)

x=[-10:0.5:10];

y=[-10:0.5:10];

[x,y]=meshgrid(x,y);

z=(x+y)./(x-y);

mesh(z)

f)

x=[-10:0.5:10];

y=[-10:0.5:10];

[x,y]=meshgrid(x,y);

z=(x.*y)./(x.^2-y.^2);

mesh(z)

g)

x=[-pi:0.1:pi];

y=x;

[x,y]=meshgrid(x,y);

z=sin(x/2).*cos(y/3);

mesh(z)

Page 57: Processamento de Imagens: Métodos e Análisesmesonpi.cat.cbpf.br/e2002/cursos/NotasAula/PDSI.pdf · processamento de imagens e visão por computador. I. Introdução ... codificação

Curso Introdutório de MATLAB 29

6.2.4

1) a) x=0:5;

y=x.^2;

plot(x,y)

end

b) x=[-10:0.5:10];

y=[-10:0.5:10];

[x,y]=meshgrid(x,y);

z=x.^2 + y.^2;

mesh(z)

end

c) % Arquivo M que calcula os primeiros

% números de Fibonacci

f=[1 1];

i=1;

while (f(i) + f(i+1))<1000

f(i+2)=f(i) + f(i+1);

i=i+1;

end

plot(f)

d)

2) a) funciotn y=media(x)

y-sum(x)/length(x)

b) function y=produto(a,b)

y=a*b

c) function y = teste(x)

if rem(x,2)==0

disp(‘O número é par’)

else

disp(‘O número é impar’)

end

if abs(x)~=x

disp(‘O número é negativo’)

else

disp(‘O número é positivo’)

end

d) function y=pressao(t,v,a,b)

y=(8.31*t)./(v-b)-a./v.^2;

3) clear

clc

v=[1:0.3:10];

a=input(‘a=’);

b=input(‘b=’);

t=input(‘t=’);

plot(v,pressao(t,v,a,b))

end

5) a)

» quad('sin',0,1)

ans =

0.4597

b)

» !notepad poli.m

function y=poly(x)

y=x.^2-6*x+7

» quad('poli',-3,3)

ans =

60