• Nenhum resultado encontrado

Processamento Morfológico de Imagens Digitais em FPGA

N/A
N/A
Protected

Academic year: 2021

Share "Processamento Morfológico de Imagens Digitais em FPGA"

Copied!
8
0
0

Texto

(1)

Processamento Morfológico de Imagens Digitais em FPGA

Ana Rita Silva

Horácio C. Neto

INESC-ID/IST/UTL INESC-ID/IST/UTL

Resumo

Este trabalho envolveu o projecto de um processador dedicado para a execução de operações morfológicas binárias para o processamento digital de imagens numa FPGA.

Com base no estudo da morfologia matemática e considerando a imagem binária, projectou-se uma arquitectura de multiprocessamento, especificada em VHDL, apta a realizar as operações morfológicas binárias sobre imagens com diferentes resoluções e elementos estruturantes variados.

Os resultados obtidos foram analisados detalhadamente, em termos de desempenho e área, em função da dimensão das imagens envolvidas.

Por fim, desenvolveu-se, como demonstrador, uma arquitectura capaz de detectar uma dada configuração numa imagem.

1. Introdução

A Morfologia Matemática tem um papel importante na área de processamento de imagens, correspondendo as suas ferramentas básicas, dilatação e erosão, a operações binárias simples a executar sobre os pixéis de imagens digitais.

O encadeamento de operações deste tipo permite a realização eficiente de um número significativo de algoritmos de processamento de imagens, tais como a abertura, o fecho ou a extracção ou detecção de componentes.

O facto de as operações fundamentais serem operações binárias pixel a pixel, facilita a sua concretização directa em hardware digital e permite conseguir realizações extremamente eficazes em dispositivos lógicos programáveis (FPGA).

O presente trabalho teve como objectivo projectar e implementar um processador digital de imagem especializado, para executar operações morfológicas binárias sobre imagens a preto e branco, de forma a conseguir realizar os principais algoritmos de processamento que se baseiam neste tipo de operação.

Os componentes do sistema foram implementados de forma parametrizável, com a

Este trabalho foi financiado pela FCT (financiamento plurianual do INESC-ID) através de fundos do programa PIDDAC.

finalidade de permitir realizar operações sobre imagens de diferentes resoluções.

2. Processamento de Imagem

Morfológico

A imagem digital pode ser considerada como uma matriz, cujos índices de linhas e colunas identificam um ponto na imagem e o correspondente valor desse ponto, denominado pixel, identifica a intensidade da imagem.

A palavra morfologia é usada no contexto da morfologia matemática como uma ferramenta para extrair informações relativas à geometria e tipologia de um conjunto desconhecido, a imagem [1].

A morfologia matemática [2] está relacionada com a teoria dos conjuntos e com a álgebra de

Minkwoski [3], fornecendo uma ferramenta eficaz para a análise geométrica de imagens.

A ideia básica da morfologia binária é percorrer uma imagem com um elemento estruturante e quantificar a forma como este se encaixa ou não na imagem. O elemento estruturante é também uma imagem digital binária, geralmente menor que a imagem a analisar, definido por um pixel denominado origem que identifica o pixel a ser processado.

Considerando A a imagem original e B o elemento estruturante, fig. 2.1, descrevem-se abaixo as operações básicas da morfologia binária: dilatação e erosão.

A operação de dilatação, A ⊕B, tem como objectivo ampliar gradualmente as fronteiras da imagem, fazendo com que os conjuntos a preto aumentem de tamanho, enquanto os buracos no interior das regiões se tornam menores, fig. 2.2 (a).

Por sua vez, a operação de erosão, AΘB, tem como propósito reduzir os limites da imagem, fazendo com que os conjuntos de pixéis a preto

Imagem A Imagem B

(2)

diminuam de tamanho, enquanto os buracos nessas áreas tendem a aumentar, fig.2.2 (b).

Os pixéis da imagem resultante da dilatação e da erosão são obtidos pelas expressões (2.1) e (2.2), respectivamente.

)

.

(

, , , ,i lk lk j li k j

b

a

D

=

Σ

(2.1)

)

.

(

, , , , j li k C k l k l i j

b

a

E

=

Π

+ + (2.2)

As equações fazem uso de matrizes binárias com 2-dimensões, possibilitando um modelo apropriado para implementações em hardware [5].

Em relação às equações (2.1) e (2.2),

D

j,i, Ej,i

são elementos da matriz binária representando as imagens resultantes da dilatação e da erosão e

k i l j

a− , , aj+ ,li+kconstituem os elementos deslocados dos pixéis da imagem A,

a

j,i.

O valor do deslocamento a efectuar é determinado pelo elemento

b

l,k do elemento estruturante B, cujo complemento lógico é

b

cl,k.

A propriedade (2.3) permite executar duas dilatações em paralelo, sendo que a imagem final representa a união dos resultados parciais obtidos; o mesmo se aplica à erosão, propriedade (2.4), sendo o resultado final a intersecção dos resultados parciais.

)

(

)

(

)

(

C

D

A

C

A

D

A

=

(2.3)

)

(

)

(

)

(

C

D

A

C

A

D

A

Θ

=

Θ

Θ

(2.4)

O encadeamento das operações básicas permite a realização de um número significativo de algoritmos de processamento de imagens [1]. Apresentam-se alguns exemplos na tabela 2.1.

De entre a variedade de sistemas de processamento morfológico, existem sistemas implementados com base em filtros morfológicos [4, 6], com base no modelo “systolic array

paradigm” [5, 7, 8] e sistemas organizados em “pipeline” [9, 10].

A arquitectura proposta em [5] utiliza um elemento de processamento combinado Erosão-Dilatação (CED), que permite realizar as operações básicas e os algoritmos abertura e fecho, considerando elementos estruturantes de 1-dim e tamanho MB.

Abertura Fecho

Transformação Hit-or-miss Extracção de contornos Preenchimento de uma região, dado um ponto p na região. Componentes conectados, dado um ponto p do componente.

Tabela 2.1. Algoritmos de processamento de imagens.

O sistema é constituído por MB blocos iguais ao

apresentado na fig. 2.3 de [5]. Cada um dos blocos representa um pixel do elemento estruturante, correspondendo o segmento de cima à operação de erosão e o de baixo à de dilatação.

Figura 2.3. Estrutura interna do bloco [5].

A arquitectura usa os segmentos de erosão e dilatação em pipeline para realizar os algoritmos abertura e fecho. Quando são efectuadas as operações básicas, a imagem de entrada é dividida em duas partes e cada uma delas é atribuída a um dos segmentos, de modo a que possam ser utilizados ambos ao mesmo tempo.

A tabela 2.2 indica o número de ciclos de processamento, considerando imagens com dimensões NxM e o elemento estruturante B de uma dimensão, com tamanho MB.

Para processar elementos estruturantes de 2-dimensões, o elemento de 2-dim é decomposto em elementos de 1-dim sendo possível realizar as dilatações em paralelo. Unindo os resultados parciais obtém-se o resultado final da dilatação, conforme ilustrado na fig. 2.4 de [5].

No caso da operação de erosão o resultado final é obtido pela intersecção dos resultados parciais.

B B A B Ao =( Θ )⊕ B B A B A• =( ⊕ )Θ ) ( ) (A B1 A B2 B A⊗ = Θ ∩ Θ ) ( ) (A =AAΘB β ... 3 , 2 , 1 ; ) ( 0 1 = = ∩ ⊕ = − k e p X A B X X C K k ... 3 , 2 , 1 ; ) ( 0 1 = = ∩ ⊕ = − k e p X A B X Xk K (a) (b) B A ⊕ AΘB

(3)

Figura 3.1. Unidade de Dilatação. Operação Primeira Arquitectura Segunda Arquitectura Dilatação Erosão Abertura/Fecho

Tabela 2.2. Ciclos de processamento de [5].

Figura 2.4. Operação de Dilatação com um elemento estruturante com três linhas [5].

3. Arquitectura de Processamento

Morfológico

A arquitectura proposta no âmbito deste trabalho utiliza blocos semelhantes à arquitectura apresentada na secção 2 [5], mas recorrendo a menos recursos e implementando directamente as operações para elementos estruturantes de 2-dim.

O sistema é constituído por uma unidade de controlo, uma unidade de dilatação e uma unidade de erosão, fig. 3.1.

Figura 3.2. Diagrama de Blocos.

Para efectuar as operações básicas são usadas as duas unidades em separado; no caso dos algoritmos fecho e abertura são usadas de forma encadeada.

Como modelo de implementação considera-se uma imagem com tamanho máximo 128x128 e um elemento estruturante com tamanho máximo 3x3, cujo pixel origem se localiza no canto superior esquerdo, fig. 3.2. A posição do pixel origem determina a ordem pela qual os pixéis da imagem A são inspeccionados.

De acordo com a equação (2.3), é possível decompor o elemento estruturante de 2-dim em

3 2 1 B B B B= ∪ ∪ , executando-se três dilatações em paralelo, equação (3.1).

)

(

)

(

)

(

2, 2, 1 3 0 , 1 , 1 1 3 0 , , 0 1 3 0 , k j ik k k i j k k k i j k k i j

b

a

b

a

b

a

D

− − − = − − − = − − =

+

+

=

Σ

Σ

Σ

(3.1) Cada pixel da imagem dilatada é determinado à vez pela união dos três resultados parciais, B1, B2 e

B3.

No caso da operação de erosão, são realizadas três erosões em paralelo, equação (3.2).

− = + + − = + + − = +

+

+

+

=

1 3 0 , 2 , 2 1 3 0 , 1 , 1 1 3 0 , , 0 ,

(

)

(

)

(

)

k k i j k c k k i j k c k k i j k c i j

b

a

b

a

b

a

E

(3.2)

Para que os cálculos sejam efectuados correctamente nas situações fronteira, foi necessário incluir 4 sinais de controlo para garantir que os cálculos de termos com pixéis fora da imagem A sejam 0.

A Unidade de Dilatação, fig. 3.3, é constituída por 9 blocos unitários de dilatação (BUD), cada um contendo um registo e representando o cálculo de um termo, por dois registos de deslocamento de 125 bits (128-3) e por uma porta OR que realiza a união das três dilatações parciais.

M N MB+1+ × M N MB+1+ × 2 M N MB+ 2+ × 3 2 3 N M MB × + + 2 3 2MB N M × + + M N MB+ 2+ × 3

(4)

A Unidade de Erosão é também constituída por 9 blocos unitários de erosão, por dois registos de deslocamento com 125 posições e por uma porta

AND que realiza a intersecção das três erosões parciais.

A tabela 3.1 indica as estimativas do número de ciclos de processamento necessários para completar cada operação, considerando uma imagem de tamanho máximo

N ×

M

,N linhas e

M

colunas, e um elemento estruturante com tamanho máximo

B

B M

N × com o pixel origem situado no canto superior esquerdo. Operação Nº de ciclos Dilatação N ×M Erosão N×M+(NB−1)×M+MB−1 Abertura N×M+(NB−1)×M+(MB−1)+1 Fecho N×M+(NB−1)×M+(MB−1)+1

Tabela 3.1. Estimativa do número de ciclos de processamento.

Se a imagem tiver N ×M pixéis, são necessários

M

N × ciclos para completar a operação de dilatação. Isto porque a operação é iniciada com a entrada do primeiro pixel da imagem original no registo do primeiro bloco unitário e finaliza com a entrada do último pixel.

No caso da operação de erosão, são precisos

1 )

1

(NB− ×M+MB− ciclos para colocar o primeiro

pixel no registo do último bloco unitário da unidade e mais N ×M ciclos para realizar os cálculos.

Os algoritmos fecho e abertura, por efectuarem as mesmas operações mas por ordem inversa, caracterizam-se pelo mesmo número de ciclos.

Tomando como exemplo o algoritmo abertura, são necessários N×M+(NB−1)×M+MB−1 ciclos para realizar a erosão, dos quais

N

× M

1

ciclos são usados em paralelo pela unidade de dilatação. Para finalizar é necessário mais 1 ciclo para obter o último pixel.

Com base na fig. 3.3, é também possível estimar o número de registos e o número de LUTs utilizadas como memória nas unidades de dilatação e erosão, tabela 3.2. Registos (FFs)

(

N ⋅B MB

)

SRL (LUT)

(

)

32 1 B B M M N − ⋅ −

Tabela 3.2. Estimativa dos recursos ocupados.

O número de registos corresponde a

(

N ⋅B MB

)

registos de 1-bit, e o número de SRL é obtido

considerando que um registo de deslocamento com

32 bits é realizado com 1 LUT e que o número total de registos é

(

NB−1

)

.

A implementação da arquitectura foi realizada com o ambiente de projecto Xilinx ISE versão13.1 para o dispositivo Virtex 6 XC6VLX75T FF484 -3.

A tabela 3.3 mostra o número de ciclos necessários para completar cada operação e o respectivo tempo de processamento, tendo em conta a frequência máxima de 219 MHz estimada após

Synthesis.

Operação Nº de ciclos Tempo de Processamento

Dilatação 16384 74,61µs

Erosão 16642 75,78µs

Abertura 16643 75,79µs

Fecho 16643 75,79µs

Tabela 3.3. Número de ciclos e tempo de processamento.

A tabela 3.4 mostra os recursos ocupados por cada unidade. U. Dilatação U. Erosão Registos (FFs) 9 9 LUTs 15 21 - Lógica 7 13 - SRL 8 8

Tabela 3.4. Ocupação de recursos para cada unidade.

Os resultados obtidos, tabelas 3.3 e 3.4, estão de acordo com as estimativas genéricas apresentadas nas tabelas 3.1 e 3.2.

4. Arquitectura de Multiprocessamento

É possível aumentar o desempenho da arquitectura replicando os blocos de processamento, de modo a cada unidade passar a ser constituída por

n blocos que funcionam em paralelo processando n pixéis por ciclo.

Considerando o mesmo modelo de implementação e a entrada de n pixéis em paralelo, em cada ciclo, o diagrama da nova unidade de dilatação está esquematizado na fig. 4.1.

Na figura, P(x) representa por ordem crescente os pixéis da linha x, P(x+1) os da linha x+1. A dilatação é, portanto, iniciada com a entrada dos pixéis das primeiras n linhas, seguindo-se as restantes linhas, tomando x os valores 0, n, 2n…, até todos os pixéis serem processados.

Os blocos de dilatação são iguais aos implementados na arquitectura anterior, cada um com N ⋅B MB blocos unitários de dilatação e cada

(5)

O propósito dos registos de deslocamento é armazenar linhas que serão necessárias para cálculos de linhas seguintes.

A unidade de erosão é semelhante à de dilatação, com a excepção dos n blocos serem de erosão e da implementação de registos de deslocamento à saída dos blocos.

Na operação de erosão, o cálculo de uma linha necessita de saber o valor de linhas seguintes, equação (3.2), que podem não estar incluídas nas n linhas recebidas; dessa forma, o cálculo das primeiras n

(

NB−1

)

linhas é realizado em

primeiro lugar. Os registos de deslocamento, a colocar à saída dos blocos, servem para armazenar essas linhas, para que na saída se tenha sempre um conjunto de n pixéis válidos.

A tabela 4.1 indica as estimativas do número de ciclos de processamento para cada operação, no caso de n blocos de processamento paralelo.

Operação Nº de ciclos Dilatação n M N × Erosão × +M+(MB−1) n M N Abertura × +M+(MB−1)+1 n M N Fecho × +M+(MB−1)+1 n M N

Tabela 4.1. Estimativa do número de ciclos.

Se a imagem tiver N ×M pixéis são necessários n

M N ×

ciclos para completar a operação de dilatação. No caso da operação de erosão são necessários mais M+MB −1ciclos para se apresentar o primeiro conjunto de n pixéis válidos.

Da mesma forma que nos estudos anteriores, o algoritmo abertura realiza a operação de erosão em

1 − + + × B M M n M

N ciclos, dos quais

1 − × n M N ciclos são usados em paralelo pela unidade de dilatação, sendo necessário mais 1 ciclo para finalizar.

Na tabela 4.2 analisa-se a arquitectura de multiprocessamento, em termos de eficiência (considerando 100% um desempenho n vezes melhor que o da arquitectura de uniprocessamento); considerando-se três imagens de tamanhos diferentes e o elemento estruturante modelo e n=32.

Operação 128x128 512x512 1024x1024 Dilatação 100% 100% 100% Erosão 81% 94% 97% Abertura 81% 94% 97% Fecho 81% 94% 97% Tabela 4.2. Eficiência.

De acordo com os resultados obtidos, verifica-se que o aumento do deverifica-sempenho da arquitectura de multiprocessamento, relativamente à anterior, é praticamente igual ao número de blocos que uma unidade pode conter em paralelo.

A tabela 4.3 indica as estimativas do número de registos e do número de LUTs utilizadas como memória para as duas unidades.

Registos (FFs)

(

nMB

)

+(NB−1)⋅MB SRL (LUTs) Dilatação

(

)

32 1 B B M M N − ⋅ − SRL (LUTs) Erosão

(

)

(

(

)

)

32 1 32 1 M M n N M N B B B + − − ⋅ − ⋅ −

Tabela 4.3. Estimativa dos recursos ocupados.

Tendo em conta a replicação de registos ilustrada na figura 4.1, quer na unidade de

Unidade de Dilatação P(x+2) P(x+1) P(x) P(x+2)’ 2 P(x+(n-1))’ P(x+(n-1)) P(x+(n-2)) P(x+(n-3)) n … P(x)’ P(x) P(x+(n-1)) P(x+(n-2)) 0 P(x+1)’ P(x+1) P(x) P(x+(n-1)) 1 n Bloco Unitário Bloco de Dilatação b00 b01 b10 b11 b12 b20 b21 b22 b02 n

(6)

dilatação, quer na de erosão, o número de registos (FFs) corresponde a

(

n ⋅MB

)

registos, nos quais se

armazenam dados vindos da memória e

(

NB−1

)

MB registos para alojar dados provenientes

de registos de deslocamento.

O cálculo do número de SRL é determinado como anteriormente. Na unidade de dilatação, implementaram-se (NB−1) registos de deslocamento com M −MB bits. No caso da erosão, são implementados mais n−(NB−1) registos à saída dos blocos com M bits.

A implementação da arquitectura, considerando o modelo e 32 réplicas de blocos, permitiu obter resultados, quanto à ocupação de recursos, indicados na tabela 4.4. U. Dilatação U. Erosão Registos (FFs) 102 162 LUTs 140 333 - Lógica 132 205 - SRL 8 128

Tabela 4.4. Ocupação de recursos para cada unidade.

Comparando o número de registos com as estimativas definidas, verifica-se que o número obtido para a unidade de erosão fica acima do esperado. Isto deve-se ao facto de a ferramenta ter duplicado alguns dos registos existentes.

Observando a tabela, conclui-se que, para qualquer uma das unidades, o número de LUTs utilizado como lógica não corresponde ao produto entre a quantidade de LUTs de um bloco pelo número de blocos implementados, n.

Uma vez que a cada bloco corresponde o cálculo de um conjunto específico de linhas, não é necessário que todos incluam os sinais de controlo das excepções, sendo, assim, possível diminuir o número de operações lógicas em alguns dos blocos. Generalizando para um qualquer elemento estruturante e para uma qualquer operação, cada unidade é constituída por NB tipos de blocos, dos

quais apenas o de menor área é implementado mais que uma vez, n−(NB−1)vezes.

5. Resultados

Nesta secção analisam-se os resultados estimados para um conjunto de imagens padrão e três elementos estruturantes diferentes.

Na tabela 5.1 identificam-se os padrões seleccionados e as respectivas dimensões em pixéis. Numa primeira análise, são obtidos resultados quanto ao tempo de processamento e ocupação de

recursos, tabelas 5.2 e 5.3. Considera-se a unidade de dilatação e um elemento com tamanho 3x3.

Padrão Dim (px)

Modelo 128x128

VGA (Video Graphics Array) 640x480

WVGA (Wide VGA) 800x480

XGA (Extended Graphics Array) 1024x768 SXGA(Super XGA) 1280x1024 WUXGA (Widescreen Ultra XGA) 1920x1080

Tabela 5.1. Padrões de resolução.

Imagem Modelo VGA WVGA XGA

Nº de blocos n 32 32 32 32 T. Processamento 1,5µs 27µs 34µs 70µs Registos 102 102 102 102 LUTs 140 162 162 180 - Lógica 132 132 132 132 - SRL 8 30 30 48

Tabela 5.2. Unidade de dilatação (32 réplicas).

Imagem XGA SXGA WUXGA

Nº de blocos, n 64 64 64 T. Processamento 35µs 58µs 92µs Registos 198 198 198 LUTs 308 324 328 - Lógica 260 260 260 - SRL 48 64 68

Tabela 5.3. Unidade de dilatação (64 réplicas).

Observando os resultados, verifica-se que o número de registos e de lógica aumenta com o aumento do número de blocos implementados. O número de SRL aumenta com o aumento do número de colunas e, no caso da erosão, aumenta também com o aumento do número de réplicas, de acordo com as estimativas obtidas na tabela 4.3.

Por sua vez, o tempo de processamento aumenta com o aumento do tamanho da imagem e diminui com o aumento do número de blocos implementados.

Numa segunda análise, estuda-se o número de ciclos de processamento necessários para completar as operações básicas, considerando-se três elementos estruturantes diferentes (3x3,10x10,

20x20), tabelas 5.4 e 5.5.

(7)

estruturante não influencia o número de ciclos de processamento. No caso da erosão aumenta com o aumento do número de colunas do elemento.

Dilatação VGA XGA XGA SXGA WUXGA

Blocos 32 32 64 64 64

3x3 9600 25346 12288 20480 32400

10x10 9600 25346 12288 20480 32400

20x20 9600 25346 12288 20480 32400

Tabela 5.4. Número de ciclos para realizar a dilatação.

Erosão VGA XGA XGA SXGA WUXGA

Blocos 32 32 64 64 64

3x3 10082 25346 13058 21506 33482

10x10 10089 25353 13065 21513 33489

20x20 10099 25363 13075 21523 33499

Tabela 5.5. Número de ciclos para realizar a erosão.

Por fim, relaciona-se a variação do tamanho do elemento estruturante com a ocupação de recursos, tabelas 5.6 e 5.7.

Padrão XGA XGA SXGA WUXGA

Blocos 32 64 64 64

Registos 820 1460 1460 1460

LUTs 6820 11876 12460 12606

LUTs (%) 15% 26% 27% 27%

Tabela 5.6. Elemento estruturante 10x10.

Padrão XGA XGA SXGA WUXGA

Blocos 32 64 64 64

Registos 2040 3320 3320 3320

LUTs 30614 51766 52430 52596

LUTs (%) 66% 111% 113% 113%

Tabela 5.7. Elemento estruturante 20x20.

Observando os resultados, conclui-se que o número de registos e de LUTs aumenta também com o aumento do tamanho do elemento estruturante.

De acordo com a tabela 5.7, o processamento dos padrões com 64 blocos ultrapassa o valor máximo de LUTs disponíveis no dispositivo considerado (o mais pequeno da família Virtex6), pelo que só poderiam ser concretizados com um dispositivo de maior complexidade, por exemplo, a

Virtex6-130 (segundo mais pequeno da família).

Como conclusão final, verifica-se que o número de registos e de lógica aumenta com o aumento do tamanho do elemento estruturante e com o aumento do número de réplicas. O número de SRL aumenta com o número de colunas da imagem. No caso da erosão, aumenta ainda com o aumento do número de réplicas.

Por último, o número de ciclos aumenta com o aumento do tamanho da imagem e diminui com o aumento do número de blocos.

6. Algoritmo

Hit-or-miss

Após o estudo e caracterização das arquitecturas aptas a executar as operações básicas, implementou-se uma arquitectura apta a realizar o algoritmo Hit-or-miss que permite detectar padrões, localizando objectos numa imagem. O algoritmo é realizado por encadeamento de duas erosões, conforme indicado na equação (6.1).

)

(

)

(

A

B

1

A

B

2

B

A

=

Θ

c

Θ

(6.1)

De acordo com a equação (6.1), na qual B1

representa o conjunto que se pretende descobrir e

B2 o conjunto de elementos associados com o fundo

desse objecto, obtém-se a unidade de processamento esquematizada na fig. 6.1.

Na implementação considerou-se uma imagem com tamanho máximo 128x128, na qual se pretende detectar o padrão B1, de tamanho 3x3,

usando os elementos estruturantes apresentados na fig. 6.2.

A unidade de processamento é constituída por duas unidades de erosão iguais, cada uma com 32 blocos, cada um constituído por 25 blocos unitários. Os elementos estruturantes têm o pixel origem localizado ao centro, por isso a unidade de erosão sofre ligeiras alterações em relação à anterior. A variação da posição interfere na ordem pela qual são examinados os vários pixéis da imagem, existindo alterações na quantidade de registos de deslocamento à saída dos blocos. A restante implementação mantém-se. OUT AND IN 1 B 2 B ACΘ B B

Figura 6.1. Unidade de Processamento.

Figura 6.2. Elementos estruturantes.

(8)

O número de registos de deslocamento é calculado de acordo com a linha em que o pixel origem se situa. No caso da unidade de dilatação, o valor é obtido pela expressão

n −

x

, onde n representa o número de réplicas e x a respectiva coordenada da linha. Esta expressão é empregada em todos os casos, com a excepção do caso em que

x tem valor 0, ou seja, em que não é necessário colocar nenhum registo de deslocamento.

No caso da unidade de erosão, é calculado com base na expressão

n

y

, onde y representa a coordenada simétrica da linha, em relação ao centro do elemento estruturante. Da mesma forma que na dilatação, se o pixel estiver na última linha, y terá valor 0 e não será necessário colocar nenhum registo de deslocamento.

A tabela 6.1 indica o tempo de processamento da arquitectura e a respectiva ocupação de recursos, após implementação. Frequência (max) 192 MHz Tempo de Processamento 3,35µs Registos 480 LUTs 2290 - Lógica 2018 - SRL 272

Tabela 6.1. Tempo de processamento e ocupação de recursos da Unidade de Processamento.

Na fig. 6.3 realiza-se uma apresentação ilustrativa do processamento, considerando apenas os primeiros 10x10 pixéis da imagem original.

A figura (a) representa a imagem original, contendo quatro padrões diferentes e a figura (b) o resultado final após a identificação do padrão.

O resultado é apenas constituído por um ponto a preto, que corresponde ao centro onde se localiza o conjunto a detectar.

7. Conclusões

Neste trabalho desenvolveu-se e implementou-se uma arquitectura de multiprocessamento, capaz de realizar operações morfológicas sobre imagens e elementos estruturantes diferentes, processando mais que um pixel em paralelo.

Foi realizada uma análise detalhada da arquitectura, em termos de área e desempenho, para o processamento de um conjunto de imagens padrão e elementos estruturantes diferentes, considerando o dispositivo mais pequeno da tecnologia Virtex6.

Após este estudo desenvolveu-se, como demonstrador, um algoritmo que detecta uma determinada configuração numa dada imagem.

Como trabalho futuro, pretende-se desenvolver e implementar, na mesma arquitectura, algoritmos de processamento mais complexos tais como: extracção de contornos, preenchimento de regiões, extracção de componentes, etc.

Uma extensão deste trabalho consistirá no processamento de imagens digitais directamente em níveis de cinza, onde as operações morfológicas são também aplicadas.

Referências

[1] Gonzalez, R. C., e Woods, R. E., “Digital image

processing”, 3ª ed., Addison-Wesley, Reading, Mass., 1992.

[2] J. Serra, “Image Analysis and Mathematical

Morphology”, London: Academic Press 1982. [3] R.M. Haralick, S.R. Stenberg, X. Zhuang, “Image

Analysis Using Mathematical Morphology”, IEEE PAMI-9, no.4, 532-550, Julho 1987.

[4] Jörg Velten e Anton Kummert, “FPGA-based

Implementation of variable sized structuring element for 2D binary morphological operations”, Proceedings of the First IEEE International

Workshop on Electronic Design, Test and

Applications (DELTA’02), 2002.

[5] E.N. Malamas, A.G. Malamos e T.A. Varvarigou, “Fast Implementation of Binary Morphological

Operations on Hardware-Efficient Systolic Architectures”, Journal of VLSI Signal Processing volume 25, p.79-93, 2000.

[6] Jörg Velten e Anton Kummert, "Implementation of a

high-performance hardware architecture for binary morphological image processing operations,"

Circuits and Systems, 2004. The 2004 47th Midwest Symposium, vol.2, II-241-II-244, 25-28 Julho 2004. [7] K.I. Diamantras, K.H. Zimmermann e S.Y. Kung, “A

linear systolic Array for Real-Time Morphological Image Proessing”, Journal of VLSI Signal Processing Systemsvol.17, 1997, p.43-57.

[8] K.I. Diamantras, K.H. Zimmermann e S.Y. Kung, “Integrated Fast Implementation of Matehmatical

Morphology Operations in Image Processing”, IEEE International Symposium on circuits and Systems, 1990, vol 2, 1442-1445.

[9] Lyn Abott, Robert M. Haralick e Xinhua Zhuang, “Pipeline Architectures for Morphologic Image

Analysis”, vol. 1, 1988, 23-40.

[10]F.Y. Shih, C.T. King e C.C. Pu, "Pipeline

Architectures for Recursive Morphological Operations”, Image Processing, IEEE Transactions on, vol.4, no.1, p.11-18, Jan 1995.

Referências

Documentos relacionados

Um ambiente, interface dentro deste site, uma plata- forma para denúncias e até mesmo para tirar dúvidas, porque pode ter pro- blemas no seu setor que não seja assédio moral, se for

Outro ponto importante referente à inserção dos jovens no mercado de trabalho é a possibilidade de conciliar estudo e trabalho. Os dados demonstram as

Frondes fasciculadas, não adpressas ao substrato, levemente dimórficas; as estéreis com 16-27 cm de comprimento e 9,0-12 cm de largura; pecíolo com 6,0-10,0 cm de

¾ Segundo nível • Terceiro nível – Quarto nível A FAMÍLIA PROFIBUS A FAMÍLIA PROFIBUS PROFIBUS-FMS PROFIBUS-FMS é a solução de propósito geral para comunicação de

Em que pese ausência de perícia médica judicial, cabe frisar que o julgador não está adstrito apenas à prova técnica para formar a sua convicção, podendo

Also due to the political relevance of the problem of repressing misguided employment relationships, during the centre-left Prodi Government (2006-2008) and the

• The definition of the concept of the project’s area of indirect influence should consider the area affected by changes in economic, social and environmental dynamics induced

a) AHP Priority Calculator: disponível de forma gratuita na web no endereço https://bpmsg.com/ahp/ahp-calc.php. Será utilizado para os cálculos do método AHP