Sie sind auf Seite 1von 11

FILTRAGEM ESPACIAL

A filtragem espacial consiste no processamento da vizinhana, ou seja, clculos lineares so realizados nos pixels da vizinhana de um pixel central (x, y) e os resultados desse processo so aplicados ao pixel central.

1.1) Filtragem Espacial Linear


As operaes lineares de interesse consistem na multiplicao de cada pixel da vizinhana por um coeficiente e na soma desses resultados para obter uma resposta a cada ponto central (x, y). Em MATLAB todo esse processo pode ser feito com o uso da funo g = imfilter(f, w, filtering_mode, boundary_options, sizeoptions) onde: f a imagem de entrada; w a mscara; g a imagem filtrada, na sada; filterng_mode a correlao (corr) ou convoluo (conv); boundary_options trata do problema de border padding (preenchimento de borda); size_options pode ser full, que retorna a imagem preenchida como resposta, ou same, que retorna uma imagem do mesmo tamanho de f. A funo g = imfilter(f, w, replicate) utilizada para implementar uma filtragem linear padro. A Image Processing Toolbox do MATLAB j traz alguns filtros padres, que podem ser obtidos atravs da funo w = fspecial(type, parameters) onde type um dos tipos de filtros a seguir:

Tipo average

Descrio e Sintaxe fspecial(average, [r c]). r e c so as dimenses do filtro a ser utilizado,

sendo que um nico nmero corresponder a uma mscara quadrada. disk gaussian laplacian log motion fspecial(disk, r). Uma mscara mdia circular de raio padro 5. fspecial(gaussian, [r c], sig). Um filtro Gaussiano, cujos padres so 3 x 3 para [r c] e 0,5 para sig. fspecial(laplacian, alpha). Um filtro Laplaciano 3x3 com alpha no intervalo [0 1] e padro 0,5. fspecial(log, [r c], sig). a Laplaciana de uma Gaussiana, com padres 5x5 e 0,5. fspecial(motion, len, theta). O filtro aproxima a imagem de um esboo de movimento linear, onde len o nmero de pixels movimentados e theta a direo do movimento. Os padres para len e theta so 9 e 0. fspecial(prewitt). Um filtro de Prewitt 3x3, wv, que aproxima a imagem do gradiente vertical. fspecial(sobel). Um filtro de Sobel 3x3, sv, que aproxima a imagem do gradiente vertical. fspecial(unsharp, alpha). Um filtro de nitidez. O parmetro alpha controla a forma e varia no intervalo [0 1], o padro 0,2.
TABELA 1

prewitt sobel unsharp

1.2) Filtragem Espacial No Linear


1.2.1) Filtragem Espacial Mediana
O filtro linear mediano similar ao filtro average (mdio), no entanto, ao invs de fazer a operao da mdia dos valores da vizinhana, esse filtro faz a mediana desses valores e computa eles ao pixel central. Para aplicar esse filtro pode ser usada a funo: g = medfilt2(A, [m n]) onde: A a imagem a ser filtrada; [m n] a matriz que determina as dimenses do filtro, ou seja, quanto ser tomado da vizinhana para os clculos. Pode-se tambm usar a funo, j com os valores padres para [m n] iguais a 3x3 escrevendose

g = medfilt2(A)

1.2.2) Filtragem Espacial de Ordem-Estatstica


Esse filtro no linear responde baseado na ordenao edos pixels contidos na vizinhana e ento substituindo o valor do pixel central com o valor determinado pelo resultado de classificao. Ele pode ser obtido atravs do uso da funo g = ordfilt2(f, order, domain) onde g a imagem de sada; f a imagem de entrada; order a ordem do nmero que desejamos retirar de parte da matriz f e colocar na matriz g; domain uma matriz com 0s e 1s, onde os 1s representam os nmeros que sero usados na ordenao. Exemplo 1) Considere a matriz
I = [ 1 2 4 5 ; 5 3 5 1 ; 0 3 5 2 ; 2 1 7 7 ]; J = ordfilt2(I,3, ones(2,2));

Usando o domain ones(2, 2) obtemos o bloco [1 2; 5 3]. Ordenando-o obtemos [1 2 3 5]. Como a ordem que escolhemos 3, o terceiro menor nmero ser o escolhido para preencher a posio (1, 1) da matiz J, que nesse caso 3. Assim obtemos a matriz resultante

J = [ 3 ? ? ? ; ? ? ? ? ; ? ? ? ? ; ? ? ? ? ];

O processo se repetir at que toda a matriz esteja preenchida.

PROCESSAMENTO MORFOLGICO DE IMAGEM


Os processos morfolgicos aplicados s imagens baseiam-se na modificao da estrutura da imagem original, muitas vezes para a remoo de rudos (como o caso do uso da eroso e da dilatao conjuntamente). As operaes mais conhecidas so a Eroso e a Dilatao de uma imagem.

2.1) Dilatao

A dilatao uma operao que cresce uma imagem binria atravs da aplicao de uma espcie de filtro, chamado de elemento estrutural (structuring element, se). No MATLAB, podemos implementar essa funo utilizando a seguinte sintaxe A2 = imdilate(A, se) onde: A a imagem que deseja-se dilatar; se o elemento estrutural que deseja-se aplicar imagem. Para gerar o elemento estrutural se usa-se a funo se = strel(shape, parameters) onde: shape uma string especificando o formato desejado; parameters uma lista de parmetros que especificaro as informaes sobre o formato (shape) da estrutura, como o tamanho. A Image Processing Toolbox (IPT) do MATLAB nos trs uma srie de elementos estruturais que podem ser usados. Alguns deles esto listados na tabela abaixo.

Sintaxe se = strel(diamond, R)

Descrio Gera uma estrutura plana na forma de um diamante, onde R a distncia da origem do se at as pontas extremas do diamante. Gera uma estrutura plana na forma de um disco de raio R. Gera uma estrutura plana na forma de uma linha, onde LEN especifica a largura da linha e DEG o ngulo em relao origem. Gera uma estrutura plana na forma de um octgono, onde R especifica a distncia do

se = strel(disk, R) se = strel(line, LEN, DEG)

se = strel(octagon, R)

centro do octgono at um de seus lados. se = strel(pair, OFFSET) Gera uma estrutura plana contendo dois membros. Um membro est localizado na origem, enquanto a posio do outro especificada pelo vetor OFFSET de dois inteiros. Gera uma estrutura plana contendo 2*P + 1 elementos. Um dos elementos se posiciona na origem, enquanto os outros so especificados pelo vetor V de dois inteiros que representam as linhas e as colunas. Gera uma estrutura plana retangular. M e N especificam as dimenses desse retngulo, onde M o nmero de linhas e N o de colunas. Gera uma estrutura plana quadrada, onde W especifica a largura do quadrado. Gera uma estrutura de formato arbitrrio. NHOOD uma matriz de 0s e 1s que especifica o formato. A segunda forma uma simplificao da primeira.
TABELA 2

se = strel(periodicline, P, V)

se = strel(rectangle, MN)

se = strel(square, W) se = strel(arbitrary, NHOOD) se = strel(NHOOD)

2.2) Eroso
A eroso uma operao que encolhe a imagem. Assim como na dilatao, a maneira de controlar esse encolhimento com o uso de elementos estruturais. No MATLAB podemos implementar uma eroso atravs do uso da funo A2 = imerode(A, se) onde: A a imagem que deseja-se dilatar; se o elemento estrutural que deseja-se aplicar imagem. Bem como na dilatao, os formatos para se esto indicados na TABELA 2.

2.3) Combinao da Dilatao e da Eroso


Comumente necessrio se fazer uso das duas tcnicas de processamento morfolgico. Para isso, existem duas novas operaes, a abertura (Opening) e o fechamento (Closing). Sero apresentadas tambm as operaes de acerto-ou-erro (Hit-or-miss), as tabelas de pesquisa (Lookup tables) e um uso mais detalhado da funo bwmorph.

2.3.1) Opening
A operao de abertura de uma imagem realizada atravs de uma eroso de uma imagem A por uma B (onde B um elemento estrutural) seguida de uma dilatao do resultado por B. A abertura nos dar uma imagem emaciada, onde todas as ligaes e contornos finos so erodidos. Essa operao pode ser obtida atravs do uso da funo C = imopen(A, se) onde: C a imagem que ser gerada aps a abertura; A a imagem de entrada; se o elemento estrutural a ser usado.

2.3.2) Closing
A operao de fechamento de uma imagem realizada atravs de uma dilatao de uma imagem A por uma B (elemento estrutural) seguida de uma eroso do resultado por B. O fechamento nos dar uma imagem emaciada, assim como na abertura, porm, no fechamento, os espaos abertos das imagens sero dilatados, e pequenos buracos na imagem sero preenchidos. Essa operao pode ser obtida atravs do uso da funo: C = imclose(A, se) onde: C a imagem que ser gerada aps o fechamento; A a imagem de entrada; se o elemento estrutural a ser usado.

2.3.3) Transformada Hit-or-Miss

A transformada hit-or-miss capaz de identificar as configuraes especficas dos pixis, tais como isolar pixels de primeiro plano, ou pixels que so os pontos de extremidade dos segmentos de linha (deteco de bordas), ou seja, uma operao para a identificao de forma. Para isso, ela usa um par de elementos estruturais, B1 e B2, onde B2 o complemento de B1. No MATLAB, podemos implementar essa funo da seguinte maneira C = bwhitmiss(A, B1, B2) onde: C o resultado da operao; B1 o elemento estrutural; B2 o segundo elemento estrutural, complemento de B2.

2.3.4) Lookup Tables


Quando os elementos estruturais da transformada hit-or-miss so muito pequenos, uma maneira mais rpida de computar a transformada usando uma Lookup Table (LUT). Uma tabela de pesquisa um vetor coluna, em que cada elemento representa o valor a ser retornado para uma possvel combinao de pixels numa vizinhana. Para uma vizinhana de 3x3, por exemplo, existem 512 (29) possveis combinaes de pixels, logo, a LUT um vetor de 512 elementos. A funo usada para criar uma LUT lut = makelut(fun, n) Como a funo fun complexa, no trabalharemos ela nesta seo. Uma aplicao mais til no uso das Lookup Tables a deteco de bordas das imagens, ou seja, a identificao dos pixels de extremidade. Para tal tarefa, vamos usar o algortimo endpoints.m, mostrado a seguir: function g = endpoints(f) %ENDPOINTS Computes end points of a binary image. % G = ENDPOINTS(F) computes the end points of the binary image F % and returns them in the binary image G.

% % % % % %

Copyright 2002-2009 R. C. Gonzalez, R. E. Woods, and S. L. Eddins From the book Digital Image Processing Using MATLAB, 2nd ed., Gatesmark Publishing, 2009. Book web site: http://www.imageprocessingplace.com Publisher web site: http://www.gatesmark.com/DIPUM2e.htm

persistent lut if isempty(lut) lut = makelut(@endpoint_fcn, 3); end g = applylut(f,lut); %------------------------------------------------------------------% function is_end_point = endpoint_fcn(nhood) % Determines if a pixel is an end point. % IS_END_POINT = ENDPOINT_FCN(NHOOD) accepts a 3-by-3 binary % neighborhood, NHOOD, and returns a 1 if the center element is an % end point; otherwise it returns a 0. interval1 = [0 1 0; -1 1 -1; -1 -1 -1]; interval2 = [1 -1 -1; -1 1 -1; -1 -1 -1]; % Use bwhitmiss to see if the input neighborhood matches either % interval1 or interval2, or any of their 90-degree rotations. for k = 1:4 % rot90(A, k) rotates the matrix A by 90 degrees k times. C = bwhitmiss(nhood, rot90(interval1, k)); D = bwhitmiss(nhood, rot90(interval2, k)); if (C(2,2) == 1) || (D(2,2) == 1) % Pixel neighborhood matches one of the end-point % configurations, so return true. is_end_point = true; return end end % Pixel neighborhood did not match any of the end-point % configurations, so return false. is_end_point = false;

2.3.5) Funo bwmorph


A funo da IPT bwmorph implementa uma variedade de operaes baseadas na combinao de dilataes, eroses e operaes com lookup tables. A sintaxe dessa funo g = bwmorph(f, operation, n) onde: operation uma string especificando a operao desejada; n um inteiro especificando o nmero de vezes que a operao deve ser repetida. As operaes contidas na IPT esto listadas na tabela abaixo:

Operao bothat

Descrio Operao Bottom-Hat que usa um elemento estrutural 3x3. A operao remove pequenos elementos e detalhes da imagem que estiverem cercados com elementos mais escuros. Conecta pxels separados por lacunas de pxel nico. Remove pxels isolados no primeiro plano. Operao de fechamento com um elemento estrutural 3x3. Preenche pixels isolados do primeiro plano conectados. Operao de dilatao com um elemento estrutural 3x3. Operao de eroso com um elemento estrutural 3x3. Preenche buracos de pxel nico. Usa-se imfill para buracos maiores. Remove pxels do primeiro plano conectados em H.

bridge clean close diag dilate erode fill hbreak

10

majority

Faz um pxel p ser do primeiro plano se ele tiver uma vizinhana de, pelo menos, 5 pxels do primeiro plano. Caso contrrio, ele se tornar um pxel do background. Operao de abertura com um elemento estrutural 3x3. Remove pxels interiores (pixels do primeiro plano que no tem vizinhos no background). Transforma objetos sem buracos em pontos e objetos com buracos em anis. Faz o esqueleto de uma imagem. Remove pxels isolados, ou seja, no concatenados. Engrossa a imagem sem juntar as suas partes desconexas. Afina as imagens sem buracos para linhas finas conectadas. Objetos com buracos se tornam anis finos. Operao Top-Hat usando um elemento estrutural de 3x3. A operao remove pequenos elementos e detalhes da imagem que estiverem cercados com elementos mais brilhantes..
TABELA 3

open remove shrink skel spur thicken thin

tophat

11

Das könnte Ihnen auch gefallen