1 PUCPR- Pontfíca Unversdade Católca Do Paraná PPGIA- Programa de Pós-Graduação Em Informátca Aplcada PROF. DR. JACQUES FACON LIMIARIZAÇÃO ITERATIVA DE LAM E LEUNG Resumo: A proposta para essa sére de trabalhos é o estudo e a mplementação de algortmos cuja área de a- plcação seja o Processamento e Análse de Imagens. O trabalho desenvolvdo e aqu apresentado descreve uma das váras técncas de lmarzação teratvas, proposta por Lam e Leung [1]. O algortmo tema desse artgo fo mplementado e testado pelos autores, e os resultados obtdos são apresentados de forma detalhada a segur. Palavras-chaves: Lmarzação, Bnarzação, Métodos Iteratvos, Método de Lam Leung. 1. Introdução A representação de uma magem, capturada para um meo dgtal, é uma matrz I(m,n) onde m é o número de lnhas de pcture elements (pxels) e n é o número de colunas de pcture elements. Cada elemento dessa matrz representa a cor de um ponto da magem, podendo ser, por exemplo, 0 e 1 (para uma magem bnára), 0 a 55 (para tons de cnza) ou três números de 0 a 55 (representando uma cor). Entre os mutos procedmentos aplcados sobre essas magens, a nível de pxels, está a lmarzação (thresholdng). Esta operação consste em converter uma magem com város níves de tons de cnza em uma magem bnára, ou seja, com duas cores. O processo de lmarzação consste em dstngur dos níves, ou regões de uma magem. O prmero nível abrga a regão de nteresse da magem, ou seja, a área onde estão os objetos que se destacam; e o segundo nível é o plano de contraste com o prmero. O objetvo da lmarzação também chamada de bnarzação é determnar a quas dos dos planos acma descrtos pertencem cada pxel da magem. Os algortmos de lmarzação prevêem um valor lmar (threshold) t o nível de cnza lmte entre uma regão e outra, através do qual é feta a classfcação e a obtenção da nova magem bnarzada, da segunte forma: os pxels com valor menor que t pertencem ao segundo plano e os pxels com valor maor ou gual a t pertencem à regão de nteresse. Freqüentemente, para o cálculo de t, os algortmos se utlzam de um hstograma (dstrbução da freqüênca dos pxels através dos níves de cores da magem). Numa técnca como essa, os algortmos procuram vales (valores mínmos) em meo a dos pcos (valores máxmos); esses valores mínmos podem vr a ser um t em potencal.. Lmarzação de magens de máxma entropa Uma magem de entropa máxma possu um hstograma bastante rregular e varado, onde os pxels se espalham pela maora dos níves de cnza e em concentrações dferentes. Para estas magens há uma grande dfculdade de lmarzação, e a maora dos algortmos não consegue detectar um lmar acetável. Uma solução para esse problema é a utlzação do processo de lmarzação teratvo que se segue.
3. Lmarzação teratva Consderando-se uma magem prmára que possu níves de cnza x = 0,1,,..., N 1, a função densdade de probabldade (f.d.p) dessa magem é uma f(x). Maxmzando-se a entropa da magem com uma méda prescrta µ e um desvo padrão σ, obtemos a forma quase Gaussana da equação 1. f ( x µ ) 1 x) = N( x; µ, σ ) = exp σ π σ x = 0,1,,..., N 1 Equação 1 ( Para propóstos de lmarzação, consderam-se as f.d.p. de duas magens prmáras f 0 (x) e f 1 (x) msturadas a uma taxa α. A função de densdade de probabldade dessa nova magem será: f ( 0 1 x x) = αf ( x) + (1 α) f ( ), onde 0 α 1 Equação Onde f 0 (x) e f 1 (x) tem a forma mostrada na equaç ão 1, ou seja: f ( x) 1 ( x µ ) x = 0,1,,..., N 1 N ( x; µ, σ ) = exp, com σ π σ = 0,1 Equação 3 = Se os parâmetros α, µ 0, σ 0, µ 1 e σ 1 estverem dsponíves, os pxels que tverem o nível de cnza x satsfazendo a nequação 1 serão segmentados na classe C 0 e os que não satsfazem serão segmentados na classe C 1. α f 0 ( x) > (1 α) f1( x) Inequação 1 Normalmente esses parâmetros não estão dsponíves, e estes são os valores que serão estmados para que, a cada teração, se calcule o lmar. A seqüênca comumente adotada pelos algortmos de lmarzação teratvos é mostrada na fgura 1, e pode ser narrado da segunte forma: obtém-se o lmar t randômco, lmarza-se a magem em t, a partr da magem lmarzada estma-se os parâmetros de lmarzação e calcula-se o próxmo lmar t. O processo se repete a partr da lmarzação em t, com t = t, até que o t calculado seja o mesmo que t. Caso t não seja encontrado, então deve-se seleconar um novo t randomcamente. A dferença básca entre os mutos algortmos está em como cada um estma os parâmetros. 4. Lmarzação teratva de Lam e Leung (L&L) Como os demas algortmos teratvos, L&L também compartlha do mesmo modelo de fluxo da fgura 1. Este algortmo é uma versão teratva do algortmo de Jordan, que é, na verdade, uma técnca de segmentação em város lmares. Em L&L deve-se consderar apenas casos que resultem em apenas um lmar.
3 Fgura 1 Os parâmetros são estmados da segunte forma: α é 0, e µ 1 e σ 1 são a méda smples e o desvo padrão dos pxels classfcados como C 1 na magem lmarzada em t. O novo valor lmar será defndo pela avalação da desgualdade da nequação. Os pxels que satsfzeremna serão classfcados na classe C 0, os que não a satsfzerem serão classfcados em C 1. 5. Dscussão do algortmo f ( x) > N( x; µ 1, σ 1) Inequação A mplementação do método de lmarzação teratva de Lam e Leung mostrou-se confuso em algumas partes. A análse das nformações sobre o algortmo revelou quatro pontos crítcos que serão dscutdos a segur. O prmero obstáculo encontrado fo a defnção do prmero t. Conforme o estudo efetuado, deve-se seleconar um t aleatóro, entre os níves da magem. Para que nenhum nível de cnza dexe de ser avalado, pegou-se o prmero nível exstente na magem, de modo a também poupar processamento. Esta solução também fo adotada por Lam e Leung, conforme artgo [1]. Outro problema encontrado fo defnr que t seleconar quando o processo do algortmo não encontrar um t. A solução aplcada fo a nserção de um ncremento em t caso não seja encontrado um lmar. Esta ação vsa evtar que um nível de cnza, que pode potencalmente ser um lmar, dexe de ser avalado devdo ao método de geração de lmares aleatóros, o que podera acontecer, por exemplo, se utlzação um método em forma de sorteo. Esses apresentados acma foram problemas relatvamente smples encontrados já na avalação das nformações dsponíves. As outras duas dfculdades foram encontradas apenas durante a depuração do códgo e são descrtas a segur.
4 O problema da segmentação, comentado no tem 4, pode acontecer no resultado de todas terações. A avalação da nequação pode resultar em dos ou mas lmares, e para dar seqüênca ao algortmo é necessáro um, e somente um, lmar. Nos casos em que aparecem mas de um lmar as nformações contdas em [1] dzam apenas para desconsderar. Porém, mplementou-se um método de escolha, onde o maor f(x) o pxel com maor valor na f.d.p. entre os lmares é escolhdo como t. Com a mplementação desse método obtvemos lmares úncos para cem por cento das magens testadas para as quas esse comportamento problemátco fo observado. Deve-se ressaltar, também, que apenas um t por vez é gual a t, o que sempre resultará em um únco lmar por vez, porém a aplcação do algortmo para todos os níves de cnza pode, sm, resultar em mas de um lmar. Portanto, da forma como é descrto, o algortmo de Lam e Leung sempre produzrá apenas um lmar como resultado. Por fm, o últmo problema encontrado aconteceu em alguns casos em que, a partr do lmar ncal t 0, nenhum t fo encontrado até um lmar aleatóro gerado pelo método para seleconar um novo t, quando t não é encontrado t n. Nesse ponto, o t calculado fo gual a t 0, fazendo com que o algortmo retornasse ao estado ncal, causando assm um cclo nfnto. Para evtar esse cclo, nseru-se uma condção na qual se t for menor que t, o próxmo t dexa de ser t para ser t + 1. Dessa forma acabaram-se os cclos, porém, em nenhum dos casos problemátcos fo possível obter um resultado satsfatóro. 6. Conclusão O algortmo desenvolvdo está no anexo 1, fo desenvolvdo para trabalhar com fguras de 56 níves de cnza. Vale comentar o seu funconamento aqu. O lmar t é calculado ncalmente pelo prmero nível de cnza da - magem. Os parâmetros de f(x) a magem prmára são calculados para a avalação posteror, e a cada teração, da nequação. Calcula-se f(x) para todas os 56 níves de cnza. Efetua-se a lmarzação através do hstograma, guardando-se apenas os dados da classe C 1 que é a classe que será avalada posterormente. Calcula-se N(x;µ 1, σ 1 ) para os 56 níves de cnza. Avala-se a nequação e determna-se t. O funconamento do algortmo segue exatamente o fluxo da fgura 1. Note que se trabalha com todos os níves de cnza, e não com toda magem, o que sera extremamente custoso; podera se trabalhar apenas com os níves de cnza exstentes, contudo poder-se-a perder no uso de memóra, já que sera necessáro guardar maor número de nformações. 7. Referêncas [1] C.K. Leung, F.K. Lam, Performance Analyss for a Class of Iteratve Image Thresholdng Algorthms, Pattern Recognton, vol 9, no. 9, pp. 153-1530, 1996
5 IMPLEMENTAÇÃO: // Algortmo de Lmarzacao Iteratva de Lam-Leung BOOL CLmar::LmarIteratvaLamLeung() double fdex[56]; // dstrbução normal dos pontos na magem ncal double ndex[56]; // dstrbução normal dos pontos na magem lmarzada nt aux,aux1; nt nbtsc1; // número total de bts classfcados em C1 double m,m1; // parametros da dstrbução normal double sgma,sgma1; // parametros da dstrbução normal double sgma_,sgma1_; // parametros da dstrbução normal unsgned long ; // índce, e número total de bts na magem const double c_pi=3.141596; // constante p double rp; unsgned nt Iteracoes; BYTE Lmar; f (!(VerfyConsstentIn() && VerfyConsstentOut()) ) return FALSE; CopyImageInOut(); ClockStart(); Hstograma(); rp = sqrt(*c_pi); // Calculando parâmetros méda e t ncal m = 0; for(=0;<56;++) m+=*m_hsto[];; m=m/m_totalpxels; // Calculando desvo padrão sgma_ = 0; for(=0;<56;++) sgma_ += m_hsto[]*(-m)*(-m); sgma_ /= m_totalpxels; sgma = sqrt(sgma_); //Calculando f(x) for(=0;<56;++) fdex[] = (1.0/(sgma*rp)) * exp(-(-m)*(-m)/(*sgma_)); NvelMnMax(); Lmar = m_lmn; Iteracoes = 0; whle(lmar<55) nbtsc1=0; // Lmarzando em t for(=lmar+1;<56;++) nbtsc1+=m_hsto[]; // Calculando méda (m1) dos pontos que fcaram na classe C1 m1=0.0; for(=lmar+1;<56;++)
6 m1 += *m_hsto[]; m1 /= nbtsc1; // Calculando desvo padrão (sgma1) dos pontos que fcaram na classe C1 sgma1_=0.0; for(=lmar+1;<56;++) sgma1_ += m_hsto[]*(-m1)*(-m1); sgma1_ /= nbtsc1; sgma1 = sqrt(sgma1_); // Calculando N(x) for(=0;<56;++) ndex[]=(1.0/(sgma1*rp))*exp(-((-m1)*(-m1))/(*sgma1_)); // avalando o novo t aux=-1,aux1=-1; // aux1 é o novo lmar // aux é uma varável de controle de lmares // procurando por lmares for(=0;<56;++) f(fdex[]>*ndex[]) f(aux<0) aux1=; else f(aux==0) // caso haja mas de um lmar, escolhe o que tver maor f(x) f(fdex[]>fdex[aux1]) aux1=; aux=1; else aux=0; // se não encontrou nenhum lmar novo f(aux==0 && aux1<0) Lmar++; else Iteracoes++; // condção de parada, fm de terações f(lmar==aux1) break; // condção para evtar cclos f(lmar>aux1) Lmar++; // caso não seja momento da parada contnua t como o novo lmar else Lmar=aux1; SetIteracoes((DWORD)Iteracoes); SetLmar((BYTE)Lmar); AplcarLmar();
7 ClockFnsh("Lmarzacao Iteratva de Lam-Leung"); return TRUE;