Escolar Documentos
Profissional Documentos
Cultura Documentos
Araçatuba – SP
2013
Desenvolvimento do algoritmo para
processamento de imagens digitais para
diagnóstico de melanoma
Araçatuba – SP
2013
Desenvolvimento do algoritmo para
processamento de imagens digitais para
diagnóstico de melanoma
Acadêmicos:
Daniel Soares Lopes
Flávio Henrique da Silva
Matheus Ferreira Bonfim
Prof.
Centro Universitário Católico Auxilium – UniSALESIANO
Data:
Prof.
Centro Universitário Católico Auxilium – UniSALESIANO
Data:
Prof.
Centro Universitário Católico Auxilium – UniSALESIANO
Data:
DEDICATÓRIA
Dedico à família que compartilharam todas as vitórias e angustias nesses 5 anos de luta
e dedicação.
Aos amigos, pela convivência durante esses 5 anos, dos quais ganharam meu respeito.
AGRADECIMENTOS
“A mente que se abre a uma nova ideia jamais voltará ao seu tamanho original.”
Albert Einstein
“Aqui, no entanto, nós não olhamos para trás por muito tempo. Nós continuamos
seguindo em frente, abrindo novas portas e fazendo coisas novas, porque somos
curiosos... e a curiosidade continua nos levando por novos caminhos. Siga em frente.”
Walter Elias Disney
RESUMO
This study has the purpose to evaluate the techniques of processing image
applied to dermatology, and it hoping to provide early detection of malignant
melanoma. Will also be analyzed specific computational algorithms applied to images
dermoscopic atypical nevi and spots, identifying the possible development of skin
cancer. It is intended to develop a technique of PDI applied to image analysis looking to
detecting skin tumors, because the systems computational analysis of dermoscopic
images are usually imported and, therefore, protected property rights by not allowing a
deeper understanding of the codes involved. This fact makes the cost of acquisition of
this systems become unworkable for the vast majority of dermatology services,
especially those that whose treats patients from Sistema Unico de Saude – SUS
(Brazilian Public Health System). Besides, the codes are linked to the currently existing
types of equipment whose operation diversifies depending on the manufacturer.
Because the complexity of the algorithms, operate them requires professionals with
extensive knowledge of routines and sophisticated computer systems. The possibility of
conducting research to develop software capable of interpreting geometrical and
morphological parameters related to diagnoses of skin lesions using digital images can
contribute to improving the quality of dermoscopic examinations and democratize
access to specialized services optimization routines of doctors and surgical procedures
involved in the examination and appropriate treatment for the specific injury.
LISTA DE SÍMBOLOS E GRANDEZAS
( )
D – Distância
D4 - Distância City-Block
D8 - Distância Chessboard
DE - Distância Euclidiana
L - Luminância
Lmax – Nível de cinza máximo
Lmin – Nível de cinza mínimo
R – Máscara
LISTA DE ILUSTRAÇÕES
Figura 19 - Espetro de cores criado pela passagem de luz branca através do prisma. ............. 53
Figura 42 - (a) junção L; (b) junção T; (c) junção X; (d) junção Y. .......................................... 72
INTRODUÇÃO .......................................................................................................................... 17
CAPÍTULO I .............................................................................................................................. 20
CAPÍTULO II ............................................................................................................................. 41
2.10 Segmentação................................................................................................................... 68
Materiais e Métodos.................................................................................................................... 73
3.7.2 Energia.......................................................................................................................... 79
CAPÍTULO IV............................................................................................................................ 83
Resultados ................................................................................................................................... 83
CONCLUSÃO ............................................................................................................................ 86
APÊNDICES .............................................................................................................................. 87
APÊNDICE A - Python............................................................................................................. 87
INTRODUÇÃO
são descritos da seguinte forma: Assimetria (A): a lesão é dividida em dois eixos
perpendiculares (horizontal e vertical), e analisa-se a simetria em cada um destes; bordas
irregulares (B): a lesão é dividido em 8 partes, e analisado a diferença gradual entre o
interior da fronteira e da pele adjacente (externo); coloração uniforme (C): a presença de
mais de 3 níveis de cores já são um grande fator de malignidade, sendo testados até 6 cores,
diâmetro superior a 6 mm (D), parâmetros que auxiliaram ao desenvolvimento e
implementação de algoritmos e novas técnicas capazes de processar imagens de leões
com padrões característicos dos MM das imagens obtidas e já diagnosticadas. Os
parâmetros da regra do ABCD podem ser observados através do dermatoscópio, exigindo
certo grau de experiência e conhecimento do seu operador, fator diferencial na tarefa de
classificação dos tumores da pele com base em sinais visuais (imagens). Visando auxiliar
este possível problema inerente à dermatoscopia, quer seja, o nível de subjetividade imposto
pelo dermatologista e avaliador clínico, a utilização de métodos de Processamento Digital
de Imagens (PDI), aliados a dermatoscopia digital, propicia a análise computacional das
imagens da lesão de pele adquiridas, classificando-as e produzindo resultados com base em
suas informações de cor e forma e aspectos geométricos, morfológicos associados. Assim,
métodos de PDI podem ser usados para minimizar os erros, através de sistemas de software
e hardware, onde algoritmos computacionais de processamento prévio e segmentação serão
um dos principais componentes que constituirá a base desta pesquisa, além da utilização e
analise de algoritmos computacionais e desenvolvendo rotinas computacionais para este
fim.
Este trabalho está divido em quatro capítulos. O primeiro capítulo tem como
finalidade de enfatizar informações relacionadas ao câncer de maneira geral, mas com
enfâse principalmente no de pele, desde conceito, etimologia, classificação, diagnóstico,
causas, progressão e tratamento. O segundo capítulo aborda o processamento e análise de
imagens digitais, descrevendo etapas utilizadas no processo e analise dos algoritmos e seus
conceitos. O terceiro capítulo é voltado para materias e métodos, ou seja, o emprego e
análise de técnicas de pré-processamento, destacando os parâmetros desenvolvidos com
base na Regra do ABCD, além de analisar os métodos de inteligência artificial para obter os
resultados esperados. O quarto e último capitulo discute os resultados obtidos após a análise
e os pontos positivos dos métodos de análise.
20
CAPÍTULO I
Câncer é o nome dado a um conjunto de mais de 100 doenças que têm em comum o
crescimento desordenado (maligno) de células que invadem os tecidos e órgãos, podendo espalhar-
se (metástase) para outras regiões do corpo. Dividindo-se rapidamente, estas células tendem a ser
muito agressivas e incontroláveis, determinando a formação de tumores (acúmulo de células
cancerosas) ou neoplasias malignas. Por outro lado, um tumor benigno significa simplesmente uma
massa localizada de células que se multiplicam vagarosamente e se assemelham ao seu tecido
original, raramente constituindo um risco de vida. Dentre vários os tipos o de pele é o tipo mais
frequente na população brasileira, compreendendo a 25% de todos os diagnósticos canceriginos
(INCA, 2013).
O corpo humano é formado por diversos tipos de células e cada uma delas contém
caracteristicas que variam conforme a função que executam. Entretanto, todas as células do corpo
humano são formadas por três partes básicas: a membrana plasmática é a parte externa da célula, o
citoplasma e o núcleo. A membrana plasmática é a parte externa da célula, o citoplasma é o corpo
celular constituído por diversas estruturas como, por exemplo, o citoesqueleto e os ribossomos, e o
núcleo é o centro de controle da célula formado principalmente por cromossomos que, por sua vez
são formados por genes (LINHARES; GEWANDSZNAJDER, 1998).
Os genes são uma espécie de arquivo que guardam as informações necessárias para
reproduzir toda a estrutura do corpo em um material químico, conhecido como Ácido
Desoxirribonucléico (DNA). Além disso, o crescimento, a multiplicaçãao e a diferenciação de todas
as células do organismo são determinados por comandos genéticos. Uma célula normal está sujeita a
alterações no DNA dos genes devido a fatores externos, como substâncias químicas, radiações e
infecções virais. Essas alterações, também chamadas de mutações genéticas, podem causar
mudanças significativas no comportamento celular. Quando ocorre uma mutação que altera os
comandos de divisão, diferenciação e morte celular, possibilitando sua multiplicação descontrolada,
origina-se o tumor (HERZBERG; FERRARI, 2003).
21
Todas as células estão sujeitas a sofrerem mutações de suas estruturas genéticas por diversos
fatores internos e externos. Basicamente as células animaisé constituida por 3 camadas (membrana
celular, citoplasma e núcleo, local onde de encontra os cromossomos). Estes são constituidos por
genes, unidade possuidora da hereditariedade e instruções genéticas do qual possui todas as
informações necessárias sobre o desenvolvimento de todos os seres vivos. Estas informações estão
contidas dentro dos genes, através de composto orgânico chamada de Acido Desoxirribonucléicos
(pt: ADN/en: DNA), local onde esta sujeito as possiveis alterações genéticas.
Segundo o Institudo Nacional do Câncer (INCA), todo processo de formação do câncer é
chamada de carcinogênese. Seu desenvolvimento é constituido em etapas, todas auxiliadas por
agentes cancerígenos, responsáveis pelas primeiras modificações celulares, até a evolução destas em
tumores.
Estágio inicial: primeiro contato dos genes com os agentes cancerígenos, apresentando as
primeiras modificações nas células;
Estágio de promoção: estas células modificadas através de longos e efetivos contatos com
agentes cancerígenos, lentamente vão sofrendo alterações e se transformando em células
malignas, a partir do momento que ela é convertida, a célula começa a formar novos vasos
22
1.3 Etimologia
A palavra câncer vem do grego karkínos, quer dizer caranguejo, e foi utilizada
pela primeira vez por Hipócrates, o pai da medicina, que viveu entre 460 e 377 a.C.
(INCA, 2010).
23
1.4 Nomenclatura
O tumor benigno pode apresentar mais de uma linhagem celular e, neste caso,
recebe de regra o nome dos tecidos que o compõe acrescido do sufixo “oma”. (INCA)
Exemplos:
Tumor benigno do tecido cartilaginoso – condroma.
Tumor benigno do tecido gorduroso – lipoma.
24
Locais:
Linfonodos aumentados;
Tosse e hemoptise;
Hepatomegalia (fígado aumentado);
Dor óssea;
Fratura de ossos afetados e sintomas neurológicos;
Embora o câncer avançado possa causar dor, ela geralmente não é o primeiro
sintoma.
Sistêmicos:
1.7 Causas
Tabagismo
Hábitos Alimentares
30
Alcoolismo
Hábitos Sexuais
Medicamentos
Fatores Ocupacionais
Radiação solar
lesões aparece nas áreas da pele que ficam expostas à radiação solar. A importância do
autoexame e de um acompanhamento médico ao notar sinais ou pintas com certo grau
de alarme é essencial.
Muitos são os fatores desencadeantes do melanoma, a Tabela 2 mostra alguns
dos principais agentes que contribuem para o desenvolvimento dessa neoplasia, já a
Tabela 3 mostra os fatores de risco do melanoma.
Há muitas opções de tratamento para pessoas com câncer de pele dos tipos
melanoma ou não melanoma. A escolha do tratamento depende da idade, saúde geral do
paciente, estágio do câncer, se ele se espalhou do local original, e outros fatores
histológicos.
1.10.2 Radioterapia
1.10.3 Quimioterapia
uma maneira diferente. Por este motivo são utilizados vários tipos a cada vez que o
paciente recebe o tratamento (INCA 2013).
Segundo as estimativas 2012 realizadas pelo INCA, das quais são válidas para o
ano de 2013 apontam a ocorrência de aproximadamente de 518.510 casos novos de
câncer, incluindo os casos de câncer de pele não melanoma. Dados mostrados pelo
instituto mostra que excluindo os casos de pele não melanoma, estima-se um total de
385 mil novos casos no país.
Em números, no Brasil é esperado um total de 257.870 novos casos sendo
apenas relacionados ao sexo masculino e 260.640 casos para o sexo feminino.
Conforme estimado pelo INCA o câncer de pele do tipo não melanoma corresponderá á
134 mil novos casos, sendo assim considerado o de maior incidência na população
brasileira. A Tabela 4 mostra a estimativa de novos casos de câncer entre homem e
mulheres respectivamente.
Tabela 4 - Estimava de câncer entre homem e mulher em 2012/2013.
Estimam-se, para o Brasil, 62.680 casos novos de câncer da pele não melanoma
entre homens e 71.490 em mulheres. Esses valores correspondem a um risco estimado
de 65 casos novos a cada 100 mil homens e 71 para cada 100 mil mulheres, como pode
ser constatado na tabela 4. O câncer da pele não melanoma é o mais incidente em
homens nas regiões Centro-Oeste (124/100 mil), Sul (80/100 mil) e Norte (38/100 mil),
enquanto, nas regiões Sudeste (73/100 mil) e Nordeste (39/100 mil), é o segundo mais
frequente. Nas mulheres é o mais frequente em todas as regiões, com um risco estimado
de 109/100 mil na região Centro-Oeste, 91/100 mil na região Sudeste, 68/100 mil na
região Sul, 43/100 mil na região Norte e 42/100 mil na região Nordeste (Tabelas 4, 12,
22, 27 e 32).
Quanto ao melanoma da pele, sua letalidade é elevada, porém sua incidência é
baixa (3.170 casos novos em homens e 3.060 casos novos em mulheres). As maiores
taxas estimadas em homens e mulheres encontram-se na região Sul.
41
CAPÍTULO II
A coroide contém uma rede de vasos sanguíneos que tem função primordial de
ser a principal fonte de nutrição do olho, qualquer na coróide, pode levar a um grande
dano ocular. O revestimento da coróide é substancialmente pigmentado, ajudando a
reduzir a quantidade de luz entra no olho e espalha-se pelo globo ocular. (Gonzalez &
Woods, 2011)
A retina é a membrana interna do olho, é nela onde serão formadas as imagens.
Quando o olho está adequadamente focalizado, a luz de um objeto externo é formada de
forma nítida nas paredes da retina, onde a visão de padrões é obtida pela distribuição
dos receptores, ao longo de toda a superfície da retina. Existem duas classes de
receptores: bastonetes e cones. Cada olho possui cerca de 6 a 7 milhões de cones,
localizando-se principalmente na área central da retina denominada fóvea, eles tem a
função de reconhecerem diferenças de cores, a visão dos cones recebem varias
denominações mais são principalmente conhecida como “visão fotópica” ou “visão de
luz clara”. Já os bastonetes são encontrados em uma escala quantitativa muito maior,
variando entre 75 a 150 milhões, tem como função uma visão geral do campo de visão,
eles não estão ligados a visualização de cores e conseguem ser estimulados mesmo com
baixos níveis de iluminação; Por exemplo que aparecem brilhantemente coloridos a luz
do sol, aparecem de forma descolorida quando iluminados pela luz da lua, essa visão é
conhecida como “visão escotópica” ou “visão de luz escura”. (Instituto de física,
UFRGS).
46
Em uma câmera fotográfica comum, a lente tem uma distancia focal fixa e a
localização para diferentes distancias é obtida variando a ela entre a lente e o plano –
imagem, onde o filme se localiza. No olho humano, ocorre o oposto: a distancia entre a
lente e o plano – imagem, que nesse caso é a retina é fixa, e a distancia focal necessária
para atingir uma localização adequada é obtida variando o formato do cristalino (que
equivale a uma lente flexível). A distancia entre o centro do cristalino e a retina ao
longo do eixo visual é aproximadamente 17 mm, já a distancia focal varia de 14 mm a
17 mm aproximadamente.
A disposição geométrica apresentada na Figura 13 ilustra como calcular as
dimensões de uma imagem formada pela retina. A imagem na retina é localizada
principalmente na área fóvea, ocorrendo a percepção então, pela excitação relativa dos
receptores de luz, que transformam a energia radiante em impulsos elétricos, que são
posteriormente decodificados pelo cérebro humano.
Aquisição de imagem: Essa etapa tem como função principal converter uma
imagem em uma representação numérica (imagem digital) adequada para o
processamento digital onde um dispositivo digitalizador converte os sinais
eletromagnéticos emitidos da imagem em questão para sinal digital, isto é,
representando através de bits 0s e 1s. (FILHO; NETO, 1999)
Pré-processamento: É o processo de manipulação da imagem, a fim de corrigir
as imperfeições ou distorções obtidas no processo de anterior de captura da imagem,
isso se da principalmente pelas condições de iluminação ou características do
dispositivo. Buscando a melhoria da imagem que vem a grande importância dessa etapa,
pois através dela serão aplicadas técnicas para atenuação de ruídos, correção de
contraste, brilho ou suavização. (Pedrini, 2008).
Segmentação: A segmentação da imagem consiste no processo de
reconhecimento e extração de áreas de interesse contidas na imagem e que tenham
48
A base de dados depende de cada aplicação, cujo tamanho e complexidade podem variar
significativamente. (Pedrini & Schwartz, 2008)
( )
E são através da propriedade acima citada que é possível classificar cada tipo de
onda, podendo ser observado essa classificação na Figura 16.
( )
Como pode ser observada na figura 16, a variedade de cores que se torna
perceptível a luz visível representa uma fatia muito pequena de toda a gama encontrada
no espectro eletromagnético, possuindo uma banda variando de 0,43µm (violeta) até
0,79 µm (vermelho). Por conveniência pode se dividir o espectro visível em seis cores
(violeta, azul, verde, amarelo, laranja e vermelho), porém nenhuma cor possuem limites
definidos, pois cada faixa de cor se mistura com a faixa seguinte, formando a próxima
cor gradativamente.
Figura 17 - (a) Imagem representada graficamente como uma superfície. (b) Imagem
representada como matriz visual. (c) Imagem representada como uma matriz numérica.
Fonte: Gonzalez. 2011.
Figura 19 - Espetro de cores criado pela passagem de luz branca através do prisma.
Fonte: Gonzalez. 2011.
Uma luz cromática apresenta três valores para descrever a qualidade da sua
fonte, esses valores são definidos a partir da radiância, luminância e brilho. Sendo que a
radiância determina a quantidade total de energia que flui da fonte de uma luz. A
luminância é medida em lumens (lm), cuja sua finalidade é medir a quantidade de
energia que um observador consegue captar de uma fonte de luz. Por último, o brilho é
definido com um descritor subjetivo, praticamente impossível de ser medido. Ele
representa a intensidade luminosa da radiação visível.
Segundo Pedrini (2008), o processo de formação de uma cor consiste em outros
dois principais processos, que podem ser definidos em aditivo e subtrativo. No processo
aditivo as energias dos fótons correspondentes a dois ou mais raios luminosos que são
somadas. Já no processo subtrativo a formação da cor ocorre quando as luz que os olhos
recebem origina-se de algum material transparente, corantes ou pigmentos, em que a
parte da energia luminosa incidente é absorvida e parte é transmitida.
54
[ ] [ ] [ ] ( )
por exemplo o fato de não nos referirmos aos objetos pela porcentagem de cada uma das
cores primarias que as compõe, além de não visualizarmos uma imagem composta por
outras três outas imagens combinadas. O ser humano quando observa um objeto ele os
descreve através dos termos de matiz, saturação e brilho. O modelo chamado de HSI
(hue, saturation, intensity – matiz, saturação e intensidade), esse modelo basea-se em
separar o componente de intensidade dos componentes formadores de cor (matiz,
saturação), fazendo assim ideal para aplicações de algoritmos para processamento de
imagem. (Gonzalez & Woods, 2011).
Basicamente uma imagem digital pode ser representada por meio de um matriz
bidimensional, na qual cada elemento da matriz (Figura 26), corresponde a um pixel da
imagem (Pedrini 2008), ou pode ser definida como uma função bidimensional f(x,y) ,
58
Uma imagem monocromática apresenta um valor de pixel cuja sua escala está
entre Lmin ≤ f(x,y) ≤ Lmax. As imagens multibanda ou multiespectrais podem ter cada
pixel associado a um valor vetorial f (x,y) = (L1, L2,…, Ln), onde Lmin ≤ Li ≤ Lmax e
59
espacial deve ser escolhida de modo a atender ao grau de detalhes que devem ser
discerníveis na imagem.
( )
( ) ( ) ( ) (5)
onde:
( )
( )
( )
onde 𝓁 tende a variar de:
Lmin ≤ 𝓁 ≤ Lmáx
Tendo Lmin um valor positivo e Lmáx um valor finito. Na prática esse intervalo
recebe o nome de escala (ou intensidade) de cinza, sendo Lmin = imin.rmin e Lmáx=
imáx.rmáx. Costuma-se então descolar numericamente esse intervalo para o intervalo [0,
L-1], onde 𝓁=0 é considerado preto absoluto e 𝓁=L-1 é considerado branco, quais quer
valores intermediário são variações de tons de cinza.(Gonzalez & Woods, 2011)
O conceito básico de amostragem e quantização é a transformação de uma
imagem real em uma imagem digital. Para convertê-la ao formato digital, temos de
fazer a amostragem da função em ambas às coordenadas e na amplitude. A digitalização
dos valores de cada coordenada é chamada de amostragem, e a digitalização dos valores
de amplitude é chamada de quantização.
63
2.8.4.1 Caminho
2.8.4.2 Distância
( ) √( ) ( ) (7)
D4 (p1,p2) = | x1 – x2 | + | y1 – y2 | (8)
2.9 Histograma
2.10 Segmentação
∑ ( )
69
A detecção de pontos isolados em uma imagem digital pode ser realizada de uma
máscara h definida na Figura 38. Quando a máscara h é posicionada sobre uma região
da imagem que é homogénea , os pixels pertencentes a região apresentam a mesma
intensidade e a resposta da máscara é nula ( R = 0), sendo que o valor de é calculado
para expressão (10).
Os segmentos de retas também podem ser detectados por meio de máscaras. A
Figura 39, a máscara h1 responde melhor quando a reta passa pela linha central da
imagem. Já em h2 quando esta linha está orientada a 45°.
Para Pedrini (2008), uma borda é um limite ou fronteira entre duas regiões
ambas com propriedades distintas de nível de cinza. A maioria das técnicas para se
obter a detecção de bordas estão associadas ao cálculo de um operador local diferencial
e como imagem depende de duas coordenadas espaciais, se emprega o conceito de
derivada. A Figura 40 ilustra duas imagens uma região clara e outra região escura. Em
imagens reais, as descontinuidades abruptas não são comuns em função de baixa
frequência. Na Figura 41 ilustra a aplicação do conceito de derivada e se observa que a
derivada primeira é positiva nas transições realizadas da região escura para região clara
e negativas nas transições da região clara para escura. A segunda derivada é positiva na
70
( ) ( )
( ) ( )
( )
CAPÍTULO III
Materiais e Métodos
Para análise das imagens das lesões foram estudados os parâmetros relacionados
a Regra do ABCD, que permitiu a utilizados de outros que assemelham com os
abordados a Regra do ABCD tais como: circulariedade ,entropia, variaância entre
outros.
1. Assimetria (A);
2. Irregulariedade das bordas (B);
3. Cor (C);
4. Diâmetro (D).
74
3.2 Assimetria
3.3 Borda
Para realização da análise e teste foi definido um banco de dados que foi
dividido em dois grupos um com 33 imagens de tumores de pele do tipo não melanoma
e outro com 44 imagens de lesão do tipo MM, ambas obtidas via banco de internet e
todas já apresentam seus respectivos diagnósticos, assim totalizando 77 imagens.
76
A cor azul representa o fundo da lesão e a cor vermelha a área da lesão que será
aplicada os parâmetros para análise. Esse processo de obtenção do ROI da imagem
consiste na multiplicação da imagem original pela binária.
3.7.1 Entropia
3.7.2 Energia
3.7.3 Variância
3.7.4 Homogeneidade
3.9 Análise
CAPÍTULO IV
Resultados
As quatro imagens de lesões foram diagnósticas como MM, observa-se que não
apresente uma uniformidade em relação ao contorno da borda, sendo essa uma das
caracteristicas do melanoma.
84
Ambas as quatro imagens são de nevos (lesões que não são consideradas como
melanoma). Observa-se que a região que delimita a região da borda já se apresenta de
forma uniforme, ou seja, tem o formato de um circulo.
Inúmeros testes com o algoritmo foram realizados e para análise final 8 imagens
de lesões foram análisadas. Análise que mostrou que 50% das imagens em estudadas e
analisadas são MM e 50% das imagens são Nevos.
Para análise foram utilizados quatro métodos de inteligência artificial sendo eles:
K – Nearest Neighbor (KNN), Bayes, Árvore (Tree), SVM e Majority. Os métodos
Bayes e Árvore mostraram- se mais eficientes para análise, devido à eficiência de
ambos, foram utizados para determinado o resultado final da análise. Ambos trabalham
com a probabilidade em porcentagem.
A Tabela 6 mostra a porcentagem dos métodos das lesões de MM e de Nevos.
85
CONCLUSÃO
APÊNDICES
APÊNDICE A - Python
"""
Segmentação das imagens
"""
import sys
import math
import Image
import ImageFilter
import numpy as np
from scipy import ndimage
sum_all = 0
for t in range(256):
sum_all += t * hist_data[t]
for t in range(256):
w_back += hist_data[t] # Weight Background
89
if (w_back == 0):
continue
sum_back += t * hist_data[t]
# ler imagem
#I1 = np.array(Image.open("1.jpg"))
I1 = np.array(Image.open("1.jpg"))
# filtrar imagem
I2 = np.zeros(I1.shape)
for i in range(3):
I2[:,:,i] = ndimage.filters.gaussian_filter(I1[:,:,i],8)
I2 = np.array(I2,"uint8")
# converter em 8bit
r, g, b = I2[:,:,0], I2[:,:,1], I2[:,:,2]
I3 = np.array(0.2989*r + 0.5870*g + 0.1140*b)
# binarizar
th = otsu_thrd(I3)
I4 = segmenta(I3, th)
# ROI
ROI = []
90
# Assimetria
borda = []
area = 0
width, height = I4.shape
for yy in range(1,height-2):
for xx in range(1,width-2):
if int(I4[xx,yy+1]) == 1: area=area+1
cnt = 0
if int(I4[xx,yy+1]) == 0: cnt=cnt+1
if int(I4[xx,yy-1]) == 0: cnt=cnt+1
if int(I4[xx+1,yy]) == 0: cnt=cnt+1
if int(I4[xx-1,yy]) == 0: cnt=cnt+1
if int(I4[xx+1,yy+1]) == 0: cnt=cnt+1
if int(I4[xx-1,yy-1]) == 0: cnt=cnt+1
if int(I4[xx+1,yy-1]) == 0: cnt=cnt+1
if int(I4[xx-1,yy+1]) == 0: cnt=cnt+1
if cnt<6 and cnt>3: borda.append([xx,yy])
# Printa Area
print "Area: ", area
# Printa Borda
for w in borda:
x,y = w
I5[x,y] = [0,255,0]
pntMr1 = [0,0]
pntMr2 = [0,0]
MaiorEixo = 0
for x1 in range(0,len(borda)-1):
for x2 in range(x1,len(borda)-1):
xx1, yy1 = borda[x1]
xx2, yy2 = borda[x2]
tam = np.sqrt((xx1-xx2)**2+(yy1-yy2)**2)
91
# Printa Diametro
print "Diametro: ", MaiorEixo
pntC = [((pntMr1[0]+pntMr2[0])/2),((pntMr1[1]+pntMr2[1])/2)]
if pntMr1[1]-pntMr2[1] > 0:
senoAngulo = (pntMr1[1]-pntMr2[1])/MaiorEixo
else:
senoAngulo = (pntMr2[1]-pntMr1[1])/MaiorEixo
anguloMrX = np.arcsin(senoAngulo)
# Printa Angulo
#print "Angulo: " , anguloMrX
# Printa Thinness
print "Thinness: " , thinness
cnt = 0
tolerancia=.15
x,y = pntC
raio=MaiorEixo/2
for i in borda:
x1,y1=i
92
dist=math.sqrt((x-x1)**2+(y-y1)**2)
if dist < (1.0+tolerancia)*raio and dist > (1.0-tolerancia)*raio:
cnt=cnt+1
circularidade = (1.0*cnt)/len(borda)
# Printa Circularidade
print "Circularidade: " , circularidade
# Printa Perimetro
print "Perimetro: " , len(borda)
perimetroArea = (len(borda)*1.0)/area
# Printa Perimetro/Area
print "Perimetro/Area: ", perimetroArea
# RGB Medio
width, height = I4.shape
rsum = 0
gsum = 0
bsum = 0
for yy in range(0,height-1):
for xx in range(0,width-1):
if I4[xx,yy]==1:
r, g, b = I1[xx,yy]
rsum = rsum+r
gsum = gsum+g
bsum = bsum+b
rsum = int(rsum*1.0/area)
gsum = int(gsum*1.0/area)
bsum = int(bsum*1.0/area)
print "RGB Medio (Cor): [",rsum,",",gsum,",",bsum,"]"
dpG = math.sqrt(gsumA)
dpB = math.sqrt(bsumA)
print u"Desvio Padrão (R): " , dpR
print u"Desvio Padrão (G): " , dpG
print u"Desvio Padrão (B): " , dpB
# Printa Skw
skewnessR = (1.0/math.pow(dpR,3))*rskw
skewnessG = (1.0/math.pow(dpG,3))*gskw
skewnessB = (1.0/math.pow(dpB,3))*bskw
print u"Skewness (R): " , skewnessR
print u"Skewness (G): " , skewnessG
print u"Skewness (B): " , skewnessB
rcnt=0
gcnt=0
bcnt=0
for yy in range(0,height-1):
for xx in range(0,width-1):
if I4[xx,yy]==1:
r, g, b = I1[xx,yy]
if r < (rsum+dpR) and r >(rsum-dpR): rcnt=rcnt+1
if g < (gsum+dpG) and g >(gsum-dpG): gcnt=gcnt+1
if b < (bsum+dpB) and b >(bsum-dpB): bcnt=bcnt+1
rmf=(1.0*rcnt)/area
gmf=(1.0*gcnt)/area
bmf=(1.0*bcnt)/area
# RGB Dominante
from collections import defaultdict
by_color = defaultdict(int)
for yy in range(0,height-1):
for xx in range(0,width-1):
if I4[xx,yy]==1:
r,g,b = I1[xx,yy]
color = (r,g,b)
by_color[color] += 1
#rgbDominante = max(by_color.iterkeys(), key=lambda k: by_color[k])
key,value = max(by_color.iteritems(), key=lambda x:x[1])
rcnt=0
gcnt=0
bcnt=0
tolerancia=5
rsumD, gsumD, bsumD = key
print "RGB Dominante (Cor): [",rsumD,",",gsumD,",",bsumD,"]"
for yy in range(0,height-1):
for xx in range(0,width-1):
94
if I4[xx,yy]==1:
r, g, b = I1[xx,yy]
if r < (rsumD+tolerancia) and r >(rsumD-tolerancia): rcnt=rcnt+1
if g < (gsumD+tolerancia) and g >(gsumD-tolerancia): gcnt=gcnt+1
if b < (bsumD+tolerancia) and b >(bsumD-tolerancia): bcnt=bcnt+1
rdf=(1.0*rcnt)/area
gdf=(1.0*gcnt)/area
bdf=(1.0*bcnt)/area
samples_probabilityR= np.zeros((256,256),np.float)
samples_probabilityG= np.zeros((256,256),np.float)
samples_probabilityB= np.zeros((256,256),np.float)
for yy in range(0,height-1):
95
for xx in range(0,width-1):
samples_probabilityR[xx,yy] = (coocorrenciaR[xx,yy]*1.0)/histogram_lengthR
samples_probabilityG[xx,yy] = (coocorrenciaG[xx,yy]*1.0)/histogram_lengthG
samples_probabilityB[xx,yy] = (coocorrenciaB[xx,yy]*1.0)/histogram_lengthB
entropiaR = 0.0
entropiaG = 0.0
entropiaB = 0.0
for yy in range(0,height-1):
for xx in range(0,width-1):
if samples_probabilityR[xx,yy] != 0:
entropiaR =
entropiaR+(samples_probabilityR[xx,yy]*(math.log(samples_probabilityR[xx,yy])/mat
h.log(2)))
if samples_probabilityG[xx,yy] != 0:
entropiaG =
entropiaG+(samples_probabilityG[xx,yy]*(math.log(samples_probabilityG[xx,yy])/mat
h.log(2)))
if samples_probabilityB[xx,yy] != 0:
entropiaB =
entropiaB+(samples_probabilityB[xx,yy]*(math.log(samples_probabilityB[xx,yy])/mat
h.log(2)))
entropiaR = -entropiaR
entropiaG = -entropiaG
entropiaB = -entropiaB
# Printa Entropia
print "Entropia (R): ", entropiaR
print "Entropia (G): ", entropiaG
print "Entropia (B): ", entropiaB
# Printa Energia
print "Energia (R): ", energiaR
print "Energia (G): ", energiaG
print "Energia (B): ", energiaB
96
# Printa Variancia
print "Variancia (R): ", varianciaR
print "Variancia (G): ", varianciaG
print "Variancia (B): ", varianciaB
# Printa Homogeneidade
print "Homogeneidade (R): ", homogeneidadeR
print "Homogeneidade (G): ", homogeneidadeG
print "Homogeneidade (B): ", homogeneidadeB
str(rmf)+"\t"+str(gmf)+"\t"+str(bmf)+"\t"+str(dpR)+"\t"+str(dpG)+"\t"+str(dpB)+"\t"+st
r(skewnessR)+"\t"+str(skewnessG)+"\t"+str(skewnessB)+"\t"+
97
str(rdf)+"\t"+str(gdf)+"\t"+str(bdf)+"\t"+str(entropiaR)+"\t"+str(entropiaG)+"\t"+str(ent
ropiaB)+"\t"+
str(energiaR)+"\t"+str(energiaG)+"\t"+str(energiaB)+"\t"+str(varianciaR)+"\t"+str(varia
nciaG)+"\t"+str(varianciaB)+"\t"+
str(homogeneidadeR)+"\t"+str(homogeneidadeG)+"\t"+str(homogeneidadeB)+"\t"+"nev
o")
fo.close()
'''
import Orange
import random
train = Orange.data.Table("banco5.tab")
kk = random.sample(train, 1)
kk[0][0] = thinness
kk[0][1] = circularidade
kk[0][2] = perimetroArea
kk[0][3] = rsum
kk[0][4] = gsum
kk[0][5] = bsum
kk[0][6] = rmf
kk[0][7] = gmf
kk[0][8] = bmf
kk[0][9] = dpR
kk[0][10] = dpG
kk[0][11] = dpB
kk[0][12] = skewnessR
kk[0][13] = skewnessG
kk[0][14] = skewnessB
kk[0][15] = rdf
kk[0][16] = gdf
kk[0][17] = bdf
kk[0][18] = entropiaR
kk[0][19] = entropiaG
kk[0][20] = entropiaB
kk[0][21] = energiaR
kk[0][22] = energiaG
kk[0][23] = energiaB
kk[0][24] = varianciaR
kk[0][25] = varianciaG
kk[0][26] = varianciaB
kk[0][27] = homogeneidadeR
kk[0][28] = homogeneidadeG
kk[0][29] = homogeneidadeB
kk[0][30] = ""
test = Orange.data.Table(kk)
98
classifiers = [tree,knn,svm,bayes,majority,lr]
target = 1
print "\nProbabilidade para %s:" % train.domain.class_var.values[target]
print "Classe de teste ",
print " ".join("%-9s" % l.name for l in classifiers)
return_type = Orange.classification.Classifier.GetProbabilities
for d in test:
print "%-15s" % (d.getclass()),
print " ".join("%5.3f" % c(d, return_type)[target] for c in classifiers)
REFERÊNCIAS BIBLIOGRÁFICAS
MULLER R. Karen el tal. Avaliação do aprendizado dos pacientes sobre a regra do ABCD:
um estudo randomizado no sul do Brasil. An Bras Dermatol. p.593-8.2009.
OLIVEIRA Filho, K. d., & SARAIVA, M. d. (n.d.). Danos ao olho por olhar
diretamente ao Sol. Retrieved Janeiro 11, 2013, from Instituto de fisíca – UFRGS.
Disponível em : http://astro.if.ufrgs.br/eclipses/olho.htm. Acesso: 24 mar. 2013.
REZZE, Gisele Gargantini; SÁ, Bianca Costa Soares; NEVES, Rogério Izar.
Dermatoscopia: o método de análise de padrões. Disponível em:
http://www.scielo.br/scielo.php?pid=S0365-05962006000300009&script=sci_arttext;
Acesso: 1 mar., 2013.
REZZE, Gisele. Gargantini; SÁ, Bianca. Costa; NEVES, Rogério Izar. (2006).
Dermatoscopia: o método de análise de padrões. Anais Brasileiros de Dermatologia ,
pág. 261-268. Ano de Publicação 2006.