Vous êtes sur la page 1sur 131

PROGRAMA DE PS-GRADUAO EM ENGENHARIA ELTRICA

PPGEE

DISSERTAO DE MESTRADO
VISUALIZAO E PROCESSAMENTO DIGITAL DE IMAGENS MDICAS

MESTRANDO: Carlos Alberto Zaffari

rea de concentrao: Tecnologia da Informao


Linha de Pesquisa: DSP e Engenharia Biomdica

Porto Alegre
2006

2
CARLOS ALBERTO ZAFFARI

VISUALIZAO E PROCESSAMENTO DIGITAL DE IMAGENS MDICAS

Dissertao

apresentada

como

requisito para obteno do grau de


Mestre,

no

Programa

de

Ps-

Graduao de Engenharia Eltrica


da Pontifcia Universidade Catlica
do Rio Grande do Sul.

ORIENTADOR: Dario Francisco Guimares de Azevedo, Ph.D.


CO-ORIENTADOR: Prof. Dr. Thais Russomano

Porto Alegre
2006

VISUALIZAO E PROCESSAMENTO DIGITAL DE IMAGENS MDICAS

Dissertao

apresentada

como

requisito para obteno do grau de


Mestre,

no

Programa

de

Ps-

Graduao de Engenharia Eltrica


da Pontifcia Universidade Catlica
do Rio Grande do Sul.

Aprovada em ______de___________de_______

BANCA EXAMINADOREA

Prof. Dr. Thais Russomano

Prof. Dr. Paulo Roberto Girardello Franco

Prof. Dr. Ana Maria Marques

RESUMO
Zaffari, Carlos Alberto. Visualizao e Processamento Digital de Imagens Mdicas
Esta dissertao descreve a teoria envolvida, o projeto e os resultados obtidos
com o Visualizador e Processador de Imagens Mdicas (VPIM), que voltado para a
rea mdica e cientfica. Nela so cobertos o embasamento matemtico, os algoritmos
usados na construo das ferramentas, o ambiente usado para a implementao, a
arquitetura empregada e a descrio dos principais objetos utilizados pelo VPIM. So
discutidas, tambm, as particularidades encontradas durante a fase de implementao do
projeto e o processo usado para futuras expanses (plug-in). Os resultados obtidos so
apresentados mediante de uso de imagens visando um fcil entendimento dos mesmos.
Entre as funes implementadas podemos ressaltar: a rotao de imagens, o
espelhamento de imagens, a negao de uma imagem, os filtros de convoluo no
espao (filtro da mdia mvel, filtro da mediana, filtro de Sobel), os filtros em
freqncia (filtros de Butterworth), a obteno do espectro de potncia da imagem, o
remapeamento global ou parcial de uma imagem, a aplicao de pseudo-cor, as tcnicas
de combinao, o threshold global, as tcnicas de medidas feitas sobre a imagem, as
estatsticas obtidas, o histograma, as linhas de perfil, o uso de sries e estudos para
apresentao de imagens e a apresentao como filme das imagens de uma srie.

5
ABSTRACT
Zaffari, Carlos Alberto. Visualizador e Processador de Imagens Mdicas
This text describes the theory, the project and results obtained by the
Visualizador e Processador de Imagens Mdicas (VPIM - in English: Visualization and
Processing of the Medical Image). The mathematical base, the algorithms, the software
and hardware environments, and the internal software architecture with the main objects
of the VPIM are the main topics covered. Particularities of the software implementation
and the means to extent the current set of features (through plug-ins) are also discussed.
The results are shown mainly through images as a mean to ease its understanding.
Among the main features implemented there are: image rotation, mirroring, the
compliment of an image, convolution filters in space-domain (moving average lowpass, median filter, and Sobel), frequency filters (Butterworth filters), the generation of
a power-specter representation of an image, total and partial grayscale remapping of an
image, the association of pseudo-colors to the scales of gray in an image, image
combination techniques, global threshold system, measuring tools for images,
histogram, profile lines, and movie-alike image presentation using DICOM Series and
Studies in order to sequence images.

Dedico esta dissertao a minha


esposa que muito me apoiou durante
o mestrado.

7
AGRADECIMENTOS

Agradeo particularmente ao meu filho Paulo Zaffari pela sua ajuda nas rotinas
voltadas para o Windows, e ao meu colega Srgio Helegada pela sua colaborao na
soluo de problemas encontrada na implementao do VPIM.
Quero agradecer tambm a todas as pessoas que com sua opinio ou incentivo
me ajudaram a concluir esta dissertao.

8
LISTA DE FIGURAS
Figura 1: Interpolao linear usada para ampliao de imagens .................................... 26
Figura 2: Interpolao de imagens usada na reduo de uma imagem .......................... 26
Figura 3: Bordas de direo arbitrria ............................................................................ 28
Figura 4: Transformada bidimensional de Fourier usando a propriedade da
separabilidade ......................................................................................................... 32
Figura 5: Espectro de Fourier como resultado do clculo da transformada de Fourier.. 34
Figura 6: Espectro da transformada de Fourier deslocado ............................................. 34
Figura 7: Transformada de Fourier de uma janela retangular ........................................ 46
Figura 8: Espectro de potncia da janela retangular....................................................... 46
Figura 9: Resposta em amplitude da janela blackman ................................................... 47
Figura 10: Espectro de potncia da janela blackman ..................................................... 47
Figura 11: resposta em amplitude da janela cos4 ............................................................ 48
Figura 12: Espectro de potncia da janela cos4 .............................................................. 48
Figura 13: Mscara de um filtro passa-baixa 3x3........................................................... 50
Figura 14: Matriz 3x3 da rea de uma imagem .............................................................. 50
Figura 15: Comparao entre o filtro da media e o filtro da mediana............................ 51
Figura 16: Mscara de um filtro passa-alta bsico ......................................................... 52
Figura 17: Mscara para o filtro de alto reforo............................................................. 52
Figura 18: Representao de uma rea com 3x3 pixels da imagem............................... 53
Figura 19: Operadores cruzados de Roberts................................................................... 53
Figura 20: Operadores de Prewitt................................................................................... 54
Figura 21: Imagem esperada x imagem obtida sem correo gama............................... 59
Figura 22: Influncia da correo gama ......................................................................... 60
Figura 23: Mscara genrica........................................................................................... 61
Figura 24: Mscara usada para deteco de pontos isolados.......................................... 62
Figura 25 Mscara de deteco de linha horizontal, +450, vertical e -450 ..................... 62
Figura 26: Deteco de bordas por operadores de derivao ......................................... 64
Figura 27: Regio genrica de uma imagem de tamanho 3x3........................................ 66
Figura 28: Operadores de Sobel ..................................................................................... 66
Figura 29: Mscara usada para implementao do laplaciano ....................................... 67
Figura 30: Coordenadas do espectro de potncia ........................................................... 89
Figura 31: Imagem original do arquivo brain1234.jpg................................................... 91
Figura 32: Imagem do arquivo brain1234 espelhada horizontalmente .......................... 92
Figura 33: Imagem do arquivo brain1234 espelhada verticalmente............................... 92

9
Figura 34: Imagem do arquivo brain1234 com uma rotao horria ............................. 93
Figura 35: Imagem do arquivo brain1234 com uma rotao anti-horria...................... 93
Figura 36: Imagem do arquivo brain1234 rotada em +22............................................. 93
Figura 37: Negativo da imagem do arquivo brain1234.................................................. 94
Figura 38: Ampliao de 2x usando interpolao anisotrpica...................................... 95
Figura 39: Reduo de 2x usando mdia em 2D ............................................................ 95
Figura 40: Exemplo de imagem remapeada globalmente .............................................. 96
Figura 41: Imagem remapeada localmente..................................................................... 96
Figura 42: Espectro de potncia de um quadrado........................................................... 97
Figura 43: Imagem de um retngulo e de seu espectro .................................................. 97
Figura 44: Imagem de um retngulo inclinado e de seu espectro .................................. 98
Figura 45: Aplicao das janelas blackman e cos4 ........................................................ 98
Figura 46: Aplicao do filtro de Butterworth passa-baixa fc=10 ................................. 99
Figura 47: Aplicao do filtro de Butterworth passa-alta fc=2 ...................................... 99
Figura 48 Aplicao do filtro de Butterworth passa-faixa com fci=50 e fcs=55 ......... 100
Figura 49: Aplicao do filtro de Butterworth passa faixa com fci=50 e fcs=55......... 100
Figura 50: Imagem do arquivo brain1234 com aplicao de rudo de alta freqncia 101
Figura 51: Resultado da aplicao do filtro da mediana .............................................. 101
Figura 52: Aplicao do filtro da mdia mvel............................................................ 102
Figura 53: Aplicao do filtro passa-alta...................................................................... 103
Figura 54: Aplicao do filtro de alto reforo .............................................................. 103
Figura 55: Aplicao do laplaciano .............................................................................. 104
Figura 56: Aplicao do filtro de Sobel........................................................................ 104
Figura 57: Aplicao dos filtros de deteco de linhas ................................................ 105
Figura 58: Resultado da aplicao da decimao......................................................... 106
Figura 59: Aplicao da tcnica de extenso................................................................ 106
Figura 60: Resultado da aplicao de um recorte......................................................... 107
Figura 61: Exemplo de combinao de imagem usando pixel alternado ..................... 108
Figura 62: Exemplo de combinao por subtrao de imagem.................................... 108
Figura 63: Exemplo de combinao binria ................................................................. 109
Figura 64: Exemplos de aplicao de threshold global ................................................ 110
Figura 65: Remapeamento global sem remoo de fundo ........................................... 111
Figura 66: Remapeamento global com remoo de fundo ........................................... 111
Figura 67: Aplicao da equalizao de histograma .................................................... 112
Figura 68: Imagem simulando fator gama 2.5.............................................................. 112

10
Figura 69: Imagem gerado com fator de correo 0.4.................................................. 113
Figura 70: Exemplo de aplicao do fator de correo 0.5 .......................................... 113
Figura 71: Aplicao do branquamento e preteamento ................................................ 114
Figura 72: Aplicao de pseudo-cor............................................................................. 115
Figura 73: Transformao de uma imagem colorida em nveis de cinza ..................... 116
Figura 74: Alterao da saturao ................................................................................ 117
Figura 75: Alterao do brilho ..................................................................................... 117
Figura 76: Exemplo de exibio de imagens de uma srie........................................... 118
Figura 77: Aplicao da Equalizao do Campo de Viso .......................................... 118
Figura 78: Medidas de distncia e rea ........................................................................ 119
Figura 79: Histograma .................................................................................................. 120
Figura 80: Linhas de perfil ........................................................................................... 120
Figura 81: Valor do ponto e estatsticas da imagem..................................................... 121
Figura 82: Exemplo de informaes disponveis no padro DICOM .......................... 122

11

LISTA DE TABELAS
Tabela 1: Cabealho usado pelo padro DICOM........................................................... 72
Tabela 2: Funes do VPIM......................................................................................... 127

12
SUMRIO
1

INTRODUO...................................................................................................... 16

OBJETIVOS........................................................................................................... 18

2.1

Objetivos Gerais ............................................................................................. 18

2.2

Objetivos Especficos ..................................................................................... 18

REVISO BIBLIOGRFICA ............................................................................... 20


3.1

Exemplos de Visualizadores de Imagens Mdicas......................................... 20

3.2

Geometria de Imageamento............................................................................ 21

3.2.1

Translao............................................................................................... 21

3.2.2

Mudana de escala.................................................................................. 22

3.2.3

Rotao de um ponto em torno de um dos eixos.................................... 23

3.2.4

Rotao de um ponto em torno de outro ponto arbitrrio: ..................... 23

3.3

Redimensionamento de imagens .................................................................... 24

3.3.1

Replicao usada na ampliao de imagem ........................................... 24

3.3.2

Replicao usada na reduo de imagem ............................................... 25

3.3.3

Interpolao Linear em 2D usada na ampliao da imagem .................. 25

3.3.4

Mdia em 2D usada para a Reduo da Imagem.................................... 26

3.3.5

Interpolao Anisotrpica usada na ampliao da imagem.................... 27

3.4

Tcnicas de Realce da Imagem no Domnio da Freqncia........................... 28

3.4.1

Transformada de Fourier contnua ......................................................... 29

3.4.2

Transformada de Fourier Discreta (DFT)............................................... 29

3.4.3

Propriedades da Transformada Bidimensional de Fourier ..................... 31

3.4.3.1

Separabilidade .................................................................................... 31

3.4.3.2

Translao........................................................................................... 32

3.4.3.3

Periodicidade e Simetria Conjugada................................................... 33

3.4.3.4

Rotao ............................................................................................... 35

3.4.3.5

Distributividade e Mudana de escala ................................................ 35

3.4.3.6

Valor Mdio........................................................................................ 36

3.4.4

Transformada Rpida de Fourier (FFT) ................................................. 36

3.4.5

O Algoritmo da FFT ............................................................................... 37

3.4.6

A FFT Inversa......................................................................................... 40

3.4.7

Filtros No Domnio da Freqncia ......................................................... 40

3.4.8

Convoluo............................................................................................. 41

3.4.9

Filtros de Butterworth............................................................................. 42

13
3.4.9.1

Filtro de Butterworth Passa-baixa ...................................................... 43

3.4.9.2

Filtro de Butterworth Passa-alta ......................................................... 43

3.4.9.3

Filtro de Butterworth Passa-banda ..................................................... 44

3.4.9.4

Filtro de Butterworth Rejeita-banda ................................................... 44

3.4.10

3.5

3.4.10.1

Janela Blackman ............................................................................. 47

3.4.10.2

Janela cos4 ...................................................................................... 48

Tcnicas de Realce da Imagem no Domnio do Espao................................. 49

3.5.1

Filtros Espaciais ou Filtros de Convoluo no Domnio do Espao ...... 49

3.5.1.1

Filtro Passa-Baixa ou Filtro da Mdia................................................ 50

3.5.1.2

Filtro da Mediana ............................................................................... 50

3.5.1.3

Filtros de Aguamento (Sharpening).................................................. 51

3.5.1.3.1

Filtro Passa-Alta bsico ................................................................ 51

3.5.1.3.2

Filtros de Alto Reforo ................................................................. 52

3.5.1.4

Filtro por derivadas............................................................................. 52

3.5.2

Processamento de Imagens em pseudo-cores......................................... 54

3.5.3

Remapeamento Linear Global e Local ................................................... 54

3.5.4

Transformao para obteno do negativo de uma imagem .................. 55

3.5.5

Equalizao de Histograma .................................................................... 55

3.5.6

Controle de Brilho e Saturao............................................................... 56

3.5.7

Converso de imagens coloridas para uma imagem em niveis de cinza 58

3.5.8

Correo Gama ....................................................................................... 58

3.6

Segmentao de Imagem ................................................................................ 61

3.6.1

3.7

Deteco de Descontinuidades ............................................................... 61

3.6.1.1

Deteco de pontos............................................................................. 62

3.6.1.2

Deteco de Linhas............................................................................. 62

3.6.1.3

Deteco de bordas............................................................................. 63

3.6.1.4

Operadores Gradiente ......................................................................... 65

3.6.1.5

Laplaciano .......................................................................................... 66

3.6.2

Janelamento ............................................................................................ 45

Threshold Global .................................................................................... 67

O Padro DICOM........................................................................................... 68

3.7.1

Introduo............................................................................................... 68

3.7.2

O cabealho de um arquivo DICOM...................................................... 70

DESCRIO DO PROJETO................................................................................. 73
4.1

As Tecnologias Empregadas .......................................................................... 73

14
4.2

A Arquitetura.................................................................................................. 74

4.3

As Estruturas de Dados .................................................................................. 74

4.4

As Imagens no Domnio Espao .................................................................... 75

4.5

As Imagens no Domnio Freqncia .............................................................. 75

4.6

A Interface Abstrata do Mdulo Kernel ......................................................... 76

4.7

O Mdulo de Janelas ...................................................................................... 82

4.8

Os Plug-ins ..................................................................................................... 86

4.9

Casos Especiais de Implementao ................................................................ 87

4.9.1

Implemento da Magnificao, Deslocamento e Rotao da Imagem .87

4.9.2

FFT Bidimensional ................................................................................. 88

4.9.3

Espectro de Potncia da Imagem............................................................ 88

4.9.4

Aplicao do Filtro de Butterworth ........................................................ 88

4.9.5

O Clculo da Distncia e rea ............................................................... 89

4.9.6

Diferenciando Sries e Estudos .............................................................. 90

4.10

Resultados Obtidos ......................................................................................... 91

4.10.1

Espelhamento ......................................................................................... 91

4.10.2

Rotao ................................................................................................... 92

4.10.3

Negativo da Imagem............................................................................... 94

4.10.4

Magnificao e reduo da imagem ....................................................... 94

4.10.5

Remapeamento Linear............................................................................ 96

4.10.6

Espectro de potncia da imagem ............................................................ 97

4.10.7

Janelamento ............................................................................................ 98

4.10.8

Filtros...................................................................................................... 99

4.10.8.1

Filtros de Butterworth..................................................................... 99

4.10.8.2

Filtro da Mediana ......................................................................... 101

4.10.8.3

Filtro da mdia mvel................................................................... 102

4.10.8.4

Filtro passa-alta e filtro de alto reforo ........................................ 102

4.10.8.5

Laplaciano e Filtro de Sobel......................................................... 103

4.10.8.6

Deteco de linhas ........................................................................ 104

4.10.9

Resoluo ............................................................................................. 105

4.10.10

Recorte.............................................................................................. 106

4.10.11

Combinao ...................................................................................... 107

4.10.11.1

Tcnica de Pixel Alternado........................................................... 107

4.10.11.2

Combinao por subtrao de imagens ........................................ 108

4.10.11.3

Combinao Binria ..................................................................... 109

15
4.10.12

Outros ............................................................................................... 109

4.10.12.1

Threshold Global .......................................................................... 109

4.10.12.2

Remoo de Fundo ....................................................................... 110

4.10.12.3

Equalizao de Histograma .......................................................... 112

4.10.12.4

Correo Gama ............................................................................. 112

4.10.12.5

Branquemento e Preteamento da Imagem .................................... 113

4.10.12.6

Pseudo-cor .................................................................................... 114

4.10.12.7

Converso de uma imagem colorida para nveis de cinza............ 115

4.10.12.8

Controle de Brilho e Saturao..................................................... 116

4.10.12.9

Visualizao de Sries e Estudos ................................................. 117

4.10.12.10

Equalizao do Campo de Viso (FOV) ..................................... 118

4.10.12.11

Medidas ....................................................................................... 119

4.10.12.12

Informaes diversas ................................................................... 121

CONCLUSO...................................................................................................... 123
5.1

Objetivo ........................................................................................................ 123

5.2

Validao e Calibrao................................................................................. 124

5.3

Lista das Funes do VPIM.......................................................................... 125

5.4

Prximos Passos ........................................................................................... 128

REFERNCIAS BIBLIOGRFICAS ................................................................. 129

1 INTRODUO

Na Medicina moderna existe uma tendncia crescente de exames clnicos noinvasivos. Entre eles, pesados investimentos so realizados na rea de imageamento.
Entre as vrias modalidades de imageamento mdico encontram-se: ressonncia
magntica, tomografia computarizada por raios X, ultra-sonografia, endoscopia,
tomografia, raios X, angiografia, Single Photon Emission Computed Tomography
(SPECT) [7], Positron Emission Tomography (PET) [7], etc.
Devido ao alto custo dos equipamentos e ao alto ndice de especializao no
conhecimento para interpretar e gerar os diagnsticos em tais modalidades, estes
equipamentos se encontram localizados em grandes centros clnicos, geralmente
dispostos em regies geogrficas especficas (como capitais e grandes cidades). Assim,
regies rurais, cidades do interior e mesmo as regies perifricas das grandes cidades,
tm o acesso dificultado a tais recursos. Alm disso, os mdicos especialistas so em
pequeno nmero, obrigando-se a prestar servios geralmente em mais de uma
instituio de sade.
Estas necessidades deram origem a uma modalidade relativamente nova da
Engenharia Biomdica: a Telemedicina [3]. A Telemedicina surgiu como uma
alternativa para minimizar a centralizao dos equipamentos e permitir o acesso aos
exames no-invasivos a camadas menos favorecidas, inicialmente atravs da reduo de
custos pela otimizao do tempos dos especialistas. A Telemedicina tem diferentes
definies encontradas em diversas fontes. Uma das definies dada pelo Conselho
Federal de Medicina, que define a Telemedicina como:
[...] o exerccio da Medicina atravs da utilizao de
metodologias interativas de comunicao audiovisual e de dados,
com o objetivo de assistncia, educao e pesquisa em Sade.
[3].
Um dos ramos da Telemedicina a Teleimagem. Atravs dela, imagens geradas
em diferentes equipamentos (por exemplo: ressonncia magntica, tomografia
computarizada por raios X, ultra-sonografia, endoscopia, tomografia, raios-X,
angiografia, SPECT, PET, etc.) podem ser visualizadas em local distinto dos
equipamentos que as geraram. Com a reduo de custos dos computadores pessoais,
acesso de Internet em banda larga, os mdicos

17
[...] podem ter as imagens enviadas diretamente para eles para
realizar o diagnstico, ao invs de se deslocarem para um hospital
ou centro clnico.[2].

2 OBJETIVOS

2.1 Objetivos Gerais


A dissertao tem como objetivo projetar e desenvolver uma ferramenta para ser
usada na visualizao de imagens mdicas, denominada Visualizador e Processador de
Imagens Mdicas (VPIM). Esta ferramenta permitir integrar as imagens geradas nas
diversas modalidades de imageamento mdico ao Sistema de Telemedicina, atualmente
em desenvolvimento pelo Instituto de Pesquisa Cientfica e Tecnolgicas na Pontifcia
Universidade Catlica do Rio Grande do Sul. Atravs do VPIM ser possvel
disponibilizar imagens aos mdicos especialistas independente do local geogrfico no
qual a imagem foi gerada. Desta forma, camadas no favorecidas da populao podero
ter acesso a esses modernos recursos.

2.2 Objetivos Especficos


Os equipamentos atuais que geram imagens mdicas usam programas que as
converte para um padro denominado DICOM (Digital Image Communication in
Medicine)[17]. Este padro foi criado pela National Electrical Manufacturers
Association (NEMA). Segundo este padro, uma imagem tem uma lista de atributos que
possuem informaes relacionadas com a imagem: informaes do paciente (nome,
sexo, nmero de identificao), modalidade e informaes sobre a forma de obteno da
imagem (calibrao, paramentos do dispositivo, dosagem de radiao, contraste do
meio) e informaes da imagem (resoluo e janelamento).
Atualmente existem diversos programas que permitem visualizar imagens
mdicas a partir do padro DICOM, tais como:

eFilm (usado no Hospital So Lucas da PUCRS - HSL) [20].

ezDICOM (usado no Hospital So Lucas da PUCRS - HSL) [12].

O objetivo especfico desta dissertao foi projetar e desenvolver funes hoje


encontradas nos programas disponveis para uso mdico (programas gratuitos),
adicionando funes para pesquisa de imagem na rea mdica (segmentao de
imagens, realce de imagens, anlise espectral da imagem) desenvolvendo e

19
implementado os algoritmos usados nestas funes. Tambm faz parte do objetivo
especfico desenvolver uma arquitetura que permita a instalao de plug-ins visando
possibilitar ao VPIM servir de plataforma para implementao de futuras
funcionalidades
O VPIM ter, no futuro, a possibilidade de se conectar com um dispositivo
externo, a ser desenvolvido pelo IPCT, que permitir calibrar o monitor de vdeo. Com
este dispositivo e uma funo de calibrao, a ser desenvolvida no futuro, o VPIM
ter a possibilidade de ser usado em diagnsticos.
Para o desenvolvimento do VPIM ser necessrio o desenvolvimento de
algoritmos e programas que permitam a leitura e a escrita de arquivos no formato
DICOM, a visualizao destes arquivos e o processamento digital de imagens
(melhoramentos, medies, e anlises).

3 REVISO BIBLIOGRFICA

3.1 Exemplos de Visualizadores de Imagens Mdicas


Existem vrios visualizadores de imagens mdicas disponveis gratuitamente. Os
dois visualizadores que foram escolhidos dois para verificao de suas funcionalidade
so utilizados no Hospital So Lucas da PUCR (HSL). Por eles j serem usados no
HSL, eles possibilitam uma comparao entre os seu resultados e os resultados do
VPIM pelos tcnicos do hospital. Estes visualizadores so:

eFilm (usado no Hospital So Lucas da PUCRS - HSL) [20].

ezDICOM (usado no Hospital So Lucas da PUCRS - HSL ) [12].

As funcionalidades existentes no ezDICOM esto presentes no visualizador


eFilm. Este tambm apresenta recursos adicionais no presentes no ezDICOM.
As funcionalidades dos visualizadores esto relacionadas abaixo:

Leitura, escrita e visualizao de arquivos DICOM.

Ajuste de contraste e luminosidade da imagem

Visualizao das imagens de uma srie ou de um conjunto de sries.

Magnificao de imagem.

Deslocamento da imagem.

Visualizao de todas as imagens de uma srie como se fosse um filme.

Calibrao da imagem para medidas

Medida de distncia entre dois pontos

Medida de rea de uma elipse.

Espelhamento horizontal e vertical.

Rotao em 90 (para esquerda e direita).

Inverso de imagem (negativo).

Subtrao de imagem (angiografia)

Comparao de FOV (Field of view)

Dados do estudo

Possibilidade de incluso de filtros digitais atravs de DLL.

21
As funcionalidades grficas de (1) magnificao de imagem, (2) deslocamento
da imagem, (3) espelhamento horizontal e vertical, (4) rotao em 90 (para esquerda e
direita) e (5) inverso da imagem so normalmente encontradas nas bibliotecas grficas,
tais como a OpenGL[1].
O padro DICOM [17] fornece o suporte para realizar as funcionalidades usadas
em medidas (calibrao, medida de distncia e medida de rea de elipse). As
funcionalidades especficas do padro DICOM, tais como: leitura e escrita de arquivos
no padro DICOM, e dados de estudo se encontram implementados na biblioteca
DICOM Tool kit DCMTK 3.5.3 [4]. Uma introduo sobre o padro DICOM encontrase na Seo 3.7.

3.2 Geometria de Imageamento[6]


Como imagens mdicas so projees de um sistema tridimensional vamos
desenvolver algumas transformaes bsicas num sistema 3-D com coordenadas X, Y e
Z. Estas transformaes sero: a translao de uma imagem, a mudana de escala, a
rotao de um ponto em torno de um dos eixos e a rotao de uma imagem em relao a
um ponto arbitrrio.

3.2.1

Translao
Para transladar um pixel de uma coordenada (X,Y,Z) para uma nova coordenada

final (Xf, Yf, Zf) usando se o deslocamento (Xd, Yd, Zd) usa-se a seguinte expresso:
Xf = X + Xd
Yf = Y + Yd
Zf = Z + Zd

Equao 1

Na forma matricial temos:


Xf 1
Yf 0
=
Zf 0

1 0

0 0

Xd X
1 0 Yd Y

0 1 Zd Z

0 0 1 1

Equao 2

22
A quarta linha, apresentada na Equao 2, foi acrescentada para facilitar as
operaes com matrizes, transformando a matriz de transformao em uma matriz
quadrada.
Usando a notao de matrizes temos:
pf = A. pi

Equao 3

Onde A a matriz transformao 4x4, pf um vetor coluna com as coordenadas


aps a transformao e pi o vetor coluna com as coordenadas iniciais.

Xf
Yf
pf =
Zf

1

Equao 4

Xi
Yi
pi =
Zi

1

Equao 5

Com esta notao a matriz transformao para a translao :


1
0
A=T =
0

0 0

Xi
1 0 Yi
0 1 Zi

0 0 1

Equao 6

O processo de translao fica ento descrito pela seguinte equao:


Equao 7

pf = T . pi

3.2.2

Mudana de escala
A mudana de escala pelos fatores Sx, Sy e Sz ao longo dos eixos X, Y e Z

dado pela matriz de transformao:


Sx 0 0
0 Sy 0
S=
0 0 Sz

0 0 0

Xi
Yi
Zi

Sendo, ento a mudana de escala definida conforme a Equao 9:

Equao 8

23
Equao 9

pf = S . pi

3.2.3

Rotao de um ponto em torno de um dos eixos


Considerando o ngulo de rotao em torno do eixo Z, o ngulo de rotao

em torno do eixo Y e o ngulo de rotao em torno do eixo dos X temos:


a. Para rotao em torno do eixo Z:
cos
sen
=
R
0

sen
cos
0
0

0 0
0 0
1 0

0 1

Equao 10

Sendo a rotao em torno do eixo Z dada pela Equao 11:


Equao 11

pf = R . pi

b. Para rotao em torno do eixo X:


0
1
0 cos
R =
0 sen

0
0

0
sen
cos
0

0
0
0

Equao 12

Sendo a rotao em torno do eixo X dada pela Equao 13:


Equao 13

pf = R . pi

c. Para rotao em torno do eixo Y:


cos
0
R =
sen

0 sen
1

cos

0
0
0

Equao 14

Sendo a rotao em torno do eixo X dada pela Equao 15:


pf = R . pi

3.2.4

Equao 15

Rotao de um ponto em torno de outro ponto arbitrrio:


Para efetuar a rotao de um ponto em torno de outro ponto arbitrrio so

necessrias trs operaes:


1.

Translado do ponto arbitrrio para origem.

24
2.

Rotao propriamente dita.

3.

Translado do ponto para sua posio original.

3.3 Redimensionamento de imagens


Existem diversas tcnicas usadas para o aumento e a diminuio das dimenses
de uma imagem. A replicao a tcnica mais simples. Atualmente os dispositivos de
processamento de imagem (video adapters) tm embutidos os algoritmos usados para o
redimensionamento de imagem. O DirectX (Verso 9C update: Agosto 2005) verifica se
o dispositivo de processamento de imagem capaz de realizar o redimensionamento
usando interpolao anisotrpica. Caso no seja possvel usar a interpolao
anisotrpica o redimensionamento ser realizado usando a interpolao linear em duas
dimenses.

3.3.1

Replicao usada na ampliao de imagem


A tcnica de replicao [11] a tcnica mais simples usada em ampliao de

imagem. Nesta tcnica, cada pixel da imagem origem replicado na imagem destino de
acordo com a Equao 16.

Lo
i o = i d .

Ld

p d (i d , j d ) = p o (i o , j o)
j = j . Co
o d C
d

i d = 1,2..., L d

Equao 16
j d = 1,2..., C d

Onde:
(io,jo): coordenadas de um pixel determinado na imagem origem.
(id,jd): coordenadas de um pixel determinado na imagem destino.
po(io,jo): nvel de cinza da imagem origem em (io,jo).
pd(id,jd): nvel de cinza na imagem destino em (id,jd).
Lo x Co: nmero de pixels da imagem origem, sendo Lo o nmero de linhas e Co o
nmero de colunas.
Ld x Cd: nmero de pixels da imagem destino, sendo Ld o nmero de linhas e Cd o
nmero de colunas.

25

3.3.2

Replicao usada na reduo de imagem

Nesta tcnica os pixels da imagem origem so replicados na imagem destino de


acordo com a Equao 17.

Lo

i o = 1 + (i d 1).

d
p d (i d , j d ) = p o (i o , j o)
j = 1 + j 1 . C o
d
C
o
d

i d = 1,2..., L d

Equao 17
j d = 1,2..., C d

Onde:
(io,jo): coordenadas de um pixel determinado na imagem origem.
(id,jd): coordenadas de um pixel determinado na imagem destino.
po(io,jo): nvel de cinza da imagem origem em (io,jo).
pd(id,jd): nvel de cinza na imagem destino em (id,jd).
Lo x Co: nmero de pixels da imagem origem, sendo Lo o nmero de linhas e Co o
nmero de colunas.
Ld x Cd: nmero de pixels da imagem destino, sendo Ld o nmero de linhas e Cd o
nmero de colunas.

3.3.3

Interpolao Linear em 2D usada na ampliao da imagem


A interpolao linear em duas dimenses usada na ampliao da imagem [11]

tem este nome porque o seu algoritmo aplica duas interpolaes lineares para obter
imagem ampliada. A interpolao linear em duas dimenses pode ser descrita pelo
algoritmo a seguir.
Considerando uma imagem origem formada por uma matriz de pixels com Lo
linhas e Co colunas, para uma ampliao com um fator de a (a>1, inteiro) teremos uma
matriz de pixels com Ld=aLo linhas e Cd=aCo colunas. Para se obter a matriz destino
seguem-se os seguinte passos:
1. Acrescenta-se (a-1) colunas aps cada coluna da matriz original.
2. Os nveis de cinza das colunas inseridas so obtidos fazendo-se a interpolao
linear com os dois pixels da linha da matriz original entre os quais eles foram
inseridos. Neste ponto temos uma matriz intermediria com Cd colunas e Lo
linhas

26
3. Acrescenta-se (a-1) linhas aps cada linha da matriz intermediria.
4. Os nveis de cinza das linhas inseridas so obtidos fazendo-se a interpolao
linear com os dois pixels da coluna da matriz intermediria entre os quais eles
foram inseridos. O resultado a matriz destino com Ld linhas e Cd colunas
2

2 4 passo1 2 . 4 . passo2 2 2 4 2 passo3 .

6
6 8
6 . 8 .
6 7 8 4

2 4 2
2 2

. . . passo4 4 4.5

6 7
7 8 4

. . .
3 3.5

4 2

6 3
8 4

4 2

Figura 1: Interpolao linear usada para ampliao de imagens

A Figura 1 mostra um exemplo redimensionamento usando uma matriz 2x2 com


uma ampliao a=2.

3.3.4

Mdia em 2D usada para a Reduo da Imagem


A mdia linear em duas dimenses [11] usada para a reduo da imagem faz uso

de outras duas mdias para obter a reduo da imagem. A mdia em duas dimenses
usada para a reduo da imagem pode ser descrita pelo algoritmo a seguir:
Considerando uma imagem origem formada por uma matriz de pixels com Lo
linhas e Co colunas. Para uma reduo de um fator r (r>1, inteiro) teremos uma matriz
de pixels com Ld=Lo/r linhas e Cd=Co/r colunas. Para se obter a matriz destino seguemse os seguintes passos:
1. Obtm-se as linhas da matriz intermediria, onde cada pixel igual soma de r
elementos sucessivos, da linha correspondente, divididos por r, obtendo-se para
cada pixel o valor mdio dos pixels correspondentes. Neste ponto temos a matriz
intermediria com Lo linhas e Cd colunas.
2. Obtm-se as colunas da matriz intermediria, onde cada pixel igual soma de
r elementos sucessivos, da coluna correspondente, divididos por r, obtendo-se o
valor mdio dos pixels correspondentes. O resultado a matriz destino com Ld
linhas e Cd colunas
2

4
6

2 4 2
3
2

5 6 3 passo1 4.5 4.5 passo2 3.25 3.75

6.5 6
7 8 4
4.5
5

4 4 2
3.5 3

Figura 2: Interpolao de imagens usada na reduo de uma imagem

27
A Figura 2 mostra um exemplo de redimensionamento usando uma matriz 2x2
com uma reduo r=2.

3.3.5

Interpolao Anisotrpica usada na ampliao da imagem


A interpolao anisotrpica [22] leva em considerao a direo das bordas na

vizinhana do pixel interpolado. Um mtodo de executar a interpolao anisotrpica


mostrado a seguir.
Considerando uma determinada imagem na qual se queira interpolar o pixel uo
dos seus quatro vizinhos (u1,u2,u3,u4), neste caso uo ser dado por:
u0 =

1
(u1 + u 2 + u 3 + u 4)
4

Equao 18

Esta interpolao no ter um bom desempenho nas proximidades das bordas,


como mostrado a seguir.
Vamos considerar que temos uma borda na direo u1-u3. Neste caso h uma
grande variao de nveis de cinza ao longo da linha de u2 at u0 e de u0 at u4. Esta
variao introduzir um erro de interpolao considervel se for usada a Equao 18.
Por outro lado o nvel de cinza de u0 prximo da media entre u1 e u3, assim a melhor
interpolao :
u0 =

1
(u1 + u 3)
2

Equao 19

Similarmente se houvesse uma borda entre os pixels u2-u4 a melhor interpolao


seria:
u0 =

1
(u 2 + u 4)
2

Equao 20

Quando a borda estiver entre os pixels u1-u3 e u2-u4, como mostrado na Figura 3,
se obtm uma melhor estimao de u0 atribuindo se pesos para contribuio de cada
pixel, com estes pesos inversamente proporcional ao ngulo formado entre u1-u3 ou u2u4 em relao borda, assim, quanto menor o ngulo maior o peso [22].

28

Figura 3: Bordas de direo arbitrria

O clculo de u0 ser dado pela Equao 21:


u0 =

1
1
(u1 + u 3) cos2 + (u 2 + u 4) sin 2
2
2

Equao 21

O ngulo da borda poderia ser obtido, atravs da Equao 22:


=

u u4

arctan 2
2
u1 u 3

Equao 22

O que nos leva a Equao 23 para o clculo de uo:

0 .5
u0 =

u2
1 +
u1

u4
u3

0 .5

(u 1 + u 3) +
1+

u1
u2

u3
u4

(u 2 + u 4 )
2

Equao 23

3.4 Tcnicas de Realce da Imagem no Domnio da Freqncia


O realce da imagem no domnio freqncia executado atravs da obteno da
transformada de Fourier da imagem a ser realada, multiplicando-se o resultado por
uma funo de transferncia do filtro desejado. Como pelo teorema da convoluo, a
multiplicao da imagem no domnio freqncia corresponde a uma convoluo
executada no domnio espao, o resultado da transformada inversa desta multiplicao
a imagem realada [6].

29

3.4.1

Transformada de Fourier contnua


Para uma funo f(x) contnua, a transformada de Fourier de f(x), representada

por { f (x)} e definida por:


+

F (u ) = { f ( x)} =

f ( x) e

j 2 ux
dx

Equao 24

onde j = 1 .
Tendo-se uma F(u) pode se obter a f(x) usando-se a transformada inversa de
Fourier definida por:

1{F (u )} =

f ( x) =

F (u ) e j 2 u x du

Equao 25

A Equao 24 e a Equao 25 so chamadas de par de transformadas de Fourier.


A relao entre os domnios existe se f(x) for contnua e integrvel, e se F(u) for
integrvel [6].
A extenso da transformada de Fourier para uma funo f(x,y) de duas variveis
e sua inversa dada pela Equao 26 e pela Equao 27, respectivamente [6].
++

F (u , v) = { f ( x, y )} =

f ( x, y ) e

j 2 (u x + vy)
dxdy

Equao 26

f ( x, y ) =

3.4.2

++

{F (u , v)} =

F (u ) e

j 2 (u x + vy)
dudv

Equao 27

Transformada de Fourier Discreta (DFT)


Considerando uma funo f(x), contnua, discretizada em N amostras separadas

de x unidades, a sua discretizao representada pela seqncia:


{ f ( x0), f ( x0 + x), f ( x0 + 2x),...., f ( x0 + ( N 1)x)}

Por convenincia chamaremos de x, uma varivel discreta, que assume os


valores x=0, 1, 2, ..N-1. A seqncia anterior pode ser descrita com uma f(x):
f ( x) = f ( x0 + xx)

Equao 28

30
Assim, a seqncia {f(0), f(1), f(2), ...f(N-1)} denota qualquer amostragem de N
valores

uniformemente

espaados

de

uma

funo

contnua

correspondente.

Considerando esta notao, o par de transformadas discretas de Fourier dado por:


F (u ) =

j 2 ux
1 N 1
f
(
x
)

e N
N x=0
N 1

f (x) =

u=0

F (u ) e

j 2 ux
N

Equao 29

Equao 30

Para u=0,1,2,...,N-1 e para x=0,1,2,...,N-1.


Os valores de u=0,1,2,,...N-1 na transformada discreta de Fourier (Equao 29)
correspondem

as amostras de uma transformada contnua nos

valores 0,

u ,2u ,..., ( N 1)u . Assim, F(u u) representada por F(u). Esta notao similar

que foi usada para representao discreta de f(x) exceto que as amostras de F(u)
iniciam-se na origem do eixo de freqncias (uo=0). Os termos u e x tem a seguinte
relao:
u =

1
Nx

Equao 31

Para duas variveis o par de transformadas discretas de Fourier pode ser


representada da seguinte forma:
F (u , v) =

1
MN

M 1 N 1

f ( x, y) e

ux vy
j 2 +
M N

Equao 32

x =0 y = 0

para u, v=0,1,2,...N-1, e
M 1 N 1

f ( x, y ) =

F (u, v) e

ux vy
j 2 +
M N

Equao 33

u =0 v = 0

para x,y=0,1,2,...N-1.
A amostragem de uma funo contnua feita em uma grade bidimensional com
divises de largura x e y nos eixos x e y respectivamente. Como no caso
unidimensional a funo discreta f(x,y) representa as amostras da funo, mostrada na
Equao 34, para x=0,1,2...,M-1 e v=0,1,2...,N-1.
f ( x) = f ( x0 + xx, y 0 + yx)

Equao 34

Da mesma forma, F(u) que fica:


F (u , v) = F (uu ,+vv)

para u, v = 0, 1,2..., N-1.

Equao 35

31
Os incrementos nos domnios do espao e freqncia so relacionados por:
u =

1
Mx

Equao 36

1
Ny

Equao 37

v =

Para imagens amostradas numa matriz quadrada (M=N) temos,

1 N 1 N 1
j 2

F (u, v) =
f ( x, y ) e

2
x
=
0
y
=
0
N

uv + xy

Equao 38

para u,v = 0,1, 2..., N-1, e


N 1 N 1

f ( x, y ) = F (u , v) e

uv + xy

j 2

u =0 v = 0

Equao 39

para x,y = 0, 1, 2, ..., N-1.

3.4.3

Propriedades da Transformada Bidimensional de Fourier


Nos

itens

subseqentes

sero

apresentadas

algumas

propriedades

da

transformada bidimensional de Fourier. Estas propriedades podem ajudar na


interpretao do espectro de potncia da transformada de Fourier podem ser teis no
clculo da transformada da prpria transformada como o caso o caso da propriedade
de separabilidade que pode ser usada para calcular a transformada bidimensional como
duas transformadas unidimensionais.

3.4.3.1

Separabilidade

A transformada bidimensional de Fourier e sua inversa podem ser expressas em


formas separveis:
F (u , v) =

1
N

j 2ux
N
2 e
N 1
x =0

N 1

y =0

f ( x, y ) e

u 2vy
N

Equao 40

para u, v = 0, 1, ..., N-1.

N 1

f ( x, y ) =

e
x =0

j 2ux
N

N 1

y =0

f ( x, y )

j 2vy
N

Equao 41

32
para x, y = 0, 1, ..., N-1.
Esta propriedade pode ser usada na obteno da transformada bidimensional de
Fourier ou da sua inversa atravs da aplicao de dois passos sucessivos da
transformada unidimensional de Fourier ou da sua inversa [6].
Este processo torna-se mais evidente se a Equao 40 for expressa na forma
mostrada na Equao 42,
F (u, v) =

1
N

j 2ux
N

Equao 42

j 2vy
f ( x, y ) e N

Equao 43

N 1

F ( x, v ) e
x =0

onde F(x,v) dada pela Equao 43.


1
F ( x, v ) =
N

N 1

y =0

Para cada valor de x, a Equao 43 uma transformada unidimensional com


freqncia v=0, 1, ..., N-1.
A Figura 4 mostra resumidamente a computao de uma transformada
bidimensional atravs de duas aplicaes de uma transformada bidimensional [6].

Figura 4: Transformada bidimensional de Fourier usando a propriedade da separabilidade

3.4.3.2

Translao

As propriedades de translao do par de transformadas de Fourier so:


j 2 (u 0 x +v0 y )
f ( x, y )

F (u u 0 , v v0)

f ( x x0 , y y 0) F (u , v)

j 2 (u x0 +v y 0 )
N

Equao 44

Equao 45

As flechas duplas indicam a correspondncia entre uma funo e sua


transformada de Fourier (e vice-versa).

33
A Equao 44 mostra que a transformada de Fourier, resultante do produto da
f(x,y) pelo termo exponencial indicado, resulta no deslocamento da origem do plano das
freqncias para o ponto (u0,v0). Similarmente, na Equao 45, o produto de F(u,v) pelo
termo exponencial indicado, mostra que a transformada inversa ser deslocada para
(x0,y0) [6].

3.4.3.3

Periodicidade e Simetria Conjugada

A transformada de Fourier e sua inversa apresentam uma periodicidade de


perodo N. Assim temos:
F (u , v) = F (u + N , v) = F (u , v + N ) = F (u + N , v + N )

Equao 46

Se f(x,y) for real, que o caso das imagens em nveis de cinza, a transformada de
Fourier tambm apresenta simetria conjugada, mostrada na Equao 47.

F (u, v) = F * (u,v)

Equao 47

Onde F*(u,v) representa o conjugado complexo de F(u,v). Da Equao 47 se tira


a relao entre os valores absolutos dados pela Equao 48 [6].
F (u, v) = F (u,v)

Equao 48

A exibio da magnitude da transformada de Fourier muitas vezes interessante.


Para se entender melhor a implicao do significado da Equao 46 e da Equao 48,
pode-se examinar a exibio da magnitude da transformada no caso de uma varivel,
F (u ) = F (u + N )

Equao 49

F (u ) = F (u )

Equao 50

e,

A propriedade da periodicidade indica que F(u) tem um perodo N. A


propriedade da simetria mostra que a magnitude da transformada est concentrada na
origem. Isto pode ser observado na Figura 5. Nesta figura, pode-se observar que a
magnitude dos valores da transformada de (N/2)+1 at N-1 consiste na repetio dos
valores do meio perodo a esquerda da origem. Como a transformada de Fourier foi
formulada com valores de u entre [0, N-1], o resultado desta formulao implica em um
perodo com dois semi-perodos antepostos um para o outro [6].

34

Figura 5: Espectro de Fourier como resultado do clculo da transformada de Fourier

Para exibir um perodo inteiro, suficiente mover a origem da transformada para


o ponto u=N/2 como mostrado na Figura 6. Este deslocamento corresponde a
multiplicarmos f(x) por (-1)x[6]

Figura 6: Espectro da transformada de Fourier deslocado

35
Este mesmo raciocnio pode ser aplicado para a magnitude da transformada de
Fourier bidimensional, sendo a interpretao dos resultados mais difcil de interpretar se
a origem da transformada no for deslocada para o ponto de freqncia (N/2, N/2) [6].

3.4.3.4

Rotao

Introduzindo coordenadas polares temos x = r cos , y = r sen , u = cos e


v = sen , assim f(x,y) e F(u,v) tornam-se f(r,) e F(w, ) respectivamente.

Considerando-se uma rotao de um ngulo o teremos:


f (r , + 0) F ( , + 0)

Equao 51

Da Equao 51, tem-se que uma rotao de f(x,y) de um ngulo 0 resulta em


uma rotao de F(u,v) deste mesmo ngulo [6].

3.4.3.5

Distributividade e Mudana de escala

Da definio do par de transformadas contnua ou discreta temos


{ f 1 ( x, y ) + f 2 ( x, y )} = { f 1( x, y )} + { f 2 ( x, y )}

Equao 52

{ f 1( x, y ) f 2 ( x, y )} = { f 1( x, y )} { f 2 ( x, y )}

Equao 53

e, em geral,

Assim, a transformada de Fourier e sua inversa so distributivas quanto adio


mas no quanto multiplicao [6].
Para dois escalares a e b,
af ( x, y ) aF (u , v)

Equao 54

e
f (ax, by )

1
u v
F( , )
ab
a b

Equao 55

36

3.4.3.6

Valor Mdio

Uma definio muito utilizada do valor mdio de uma funo discreta


bidimensional definida pela Equao 56 [6].
f ( x, y ) =

N 1

1
2

N 1

f ( x, y )

N x =0y =0

Equao 56

Substituindo-se u=v=0 na Equao 38 resulta,


F (0,0) =

N 1

N 1

f ( x, y )
2
N x =0y =0

Equao 57

Portanto f ( x, y ) relacionada transformada de Fourier de f(x,y) por


Equao 58

f ( x, y ) = F (0,0)

3.4.4

Transformada Rpida de Fourier (FFT)


O tempo de execuo de um algoritmo em um computador proporcional ao

nmero de multiplicaes e adies necessrias para sua execuo. No caso da Equao


29, DFT, para cada um dos N valores de u, so requeridos N multiplicaes complexas
de f(x) por

j 2ux
N

e N-1 adies dos resultados, podendo-se dizer que implementao

da DFT proporcional N2. Os termos

j 2ux
N

podem se computados uma vez e

armazenados numa tabela para todos os outros clculos seguintes, por esta razo ele no
usualmente considerado para determinar o tempo de computao necessrio para a
implementao da DFT [6].
O algoritmo denominado algoritmo da transformada rpida de Fourier (FFT)
executa um procedimento de decomposio da Equao 29 que torna o nmero de
multiplicaes e adies proporcional a Nlog2N. A reduo de N2 para Nlog2N
representa uma reduo considervel no tempo de computao necessrio para se obter
transformada discreta de Fourier. A vantagem computacional dada pela Equao 59.
VC =

N
log 2 N

Equao 59

37
Assim, para um vetor com 8192 pontos, por exemplo, a vantagem
computacional pelo uso da FFT em relao ao clculo da DFT normal seria igual
630,15. Se o clculo da transformada para este vetor usando a FFT utilizasse 5s, o
clculo da DFT levaria 5s x VC, aproximadamente 50 minutos, para ser executado na
mesma mquina [6].
Como a relao entre o tempo despendido para o clculo da DFT e o clculo da
FFT logartmica, a diferena no tempo de execuo se tornar mais perceptvel
quando for efetuado com vetores maiores.

3.4.5

O Algoritmo da FFT
O algoritmo da FFT, descrito abaixo, faz uso da decimao do tempo. Por

convenincia vamos rearranjar a Equao 29, conforme mostrado na Equao 60:


F (u ) =

1 N 1
ux
f ( x)W N

N x=0

Equao 60

onde
j 2

=
N

Equao 61

Assumindo N como
Equao 62

N = 2n

com n um nmero inteiro e positivo. Portanto, N pode ser dado por:


Equao 63

N = 2M

em que M tambm um nmero inteiro e positivo [6], temos


F (u ) =

1
2M

2 M 1

f ( x)

ux

Equao 64

W 2M

x =0

A Equao 64 pode ser separada em dois termos:


F (u ) =

1 1

2 M

M 1

u (2 x )

u (2 x +1)

M 1

f (2 x)W 2M + f (2 x + 1)W 2M
x =0

Da Equao 61 tem-se que

x =0

2ux

ux

W 2M = W M .

Equao 65

Assim podemos expressar a

Equao 65 na forma:
F (u ) =

Definindo-se:

1 1

2 M

M 1

M 1

x =0

x =0

ux
u
+
f (2 x + 1)W W
f (2 x)W ux
M
M
2M

Equao 66

38
1
F par (u ) =
M

M 1

f (2 x)W M

ux

Equao 67

x =0

para u= 0,1,2,...,M-1, e
F impar (u ) =

1
M

M 1

f (2 x + 1)W M

ux

Equao 68

x =0

para u=0,1,2...,M-1 a Equao 66 torna-se


F (u ) =

1
F par (u ) + F impar (u )
2

W 2M

Equao 69

Equao 70

Equao 71

Da Equao 61 tira-se:
u+M

WM

=W M

e que:
u+M

W 2M

= W M

Aplicando-se a Equao 70 e a Equao 71 na Equao 67 e na Equao 69


temos:
F (u + M ) =

1
F par (u ) F impar (u )
2

W 2M

Equao 72

Analisado a Equao 69 e a Equao 72 nota-se que podemos computar a


transformada discreta de Fourier em duas partes:
1. A primeira parte da F(u) para u=0,1,2..,M-1 usando a Equao69.
2. A segunda parte da F(u) para u=M,M+1, M+2,...2M-1 usando os mesmos
valores de F par (u ) e F impar (u ) wu2M calculados anteriormente e agora
substitudos na Equao 72 [6].
A Equao 67 e a Equao 68 de Fpar e Fimpar respectivamente, correspondem
a uma decimao de F(u) em duas seqncias de N/2 pontos. Como F(u) peridica em
u com um perodo N, Fpar e Fimpar em um perodo N/2 [14].
Reescrevendo a Equao 67 e a Equao 68 temos:

N
1
2
1
f (2 x) W ux
F 2 (u ) = f par (u ) =
N
N x=0

2
2

Equao 73

N
1
2
1
f (2 x + 1) W ux
F 3 (u ) = F impar (u ) =
N
N
x=0
2
2

Equao 74

39

N
N

4
4

1
1
2
ux
f ( 4 x)W N +
f (4 x + 2)W uN(2 x + 1)
F 2 (u ) =
N x=0
N x=0


2
4
4
4

Equao 75

Ou seja,

N
N

4
4
1
1
ux
u
f ( 4 x) W + W
f (4 x + 2) W ux
F 2 (u ) =
N
N N
N
N x=0
2 x=0

2
4
4
4

Equao 76

Que fica:
F 2 (u ) = F 4 (u ) + W uN F 5 (u )

Equao 77

Este mesmo raciocnio vale para F3(u):

N
N

4
4

1
1
f ( 4 x + 1) W ux + W u
f (4 x + 3) W ux
F 3 (u ) =
N
N N
N
N x=0

x=0
4
2 4
4
4

Equao 78

Que fica:
F 3 (u ) = F 6 (u ) + W uN F 7 (u )

Equao 79

Sendo F4(u) at F7(u) peridicas com um perodo N/4.


O processo de decimao ser continuado at que termine num termo nico. No
penltimo passo (2N-2), quatro subseqncias so obtidas tendo a forma:
F x (u ) = F y (u ) + W u2 F z (u )

Equao 80

Estas subseqncias podem ser decimadas para o ltimo passo (2N-1) com duas
subseqncias, sendo o primeiro par mostrado na Equao 81:
F x (u ) = f (0) + W u2 f ( N / 2)
F y (u ) = f (1) + W u2 f (( N / 2) + 1)

Equao 81

No ltimo passo, o processo termina em termos como f(0), f(N/2), f(1), e f(N/21). Assim, a transformada discreta de Fourier de 2N pontos usando-se:
f (0), f ( N / 2), f ( N / 4), f (3 N / 4),..., f (( N / 2) 1), f ( N 1)

Equao 82

Isto corresponde ao rearranjo da entrada em uma seqncia diferente conhecida como


reverso de bits [14].

40

3.4.6

A FFT Inversa
O algoritmo usado para o clculo da transformada direta tambm pode ser usado

para o clculo da transformada inversa com pequenas alteraes na entrada. Para


mostrar isto, vamos tomar a Equao 29 e a Equao 30, repetidas abaixo:
j 2 ux
1 N 1
F (u ) =
f (x)e N
N x=0
N 1

f (x) =

u=0

F (u ) e

j 2 ux
N

Equao 83

Equao 84

Usando o conjugado da Equao e dividindo ambos os lados por N, temos:


1 *
1
f ( x) =
N
N

N 1

F * (u )

u =0

j 2ux
N

Equao 85

Comparado a Equao 85 com a Equao 83, temos que o lado direito da


igualdade da Equao 85 est na forma de uma transformada de Fourier. Assim se
usarmos a F*(u) como entrada de um algoritmo para computar a transformada direta o
resultado do clculo ser igual a f*(x)/N; tomando-se o conjugado do valor calculado e
multiplicando-se por N obteremos a transformada inversa f(x) [6].

3.4.7

Filtros No Domnio da Freqncia


Os filtros no domnio da freqncia baseiam-se no teorema da convoluo.

Assim, se uma imagem g(x,y) formada pela convoluo de uma imagem f(x,y) e um
operador linear invariante h(x,y):
g ( x, y ) = h( x. y ) f ( x, y )

Equao 86

Do teorema da convoluo (Seo 3.4.8), tem-se a seguinte relao no domnio


da freqncia:
G (u , v) = H (u , v) F (u.v)

Equao 87

onde G, H, e F so transformadas de Fourier de g, h e f. Usando a terminologia da teoria


de sistemas lineares H(u,v) denominada funo de transferncia do processo [6].

41
Os filtros no domnio da freqncia, que so usados para realce da imagem, so
expressos na forma da Equao 87. Assim numa aplicao tpica de realce de imagem
se tem a imagem original f(x,y), se obtm a F(u,v), e se escolhe adequadamente uma
funo H(u,v) de forma a para se obter a g(x,y) que possui algumas caractersticas de
f(x,y) realadas. Sendo g(x,y) dada por:
1

g ( x, y ) =

3.4.8

H (u, v) F (u, v)

Equao 88

Convoluo
A convoluo [6] de duas funo f(x) e g(x) definida na Equao 89,
+

f ( x) g ( x) =

f ( ) g ( x )dx

Equao 89

onde uma varivel de integrao.


Um resultado importante da convoluo conhecido como Teorema da
Convoluo. Se f(x) tem com transformada de Fourier F(u) e g(x) tem como
transformada de Fourier G(u), a convoluo, realizada no domnio do espao, destas
funes f(x)*g(x) tem como transformada de Fourier, no domnio freqncia, a funo
F(u).G(u). Um resultado anlogo obtido no domnio da freqncia onde F(u)*G(u)
tem como transformada inversa f(x). g(x). Estes resultados so enunciados como:
f ( x) * g ( x) F (u ) G (u )

Equao 90

f ( x) g ( x) F (u ) G (u )

Equao 91

Estes resultados permitem efetuar a convoluo de duas funes atravs da


mudana de espao, da operao de multiplicao e do retorno para espao original. Em
termos computacionais pode-se substituir a operao de integrao pela multiplicao e
pela mudana de espao, podendo reduzir o tempo de computao requerido [6].
Para aplicaes em imagens, interessa a convoluo em duas dimenses (2-D)
que dada pela Equao 92:
+ +

f ( x, y ) g ( xy ) =

f ( ) g ( x )dd

O teorema da convoluo para 2-D fica:

Equao 92

42
f ( x, y ) g ( x, y ) F (u , v) G (u , v)

Equao 93

f ( x, y ) g ( x, y ) F (u , v) G (u , v)

Equao 94

O conjunto dos pixels de uma imagem constitui uma matriz discreta. Para se
formular a convoluo discreta 2-D representa-se f(x,y) e g(x,y) como matrizes
discretas de duas demisses A x B e C x D respectivamente. Estas funes devem ser
peridicas com algum perodo M (a direo x) e N (na direo y). Para se evitar erros de
revestimento nos perodos individuais de convoluo se escolhe M e N tal que:
M A + C 1

Equao 95

N B + D 1

Equao 96

Para formar as seqncias peridicas se estende f(x,y) e g(x,y):


f ( x, y )
f e ( x, y ) =
0

0 x A 1 e
A x M 1 ou

g ( x, y ) 0 x C 1 e
g e ( x, y ) =
C x M 1 ou
0

0 y B 1
B y N 1

Equao 97

0 y D 1
D y N 1

Equao 98

A convoluo discreta de fe(x,y) e ge(x,y) definida pela relao expressa na


Equao 99:
f e ( x, y ) g e ( x , y ) =

3.4.9

1
MN

M 1 N 1

f e (m, n) g e( x m, y n)

Equao 99

m =0 n =0

Filtros de Butterworth
Os filtros de Butterworth possuem uma funo de transferncia sem

descontinuidades abruptas que estabelea um corte claro entre as freqncias passadas e


as freqncias filtradas. Esta transio suave diminui o efeito do janelamento da
imagem provocado pelos filtros ideais (ver Seo 3.4.10 )[6].

43

3.4.9.1

Filtro de Butterworth Passa-baixa

A funo de transferncia do filtro de Butterworth passa-baixa dada pela


Equao 100.
1

H (u, v) =

2+ 2
1+ u v
fc

Equao 100

2n

Onde fc a freqncia de corte na qual a atenuao do nvel de cinza de 50% que


u 2 + v 2 e n a ordem do filtro. Normalmente se estabelece a

ocorre quando fc =

freqncia de corte onde a atenuao de -3dB (1/ 2 ). Neste caso a funo de

transferncia H(u,v) torna-se [6]:


1

H (u, v) =

1+

3.4.9.2

2+ 2
2 1 u v
fc

2n

2+ 2
1 + 0.414 u v
fc

2n

Equao 101

Filtro de Butterworth Passa-alta

A funo de transferncia do filtro Butterworth passa-alta dada pela Equao


102.
1

H (u, v) =

fc

1+
u 2 + v 2

Equao 102

2n

Onde fc a freqncia de corte na qual a atenuao do nvel de cinza de 50% que


u 2 + v 2 e n a ordem do filtro. Normalmente se estabelece a

ocorre quando fc =

freqncia de corte onde a atenuao de -3dB (1/ 2 ). Neste caso a funo de


transferncia H(u,v) torna-se [6]:
1

H (u, v) =

1+

fc

2 1
u 2 + v 2

2n

fc

1 + 0.414
u 2 + v 2

2n

Equao 103

44

3.4.9.3

Filtro de Butterworth Passa-banda

A funo de transferncia do filtro de Butterworth passa-banda dada pela


Equao 104.
1

H (u , v) =

( u 2 + v2) + f f
cs ci
1+
2
2
(u + v )( f cs f ci)

Equao 104

2n

Onde fcs e fci so as freqncias de corte inferior e superior, respectivamente, nas quais a
u 2 + v 2 ou fci= u 2 + v 2

atenuao do nvel de cinza de 50% que ocorre quando fcs =

e n a ordem do filtro. Normalmente se estabelece a freqncia de corte onde a


atenuao de -3dB (1/ 2 ). Neste caso a funo de transferncia H(u,v) torna-se:
1

H (u , v) =
1+

( u 2 + v2 ) + f f
cs ci

2 1 2 2
(u + v )( f cs f ci )

H (u , v) =

( u 2 + v2 ) + f f
cs ci

1 + 0.414 2 2
(u + v )( f cs f ci )

3.4.9.4

2n

2n

Equao 105

Equao 106

Filtro de Butterworth Rejeita-banda

A funo de transferncia do filtro de Butterworth passa-banda dada pela


Equao 107.
H (u , v) =

1
(u 2 + v 2)( f f )
cs
ci
1+
( u2 + v2) + f f
cs ci

2n

Equao 107

Onde fcs e fci so as freqncias de corte inferior e superior, respectivamente, nas quais a
atenuao do nvel de cinza de 50% que ocorre quando fcs =

u 2 + v 2 ou

fci= u 2 + v 2 e n a ordem do filtro. Normalmente se estabelece a freqncia de corte

45
onde a atenuao de -3dB (1/ 2 ). Neste caso a funo de transferncia H(u,v) tornase:
1

H (u , v) =
1+

(u + v )( f f )
cs
ci

2 1
2
2
( u + v ) + f cs f ci
2

2n

H (u , v) =

(u + v )( f f )
cs
ci

1 + 0.414
2
2
( u + v ) + f cs f ci
2

2n

Equao 108

Equao 109

3.4.10 Janelamento
Uma imagem digitalizada pode ser considerada como sendo o produto, no
domnio do espao, da imagem propriamente dita (com infinitos elementos) por uma
janela tambm com infinitos elementos em que tem NxM elementos cada um com valor
unitrio e os demais elementos so iguais a zero [18]
A multiplicao da imagem janela no domnio do espao, resulta na convoluo
da transformada da imagem pela transformada da janela. Esta convoluo causa um
efeito indesejado conhecido como efeito de janelamento que provoca um espalhamento
do espectro da imagem [14].
Para entender melhor o espalhamento do espectro vamos usar um sinal
unidimensional y(x) com durao infinita. Utilizando uma poro relativamente curta do
sinal, teremos,
y ( x) 0 x N 1
f ( x) =
0 < x > N 1
0

Equao 110

Podemos descreve a operao de obteno de f(x) de y(x) como sendo a


multiplicao de y(x) por uma janela retangular jr(x), conforme mostrado em Equao
111 [18].
f ( x) = y ( x) j r ( x) onde

1 0 x N 1
j r ( x) =
0 0 < x > N 1

Equao 111

Segundo o teorema da convoluo, a transformada de Fourier de f(x) :


( f ( x) = ( y ( x) j r ( x)) = ( y ( x)) ( j r ( x))

Equao 112

46
A anlise da ( j r ( x)) nos leva as seguintes concluses:
1. A transformada de Fourier da janela retangular dada por,
J r (u ) =

sen(uN )
sen(u )

Equao 113

Sendo sua representao grfica mostrada na Figura 7.

Figura 7: Transformada de Fourier de uma janela retangular

2. O espectro de potncia mostrada na Figura 8.

Figura 8: Espectro de potncia da janela retangular

Onde, a largura do lobo principal de 4/N e a atenuao do lobo principal para


o primeiro lobo lateral de aproximadamente 13.5 dB [18], [14].
Para reduzir o espalhamento de espectro provocado pela convoluo do sinal
com a janela usam-se janelas que variem suavemente nas bordas.

47

3.4.10.1

Janela Blackman

A janela blackman dada pela funo exposta pela Equao 114 e a sua resposta
em amplitude mostrada na Figura 9 [9].
2x
4x
+ 0.08 cos

J B = 0.42 0.5 cos


N 1
N 1

Equao 114

Figura 9: Resposta em amplitude da janela blackman

O espectro de potncia da janela blackman, mostrado na Figura 10, apresenta


uma atenuao do lobo principal para o primeiro lobo lateral de aproximadamente 58
dB [14].

Figura 10: Espectro de potncia da janela blackman

48

3.4.10.2

Janela cos4

A janela cos4 dada pela funo exposta na Equao 115 e a resposta em


amplitude esta mostrada na Figura 11 [14].

N
x
2
4
J c = cos

Equao 115

Figura 11: resposta em amplitude da janela cos4

Figura 12: Espectro de potncia da janela cos4

O espectro de potncia da janela cos4, mostrado na Figura 12 apresenta uma


atenuao do lobo principal para o primeiro lobo lateral de aproximadamente 47 dB
[14].

49

3.5 Tcnicas de Realce da Imagem no Domnio do Espao


A expresso domnio do espao refere-se ao conjunto de pixels que constituem
uma imagem. As operaes feitas neste domnio atuam diretamente sobre os pixels.
Funes de processamento imagem no domnio espacial podem ser expressas como:
g ( x, y ) = T [ f (x, y )]

Equao 116

onde:
f(x,y): imagem original.
g(x,y): imagem processada.
T: operador sobre f definido sobre alguma vizinhana de (x,y)

3.5.1

Filtros Espaciais ou Filtros de Convoluo no Domnio do Espao


Os filtros espaciais operam transformaes na imagem pixel a pixel. Estas

transformaes podem depender do nvel de cinza do pixel que est sendo


transformado, bem como dos valores de nvel de cinza dos pixels vizinhos a ele. Eles
podem ser ainda filtros lineares ou no lineares.
Nos filtros espaciais de convoluo (lineares), para se efetuar a filtragem, faz-se
a convoluo de uma mscara sobre a imagem que se deseja filtrar. Esta mscara uma
matriz de pesos pelos quais so multiplicados o nvel de cinza do prprio pixel e de seus
vizinhos. A soma destas multiplicaes resulta no nvel de cinza do pixel da imagem
filtrada. Para se garantir que as caractersticas estatsticas da imagem sejam mantidas
(por exemplo: a mdia dos nveis de cinza) feita a normalizao da mscara. A
normalizao consiste em dividir cada peso da mscara pelo nmero total de pesos.
Assim o fator de normalizao k o inverso do nmero de pesos da matriz da mscara.
Os filtros espaciais de convoluo (no lineares) operam na vizinhana de um
determinado pixel. Sua operao baseia-se nos valores de nveis de cinza da vizinhana
considera.

50

3.5.1.1

Filtro Passa-Baixa ou Filtro da Mdia

O filtro da mdia normalmente usado para eliminar rudos de alta freqncia e


para reduo de nveis de cinza onde existam transies abrutas de nveis de cinza. Ele
um filtro linear. Sua mscara 3x3 mostrada na Figura 13.
1 1 1
1
1 1 1
9
1 1 1

Figura 13: Mscara de um filtro passa-baixa 3x3

Ao ser aplicado este de filtro nota-se borramento da imagem especialmente nas


bordas, ressaltando as baixas freqncias. Este tipo de filtro usado quando se deseja
suavizar a imagem[6].

3.5.1.2

Filtro da Mediana

O filtro da mediana um filtro no linear que usado para reduzir o rudo


impulsivo de alta freqncia nas imagens (spike). Neste tipo filtro considera-se os nveis
de cinza de uma determinada rea da imagem e obtm-se o valor mdio desta rea.
Considerando-se a que a rea da imagem para clculo da mediana uma matriz de 3x3,
cujo pixel central na imagem origem o que se deseja calcular o correspondente na
imagem destino, teremos:
Po11 Po12 Po13

Po21 Po22 Po23


Po31 Po32 Po33

Figura 14: Matriz 3x3 da rea de uma imagem

Onde Poij (i=1,2,3 e j=1,2,3) representa o valor do nvel de cinza de cada ponto
sobreposto pela mscara na imagem original. Para se determinar o nvel de cinza Pd22
na imagem destino, correspondente posio do pixel Po22 na imagem origem,
organiza-se os nove valores de nvel de cinza, abrangidos pela mscara, em um vetor de
nove elementos Vn (n=1,2,..9), organizados em ordem crescente de seus valores de
nvel cinza. O quinto valor (valor mediano) corresponder ao valor do nvel de cinza de
Pd22.

51

Figura 15: Comparao entre o filtro da media e o filtro da mediana

Na Figura 15.a temos uma imagem com rudo impulsivo (spike). Na Figura 15.b
temos o resultado da aplicao do filtro da mediana e na Figura 15.c temos o resultado
do filtro da mdia mvel. Como se pode observar, para este tipo de rudo, o filtro da
mediana apresenta resultados melhores.

3.5.1.3

Filtros de Aguamento (Sharpening)

Os filtros de aguamento so empregados para ressaltar detalhes que tenham


sido borrados devido a erros ou a particularidades do mtodo usado na aquisio da
imagem.

3.5.1.3.1 Filtro Passa-Alta bsico


O filtro passa-alta bsico um filtro linear. Usado para acentuar detalhes finos
da imagem (alta freqncia). A resposta ao impulso deste tipo de filtro indica que o
filtro deve ter coeficientes positivos prximos ao centro e negativos na periferia. Para
uma mscara 3x3, escolhe-se um valor positivo no centro, com coeficientes negativos
nos outros elementos da matriz. A Figura 16 mostra uma mscara de filtro espacial que
atende a estas condies. Nele a soma dos seus coeficientes zero. Para reas com nvel
de cinza constante ou com pequenas variaes sua sada zero ou muito prxima disto.
Ele tambm reduz o valor mdio dos nveis de cinza pela eliminao do termo de
freqncia zero [6].

52
1 1 1
1
1 8 1
1
1 1 1

Figura 16: Mscara de um filtro passa-alta bsico

3.5.1.3.2 Filtros de Alto Reforo


Quando se deseja detalhes finos da imagem (alta freqncia), sem a perda dos
componentes de baixa freqncia, usam-se filtros de alto reforo. Para este tipo de filtro
usa-se a mscara mostrada na Figura 17.
1 1 1
1
1 w 1
9
1 1 1

Figura 17: Mscara para o filtro de alto reforo

Onde:
w=9A-1 com A1
A: fator de amplificao dos nveis de cinza
Para A=1 temos o filtro passa-alta bsico. Com A>1 temos a filtragem de alto
reforo. Os melhores resultados para este tipo de filtro so obtidos com A=1.1. Com
A>1.2 a ampliao dos rudos se torna mais acentuada[6].

3.5.1.4

Filtro por derivadas

O filtro da mdia tende a borrar os detalhes da imagem. O efeito da convoluo


do filtro da mdia sobre a imagem anlogo integrao da imagem. Portanto, a
diferenciao causa o efeito inverso, ressaltando as altas freqncias. Um dos mtodos
usados para diferenciao da imagem o gradiente[6].
Considerando a funo f(x,y) o gradiente de f para as coordenas (x,y) definido
por:

f
x
f = f

y
Sendo a magnitude desse vetor dada por:

Equao 117

53
2

f f
= mag ( f ) =
+

x
y
2

Equao 118

Para uma determinada rea da imagem temos na regio 3x3 pixels, onde z
representa os nveis de cinza da imagem (Figura 18):

z z z
z z z
z z z
1

Figura 18: Representao de uma rea com 3x3 pixels da imagem

Uma das maneiras de obter a magnitude do gradiente consiste em usar a


diferena (z5-z8) para o eixo dos x e (z5-z6) para o eixo dos y, conforme expresso
Equao 119.

( z z )2
5

( z z )2
5

Equao 119

Uma aproximao da Equao 119 pode ser feita com o uso de valores absolutos
como mostrada na Equao 120:

z z
5

z z
5

Equao 120

Outra aproximao da Equao 119 pode ser obtida usando-se as diferenas


cruzadas:
f

( z z )2
5

( z z )2
6

Equao 121

Ou atravs da diferena cruzada usando-se valores absolutos:

Equao 122

A Equao 119, Equao 120, Equao 121 e a Equao 122 podem ser
implementadas atravs da soma de duas mscaras 2x2. As mscaras 2x2 usadas para
implementar a Equao 120 so chamadas operadores cruzados de Roberts. Eles esto
mostrados na Figura 19.
1 0 0 1
0 1 1 0

Figura 19: Operadores cruzados de Roberts

Por facilidade de implementao so usadas matrizes 3x3. Uma aproximao


para a Equao 118 no ponto z5, usando uma vizinhana de 3x3 apresentada na
Equao 123:

54
f ( z 7 + z8 + z 9) ( z1 + z 2 + z 3) + ( z 3 + z 6 + z 9) ( z1 + z 4 + z 7 )

Equao 123

As mscaras usadas para implementar a Equao 123, so chamados Operadores


de Prewitt, eles so mostradas na Figura 20.
1 1 1 1 0 1
0
0
0 1 0 1

1 1
1 1 0 1 1

Figura 20: Operadores de Prewitt

3.5.2

Processamento de Imagens em pseudo-cores


As tcnicas que usam pseudo-cores em imagens monocromticas fazem a

atribuio de cores baseado nas vrias propriedades dos seus contedos de nveis de
cinza [6].
A tcnica de fatiamento por intensidade atribui duas cores a imagem
monocromtica baseada no nvel de cinza. Assim, algumas imagens com K possveis
nveis de cinza e que se queira atribuir n cores com nK, a cor atribuda a um
determinado pixel com um nvel de cinza p ser dada por:
K

C m se m
n

3.5.3

p < (m + 1) m = 0,1,...n 1
n

Equao 124

Remapeamento Linear Global e Local


Remapeamento linear uma tcnica usada normalmente para realar imagens

que contm uma pequena faixa de nveis de cinza. O remapeamento linear global
consiste dos seguintes passos:
1. Encontram-se os pixels com o menor valor e o maior valor nvel de cinza da
imagem
2. Os valores so normalizados no intervalo [0,1].
3. Multiplica-se cada pixel normalizado pela maior nvel de cinza desejado
obtendo-se a imagem remapeada [10].
Bons resultados tambm so obtidos fazendo-se remapeamento linear local. O
processo est descrito abaixo:
1. Encontram-se os pixels com o menor valor e o maior valor de nvel de cinza da
imagem de uma rea escolhida da imagem.

55
2. Os valores que ficarem abaixo e acima do menor valor escolhido so igualados
ao menor e ao maior valor, respectivamente, da rea escolhida.
3. Os valores so normalizados no intervalo [0,1].
4. Multiplica-se cada pixel normalizado pela maior nvel de cinza desejado
obtendo-se a imagem remapeada [10].

3.5.4

Transformao para obteno do negativo de uma imagem


O negativo de uma imagem obtido atravs da transformao s=Tn(r) dada pela

Equao 125:
s = Tn(r ) = ( N 1) r

Equao 125

Onde:
N: nmero de nveis de cinza.
r: nvel de cinza da imagem original
s: nvel de cinza resultante
Tn(r): transformao par obteno do negativo da imagem.
O objetivo da operao inverter a ordem do preto para o branco, de tal forma
que a intensidade da imagem resultante da operao de negao diminua medida que a
intensidade da imagem que sofre a operao aumente[6].

3.5.5

Equalizao de Histograma
Considerando uma imagem em nveis de cinza a funo discreta de densidade de

probabilidade dos nveis de cinza :


p r (r k ) =

NC k
N

0 r k 1 e k = 0,1..., NC 1

Onde:
NC: nmero de nveis de cinza.
rk: k-ssimo nvel cinza, sendo rk=0 para o preto e rk=1 para o branco
pr(rk): probabilidade do k-simo nvel de cinza.
NCk: o nmero de vezes que o nvel de cinza k aparece na imagem.
N: o nmero total de pixels da imagem

Equao 126

56
O grfico de pr(rk) x rk denominado histograma, e a transformao para obter
um histograma uniforme conhecida como equalizao de histograma ou linearizao
de histograma [6].
A forma discreta da transformao usada para obter a equalizao de histograma
dada por:
k

NC j k
= p r (r j ) 0 r k 1 e k = 0,1,...N 1
j =0 N
j

s k = T (r k ) =

3.5.6

Equao 127

Controle de Brilho e Saturao


Para o controle de brilho e saturao usa-se o modelo HSV (Hue, Saturation,

and Value). As cores no modelo HSV esto normalizadas em relao ao vermelho,


verde e azul do modelo RGB (Red, Green, and Blue) [6]. Assim temos:
r=

R
R+G+ B

Equao 128

g=

G
R+G+ B

Equao 129

b=

B
R+G+ B

Equao 130

r + g +b =1

Equao 131

V =

1
(R + G + B )
3

Equao 132

Onde:
R,G e B: so, respectivamente vermelho, verde e azul no modelo RGB.
r,g e b: so respectivamente vermelho, verde e azul no modelo HSV.
V: valor ou brilho.
Para calcular o matiz (hue) usa-se a Equao 133:

[(R G ) + (R B )]

2
H = cos 1

2
( R G ) + (R B ) + ( G B ) 2

Onde:
H: o matiz

Equao 133

57
R,G e B: so, respectivamente vermelho, verde e azul no modelo RGB.
O clculo da saturao dado pela Equao134:
S = 1 min( R, G, B)

Equao 134

Onde:
S: saturao
R,G e B: so, respectivamente vermelho, verde e azul no modelo RGB.
O calculo de V (value), brilho foi apresentado na Equao132.
Para o controle do brilho altera-se convenientemente o valor de V. Para o
controle da saturao altera-se convenientemente o valor de S. Uma vez obtidos os
novos valores de S ou V, calcula-se as cores normalizadas r, g e b [6]:
Para 0o < H 120o :
1
(1 S )
3

Equao 135

1
S cos H
1 +

2 cos(60o H )

Equao 136

b=

r=

g = 1 ( r + b)

Equao 137

Para 12 0o < H 240o :


Fazendo:
H = H 120o

Equao 138

1
(1 S )
3

Equao 139

Temos,
r=

g=

1
S cos H
1 +

3 cos(60o H )

Equao 140

b = 1 (r + g )

Equao 141

H = H 240o

Equao 142

Para 240o < H 360o :


Fazendo:

1
(1 S )
3

Equao 143

1
S cos H
1 +

3 cos(60o H )

Equao 144

g=

b=

r = 1 (b + g )

Equao 145

58
Uma vez obtido os valores de r, g e b retorna-se ao modelo R, G e B fazendo [6]:
R = 3Vr

Equao 146

G = 3Vg

Equao 147

B = 3Vb

Equao 148

3.5.7 Converso de imagens coloridas para uma imagem em niveis de cinza


Para converter uma imagem colorida do modelo RGB para uma imagem em
nveis de cinza usa-se a Equao 149:

Y = 0.299R + 0.587G + 0.114B

Equao 149

Onde:
Y: brilho
R: nvel da cor vermelha
G: nvel da cor verde
B: nvel da cor azul
Assim, para se converter uma imagem colorida para uma imagem em nveis de
cinza, para cada pixel se calcula o seu brilho (Y), usando a Equao 149, e em seguida
se faz R=G=B=Y, obtendo-se assim a converso para uma imagem em nveis de cinza
[8].

3.5.8

Correo Gama
A correo gama usada para corrigir distores provocadas pela no

linearidade da luminncia mostrada na superfcie de um tubo de raios catdicos em


relao tenso aplicada em seus terminais [19].
A luminncia (I) mostrada na superfcie de um tubo de raios catdicos funo
da tenso aplicada em seus terminais (Vs). Esta funo no linear e dada pela
seguinte funo:
Equao 150
Onde (gama) varia entre 1,5 e 3,0. O valor mais comum para um tubo de raio catdico
2,5.

59
Para uma imagem com a tenso de branco 0,0V e a de preto 1,0V, todas as
demais variaes de cinza que ficam entre o intervalo 0,0V e 1,0V seriam alteradas
quando visualizadas num tubo de raios catdicos. A Figura 21.a mostra a imagem que
se esperaria obter quando se aplica um sinal de 0V a 1V num tubo de raios catdicos,
variando linearmente. A imagem da Figura 21.b a imagem resultante aps a da
aplicao de 0V a 1V num tubo de raios catdicos. Observa-se, na que imagem
resultante s igual imagem esperada quando a tenso aplicada est em 0V. Os outros
pontos apresentam uma luminncia menor do que a imagem esperada.

Figura 21: Imagem esperada x imagem obtida sem correo gama

Para compensar este efeito pode-se aplicar a funo inversa sobre Vs, fazendo-se
assim que a resposta de luminncia apresentada pelo tubo de raios catdicos seja linear
ao sinal de tenso aplicada. Assim:
Equao 151
Onde Vc a tenso corrigida e Vs a tenso que seria originalmente aplicada. Para um
tubo de raios catdicos com =2,5, o fator de correo gama (1/) seria 0,4.
A seguir apresentado o algoritmo para correo gama para imagem preto e branco:
1. Encontram-se os pixels com o menor valor e o maior valor de nveis de cinza da
imagem.
2. Os valores de nveis de cinza de cada pixel so normalizados no intervalo [0,1].
3. Cada pixel tem seu valor corrigido pelo fator de correo gama.
4. Obtm-se os novos valores de nveis de cinza para cada pixel, multiplicando-se
os valores corrigidos pela soma do maior valor do nvel de cinza pelo menor
valor do nvel de cinza.

60

Sinal de luminncia desejado em

Correo de gama

Sinal de luminncia no tubo de

funo de Vs

raios catdicos

Nenhuma

1. Luminncia esperada em

2. Nenhuma correo de

3. Curva de luminncia

funo da tenso aplicada

gama usada.

apresentada pelo tubo de

(VS)

raios catdicos em funo


da tenso Vs.

1. Luminncia esperada em

2. Tenso aplicada nos

3. Curva de luminncia

funo da tenso aplicada

terminais do tubo de raios

apresentada pelo tubo de raios

(VS)

catdicos com correo


gama: Vc

catdicos em funo da tenso


Vs.

Figura 22: Influncia da correo gama1

A Figura 22 mostram a relao entre a aplicao ou no da correo gama na


tenso aplicada nos terminais do tubo de raios catdico e a curva de luminncia
resultante.
Atualmente existem monitores de hardware que fazem a correo gama
automaticamente. A correo gama tambm se encontra disponvel em sistemas
operacionais como, por exemplo, o Windows XP.

A Figura 21 foi obtida de: http://www.herbario.com.br/fotografia_digital/cap08.htm Acessado em:


21/07/2005
1

61

3.6 Segmentao de Imagem


A segmentao da imagem divide a imagem em suas partes constituintes. Os
algoritmos de segmentao para uma imagem monocromtica so baseados na
descontinuidade ou na similaridade dos valores de nveis de cinza[6].
Quando se est trabalhando com a descontinuidade dos valores de nveis de cinza
procura-se particionar a imagem baseado em mudanas bruscas nos nveis de cinza.
Neste caso se procura detectar pontos isolados, linhas e bordas na imagem. [6].
O estudo da similaridade dos valores de nveis de cinza baseia-se em limiarizao,
crescimento de regies, o particionamento e a fuso de regies [6].

3.6.1

Deteco de Descontinuidades
Sero abordadas trs tcnicas bsicas de deteco de descontinuidade em

imagem digital a deteco de pontos, linhas e bordas. A maneira mais usual de se obter
uma descontinuidade na imagem atravs da varredura da imagem por uma mscara ou
kernel de convoluo. Considerando uma mscara genrica 3x3, como a mostrada na
Figura 23 [6].
w1 w2 w3

w4 w5 w6
w7 w8 w9
Figura 23: Mscara genrica

Calcula-se a soma dos produtos dos coeficientes pelo nvel cinza contido na regio da
imagem englobada pela mscara. A resposta da mscara em qualquer ponto da imagem
:
9
R = w1 z1 + w2 z 2 + ... w9 z 9 = wi z i
i =1

Equao 152

Onde zi o nvel de cinza associado com o coeficiente wi da mscara. A resposta da


mscara definida em relao a sua posio central. Quando a mscara posicionada
em um pixel da borda da imagem a resposta computada utilizando-se a vizinhana
parcial adequada [6].

62

3.6.1.1

Deteco de pontos

A deteco de um ponto isolado em uma imagem obtida atravs do uso da


mscara mostrada na Figura 24 [6].
1 1 1
1 8 1

1 1 1
Figura 24: Mscara usada para deteco de pontos isolados

Um ponto na posio da mscara encontrado se:


R

Equao 153

onde T um limiar positivo e R dado pela Equao 152. Basicamente o que se faz
medir a diferena ponderada entre um ponto e seus vizinhos. Considera-se que o nvel
de cinza de um ponto isolado diferenciado em relao ao nvel de cinza de seus
vizinhos [6].
A mscara mostrada na Figura 24 a mesma mscara usada na filtragem de altafreqncia (Figura 16). Contudo, a nfase aqui a deteco de pontos, assim sendo.
Apenas as diferenas acima do limiar T sero consideradas pontos isolados na imagem
estudada.

3.6.1.2

Deteco de Linhas

A deteco de linhas requer um nvel de complexidade um pouco maior levando


em conta quatro mscaras mostradas na Figura 25 [6].
1 1 1
2 2 2

1 1 1

1 1 2 1 2 1 2 1 1
1 2 1 1 2 1 1 2 1

2 1 1 1 2 1 1 1 2

Figura 25 Mscara de deteco de linha horizontal, +450, vertical e -450

Considerando a mscara de deteco de linha horizontal, mostrada na Figura 25,


se ela fosse movida por toda a imagem ela deveria responder fortemente as linhas (de
largura de um pixel) orientadas horizontalmente. Se usarmos uma imagem de fundo fixo
com uma linha horizontal (com nvel de cinza mais alto) ser sobre os pontos desta
linha que a mscara ter resposta mxima. Similarmente a segunda mscara ter uma
resposta mxima para uma linha com uma inclinao de +450. A terceira mscara ter a

63
resposta mxima para uma linha vertical e quarta mscara para uma linha com uma
inclinao de -450.

3.6.1.3

Deteco de bordas

A deteco de bordas a abordagem mais comum para a deteco de


descontinuidades significativas dos nveis de cinza de uma imagem, uma vez que pontos
e linhas no so ocorrncias freqentes na maioria das aplicaes prticas [6].
Nesse estudo vamos considerar uma borda como o limite entre duas regies com
nveis de cinza relativamente distintos entre si. Vamos assumir que as regies
consideradas so suficientemente homogneas, de forma que a transio entre as duas
regies pode ser determinada com base na descontinuidade dos nveis de cinza.
A idia bsica utilizada na maioria das tcnicas de deteco de bordas consiste
na computao de um operador diferencial. A Figura 26 mostra uma imagem (a) com
uma faixa clara sobre um fundo escuro. O perfil de nvel de cinza ao longo de uma linha
de varredura horizontal da imagem a primeira derivada e a segunda derivada desta linha
de perfil. Pelo perfil observa-se que a borda de transio (do escuro para o claro)
modelada como uma mudana suave de nveis de cinza, em vez de uma mudana
abrupta. Este modelo reflete o fato que as bordas em imagens digitais so, geralmente
levemente borradas devido amostragem [6].

64

Figura 26: Deteco de bordas por operadores de derivao2

A primeira derivada do perfil de nvel de cinza do perfil da imagem (a)


positiva na primeira borda (esquerda) e negativa na segunda borda (direita). Nula nas
reas de nvel de cinza constante. A segunda derivada positiva na transio entre a
borda escura e a borda clara e negativa na transio entre a borda clara e a borda escura
e nula nas reas de nvel de cinza constante. Portanto, podemos usar a magnitude
primeira derivada para detectar a presena de uma borda na imagem e o sinal da
segunda derivada pode ser usado para determinar se um determinado pixel localiza-se
no lado claro ou no lado escuro da borda. Embora este exemplo tenha se limitado a um
perfil horizontal unidimensional, uma argumentao similar se aplica a uma borda de
qualquer orientao na imagem. Basta definir um perfil perpendicular a direo da
borda em qualquer ponto desejado e interpretar o resultado[6].
2

[Gonzalez, 2000], pgina 298

65
A primeira derivada em qualquer ponto da imagem obtida usando a magnitude
do gradiente naquele ponto. A segunda derivada obtida utilizando-se o laplaciano.

3.6.1.4

Operadores Gradiente

Na Seo 3.5.1.4 introduzimos o conceito da utilizao de gradiente para


diferenciao de imagens. Da Equao 117 observa-se que o gradiente de uma imagem
f(x,y) dado pelo vetor:

f
G x
f = = fx
G y
y

Equao 154

Da anlise vetorial tem-se que o vetor gradiente aponta na direo da mudana


mais rpida de f na posio (x,y). Na deteco de bordas a magnitude deste vetor uma
quantidade importante, geralmente chamada simplesmente gradiente e denotada por f
onde[6]:
f = mag (f ) = G 2x + G 2y

Equao 155

Este valor equivalente ao maior aumento de f(x,y), por unidade de distncia, na


direo f .
Uma aproximao empregada para f estima o gradiente com valores
absolutos:
Equao 156

f = G x + G y

Este resultada requer um menor tempo de processamento que o da equao anterior.


A direo do vetor do gradiente um outro dado importante. Considerando

( x. y ) o ngulo da direo do vetor f na posio (x,y), tem-se que


Gy

G
x

( x, y ) = tan 1

Equao 157

Onde o ngulo medido em relao ao eixo x.


Considerando-se as Equao 154 e a Equao 155, nota-se que o clculo do gradiente
de uma imagem resultado das derivadas parciais

f
f
e
na posio de cada pixel.
x
y

Como apresentado em 3.5.1.4 o clculo das derivadas pode ser feito de muitas formas

66
diferentes. Considerando uma regio genrica da imagem, de tamanho 3x3, como
mostrada na Figura 27 [6].

z z z
z z z
z z z
1

Figura 27: Regio genrica de uma imagem de tamanho 3x3

Uma das aproximaes para o clculo do gradiente mostrada na Equao 123,


e considerando tambm a Equao 156 temos:
Gx =(

z
G y = (z

+2

z + z ) (z + 2 z + z )
+ 2 z + z ) (z + 2 z + z )
8

Equao 158
Equao 159

As equaes Equao 158 e Equao 159 podem ser implementadas atravs de


duas mscaras conhecidas como operadores de Sobel mostrados na Figura 28
1 2 1 1 0 1
0
0
0 2 0 2

1
2
1 1 0 1
Figura 28: Operadores de Sobel

Os operadores de Sobel tm como caracterstica alm de ressaltar as bordas


suaviza a imagem. Esta caracterstica normalmente desejvel visto que a derivao
aumenta os rudos presente na imagem.

3.6.1.5

Laplaciano

O laplaciano de uma funo bidimensional uma derivada de segunda ordem


expressa pela Equao 160 [6]:

2 =

2 f 2 f
+
x 2 y 2

Equao 160

A Equao 160 pode ser aproximada de diferentes maneiras de uma forma


similar do que foi feito com os gradientes.
Considerando novamente uma regio 3x3, conforme mostrado na Figura 27 a
forma mais freqente encontrada na prtica para o clculo do laplaciano dada pela
Equao 161:
2 f = 4

z +z +z +z)
2

Equao 161

67
E sua mscara a mostrada pela Figura 29:
0 1 0
1 4 1

0 1 0
Figura 29: Mscara usada para implementao do laplaciano

Para o clculo do laplaciano necessrio que o coeficiente associado com o


pixel central seja positivo e que os outros associados aos pixels externos sejam
negativos. Uma vez que o laplaciano uma derivada, a soma de seus coeficientes tem
que ser nula.
Embora o laplaciano responda a transio na intensidade ele raramente usado
na deteco de bordas. Isto se deve as seguintes razes:
1. bastante sensvel ao rudo por ser uma derivada de segunda ordem.
2. Produz bordas duplas.
3. No capaz detectar a direo da borda.
Por essas razes o laplaciano usualmente cumpre um papel secundrio com um
detector de bordas sendo usada para determinar se um pixel est no lado claro ou escuro
da borda [6].

3.6.2

Threshold Global
O threshold global uma operao que envolve teste de uma funo T
T=T[x,y,p(x,y),f(x,y)]

Equao 162

Onde:
f(x,y): nvel de cinza do pixel x,y.
p(x,y): propriedade local deste pixel
Quando T depende apenas de f(x,y) o threshold (limiar) e dito global. Uma
funo de limiarizao global ,g(x,y), pode ser definida como [6]:
255 se
g ( x, y ) =
0 se

f ( x, y ) T
f ( x, y ) < T

Equao 163

68

3.7 O Padro DICOM

3.7.1

Introduo
Com a introduo da tomografia computadorizada seguida de outras

modalidades de diagnsticos por imagem, nos anos de 70, e com o incremento do uso
de computadores em aplicaes clnicas, o American College of Radiology (ACR) e a
National Electrical Manufactures Association (NEMA) identificaram a necessidade de
um mtodo padro para transferir imagens e informaes entre equipamentos fabricados
por diversos fabricantes. At ento, cada fabricante de equipamento desenvolvia um
formato prprio de imagens digitais. [17]
O ACR e a NEMA criaram um comit em 1983 com o objetivo de estabelecer
um padro para:

Promover a comunicao de informao de imagens digitais independente


do fabricante dos equipamentos

Facilitar o desenvolvimento e o armazenamento de imagens e a comunicao


entre sistemas (Picture archiving and communications Systems: PACS) [17]

A verso 1.0 do padro ACR-NEMA foi publicado em 1985 (ACR-NEMA


Standards Publication N 300-1985). O padro sofreu duas revises: a primeira datada
de outubro de 1986 e segunda de janeiro de 1988.
A norma ACR-NEMA Publication N 300-1988, publicada em 1988, foi
designada verso 2.0. Ela inclui a verso 1.0, as revises publicadas e revises
adicionais. Ela tambm inclui um novo material que prov o suporte para comandos dos
equipamentos de visualizao, introduzindo um novo esquema de hierarquia para
identificar uma imagem e adicionar dados especficos para a descrio de uma imagem.
Estas publicaes do padro especificam a interface de hardware, o conjunto mnimo de
comandos de software, e um conjunto consistente de formatos de dados.
O padro que atualmente designado Digital Imaging and Communication in Medicine
DICOM, incorpora a maioria dos melhoramentos das verses anteriores do padro
ACR-NEMA:
a. Esse padro aplicvel a um ambiente de rede. O padro ACR-NEMA
verso 2.0 era aplicado somente em ambientes ponto a ponto; para operaes
em um ambiente de rede era necessrio usar um Network Interface Unit

69
(NIU). O DICOM suporta operaes em ambiente de rede usando o
protocolo padro TCP/IP.
b. Esse padro aplicvel em um ambiente off-line. O padro ACR-NEMA
verso 2.0 no especificava um formato de arquivo ou escolha de meio fsico
ou um sistema lgico de arquivos. O padro DICOM suporta operaes offline usando as mdias padres industriais, como CD-ROM e sistemas lgicos
de arquivos como o ISO 9660 e o sistema de arquivos usados em PC
(FAT16).
c. O padro DICOM especifica como os dispositivos conformes com o padro
reagem a comandos e dados que estejam sendo trocados. O padro ACRNEMA estava confinado a transferncia de dados, mas o padro DICOM
especifica, atravs do conceito de classes de servio, a semntica de
comandos associados a dados.
d. O padro DICOM especifica o nvel de conformidade. O padro ACRNEMA especificava somente o nvel mnimo de conformidade. O padro
DICOM explicitamente descreve como implementar uma estrutura
(Conformance Statement) para selecionar opes especficas.
A descrio do padro DICOM composta de 18 partes:

Parte 1 (PS 3.1): Introduo e viso geral

Parte 2 (PS 3.2): Conformidade

Parte 3 (PS 3.3): Informaes sobre a definio de objetos

Parte 4 (PS 3.4): Servios e especificaes de classes

Parte 5 (PS 3.5): Estrutura de Dados e codificao

Parte 6 (PS 3.6): Dicionrio de dados

Parte 7 (PS 3.7): Troca de mensagens

Parte 8 (PS 3.8): Comunicao em rede e suporte para troca de


mensagens

Parte 9 (PS 3.9): Retirada

Parte 10 (PS 3.10): Armazenamento em formato de arquivos para


troca de dados

Parte 11 (PS 3.11): Mdia de armazenamento e perfis de aplicao

Parte 12 (PS 3.12): Formatos de mdia e mdia fsica para troca de


dados

70

Parte 13 (PS 3.13): Retirada

Parte 14 (PS 3.14): Escala de cinza padro e funes de visualizao

Parte 15 (PS 3.15): Perfis de segurana

Parte 16 (PS 3.16): Contedo do mapeamento de recursos

Parte 17 (PS 3.17): Informaes explicativas

Parte 18 (PS 3.18): Acesso WEB para objetos DICOM persistentes


(WADO).

Um arquivo DICOM contm um cabealho onde esto as informaes do


paciente (nome, tipo do equipamento, dimenses da imagem, e outros), assim como
todos os dados da imagem (que pode conter informaes em trs dimenses). A imagem
DICOM pode ser comprimida (encapsulada) para reduo de tamanho. Os dados podem
ser comprimidos usando variantes do formato JPEG com ou sem perdas de informao.
Tambm pode ser usada a codificao e compresso sem perdas Run-Length Encoding
(idntico compresso de bits encontrada em alguns formatos de imagem TIFF)[17].

3.7.2

O cabealho de um arquivo DICOM


O tamanho do cabealho pode variar dependendo das informaes armazenadas.

A Tabela 1, est definida no padro DICOM e mostra as informaes que podem estar
presentes no cabealho de um arquivo.

71
Nome do Atributo

Tag

Tipo

Descrio

Prembulo do arquivo

(Sem tag)

128 bytes. Normalmente posto em 00H

Prefixo DICOM

(Sem tag)

4 bytes contendo o string DICM. Este prefixo


usado para reconhecer que este um arquivo
DICOM

Tamanho de Grupo

(0002, 0000)

Nmero de bytes seguindo este elemento do


meta arquivo (fim do campo de valores) at e
incluindo o ltimo elemento de informao do
meta arquivo do Grupo 2 .

Informao da verso do meta

(0002, 0001)

arquivo
UID da Classe SOP da mdia de

Campo de 2 bytes onde cada bit identifica a


verso do cabealho do meta arquivo

(0002, 0002)

armazenamento.

Identifica unicamente a Classe SOP associada


com conjunto de dados. O UID da classe SOP
permitido para mdia de armazenamento so
especificados na PS3.11 do padro DICOM
Mdia de armazenamento e perfis de aplicao

Instncia de SOP da UID da mdia

(0002,0003)

de armazenamento

Identifica unicamente a instncia de SOP


associada com o conjunto de dados colocado no
arquivo seguindo as informaes do meta
arquivo.

UID da sintaxe de transferncia

(0002, 0010)

Identifica unicamente a sintaxe de transferncia


usada para codificar o conjunto de dados. Esta
sintaxe de transferncia no se aplica as
informaes do meta arquivo.

Implementao da classe UID

(0002, 0012)

Identifica unicamente a implementao que


escreveu o arquivo e seu contexto. Ele prove
uma identificao no ambgua do tipo de
implementao que escreveu o arquivo pela
ltima vez no evento de problemas de troca.
Segue a mesma poltica definida pela PS 3.7 do
padro DICOM (association negotiation)

Implementao do nome da verso

(0003, 0013)

Identifica

unicamente

verso

de

implementao de uma classe UID usando 16


caracteres do repertrio identificado na seo
8.5. Segue a mesma poltica definida pela PS
3.7

do

padro

DICOM

(association

negotiation)
Fonte do ttulo da entidade de
aplicao

(0002,16)

O ttulo da entidade de aplicao DICOM que


escreveu o contedo do arquivo ou que fez as
ltimas alteraes.

Se usado,

permite o

rastreamento da fonte de erros no evento de


problemas troca. A poltica associada ao ttulo
da entidade de aplicao

segue aquelas

definidas em OS 3.8 do padro DICOM .

72
Nome do Atributo

UID

privado

do

criador

das

Tag

Tipo

Descrio

(0002, 0100)

Contm o UID privado do criador das

Informaes.

informaes.

Informaes privadas

(0002,

1C

0102)

Contm as informaes privadas postas nas


informaes do meta arquivo. O criador pode
ser identificado em (0002,0100). requerida se
o UID privado do criador de informaes
(0002,0100) est presente.

Tabela 1: Cabealho usado pelo padro DICOM [17]

Abreviaes utilizadas:

SOP : Service-object pair

UID: Unique Identifier

O campo Tipo indica o requisito de um objeto:

(1): requerido
(2): deve estar presente mas pode ter o tamanho zero se desconhecido.
(3): opcional
(1C) similar ao (1) mas includo com se satisfizer uma condio.
(2C) similar ao (2) mas s pode ser includo se satisfizer uma condio.
Maiores detalhes sobre o padro DICOM podem ser encontrados em no link
http://medical.nema.org/dicom/2004.html, que contm as 18 partes do padro DICOM.

4 DESCRIO DO PROJETO

4.1 As Tecnologias Empregadas


O VPIM e seus mdulos de expanso, tambm chamados de plug-ins, foram
criados utilizando a linguagem C++ seguindo o modelo de programao orientado a
objetos. A plataforma mnima de execuo necessria para o programa Windows
98SE utilizando DirectX 9c, atualizao de agosto de 2005.
O DirectX9c um conjunto de bibliotecas servem como interface de alto nvel
para funes de hardware e que capaz de emular estas funes quando o hardware no
capaz de executar uma funo especificada.
O ambiente de desenvolvimento recomendado para sua compilao o Microsoft
Visual C++ .NET 2003 com DirectX9c SDK instalado.
Na implementao da transformada rpida de Fourier foi utilizada a ARIS FFT
[5].
O suporte a arquivos no padro DICOM foi implementado utilizando o
DicomToolkit [4]. A biblioteca libtiff [13] foi utilizada para o suporte a arquivos tiff e a
biblioteca Zlib [23] utilizada internamente pelo DicomToolkit sendo indiretamente
utilizada pelo VPIM portanto.
Para o mecanismo de adio dos mdulos de expanso o VPIM utiliza Dynamic
Link Libraries, ou bibliotecas de vnculo dinmico. O mecanismo de DLL um recurso
oferecido pelo sistema operacional para o qual o VPIM foi projetado e consistem em
programas independentes cujos endereos de execuo podem ser mapeados sobre os
endereos de execuo de outro programa de forma a permitir sua operao conjunta.
A comunicao entre os mdulos realizada atravs de interfaces abstratas que
permitem a abstrao da implementao de um mdulo nos mdulos que as utilizam.
Essas interfaces abstratas so um recurso da linguagem C++ essencial para o
funcionamento dos plug-ins que, criados como DLLs e portanto executveis
independentes, no podem ter compartilhamento de implementao.
Uma interface abstrata consiste em uma descrio de uma estrutura de dados
contendo apenas cabealhos de funes. Essa estrutura, por sua vez, transformada pelo
compilador em uma tabela de ponteiros para funes que, ao ter um objeto instanciado,
preenche a tabela com os ponteiros das implementaes reais. Esse mecanismo garante

74
que todos os mtodos apontados pela tabela sero vlidos atravs de tratamento do
compilador da linguagem C++, que no permite a instanciao de objetos que no
definam todos os mtodos abstratos de suas classes pai.
Muitas

das

implementaes

utilizando

FFT

foram

primeiramente

implementadas usando o MATLAB 6.0. Estas implementaes formaram a base para as


atuais implementaes em C++. O MATLAB tambm foi utilizado na validao das
funes implementadas [21].

4.2 A Arquitetura
O VPIM organizado em trs principais mdulos: o mdulo ncleo, tambm
chamado de kernel; o mdulo das janelas, para interface com o usurio; e o conjunto de
plug-ins. Esta diviso foi feita com o intuito de simplificar ao mximo a implementao
e incorporao de novas funcionalidades que operem sobre os dados das imagens
atravs da distribuio de responsabilidades entre os mdulos.
As responsabilidades do kernel so: iniciar todos os subsistemas, executar o lao
principal da aplicao com o sistema de coleo e despacho de eventos, carregar
arquivos de imagem, finalizar a execuo do programa e servir como ponto central de
onde qualquer dado da aplicao acessvel direta ou indiretamente.
A responsabilidade do mdulo das janelas unicamente implementar a interface
com o usurio. Essa implementao consiste no controle de exibio de seus dados
individuais e em funes de suporte convenientes para outros mdulos.
A responsabilidade do mdulo composto pelo conjunto de plug-ins a de
expandir a aplicao em qualquer funcionalidade necessria. Os plug-ins desenvolvidos
at o momento, entretanto, se restringem unicamente aplicao de filtros sobre as
imagens e eventual controle sobre interfaces com o usurio de que necessitem.

4.3 As Estruturas de Dados


As principais estruturas de dados do VPIM so suas interfaces abstratas e suas
representaes das imagens. Existem interfaces abstratas para o kernel, para cada uma
das janelas do mdulo de janelas, e para os subsistemas de dados que controlam a
organizao das imagens em estudos, sries e imagens dentro de uma srie. As
representaes de imagens, por sua vez, so divididas em dois principais grupos:

75
representaes de imagem no domnio espao e representaes de imagem no domnio
freqncia.

4.4 As Imagens no Domnio Espao


As imagens representadas no domnio do espao utilizam uma representao por
scanlines RGBA, ou seja, consistem de uma seqncia de bytes de tamanho igual a
quatro vezes o produto da altura pela largura em pixels da imagem. O motivo para este
valor est no fato de cada pixel ser representado por 4 bytes: 1 byte representando a
componente vermelha da cor, 1 byte representando a componente verde da cor, 1 byte
representando a componente azul da cor e 1 byte representando a opacidade do ponto.
Internamente a seqncia de bytes organizada em um conjunto de linhas com
um nmero de pixels igual ao nmero de colunas. Para cada pixel dentro de cada coluna
o primeiro byte representa a componente azul de cor, o segundo a componente verde, o
terceiro a componente vermelha e o quarto a opacidade.
Um byte utiliza 8 bits3 de memria e pode representar 256 valores diferentes, de
0 (mais escuro) a 255 (mais claro), existindo, portanto essa variao de intensidades
para cada canal de cor. Combinando todos os canais de cores so representveis 224
cores distintas, ou seja, 16777216 cores sendo que elas podem ter 256 nveis de
transparncia. Nesse espao de cores possvel representar 256 nveis de cinza, pois
uma cor no padro RGBA um nvel de cinza se e somente se todos seus componentes
de cor so iguais. A transparncia foi apenas deixada para uso futuro.

4.5 As Imagens no Domnio Freqncia


As imagens mdicas, por serem em nveis de cinza, tm seus componentes R, G
e B iguais. As imagens representadas do domnio da freqncia so criadas a partir da
componente verde (G) das imagens representadas no domnio do espao transformada
pela FFT.
Se a imagem no domnio do espao no tiver dimenses em potncia de 2, a
imagem criada no domnio freqncia ser criada com lados equivalentes menor

Um bit a menor unidade de informao que um computador pode armazenar podendo ter apenas dois
valores possveis 0 ou 1.

76
potncia de 2 maior que cada lado da imagem que tem potncia de 2. O valor 0 ser
assumido para os novos pontos criados.
As imagens representadas do domnio da freqncia so representadas por
scanlines de dois planos, real e imaginrio de ponto flutuante de preciso dupla; ou seja,
consistem de uma seqncia de dados do tipo double do C++ (ponto flutuante de 64 bits
no padro IEEE) de tamanho igual a duas vezes o produto da altura pela largura em
pixels da imagem transformada para potncia de 2.
Internamente a seqncia de doubles organizada em dois conjuntos de linhas
com um nmero de elementos igual ao nmero de colunas em cada conjunto. O
primeiro conjunto de linhas representa a parte real da imagem e o segundo a parte
imaginria.

4.6 A Interface Abstrata do Mdulo Kernel


A interface avanada do mdulo Kernel possui unicamente dois mtodos: o
mtodo GetWindow e o mtodo GetStudyManager. O mtodo GetWindow recebe como
parmetro

uma

string

padro

C4

retorna

interface

abstrata

CBaseWindowAbstractInterface. O mtodo GetStudyManager no recebe parmetros e


retorna

interface

abstrata

CStudyManagerAdvancedInterface.

interface

CBaseWindowAbstractInterface e os possveis valores para o parmetro do mtodo


GetWindow sero explicados no Seo 4.7 ,dedicada ao mdulo de janelas.
A interface CStudyManagerAdvancedInterface tem a responsabilidade de
disponibilizar as operaes que podem ser realizadas sobre um estudo e gerenciar os
estudos carregados na memria. Objetivando cumprir sua funo ela disponibiliza as
seguintes operaes: a de criao de um novo estudo baseado em um identificador nico
de estudo, a de obteno das interfaces abstratas dos estudos atravs do ndice interno
do estudo ou de seu identificador nico, a de ordenao de estudos, a de liberao da
memria de um estudo, a de cadastro de estudos com processamento pendente, a de
fornecimento de uma fatia de tempo para atualizao dos estudos com processamento
pendente e o mtodo reservado para uso interno ao VPIM que retorna a implementao
concreta do gerenciador de estudos. Segue o cabealho C++ desta interface abstrata:
class CStudyManagerAdvancedInterface
4

Uma string C uma seqncia de bytes cujo delimitador um byte com o valor 0. Ou seja, a presena
de um byte de valor 0 que determina o tamanho total da string.

77
{
public:
virtual CStudyAdvancedInterface*

CreateStudy(const char* szUID)=0;

virtual const size_t

GetNumberOfStudies()=0;

virtual CStudyAdvancedInterface*

GetStudy(const size_t nStudyIndex) =0;

virtual CStudyAdvancedInterface*

GetStudy(const char* szUID) =0;

virtual CStudyAdvancedInterface*

GetNextStudy(const char* szCurrentStudyUID) =0;

virtual CStudyAdvancedInterface*

GetNextStudy(CStudyAdvancedInterface* poCurrentStudy)

=0;
virtual CStudyAdvancedInterface*

GetPreviousStudy(const char* szCurrentStudyUID) =0;

virtual CStudyAdvancedInterface*

GetPreviousStudy(CStudyAdvancedInterface*

poCurrentStudy) =0;
virtual const size_t

UnloadStudy(const char* szCurrentStudyUID) =0;

virtual void

Run()=0;

virtual void

RegisterStudyRun(CStudyAdvancedInterface* poStudy) =0;

virtual void

Finish()=0;

virtual CStudyManager*

GetImplementation()=0;

};

Os mtodos cujo tipo de retorno CStudyAdvancedInterface* disponibilizam


a interface abstrata responsvel pela manipulao e acesso dos dados de um estudo.
Essa interface permite: a criao de sries; a navegao pelas sries j na memria do
estudo em questo atravs do identificador nico da srie desejada, ou iterando sobre os
ndices internos, ou mesmo requerendo o prximo estudo, ou estudo anterior de forma
transitiva; descarregar da memria uma srie; descobrir o identificador nico do estudo
em questo; realizar o controle de referncias do estudo; fornecer uma fatia de tempo
para atualizao de seus dados internos e dos dados internos de suas sries que precisam
de atualizao; retornar o gerenciador de estudos. Essa interface tambm possui um
mtodo reservado para uso interno ao VPIM que retorna a implementao concreta do
gerenciador de estudos.
Segue o cabealho C++ desta interface abstrata:
class CStudyAdvancedInterface
{
public:
virtual ~CStudyAdvancedInterface(){};
virtual CSeriesAdvancedInterface*

CreateSeries(const char* szSeriesUID)=0;

virtual const size_t

GetNumberOfSeries()=0;

virtual CSeriesAdvancedInterface*

GetSeries(const size_t nSeriesIndex)=0;

virtual CSeriesAdvancedInterface*

GetSeries(const char* szSeriesUID)=0;

virtual CSeriesAdvancedInterface*

GetNextSeries(const char* szCurrentSeriesUID)=0;

78
virtual CSeriesAdvancedInterface*

GetNextSeries(CSeriesAdvancedInterface*

poCurrentSeries)=0;
virtual CSeriesAdvancedInterface*

GetPreviousSeries(const char* szCurrentSeriesUID)=0;

virtual CSeriesAdvancedInterface*

GetPreviousSeries(CSeriesAdvancedInterface*

poCurrentSeries)=0;
virtual const size_t

UnloadSeries(const char* nSeriesUID)=0;

virtual const char*

GetStudyUID()=0;

virtual const size_t

GetNumberOfReferences()=0;

virtual const size_t

AddReference()=0;

virtual const size_t

RemoveReference()=0;

virtual void

Run()=0;

virtual CStudy*

GetImplementation()=0;

virtual CStudyManagerAdvancedInterface* GetStudyManager()=0;


};

A interface abstrata CSeriesAdvancedInterface funciona de forma anloga a interface


CStudyAdvancedInterface. As principais diferenas entre suas funcionalidades esto,
principalmente, nos contextos em que trabalham. Enquanto a CStudyAdvancedInterface
responsvel pelo nvel de estudo, a CSeriesAdvancedInterface responsvel pelo nvel de srie.
Sendo responsvel pelo gerenciamento dos dados internos de uma srie, esta interface,
tem a responsabilidade de criar novas imagens, gerenciar as imagens e seu ordenamento.
tambm sua responsabilidade conhecer seu estudo pai. A fim de cumprir com suas
responsabilidades mtodos especficos foram criados.
Entre os mtodos criados para esta interface que merecem particular ateno est o
CreateImage. Este mtodo, alm de simplesmente criar uma imagem, ele tambm geram uma
string no padro C que nica para cada imagem carregada em cada sesso de execuo do
programa5.
A necessidade da gerao da string identificadora est no fato de que o padro DICOM
no possui um ordenador implcito de imagens e de que o programa abre imagens em padres
que tambm no possuem uma ordenao implcita. A string identificadora, portanto, gera uma
ordenao nica das imagens e, quando utilizado um arquivo no padro DICOM, tenta ordenar a
imagem primeiramente segundo os seguintes critrios: nmero da imagem, nmero da instncia,
posio da fatia e horrio de criao. A formao completa do identificador nico ser explicada
posteriormente ainda nessa Seo.
Segue o cabealho da interface CSeriesAdvancedInterface:
class CSeriesAdvancedInterface
{
public:
virtual ~CSeriesAdvancedInterface(){};
5

Uma sesso de execuo do programa o intervalo em que o programa comea a ser executado at o
momento em que ele encerrado ou que o computador desligado ou reiniciado.

79
virtual CImageAdvancedInterface* CreateImage(const char* szFilename,const char* szCreationTime,
const unsigned int nInstanceNumber,const float fSlicePosition,const unsigned int nImageNumber=0)=0;
virtual const char*

GetSeriesUID()=0;

virtual CStudyAdvancedInterface*

GetParentStudy()=0;

virtual const size_t

GetNumberOfImages()=0;

virtual CImageAdvancedInterface*

GetImage(const size_t nImageContainerIndex)=0;

virtual CImageAdvancedInterface*

GetImage(const char* szImageKey)=0;

virtual const bool GetImageIndex(CImageAdvancedInterface* poCurrentImage, size_t& nIndex)=0;


virtual const bool

GetImageIndex(const char* szImageKey,size_t& nIndex)=0;

virtual CImageAdvancedInterface*

GetNextImage(const char* szImageKey)=0;

virtual CImageAdvancedInterface*

GetNextImage(CImageAdvancedInterface*

poCurrentImage)=0;
virtual CImageAdvancedInterface*

GetPreviousImage(const char* szCurrentImageUID)=0;

virtual CImageAdvancedInterface*

GetPreviousImage(CImageAdvancedInterface*

poCurrentImage)=0;
virtual const size_t

UnloadImage(CImage* poImage)=0;

virtual const size_t

UnloadImage(const char* szImageKey)=0;

virtual const size_t GetNumberOfReferences()=0;


virtual const size_t AddReference()=0;
virtual const size_t RemoveReference()=0;
virtual void

Run()=0;

virtual CSeries*

GetImplementation()=0;

};

A interface abstrata CImageAdvancedInterface significativamente diferente das


anteriormente apresentadas nesta Seo. Enquanto nas anteriores a relao dos dados era de para
cada elemento existiam N6 outros sub-elementos do mesmo tipo, nesta interface, todos os seus
sub-elementos esto presentes uma nica vez internamente. A interface em questo, em funo
desta diferena, tem um funcionamento muito similar ao de um nodo folha em uma estrutura de
dados contendo, portanto, o conjunto realmente relevante de informaes para o usurio e para o
programa que a utiliza.
Alm da representao da imagem original e da imagem de trabalho do programa, essa
interface encapsula os seguintes dados, quando presentes: a string identificadora da imagem, o
espaamento horizontal e vertical entre os pixels da imagem, o nome do arquivo a partir do qual
a imagem foi criada, o horrio de criao da imagem, o nmero da instncia, a posio da fatia,
o nmero da imagem, a identificao do paciente, o nome do paciente, a modalidade, a data do
estudo, a hora do estudo, o nmero de acesso, o sexo do paciente, a data de nascimento do
paciente, o nome da instituio onde a imagem foi criada, o status da imagem, o usurio do
dispositivo de captura, o fator de zoom da imagem original, a descrio do estudo, o nome do
equipamento de captura, o nome do tecnlogo responsvel, o histrico do paciente, o nome de
6

N representa um nmero arbitrrio qualquer inteiro, positivo ou igual zero.

80
nascimento da me do paciente, a idade do paciente, o nome do contraste, o tipo de exame e o
radiologista responsvel.
A seguir o cabealho da interface CImageAdvancedInterface.
class CImageAdvancedInterface
{
public:
virtual ~CImageAdvancedInterface(){};
virtual const bool
virtual void

SetOriginalTexture(IDirect3DTexture9* piOriginalTexture)=0;
SetWorkTexture(IDirect3DTexture9* piWorkTexture)=0;

virtual IDirect3DTexture9* GetOriginalTexture()=0;


virtual IDirect3DTexture9* GetWorkTexture()=0;
virtual const bool
virtual const char*

ResetWorkTexture()=0;
GetImageKey()=0;

virtual CSeriesAdvancedInterface* GetParentSeries()=0;


virtual const size_t GetNumberOfReferences()=0;
virtual const size_t AddReference()=0;
virtual const size_t RemoveReference()=0;
virtual void

SetHorizontalPixelSpacing(const double dHorizontalPixelSpacing)=0;

virtual void

SetVerticalPixelSpacing(const double dVerticalPixelSpacing)=0;

virtual const double

GetHorizontalPixelSpacing()=0;

virtual const double

GetVerticalPixelSpacing()=0;

virtual const bool

HasValidPixelSpacingData()=0;

virtual const char*

GetFilename()=0;

virtual const char*

GetCreationTime()=0;

virtual const unsigned int GetInstanceNumber()=0;


virtual const float

GetSlicePosition()=0;

virtual const unsigned int GetImageNumber()=0;


virtual CImage*

GetImplementation()=0;

virtual void SetPatientId(const char* szPatientId)=0;


virtual void SetPatientName(const char* szPatientName)=0;
virtual void SetModality(const char* szModality)=0;
virtual void SetStudyDate(const char* szStudyDate)=0;
virtual void SetStudyTime(const char* szStudyTime)=0;
virtual void SetAccessNumber(const char* szAccessNumber)=0;
virtual void SetPatientSex(const char* szPatientSex)=0;
virtual void SetPatientBirthDate(const char* szPatientBirthDate)=0;
virtual void SetStudyId(const char* szStudyId)=0;
virtual void SetReferingPhisiciansName(const char* szReferingPhisiciansName)=0;
virtual void SetInstitutionName(const char* szInstitutionName)=0;
virtual void SetStatus(const char* szStatus)=0;
virtual void SetUser(const char* szUser)=0;
virtual void SetZoomFactor(const char* szZoomFactor)=0;

81
virtual void SetStudyDescription(const char* szStudyDescription)=0;
virtual void SetMachine(const char* szMachine)=0;
virtual void SetTechnologistName(const char* szTechnologistName)=0;
virtual void SetPatientHistory(const char* szPatientHistory)=0;
virtual void SetPatientMotherBirthName(const char* szPatientMotherBirthName)=0;
virtual void SetPatientAge(const char* szPatientAge)=0;
virtual void SetContrast(const char* szContrast)=0;
virtual void SetPerforming(const char* szPerforming)=0;
virtual void SetRadiologist(const char* szRadiologist)=0;
virtual void SetPixelSpacing(const char* szPixelSpacing)=0;
virtual const char* GetPatientId()=0;
virtual const char* GetPatientName()=0;
virtual const char* GetModality()=0;
virtual const char* GetStudyDate()=0;
virtual const char* GetStudyTime()=0;
virtual const char* GetAccessNumber()=0;
virtual const char* GetPatientSex()=0;
virtual const char* GetPatientBirthDate()=0;
virtual const char* GetStudyId()=0;
virtual const char* GetReferingPhisiciansName()=0;
virtual const char* GetInstitutionName()=0;
virtual const char* GetStatus()=0;
virtual const char* GetUser()=0;
virtual const char* GetZoomFactor()=0;
virtual const char* GetStudyDescription()=0;
virtual const char* GetMachine()=0;
virtual const char* GetTechnologistName()=0;
virtual const char* GetPatientHistory()=0;
virtual const char* GetPatientMotherBirthName()=0;
virtual const char* GetPatientAge()=0;
virtual const char* GetContrast()=0;
virtual const char* GetPerforming()=0;
virtual const char* GetRadiologist()=0;
};

A gerao da string C identificadora nica de imagem para os objetos concretos que


implementam a interface CImageAdvancedInterface realizada atravs da seguinte
especificao de formato, de acordo com o padro de formatao da linguagem C para o
comando printf: "%010d%010d%+#010.10E%s%s". Os parmetros que seguem essa string de

82
formatao so um unsigned int 7contendo o nmero da imagem, um unsigned int contendo o
nmero da instncia, um float 8contendo a posio da fatia da imagem, uma string C contendo o
horrio de criao, um string C contendo o nome do arquivo. O nmero da imagem um ndice
monotonicamente crescente interno ao VPIM e que garante a unicidade para at 232 imagens
carregadas simultaneamente que estejam empatadas em todos os outros critrios de ordenao.

4.7 O Mdulo de Janelas


O mdulo de janelas consiste em um conjunto de classes C++ que implementam o
controle de exibio, das funcionalidades e dos dados internos das janelas do programa.
Existem, para cada uma das janelas, duas interfaces: a CBaseWindowAbstractInterface e a

sua respectiva interface avanada. Enquanto a CBaseWindowAbstractInterface uma


interface comum a todas as janelas, as interfaces avanadas apresentam variaes para
cada janela de acordo com seus dados e funcionalidades especficas implementadas.
No existe relao hierrquica entre a interface avanada de uma janela e sua
CBaseWindowAbstractInterface. A implementao da classe da janela, entretanto,
herda e implementa indiretamente ambas as classes.
Como mencionado na Seo 4.6, a partir do mdulo Kernel do programa, atravs
do mtodo GetWindow desse mdulo, obtm-se acesso a um objeto que implementa a
interface CBaseWindowAbstractInterface. A forma de determinar exatamente qual
objeto, e portanto qual janela esse objeto controla, utilizando o parmetro
szWindowName do mtodo GetWindow. Esse parmetro o nome do objeto da
janela sobre o qual se deseja operar. Cada classe de janela possui um nome e ele nico
em todo o programa. O registro do nome feito no construtor do objeto da janela e o
registro de nomes realizado antes da execuo da funo principal do programa
(WinMain).
Segue a interface CBaseWindowAbstractInterface:
class CBaseWindowAbstractInterface
{
public:
CBaseWindowAbstractInterface(){};
virtual ~CBaseWindowAbstractInterface(){};

O tipo de dados unsigned int um tipo de dados para nmeros inteiros positivos e o 0 padro da
linguagem C. Ele, nesta implementao, tem 32 bits de largura de dados podendo, portanto, representar
at 232 nmeros.
8
O tipo de dados float um tipo de dados para a representao de nmeros reais da linguagem C. Ele
implementado utilizando o padro de 32bits de ponto flutuante do IEEE.

83
virtual const bool IsInit()=0;
virtual const char* GetName()=0;
virtual const bool Run()=0;
virtual void*

GetAdvancedInterface()=0;

};

O mtodo GetAdvancedInterface o mais importante desta interface. Atravs da


sua utilizao possvel ter acesso as interfaces avanadas de cada janela. Note-se,
entretanto, que este mtodo tem como tipo de retorno void*. O compilador, para este
tipo de dado, no faz qualquer verificao em tempo de compilao para que outro tipo
de dado ele seja convertido e, portanto, requer que quem utilizar esta interface conhea
a que nome que interface avanada est associada para que seja feita a correta
converso. As interfaces avanadas e seus respectivos nomes sero listados
posteriormente neste Seo.
O principal ponto de acesso do mdulo de janelas a classe que representa a
janela principal do programa. O nome deste mdulo MainWindow e sua interface
a CMainWindowAdvancedInterface expressa a seguir:
class CMainWindowAdvancedInterface
{
public:
typedef void(*TDCallback)(void *);
virtual bool*

GetInformationDisplayStatus()=0;

virtual bool*

GetInformationDisplay()=0;

virtual bool*

GetInformationDisplayChangedStatus()=0;

virtual const bool

SetInformationTagDisplayMode(EImageInformationTags eTag,const bool

boShow)=0;
virtual const bool

GetInformationTagDisplayMode(EImageInformationTags eTag, bool&

boStatus)=0;
virtual const bool

ToggleInformationTagDisplayMode(EImageInformationTags

eTag)=0;
virtual CImageWindowAdvancedInterface* GetSelectedImageWindow()=0;
virtual const bool SetSelectedImageWindow(CImageWindowAdvancedInterface*
poImageWindow)=0;
virtual void

NotifyImageWindowClick(CImageWindowAdvancedInterface*

poImageWindow)=0;
virtual const bool RegisterPluginCommand(const char*
szCommandName,CMainWindowAdvancedInterface::TDCallback pfnCallback,void*
poOwner=NULL)=0;
virtual const bool RegisterPluginCommand(const char* szCommandName,const char**
szMenuPath,const size_t nLevels,CMainWindowAdvancedInterface::TDCallback pfnCallback,void*
poOwner=NULL)=0;

84
virtual void
virtual HWND

KillWindow(CImageWindowAdvancedInterface* poWindow)=0;
GetWindowHandle()=0;

virtual void RedistribuiSeries(const unsigned int nLinhas, const unsigned int nColunas,const unsigned
int nLinhasImagens, const unsigned int nColunasImagens)=0;
};

O acesso s janelas foi projetado para acontecer sobre as janelas de imagem. Ele
pode ser obtido atravs do mtodo GetSelectedImageWindow, que retorna uma
interface para objeto CImageWindowAdvancedInterface ou NULL, valor 0, caso no
haja nenhuma janela de imagem selecionada. necessrio, sempre que este mtodo for
chamado, verificar se seu valor de retorno NULL para evitar falhas catastrficas do
sistema.
A CMainWindowAdvancedInterface possui, tambm, outros mtodos de
significativa importncia para uso em conjunto com os plug-ins. Estes mtodos so as
duas sobrecargas do RegisterPluginCommand. Ambos registram criam comandos de
menu para os plug-ins cujo nome ser a string C passada no parmetro
szCommandName e em ambos, quando o comando do plug-in for ativado a funo
pfnCallback ser invocada com o parmetro poOwner sendo passado. A diferena entre
ambos que a sobrecarga que aceita menos parmetros insere, por facilidade para o
usurio, comandos somente no sub-menu filtros enquanto a verso de mais parmetros
permite colocar o comando em qualquer sub-menu ou criar novos sub-menus.
Para criar um novo sub-menu utilizando a verso com mais parmetros do
mtodo RegisterPluginCommand necessrio passar para ele um vetor9 de strings C e
no parmetro szMenuPath. No parmetro nLevels o nmero de elementos do vetor deve
ser passado.
A interface CImageWindowAdvancedInterface a interface atravs da qual
possvel obter o acesso a imagens e a dados de exibio da imagem. Ela apresentada a
seguir:
class CImageWindowAdvancedInterface
{
public:
virtual const bool

SetInformationTagDisplayMode(EImageInformationTags eTag,const bool

boShow)=0;
virtual const bool

GetInformationTagDisplayMode(EImageInformationTags eTag, bool&

boStatus)=0;
virtual const bool
9

ToggleInformationTagDisplayMode(EImageInformationTags eTag)=0;

O significado de vetor nesse ponto do texto diz respeito ao jargo de linguagens de programao
referindo-se a um conjunto de posies de memria contgua que contm uma seqncia de elementos de
um mesmo tipo de dados.

85
virtual const bool

SetCurrentImage(CImageAdvancedInterface* poImage)=0;

virtual const bool

UpdateImage()=0;

virtual void GetImageRect(unsigned int& nLeft,unsigned int& nTop,unsigned int& nRight,unsigned


int& nBottom)=0;
virtual void

UpdateWindowDependencies()=0;

virtual const HWND

GetWindowHandle()=0;

virtual IDirect3DTexture9*

GetCurrentImage()=0;

virtual CImageAdvancedInterface*

GetImage()=0;

virtual double*

GetImageComplexRepresentation()=0;

virtual const bool

ComputeFastFourrierTransform(const bool boReverse=false)=0;

virtual void GetComplexImageDimensions(unsigned int& nComplexWidth,unsigned int&


nComplexHeight)=0;
virtual const bool
virtual void
virtual const bool

UpdateImageFromComplexRepresentationUsingOnlyRealPart()=0;
SetMouseSelectionMode(const bool boSelectionMode)=0;
GetMouseSelectionMode()=0;

virtual void

ToggleMouseSelectionMode()=0;

virtual void

SetMouseSelectionRectangle(int nLeft,int nTop,int nRight,int

nBottom)=0;
virtual const bool

CreateTempTexture()=0;

virtual const bool

CommitTempTexture()=0;

virtual const bool

DestroyTempTexture()=0;

virtual const bool

SetBrightValue(const double dValue)=0;

virtual const bool

SetSaturationValue(const double dValue)=0;

virtual const bool

Run()=0;

virtual CImageWindow*

GetImplementation()=0;

virtual const unsigned int

GetNumberOfPaletteClasses()=0;

virtual const unsigned int

GetPaletteClassDescriptors(PALETTEENTRY* astColor,unsigned

char* anLowerLimit,unsigned char* anHigherLimit)=0;


};

Existem duas formas atravs das quais o VPIM foi planejado para fornecer
acesso dos dados de uma imagem para um plug-in: atravs da representao no domnio
da freqncia da imagem e atravs da representao no domnio espao. A
representao no domnio do espao pode ser obtida atravs do mtodo
GetCurrentImage, ele retorna a interface do DirectX atravs da qual possvel
manipular a imagem em exibio na janela.
A representao no domnio da freqncia obtida atravs do mtodo
GetImageComplexRepresentation. Este mtodo, entretanto, s retornar um valor vlido
(diferente de NULL) caso antes o mtodo ComputeFastFourrierTransform com o
parmetro boReverse com o valor false seja chamado.

86
possvel que as dimenses da imagem sejam diferentes de sua representao
complexa.

Em

funo

disso,

sempre

necessrio

chamar

mtodo

GetComplexImageDimensions para obter as dimenses da representao complexa.


Uma vez que as operaes sobre a representao da imagem em domnio freqncia
estejam completas, necessrio invocar o mtodo ComputeFastFourrierTransform mais
uma vez passando como parmetro o valor true.
A

representao

complexa

da

imagem

obtida

atravs

do

mtodo

GetImageComplexRepresentation baseada em scanlines de elementos do tipo double


do C++, planar. Ou seja, primeiramente todo o plano real da imagem representado
com as dimenses obtidas em GetComplexImageDimensions e nas posies de
memria adjacentes todo o plano imaginrio da imagem.

4.8 Os Plug-ins
Os plug-ins, como mencionado anteriormente, so DLLs que expandem as
funcionalidades do VPIM. Para que sejam utilizados pelo programa necessrio que
eles exportem uma funo de nome CreatePlugin. O prottipo para est na interface
CPluginAbstractInterface da qual, idealmente, o objeto principal do plug-in deve ser
derivado. A seguir a interface CPluginAbstractInterface:
class CPluginAbstractInterface
{
public:
typedef CPluginAbstractInterface* (*TDEntrypoint)(CKernelAdvancedInterface*);
static VPIMAPI CPluginAbstractInterface* CreatePlugin(CKernelAdvancedInterface* poKernel);
};

A definio da macro VPIMAPI pode ser encontrada no arquivo defines.h do


VPIM, estando tambm transcrita abaixo:
#ifdef _USRDLL
#define VPIMAPI __declspec(dllexport)
#else
#define VPIMAPI __declspec(dllimport)
#endif

A macro VPIMAPI permite que o VPIM compreenda que deve importar da DLL
do plug-in a funo CreatePlugin enquanto cada plug-in deve exportar essa funo.
essencial, entretanto, que cada plug-in implemente a funo CPluginAbstractInterface::

87
CreatePlugin retornando um novo objeto de sua classe concreta em sua implementao.
O VPIM espera por esse comportamento.
Para garantir o correto comportamento da exportao dos smbolos da DLL
necessrio adicionar um arquivo de definies ao projeto do plug-in com o seguinte
contedo:
EXPORTS
CreatePlugin @1

Uma vez que estas condies sejam satisfeitas, e que o plug-in esteja no
subdiretrio Plugins do VPIM, ele ser carregado quando o programa iniciar.
Recomenda-se que no construtor do objeto concreto do plug-in seja registrado um
comando de plug-in no menu da aplicao passando-se como parmetro o valor this
para o parmetro poOwner do mtodo RegisterCommand da janela principal do
programa. Isso permitir que quando a funo registrada for chamada, seja possvel
acessar o objeto do plug-in.

4.9 Casos Especiais de Implementao


A implementao do VPIM foi normalmente a aplicao direta da teoria
esplanada na reviso bibliogrfica (Seo 3). Alguns casos especiais foram encontrados
e suas diferenas so mostrados a seguir.

4.9.1 Implementao da Magnificao, Deslocamento e Rotao da


Imagem
Para operaes de magnificao da imagem, deslocamento e rotao criada
uma matriz de transformao que passada para a placa de vdeo usando o mtodo
SetTransform da interface ID3DXSprite do DirectX9c. A matriz de transformao
normalmente aplicada na imagem pelo hardware da placa de vdeo. Caso o hardware
no seja capaz de aplicar a matriz de transformao requerida o hardware emulation
layer do DirectX9c aplica esta transformao [16].

88

4.9.2

FFT Bidimensional
A implementao da FFT foi feita usando-se a propriedade da separablidade da

FFT (Seo 3.4.3.1). Assim, para cada clculo de FFT de uma imagem, foi efetuado
primeiro o clculo da FFT unidimensional em uma das dimenses e sobre este resultado
calculado a FFT sobre a outra dimenso.

4.9.3

Espectro de Potncia da Imagem


Para facilitar a visualizao do espectro de potncia se fez o deslocamento da

origem para o ponto de freqncia (N/2,N/2) usando-se a propriedade da periodicidade


da transformada bidirecional de Fourier [6](Seo 3.4.3.3).
Como a variao da escala dinmica do espectro de potncia , em geral muito,
maior do que aquela possvel de se reproduzir com fidelidade por um monitor de vdeo.
Assim foi necessrio a aplicao da funo mostrada abaixo no espectro de potncia [6]:
D(u, v) = c log(1 + F (u, v) )

Equao 164

Onde:
F(u,v): FFT da imagem original no ponto
c: Nvel de cinza
Alm da aplicao desta funo tambm o VPIM gera o espectro de potncia
com remapeamento global (Seo 3.5.3) que tambm permite uma melhoria na imagem
do espectro de potncia.

4.9.4

Aplicao do Filtro de Butterworth


A funo de transferncia do filtro de Butterworth foi pensada para ser aplicada

imaginando que a origem do domnio de freqncia da imagem estivesse localizada no


ponto (N/2,N/2). Mas o resultado da transformada de Fourier tem sua origem no ponto
(0,0). Conforme mostrado na Figura 30.a.

89

Figura 30: Coordenadas do espectro de potncia

Uma soluo para aplicar a funo de transferncia do filtro de Butterworth ,


obter o clculo da FFT, mover os quadrantes para deslocar a origem para centro
(conforme o mostrado na Figura 30.b), aplicar a funo de transferncia, mover o
resultado novamente para a posio original e obter a inversa da FFT.
Este mtodo possui duas movimentaes de memria desnecessrias. O que foi
feito no VPIM foi calcular a posio para o qual o ponto iria se o centro fosse deslocado
conforme mostra a Figura 30.b e aplicar a funo de transferncia. Com isto se evitou
duas movimentaes de memria otimizando o tempo de execuo do filtro.

4.9.5

O Clculo da Distncia e rea


Para a realizao do clculo da distncia entre dois pontos de uma imagem, o

que acontece de forma anloga para o clculo de reas, utilizado a distncia euclidiana
entre os pixels da imagem. Os pixels da imagem so calculados aplicando a matriz
inversa de transformao sobre os pontos em que o mouse foi clicado.
Quando utilizado um arquivo do formato DICOM, caso esteja presente e seja
vlido o campo DCM_PixelSpacing para as distncias horizontal e vertical, a distncia
ser calculada considerando-se os parmetros do arquivo. Esta distncia ser dada em
centmetros ou pixels se o campo DCM_PixelSpacing for respectivamente vlido ou
invlido. A distncia vertical ser multiplicada pelo valor vertical e o horizontal pelo
seu respectivo pelo valor vertical. No caso de distncias que tenham componentes

90
verticais e horizontais a distncia ser o resultado da raiz quadrada da soma dos
quadrados da distncia vertical e da distncia horizontal.

4.9.6

Diferenciando Sries e Estudos


Os arquivos DICOM so organizados em uma estrutura hierrquica de

informaes. Parte da hierarquia diz respeito a organizao entre estudos, sries e


imagens.
Um estudo o agrupamento mais abrangente de dados de imagens. Ele pode
conter

mltiplas

sries

pode

ser

identificado

no

arquivo

pelo

campo

DCM_StudyInstanceUID. As sries dentro de um estudo podem conter mltiplas


imagens e podem ser identificadas pelo campo DCM_SeriesInstanceUID. Estudos e
sries podem estar dispersos em mltiplos arquivos, mas os campos mencionados neste
pargrafo possibilitam reagrupa-los logicamente independentemente disso.

91

4.10 Resultados Obtidos


Aqui sero mostrados os resultados obtidos com as operaes de processamento
de imagem. A maioria dos resultados aqui descritos foram obtidos tendo como imagem
original a imagem do arquivo brain1234.png, mostrada na Figura 31. A imagem deste
arquivo foi criada usando a imagem contida no arquivo brain_001dcm [15], que uma
seco transversal do crnio gerada por um equipamento de ressonncia magntica. A
esta imagem foram acrescentados os nmeros 1, 2, 3 e 4, para facilitar a observao de
alguns resultados. A imagem foi gravada num arquivo com o formato, Portable
Network Graphics (png).

Figura 31: Imagem original do arquivo brain1234.jpg

As imagens da Figura 42.a, Figura 43.a, Figura 44.a, e da Figura 68 foram


gerados no MATLAB. A aplicao do rudo impulsivo sobre a imagem da Figura 31,
que mostrado na Figura 50, foi efetuado no MATLAB. As imagens da Figura 67.a e
da Figura 73.a foram obtida com uma cmara Kodak DX4330 (3.1 Mpixels).

4.10.1 Espelhamento
Na operao de espelhamento temos duas opes: o espelhamento horizontal e o
espelhamento vertical. Na Figura 32 temos o resultado do espelhamento horizontal
feito pelo VPIM. Na Figura 33 temos o resultado do espelhamento horizontal.

92

Figura 32: Imagem do arquivo brain1234 espelhada horizontalmente

Figura 33: Imagem do arquivo brain1234 espelhada verticalmente

Em ambos os casos, fora o efeito do espelhamento no existe alterao na


imagem. No espelhamento vertical e horizontal no h alterao nas estatsticas da
imagem, nem no histograma das mesmas e nem nos valores dos pixels.

4.10.2 Rotao

Para a rotao tambm temos duas opes: horria e anti-horria. A rotao


horria corresponde a uma rotao de +90 e a rotao anti-horria a uma rotao de
-90. A aplicao da rotao de horria pode ser observada na Figura 34 e a rotao antihorria na Figura 35.

93

Figura 34: Imagem do arquivo brain1234 com uma rotao horria

Figura 35: Imagem do arquivo brain1234 com uma rotao anti-horria

Por se tratar de ngulos de rotao de +90 e -90 alm do efeito da rotao no


h diferena nos nveis de cinza entre a imagem original e as imagens rotadas. Neste
caso no existe erro de arredondamento. Na rotao horria e anti-horria no alterao
nas estatsticas da imagem e nem no histograma da mesmas.
Alm da rotao de +90 e -90 possvel rotar a imagem em ngulo
predeterminado. O resultado da rotao em +22 mostrado na Figura 36.

Figura 36: Imagem do arquivo brain1234 rotada em +22

94

4.10.3 Negativo da Imagem


O resultado da aplicao da funo de transformao para a obteno do
negativo da imagem da Figura 31 mostrado na Figura 37. Esta transformao
normalmente altera as esttiscas e o histograma da imagem.

Figura 37: Negativo da imagem do arquivo brain1234

4.10.4 Magnificao e reduo da imagem


A magnificao da imagem, no VPIM, pode ser feita usando a interpolao
linear ou a interpolao anisotrpica.
A imagem da Figura 38.a foi ampliada em 2x

usando-se a interpolao

anisotrpica. A interpolao anisotrpica usada na ampliao sempre que sua


execuo for feita pelo hardware da placa de vdeo. O resultado da aplicao desta
ampliao est mostrado na Figura 38.b.
Para fins de comparao, foram mantidas as propores entre as imagens dos
arquivos e as imagens mostradas a seguir.

95

b
Figura 38: Ampliao de 2x usando interpolao anisotrpica

Figura 39: Reduo de 2x usando mdia em 2D

96
No caso de reduo da imagem foi usada a mdia em 2D, tambm executada
pelo hardware da placa de vdeo. A Figura 39.b o resultado de uma reduo de 2x da
Figura 39.b usando a mdia em 2D.
Nos dois casos, embora as imagens resultantes no sejam exatamente iguais as
imagem originais, so visualmente muito prximos da mesma.

4.10.5 Remapeamento Linear


O remapeamento linear uma tcnica muito efetiva de realce da imagem,
conforme pode ser visto a seguir.

Figura 40: Exemplo de imagem remapeada globalmente

A Figura 40.a foi obtida atravs da subtrao por 32 do nvel de cinza de todos
os pixels da imagem da Figura 31. Sobre a imagem da Figura 40.a foi efetuado o
remapeamento global que mostrado na Figura 40.b.

Figura 41: Imagem remapeada localmente

Um resultado melhor pode ser obtido com escolha adequada da rea para
remapeamento local. A Figura 41 o resultado do remapeamento da imagem da Figura
31 usando os dados obtidos entre as linhas 60 e 100 e as colunas 100 e 130.

97

4.10.6 Espectro de potncia da imagem


O VPIM calcula e mostra o espectro de potncia de uma imagem. O VPIM tem
duas funes para visualizao do espectro de potncia. Uma opo visualizar o
espectro de potncia em escala logartmica. A outra opo de visualizao, disponvel
no VPIM, gerar o espectro de potncia aplica a escala logartmica e executa o
remapeamento global. (ver Seco 3.5.3)

Figura 42: Espectro de potncia de um quadrado

Na Figura 42.a temos a imagem original que um quadrado branco sobre um


fundo preto. O seu espectro de potncia, em escala logartmica, esta mostrado na Figura
42.b. Este resultado

mais apropriado para comparao de arquivos que para a

visualizao. Na Figura 42.c temos o resultado mais apropriado para a visualizao, que
alm de aplicar a escala logartmica sobre o espectro de potncia, tambm feito o
remapeamento global.
Para ilustrar melhor a gerao do espectro de potncia na Figura 43.a temos a
imagem de um retngulo e de seu espectro (Figura 43.b).

Figura 43: Imagem de um retngulo e de seu espectro

98
Na Figura 44.a temos o mesmo retngulo da Figura 43.a com uma inclinao de
45. Note que o espectro de potncia, mostrado na Figura 44.b tem uma inclinao de
45 em relao o espectro da Figura 43.b. Este resultado est de acordo com a
propriedade de rotao da transformada de Fourier apresentado no Seo 3.4.3.4.

Figura 44: Imagem de um retngulo inclinado e de seu espectro

4.10.7 Janelamento
Como apresentado na Seo 3.4.10 usa-se o janelamento para amenizar o
espalhamento do espectro provocado pela multiplicao da imagem real (infinita) por
uma janela quadrada. As duas mscaras de janelamento implementadas para reduzir o
espalhamento do espectro da imagem foram a janela cos4 e a janela Blackman.
O resultado da aplicao da janela cos4 e da janela Blackman sobre uma imagem
quadrada de 256x256 pixel toda branca pode ser visto na Figura 45. A Figura 45.a
mostra a aplicao da tcnica de janelamento blackman e Figura 45.b mostra a aplicao
da tcnica de janelamento cos4.

Figura 45: Aplicao das janelas blackman e cos4

99

4.10.8 Filtros
No VPIM foram implementados os filtros de convoluo no domnio espao e
convoluo no domnio freqncia. So mostrados os resultados obtidos para os
diferentes filtros implementados.

4.10.8.1

Filtros de Butterworth

Foram implementados os filtros de Butterworth passa-baixa, passa-alta, passafaixa e elimina-faixa. Os resultados da aplicao destes filtros, com ordem igual a 2,
podem ser vistos nas figuras seguir.

Figura 46: Aplicao do filtro de Butterworth passa-baixa fc=10

A Figura 46 foi obtida com a aplicao do filtro de Butterworth passa-baixa com


freqncia de corte igual a 10. Neste caso nota-se o leve borramento da imagem
provocado pela retirada das freqncias espaciais mais altas.

Figura 47: Aplicao do filtro de Butterworth passa-alta fc=2

100
Na Figura 47 mostrado o resultado da aplicao do filtro de Butterworth passaalta com freqncia de corte igual a 5. Como grande parte da informao est nas
freqncias inferiores houve um escurecimento de grande parte da imagem. Nota-se que
os nmeros 1,2 3 e 4 da imagem, que so formadas por elementos de alta freqncia no
sofreram muitas alteraes com a aplicao do filtro.

Figura 48 Aplicao do filtro de Butterworth passa-faixa com fci=50 e fcs=55

Na Figura 48 se v o resultado da aplicao do filtro passa-faixa de Butterworth,


com freqncia de corte inferior (fci) igual a 50 e freqncia de corte superior (fcs)
igual a 55. Nota-se que os nmeros so visveis. Eles tm uma parte razovel do seu
espectro nesta faixa de freqncia. O centro da imagem tem tambm componentes nesta
faixa de freqncias embora em pequena proporo, devido a isto o centro da imagem
resultante no formado s de nveis de cinza igual a zero.

Figura 49: Aplicao do filtro de Butterworth passa faixa com fci=50 e fcs=55

Aps a aplicao do filtro elimina faixa de Butterworth com freqncia de corte


inferior (fci) igual a 50 e freqncia de corte superior igual a 55 nota-se pouca mudana
na parte central da imagem porque praticamente no tem estas freqncias no seu
espectro. J os nmeros sofreram um borramento devido retirada destas freqncias.

101

4.10.8.2

Filtro da Mediana

Com visto na Seo 3.5.1.2 o filtro da mediana um filtro no linear que usado
para reduzir o rudo impulsivo (spike) que possa estar presente nas imagens. Para
verificao da implementao foi adicionado rudo impulsivo na imagem do arquivo
brain1234.pgn. A imagem resultante mostrada na Figura 50.

Figura 50: Imagem do arquivo brain1234 com aplicao de rudo de alta freqncia

Como pode ser visto na Figura 51 a aplicao do filtro da mediana praticamente


restaurou a imagem original eliminando o rudo impulsivo e preservando a agudeza das
bordas.

Figura 51: Resultado da aplicao do filtro da mediana

102

4.10.8.3

Filtro da mdia mvel

O filtro da mdia mvel um filtro passa-baixa. Ele pode ser usado para filtrar
rudos ou atenuar altas freqncias.

Figura 52: Aplicao do filtro da mdia mvel

Na Figura 52 temos o resultado da aplicao do filtro da mdia mvel sobre a


imagem da Figura 50. Embora o rudo tenha sido atenuado os resultados para este tipo
de rudo no so to bons como o filtro da mediana.

4.10.8.4

Filtro passa-alta e filtro de alto reforo

O filtro passa-alta aplicado sobre uma imagem ressalta as mudanas bruscas


atenuando as demais, como se pode ver Figura 53, que do resultado da aplicao do
filtro passa-alta na imagem do arquivo brain1234.pgn.

103

Figura 53: Aplicao do filtro passa-alta

O filtro de alto reforo tambm ressalta as transies bruscas de nveis de cinza,


como ao resultado obtido pelo passa-alta adicionado uma poro da imagem original,
o filtro de alto reforo consegue ressaltar estas transies retendo boa parte da
informao da imagem original. A aplicao do filtro de alto reforo sobre a imagem do
arquivo brain1234.png pode ser visto na ver na Figura 54. Convm notar que na Figura
53 foi aplicado o remapeamento global.

Figura 54: Aplicao do filtro de alto reforo

4.10.8.5

Laplaciano e Filtro de Sobel

O laplaciano e o filtro de Sobel so usados para deteco de bordas. Os


resultados da aplicao destes dois filtros podem ser vistos na Figura 55 e na Figura 56
respectivamente.

104

Figura 55: Aplicao do laplaciano

Figura 56: Aplicao do filtro de Sobel

Como pode ser visto destas duas imagens o filtro de Sobel apresenta um melhor
resultado na caracterizao das bordas.

4.10.8.6

Deteco de linhas

A Figura 57 mostra o resultado da aplicao dos filtros de deteco de na


imagem do arquivo brain1234.png.
A Figura 57.a mostra a aplicao da deteco de linhas horizontais, a Figura
57.b mostra a aplicao do filtro da deteco de linhas verticais, a Figura 57.c mostra a
aplicao do filtro de deteco de linhas com inclinao de +45 e a Figura 57.d mostra
a aplicao do filtro de deteco de linhas com inclinao de -45. Alm do filtro foi
efetuado um branqueamento da imagem para melhor visualizao. Os pixels, com nvel
de cinza maior que 125, tiveram o seu valor alterado para 255 (branco).

105

Figura 57: Aplicao dos filtros de deteco de linhas

A deteco das linhas horizontais e verticais pode ser bem notada tanto no centro
como nos nmeros nas bordas da Figura 57.a e Figura 57. J a deteco das linhas de
+45 e -45 aparecem melhor nos nmeros nas bordas.

4.10.9 Resoluo
No VPIM existem dois comandos para alterao da resoluo que so:
decimao e a extenso.
A decimao diminui a resoluo da imagem eliminando amostras. A Figura 58
mostra a imagem resultante da aplicao de decimao com reduo da freqncia de
amostragem em duas vezes.

106

Figura 58: Resultado da aplicao da decimao

Esta tcnica semelhante s tcnicas inicialmente usadas para fazer reduo da


imagem (Seo 3.3.2). Apresenta resultados prximos ao da reduo de escala pela
mdia mostrados na Figura 39.
A tcnica de extenso aumenta a resoluo em freqncia atravs do acrscimo
de zeros a partir do fim da imagem.

Figura 59: Aplicao da tcnica de extenso

Na Figura 59 pode ser vista a aplicao da tcnica de extenso, sobre a imagem


da Figura 39, cuja resoluo em freqncias foi estendida em 2x com a adio de zeros.

4.10.10 Recorte
No recorte se forma uma nova imagem formada por uma regio de interesse
(ROI) da imagem original. O VPIM permite a escolha seleo da ROI de duas formas:

107
1. pelo teclado atravs da digitao posio horizontal e vertical iniciais e
finais,
2. pelo mouse construindo um retngulo sobre a rea desejada.

Figura 60: Resultado da aplicao de um recorte

A Figura 60 foi feita com um recorte da imagem da Figura 31, usando o teclado,
e considerando como sendo a ROI as linhas de 0 a 200 e as colunas de 39 a 217. Com
isto foram retirados os nmeros e boa parte do fundo que compunha a imagem.

4.10.11 Combinao
Nas tcnicas de combinao usam-se duas imagens, I1 e I2 , para formar a
imagem resultante IR. As tcnicas de combinao implementadas no VPIM foram: pixel
alternado, subtrao e combinao binria.

4.10.11.1 Tcnica de Pixel Alternado


Na combinao atravs de pixel alternado obtm-se uma nova imagem formada
por pixels alternadamente de I1 e I2 para se obter a imagem resultante IR
A imagem mostrada na Figura 61 um resultado da tcnica de combinao
binria usado pixels alternados de duas imagens. Para conseguir este resultado primeiro
foram combinadas as imagens da Figura 57.a com a da Figura 57.b. O seu resultado foi
combinado com resultado da combinao entre as Figura 57.b e Figura 57.c. Para que a
imagem ficasse mais visvel na impresso foi feito um branqueamento dos pontos em
nveis de cinza acima de 70.

108

Figura 61: Exemplo de combinao de imagem usando pixel alternado

4.10.11.2 Combinao por subtrao de imagens


Nesta tcnica a imagem resultante (IR) resultado da subtrao dos nveis de
cinza pixel a pixel das imagens I1 e I2. Esta tcnica pode ser usada para avaliar os efeitos
dos filtros sobre uma imagem, possibilitando a verificao do o que foi perdido ou
introduzido na imagem. Na Figura 62.a temos a imagem original (I1) a qual foi aplicado
o filtro de alto reforo gerando a imagem que mostrado na Figura 62.b (I2).

c
Figura 62: Exemplo de combinao por subtrao de imagem

109
A diferena entre I1 e I2 (IR), mostrada na Figura 62.c. Este resultado
corresponde a aplicao de um filtro pasa-alta sobre a imagem da Figura 62.a.

4.10.11.3 Combinao Binria


Nesta tcnica para combinar duas imagens I1 e I2, se fornece um valor de nvel
de cinza para comparao. Caso, para um determinado pixel, o valor de nvel de cinza
forem maior do que o valor fornecido o pixel correspondente da imagem resultante ser
de I1 seno ser de I2.

Figura 63: Exemplo de combinao binria

A Figura 63 um exemplo de combinao binria. Nela foi usada a imagem da


na Figura 54 como imagem I1 e a Figura 31 como I2. O valor de comparao foi feito
igual a 190.

4.10.12 Outros
Nesta Seo foram agrupados uma srie de tcnicas implementadas no VPIM.
Seus resultados esto mostrados a seguir.

4.10.12.1 Threshold Global


Para formar a imagem resultante usado a tcnica de threshold Global se fornece
um valor de nvel de cinza para comparao. Se o valor de nvel de cinza de um pixel
da imagem original for maior ou igual do que o valor de comparao ele convertido
para o branco (valor do nvel de cinza igual a 255), os pixels com nveis de cinza sero

110
mudados para preto (valor do nvel de cinza igual a 0). Pode-se tambm inverter o
resultado fazendo que os pixels que tenha o valor de nvel de cinza maior ou igual ao
valor de comparao sejam convertidos para o preto e os pixels que tenham seu valor de
nvel de cinza menor que o valor de comparao sejam mudados para o branco.
Esta imagem foi obtida usando o a imagem contida no arquivo brain_010dcm. A
imagem original a da Figura 64.a [15].

Figura 64: Exemplos de aplicao de threshold global

Na Figura 64.b mostrado aplicao da tcnica de threshold global, com


converso para o branco dos pixels com valor do nvel de cinza maior ou igual a 118.
Na Figura 64.c manteve-se o valor de comparao, mas se fez a converso para o preto.

4.10.12.2 Remoo de Fundo


Na tcnica de remoo de fundo um determinado valor fornecido subtrado do
valor do nvel de cinza de cada pixel.
Um das utilizaes desta tcnica na preparao de imagens para um posterior
processamento. Na Figura 65 mostrado o resultado da aplicao do remapeamento
local sobre a imagem da Figura 31. Embora no seja visvel n imagem da Figura 31, ela
tem um rudo de fundo. Ao se efetuar o remapeamento este rudo foi tambm realado.

111

Figura 65: Remapeamento global sem remoo de fundo

A imagem da Figura 66.a foi obtida mediante a subtrao por 32 do nvel de


cinza de cada um dos pixels da imagem da Figura 31. Sobre esta imagem foi aplicado o
remapeamento global mostrado na Figura 66.b.

Figura 66: Remapeamento global com remoo de fundo

O resultado da remoo de fundo com a posterior aplicao do remapeamento


global melhorou os resultados obtidos conforme pode ser visto comparando as imagens
da Figura 65 e da Figura 66.b.

112

4.10.12.3 Equalizao de Histograma


O resultado da aplicao da equalizao de histograma sobre a imagem da
Figura 67.a. mostrado na imagem da Figura 67.b

Figura 67: Aplicao da equalizao de histograma

4.10.12.4 Correo Gama


A correo gama alm de poder ser usada para corrigir distores causadas pelo
tubo de raios catdicos, casa esta correo no esteja disponvel monitor, tambm pode
ser usado como uma tcnica no linear de realce da imagem.
A Figura 68.a mostra uma imagem com nveis de cinza variando linearmente,
em cada linha, de 0 a 255. Se esta imagem for aplicada num monitor de vdeo sem
correo do gama, a imagem que ser mostrada pelo monitor de vdeo ser o da Figura
68.b. Esta imagem que foi gerada no MATLAB simulando uma imagem que resultaria
da aplicao sobre um monitor de tubos de raios catdicos com fator gama 2.5, sem
correo gama.

Figura 68: Imagem simulando fator gama 2.5

113
A Figura 69 o resultado da aplicao do fator de correo gama 0.4 sobre a
imagem da Figura 68.b no VPIM. Nota-se que a imagem que tinha uma variao
exponencial de nveis de cinza passou a ter uma variao linear de nveis de cinza.

Figura 69: Imagem gerado com fator de correo 0.4

A imagem da Figura 70.b apresenta o resultado aplicao do fator gama de 0.5


sobre a imagem Figura 70.a.

Figura 70: Exemplo de aplicao do fator de correo 0.5

4.10.12.5 Branquemento e Preteamento da Imagem


As tcnicas de branqueamento e preteamento usam um valor de referncia que
comparado com o valor de nvel de cinza de cada pixel da imagem. No
branqueameamento, se o pixel comparado tiver o valor de cinza igual maior que o valor
de comparao ele convertido para branco (valor do nvel de cinza igual a 255), os
pixels que no satisfizerem est condio so mantidos inalterados. No preteamento se o
valor do nvel de cinza do pixel for menor ou igual que o valor de referncia o pixel
convertido para o preto (valor do nvel de cinza igual a 0), os pixels que no
satisfizerem est condio so mantidos inalterados.

114

Figura 71: Aplicao do branquamento e preteamento

A Figura 71.a mostra o resultado da aplicao do branqueamento sobre a


imagem da Figura 31 com valor de comparao igual a 100. A Figura 71.b mostra o
resultado do preteamento sobre a imagem da Figura 31 com o mesmo valor de
comparao.

4.10.12.6 Pseudo-cor
O VPIM possui uma ferramenta par adicionar pseudo-cores a uma imagem em
nveis de cinza. Esta ferramenta permite criar uma paleta, editar a paleta, distribuir as
cores manualmente ou automaticamente, gravar a paleta, recuperar uma paleta gravada,
aplicar a paleta sobre a imagem e visualizar a paleta aplicada.

115

b
Figura 72: Aplicao de pseudo-cor

Na Figura 72.a pode se ver a relao das cores com os nveis de cinza da paleta
de pseudo-cor, que foi aplicado sobre a imagem da Figura 31. O resultado da aplicao
da paleta pode ser visto na Figura 72.b.

4.10.12.7 Converso de uma imagem colorida para nveis de cinza


Para permitir o processamento de imagens coloridas pelas ferramentas do VPIM
possvel transformar uma imagem colorida em uma imagem em nveis de cinza.

116

b
Figura 73: Transformao de uma imagem colorida em nveis de cinza

A Figura 73.b mostra a aplicao desta tcnica sobre a imagem colorida da


Figura 73.a.

4.10.12.8 Controle de Brilho e Saturao


O VPIM permite alterar em at 8 vezes o brilho de uma imagem em nveis de
cinza e a saturao de cor de uma imagem colorida.

117

Figura 74: Alterao da saturao

A Figura 74 mostra o resultado da alterao da saturao da imagem da Figura


73.a. A saturao foi aumentada em 1.95 vezes.

Figura 75: Alterao do brilho

A Figura 75 mostra a alterao do brilho da imagem da Figura 31 em 1.95 vezes.

4.10.12.9 Visualizao de Sries e Estudos


O padro DICOM permite a trabalhar com estudos e sries alm de imagens
individuais. Uma srie um

conjunto de imagens, normalmente obtidas

simultaneamente. O estudo composto de um conjunto de imagens e ou sries. Para


poder comportar esta estrutura o VPIM tem ferramentas que permitem a visualizao de
sries/estudos. Atravs desta ferramenta possvel ver uma a uma as imagens de uma
srie manualmente ou automaticamente. Na opo automtica se controla o tempo para

118
mudana das imagens. Outra possibilidade ver todas as imagens numa mesma tela.
Esta opo est mostrada na Figura 76.

Figura 76: Exemplo de exibio de imagens de uma srie

A Figura 76 uma tela do VPIM exibindo todas as imagens dos arquivos


brain_001.dcm a brain_020.dcm [15].

4.10.12.10 Equalizao do Campo de Viso (FOV)


A equalizao do campo de viso permite que as transformaes aplicadas sobre
uma imagem sejam aplicadas automaticamente sobre uma outra imagem para facilitar a
comparao entre as duas imagens.

Figura 77: Aplicao da Equalizao do Campo de Viso

119
Para obter as Figura 77.a e Figura 77.b foi inicialmente obtida a imagem do
brain_001dcm [15] e foi feito uma cpia desta imagem no VPIM. Aps, a imagem
original foi reduzida em 2x e sofreu uma rotao de +45. Para obter a imagem da
Figura 77.b se aplicou a equalizao do campo de viso sobre a imagem copiada tendo
como base as transformaes efetuadas na imagem original. Note que ambas as figuras
ficaram idnticas.

4.10.12.11 Medidas
As medidas disponveis no VPIM so: distncia linear, rea, histograma, dados
estatsticos (valor mximo, valor mnimo, valor mdio, desvio padro dos valores em
nveis de cinza dos pixels, dimenses da imagem em pixel), linhas de perfil e medida do
valor do nvel de cinza de um determinado pixel.
Na Figura 78.a e Figura 78.b so mostradas as medidas de distncia linear e rea.
Para obter estes resultados foi usada a imagem do arquivo brain_001.dcm [15]. Por se
tratar de um arquivo padro DICOM e ter vlida as informao de distncia horizontal e
vertical, entre cada pixel , foi possvel obter a distncia em mm e a rea em mm2
respectivamente.

b
Figura 78: Medidas de distncia e rea

120

Figura 79: Histograma

Figura 80: Linhas de perfil

121

Figura 81: Valor do ponto e estatsticas da imagem

A Figura 79 mostra o histograma da imagem da Figura 31. Na Figura 80


mostrado as linhas de perfil da imagem resultante da aplicao da mscara cos4. Na
Figura 81 mostrado o valor em nvel de cinza de um ponto determinado (coordenadas
169,180) da imagem da Figura 31. Ao lado da janela do valor do ponto mostrada a
janela com os dados estatsticos da imagem da Figura 31. Estas duas janelas de medidas,
mostradas na Figura 81, no aparecem juntas no VPIM.

4.10.12.12 Informaes diversas


O padro DICOM, alm da imagem tem outras informaes, como por exemplo:
o nome do paciente, registro do paciente, histrico, equipamento utilizado, mdico
solicitante do exame, intervencionista e outros. As informaes disponveis no arquivo
brain_0001.dcm esto mostrados na Figura 82.

122

Figura 82: Exemplo de informaes disponveis no padro DICOM

5 CONCLUSO
5.1 Objetivo
Os objetivos desta dissertao foram alcanados:

Projeto e desenvolvimento de uma ferramenta para ser usada na


visualizao

de

imagens

mdicas,

denominada

Visualizador

Processador de Imagens Mdicas (VPIM).

Projeto e implementao de funes hoje encontradas nos programas


disponveis para uso mdico.

Implementao de funes para pesquisa de imagem na rea mdica


(segmentao de imagens, realce de imagens, anlise espectral da
imagem): desenvolvimento e implementao dos algoritmos usados para
estas funes.

Desenvolvimento de uma arquitetura que permite a instalao de plug-ins


visando possibilitar ao VPIM servir de plataforma para implementao
de futuras funcionalidades.

A Figura 64.a [15] mostra um exemplo de visualizao, gerado por um


equipamento de ressonncia magntica. A imagem da Figura 64.c um exemplo de
processamento de imagem do VPIM, ela foi obtida mediante a aplicao de tcnica de
threshold global, com uma converso para o preto dos pixels com valor do nvel de
cinza maior ou igual a 118.
O VPIM opera com arquivos no formato DICOM, fornecendo todas as
informaes disponveis nos mesmos, e podendo, inclusive, trabalhar imagens, imagens
agrupadas em sries, estudos contendo imagens ou sries, fazendo dele uma ferramenta,
neste aspecto, equivalente s existentes no mercado.
A Figura 34, a Figura 56 e a Figura 60 mostram o resultado da aplicao de
algumas funes sobre a imagem da Figura 31 presentes nos visualizadores e tambm
disponveis no VPIM. Maiores detalhes sobre a obteno destes resultados podem ser
obtidos na Seo 4.10. A lista todas as funes do VPIM podem ser vista na Tabela 2.
Alm das funes normalmente encontradas nos visualizadores usados para
anlise de imagens mdicas, foram includas funes voltadas para pesquisa que
executam o processamento da imagem, tais como: espectro de potncia, filtro de

124
convoluo no domnio freqncia (filtros Butterworth), gerao de mscaras para
janelamento (Blackman e cos4), linhas de perfil, e outras.
A Figura 42.c, a Figura 46, e a Figura 80 mostram algumas imagens, obtidas
pelo VPIM , que so usadas pelos pesquisadores. Maiores detalhes sobre a obteno das
imagens das figuras relacionadas neste pargrafo podem ser encontradas na Seo 4.10.
A expansibilidade do VPIM foi feita atravs de uso de plug-ins (DLLs). Muitos
dos filtros existentes (Sobel, mdia mvel, mediana e outros) foram gerados desta
forma. Assim, usando esta tcnica, futuras funcionalidades podero facilmente ser
adicionadas ao VPIM.
O VPIM tem espera para um dispositivo de calibrao automtico, que est
sendo desenvolvido pelo IPCT, que permitir futuramente que o programa seja usado
para diagnstico.

5.2 Validao e Calibrao


As rotinas pertinentes foram validadas contra rotinas executando as mesmas
funes implementadas no MTLAB.
As medidas foram calibradas por comparao com medidas obtidas no software
de uso mdico eFilm [20].

125

5.3 Lista das Funes do VPIM


A Tabela 2 apresenta uma lista das funes implementadas e disponveis no
VPIM.
Menu
Arquivo
Visualizao
Navegao

Funo
Abrir
Salvar como
Fechar Estudos
Sair
Agrupamento
Equalizao do campo de viso (FOV)
Listar informaes
Escala de Cinza
Inserir Texto na Imagem
Ligar/Desligar Visualizao de texto
Bordas das janelas
Imagem com tamanho normal/ou da janela
Palheta de cores
Adicionar
Remover
Editar
Redistribuir
Gravar
Carregar
Editar Palheta de cores
Associar palheta de cores a imagem
Prximo Estudo
Estudo Anterior
Prxima Srie
Srie Anterior
Prxima Imagem
Imagem Anterior
Controle de Exibio de
Velocidade de exibio
imagens
Tocar
Parar
Prxima imagem
Imagem anterior
Ordem reversa
Ordem direta

126
Menu
Processamento

Espelhamento
Rotao

Funo
Horizontal
Vertical
De 90

Horria
Anti-horria

Livre
Negativo
Magnificao & Reduo
Transformadas
Janelamento
Filtros

Resoluo
Recorte
Remapeamento Linear
Combinao

Outros

Threshold Global
Remoo de Fundo
Equalizao de histograma
Correo Gama
Brilho & Saturao
Fundo

Medidas

Distncia linear
rea
Histograma
Linhas de perfil
Valor do ponto
Estatsticas
Limpar Medidas
Queimar medidas na imagem

Espectro de potncia com remapeamento


Espectro de potncia sem remapeamento
Cos4
Blackman
Butterworth
Passa-baixa
Passa-alta
Passa-faixa
Elimina-faixa
Filtro da Mediana
Filtro de Alto Reforo
Filtro Passa-alta
Filtro da Mdia Mvel
Deteco de linhas
+45
-45
Horizontais
Verticais
Matriz de convoluo 5x5
Sobel
Reamostrar
Estender
Pelo Mouse
Pelo Teclado
Local
Pelo mouse
Pelo teclado
Global
Pixel alternado
Subtrao de imagem
Combinao binria
Clonar imagem

Branqueamento
Preteamento

127
Menu

Funo

Ajustes

Teste de Calibrao (espera)

Ajuda

Sobre
Contedo (espera)
Tabela 2: Funes do VPIM

128

5.4 Prximos Passos


O trabalho realizado no VPIM poderia ser estendido com os seguintes passos:
1. Alterar o VPIM, que atualmente mostra e processa imagens em 256 nveis de
cinza (8 bits), para que passe a mostrar e processar imagens com at 65536
nveis de cinza (16 bits).
2. Realizao de um estudo para melhorar e padronizar a interface com usurio.
3. Teste mdico extensivo das funes VPIM para validao mdica.
4. O VPIM foi extensivamente testado pelo implementador, teste conhecido como
unit test. Deve ainda ser aplicado um teste por testadores que no participaram
da implementao para evitar os vcios resultantes da implementao.
5. Adio do driver para o calibrador de monitores de vdeo, j em
desenvolvimento pelo IPCT. Os usos do calibrador, junto com os testes
extensivos do VPIM, permitiro o seu uso para diagnsticos mdicos.
6. Seria interessante que na sua prxima verso o VPIM incorporasse as seguintes
funes:

Funes lgicas sobre a imagem

Reconhecimento de padres baseado em convoluo e redes neurais.

Funes voltadas segmentao, por exemplo, o crescimento e a


eroso de regies.

Funes para efetuar o registro de imagens (translao, rotao, correlao cruzada e magnificao).

6 REFERNCIAS BIBLIOGRFICAS

[1]

Angel, Eduard. Interactive Computer Graphics: A top-down approach with


OpenGL, second edition. Addison Wesley Longman, Inc., January 2000.

[2]

Brown, Nancy. Telemedicine coming of Age. January 2005


Disponvel em:
http://tie.telemed.org/articles/article.asp?path=articles&article=tmcoming_nb
_tie96.xml#dperedniarefT .
Acessado em: 31/07/2005

[3]

Conselho Federal de Medicina, Resoluo CFM n 1.6432/2002, Art 1.


Obtido em: www.portalmdico.org.br/resolucoes/dfm/1992/16432002.htm
Acessado em: 13/04/2004.

[4]

DICOM@OFFIS, DICOM Tool kit DCMTK 3.5.3 source code and


documentation. May 27th, 2005
Obtido em: http://dicom.offis.de/dcmtk.php.en.
Acessado em: 31/07/2005.

[5]

FFT & DCT Library.


Obtido em: http://www.codeproject.com/library/ArisFFTDFTLibrary.asp
Acessado em: 3/12/2006

[6]

Gonzalez, Rafael C., Woods, Richard E.. Processamento de Imagens. Editora


Edgard Blcher Ltda., 2000.

[7]

Hajnal, Joseph V., Hill, Derek C. G.., Hawkes, David J.. Medical Image
Registration. CRC Press, 2001.

[8]

Hutson, Geoffrey H., Teoria da Televiso a Cores. Editora McGraw-Hill do


Brasil Ltda., 1974

130
[9]

Ingle Vinary K., Proakis John G.. Digital Signal Processing using
MATLAB, Br ooks/Cole Publishing Company, 2000

[10]

Jhne, Bernard. Image Processing for Scientific Applications. CRC Press


LCC, 1997

[11]

Jain, Anil K.. Fundamental of Digital Image Processing. Prentice-Hall, Inc.,


1989

[12]

Krug, Wolfgang; Rorden, Chris. Programa ezDICOM [version 1.0, rev 12,
release 19]. July 27th, 2001
Obtido em:
http://www.psychology.nottingham.ac.uk/staff/cr1/ezdicom.html#users
Acessado em: 17/04/2005

[13]

LibTIFF TIFF Library and Utilities,


Obtido em: http://www.remotesensing.org/libtiff/
Acessado em: 29/12/2005

[14]

Lindquist, Claude S.. Adaptative & Digital Signal Processing with Digital
Filtering Applications. Steward & Sons, 1989

[15]

MATLAB CENTRAL,
Obtido em:
http://www.mathworks.com/matlabcentral/fileexchange/loadFile.do?objectId
=2762&ObjectType=File
Acessado em: 13/12/2005

[16]

Microsof DirectX Developer center.


Obtido em: http://msdn.microsoft.com/directx/
Acessado em: 07/08/2005

131
[17]

National Electrical Manufacturers Association (NEMA). DICOM Standard,


Obtido em: http://medical.nema.org/dicom/2004.html.
Acessado em: 13/07/2005.

[18]

Porat, Boas. A Course in Digital Signal Processing. John Wiley & Sons,
1997

[19]

Poynton, Charles. A Technical Introduction to Digital Video. John Wiley &


Sons, 1996

[20]

Programa eFilm Workstation 1.5.3; Version 1.5.3; Built: May 9, 2001


15:40:11.

[21]

Programa MATLAB, Version 6.0.0.88 Release 12, September 22, 2000

[22]

Yu-Li You; Kaveh, M. Pyramidal image compression using anisotropic and


error-corrected interpolation. In Proceedings of the IEEE International
Conference on Acoustics, Speech, and Signal Processing (ICASSP-96).
1996. Volume 4, 7-10 May 1996 Page(s):1946 - 1949 vol. 4

[23]

Zlib home page


Obtido em: http://www.zlib.net
Acessado em: 20/12/2005

Vous aimerez peut-être aussi