PUCPR- Pontifícia Universidade Católica Do Paraná PPGIA- Programa de Pós-Graduação Em Informática Aplicada PROF. DR. JACQUES FACON LIMIARIZAÇÃO DUPLA DE ISTVÁN CSEKE PROJETO DE UMA RÁPIDA SEGMENTAÇÃO PARA IMAGENS DE CÉLULAS Resumo: Este artigo descreve não só a teoria, mas também as ferramentas utilizadas para a implementação do algoritmo de Limiarização Dupla de Istvan Cseke. Palavras Chave: Limiarização Dupla, Segmentação, Algoritmo de Istvan Cseke 1. Introdução O artigo estudado escrito por István Cseke, demostra e apresenta uma técnica de limiarização é uma rápida segmentação de imagens de amostras sangüíneas, para serem utilizadas na automatização da contagem diferencial (classificação) de células branca. A contagem diferencial de células brancas do sangue, possui importante papel em diagnósticos de diferentes doenças. A contagem automática utilizando o computador, possibilitou uma melhor performance neste teste, fornecendo ao médico, um método seguro, rápido, preciso e econômico. O processo feito anteriormente, baseava-se em amostras de sangue, onde precisavam ser encontradas e classificadas as células brancas, de acordo com o seu tipo. Em média 100 imagens coloridas deveriam ser processadas. O sucesso da classificação dependia principalmente da correta segmentação da imagem, o que era considerado um procedimento muito crítico. Basicamente, o processo apresentado consiste em três fases para ser totalmente realizado, a primeira esta em utiliza um algoritmo com o propósito de localizar e determinar a posição aproimada das células brancas na imagem da amostra de sangue; este algoritmo está baseado em informações sobre imagens de manchas que podem surgir no sangue; o segundo passo é a separação dos diferentes componente eistentes em uma amostra de sangue, tais como núcleo, citoplasma, background e células vermelhas, com o uso de um método recursivo de limiarização. Método este derivado da máima variação entre as regiões claras, cinzas e escuras, baseado no método descrito e proposto pelo autor Otsu. Finalmente, a terceira parte consiste na segmentação de áreas que são homogêneas mas de operações morfológicas diferentes. Pois estas regiões possuem características morfológicas fortemente dependentes da rugosidade de suas bordas. O projeto de segmentação apresentado, possui ecelentes índices eperimentais de acertos na classificação de células brancas do sangue.. Localização Se as células brancas não forem encontradas na imagem a ser analisada, e esta pode ser descartada e tomada uma nova imagem para ser analisada. A posição aproimada pode ser determinadas porque para este caso afastado as técnicas de segmentação são aplicadas em pequenas sub imagens o que reduz o número de piels a serem processados. Usando um procedimento padrão para a preparação da amostra de sangue para uma melhor definição das características do espectro e diferentes estruturas celulares. Uma imagem típica de célula branca, (ampliada 1000 X) obtidas de diferentes amostras de sangue. Os piels de tonalidade verde da
imagem em RGB, permanecem na região do núcleo e são visivelmente mais escuros que os outros piels, logo, a rápida decisão sobre a eistência de células brancas pode ser feita baseando-se em histogramas. Faça TN ser o limiar rugoso do núcleo, os piels dentro deste limiar TN certamente faz parte do núcleo. SN e WN denotam a mínima área do núcleo e o tamanho limiar máimo do núcleo, respectivamente. Este meio do núcleo pode ser envolvido por uma janela de tamanho WN * WN (quadrada) e esta janela possui piels com baio tom de cinza que representa SN. Desta maneira o processo de localização pode ser feito. Imagens eaminadas ou obtidas sem superposição de janelas, uma ao lado da outra, de tamanho WN*WN e um histograma local, que é calculado pelas janelas obtidas. Conforme a figura abaio. Localização da célula branca com janelas sem sobreposição Se no centro da janela centrada no piels (, o histograma local H y [, satisfaz a condição abaio. SN TN f(, = 1 H y [ ou (1) 0 4 f(, = H y [0] + H y [1] + H y [] +... + H y [TN-1] SN / 4 A região demarcada por duas linhas provavelmente compreende uma célula branca do sangue. No pior dos casos, somente ¼ da célula branca cairá dentro das janelas sem sobreposição. Para calcular a posição aproimada do núcleo não pode-se procurar a sub imagem na região demarcada pelas linhas duplas, onde a função f(, obtém o valor máimo. Portanto a região marcada pode ser scaniada com uma janela de tamanho WN*WN. Conforme mostrado na figura abaio. Procurando a posição do núcleo com sobreposição de janelas.
As demonstrações da figura é uma técnica de procura hierárquica. A primeira função f é calculada no centro da janela de piels marcados com o que coincide com WN/. Os piels são provenientes dos valores máimos selecionados, o piels (+WN/,. O processo se repete na vizinhança do piel coincidindo com WN/4 e finalmente coincidindo com WN/8. A sub imagem selecionada centrada com o piel marcado em azul na figura acima, compreende uma célula branca e ecluindo o afastamento neste procedimento de localização. Os valores TN, SN e WN podem ser derivados de uma fase de aprendizado. 3. Limiarização As sub-imagens WN*WN possuem uma grande quantidade de tipos diferentes de células brancas, somente após obtermos sua localização e que ela pode se ser processada. O objetivo da limiarização possui três classes de separação para diferenciar os vários componentes encontrados na estrutura celular. As regiões escuras e claras da imagem correspondem respectivamente ao núcleo e ao background, e uma região intermediária que representam o região do citoplasma e das células vermelhas. Estas duas estruturas podem ser separadas uma da outra com a presença de uma componente azul (blue) na imagem RGB, que aparece nos pieis que pertencem as células vermelhas, deste modo esta tonalidade terá níveis cinza na sua limiarização. O método de limiarização automática proposto do Otsu, descreve limiares ótimos T1 e T, selecionados pela maimização da variância interclasses entre as regiões escuras, cinzas e claras. A maimização da variância interclasses pode ser reduzida ao máimo com a aplicação da função abaio: m (0, m ( m ( E ( = + + 0, onde L representa o número de níveis cinza, a as equações ) e ), estão representadas a seguir:, = i H[, = H[ y > onde H[] e o histograma da subimagem a ser limiarizada. Isto pode provar que a função E pega valores máimos onde as relações abaio são satisfeitas: 0, + = T1 0, + = T Estas equações podem ser facilmente resolvidas com a utilização de um simples algoritmo recursivo. Com o valor limiar das subimagens determinando através dos limiares T1 e T, tem-se paramentos para suavizar e determinar onde termina e começa os elementos morfológicos da imagem das células brancas. 4. Complemento da Parte Escrita Um breve estudo da equação do algoritmo para a implementação das técnicas de limiarização de imagens de István Cseke, tem-se: Dadas as seguintes equações:
0, + = T1 0, + = T Igualando as equações pelo termo comum nas duas equações, tem-se 0, + T1 = + T 0, separando... temos: 0, T,56) f 1 = T1 e f = T 0, T,56) logo, temos que ƒ1 é igual a ƒ. Mas, com as funções, e,, podemos calcular os valores de T1 e T, sendo, = i H[, = H[ y >, que satisfazem a igualdade, porém, não encontraremos dois valores eatos, então fazemos uma diferença entre as funções ƒ1 e ƒ, para encontrar os valores mais próimos. Estes valores são calculados através das funções, e, e guardados em vetores. Após ter calculados todos os valores e guardados os mesmos no respectivo vetor. Quando encontramos a menor diferença, temos os valores de T1 e T. Porém, na implementação do cálculo da função n, notou-se que este valor que fica no denominador, e quando gera um valor zero para n tem-se que o segundo fator fica na forma 0? o que gera um valor infinito, logo, para que não fosse perdido este segundo fator, inicializou-se a variável de retorno com o valor 1 evitando desta forma o zero no denominador. Com os valores de T1 e T definidos, conforme especificações propostas pelo professor foi aplicado o processo de limiarização para os seguintes valores:. Imagem limiarizada para valores menores que T1; ( < T1 );. Imagem limiarizada para valores maiores que T; (> T );. Imagem limiarizada para valores entre T1 e T; ( T1 < < T ). Os valores e resultados obtidos na limiarização foram bem próimos aos encontrados pelo algoritmo de OTSU. Sendo que esta técnica de limiarização implementada tem sua aplicação em imagens específicas, no caso do artigo, imagens do sangue. 5. Conclusão A técnica de limiarização proposta por István Cseke, aqui apresentada, está baseada nos conceitos e métodos desenvolvidos pelo autor Otsu, o qual apresenta um método de seleção de imagens fundamentado nos histogramas das imagens trabalhadas. Os método e algoritmos trabalhados são simples e geralmente usados de forma recursiva, o que leva a um refinamento e uma precisão nos valores envolvidos. Os resultados obtidos eperimentalmente, segundo o autor, localizaram e classificaram células brancas com uma precisão de aproimadamente 9%. Após a implementação, não conseguimos encontrar imagens específicas para que possamos fazer uma comparação com o algoritmo aqui implementado. Para os valores de T1 e T encontrados, gerou-se três imagens limiarizadas, sendo elas uma para os valores menores que outra para os valores entre T1 e T e uma terceira para os valores maiores que T. O critério adotado, foi que as imagens limiarizadas ficariam com as mesmas tonalidades de cinza. Para a primeira imagem, ( <, tudo o que for maior que permanece com o seu tom de cinza e o que é menor que fica branco
(55). Para o segundo caso ( T1 < < T ), o que fica abaio de T1 e acima de T, fica branco e entre permanece com a tonalidade original de cinza. Para o último caso, ( > T ) os valores maiores que T ficam brancos e os demais ficam com a cor original. 6. Referências Cseke, István, A fast Segmentation Scheme for White Blood Cell Images, IEEE, 199,, pp 530-533. Facon, Jacques, Processamento e análise de Imagens Fevereiro 1998.
IMPLEMENTAÇÃO: // Algoritmo de Limiarizacao Dupla de Istvan-Cseke BOOL CLimiar::LimiarDuplaIstvanCseke() double F1[56], F[56]; // Vetores com os valores de F1 e F double Diff_Atual=0; // Variavel para encontrar o Minimo double Ult_Diff=1.7E+308; // Variavel para encontrar o Minimo unsigned long Soma1,Soma,Soma3,Soma4; // Valores auiliares BYTE v vt; // Valores finais de T1 e T unsigned int t,g; if (!(VerifyConsistentI) && VerifyConsistentOut()) ) return FALSE; CopyImageInOut(); ClockStart(); Histograma(); for(t=0;t<56;t++) F1[t] = 0; F[t] = 0; /* inicio do algoritimo para encontrar os provaveis valores para F1 e F */ for (t = 0; t < 56; t++) Soma1=0; Soma=0; for(g=0;g<t;g++) Soma1+= m_histo[g]*g; Soma+= m_histo[g]; Soma3=0; Soma4=0; for(g=t;g<56;g++) Soma3+= m_histo[g]*g; Soma4+= m_histo[g]; if ( (Soma!= 0) ) F1[t] = ( * t) - (double)soma1/soma; // parte de 0 -> t-1 if ( (Soma4!= 0) ) F[t] = ( * t) - (double)soma3/soma4; // parte de t -> L-1 /* Encontrando os T1 e T com a minima diferenca entre os valores de F1 e F */ for (t = 0; t < 56; t++ ) if ( (F1[t] == 0) ) continue; for (g = 0; g < 56; g++) if ( (F[g] == 0) ) continue;
Diff_Atual = fabs(f1[t]-f[g]); if ( Diff_Atual < Ult_Diff ) vt1 = t; vt = g; Ult_Diff = Diff_Atual; SetLimiarT1(v; SetLimiarT(vT); AplicarLimiarT1T_DuplaIstvanCseke(); ClockFinish("Limiarizacao Dupla de Istvan-Cseke"); return TRUE;