1
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 PELO OPERADOR LAPLACIANO: MÉTODO DE CHEHIKIAN
Resumo: Este artigo trata da técnica de binarização, através da informação obtida pelo operador
Laplaciano. A limiarização tem como objetivo transformar uma imagem em tons de cinza em uma imagem preta
e branca (binária). O operador Laplaciano gera uma imagem modificada, resultante da imagem original. A partir
desta, e de um conjunto de regras aplicadas sobre a mesma, é possível obter o limiar global da imagem. Um
valor limiar é um valor escolhido através de um algoritmo especifico, que serve para determinar um ponto
intermediário no histograma. Através deste, é possível escolher se a cor de um pixel, a imagem limiarizada, será
preta ou branca. A limiarização, e as técnicas para adaptar a imagem através do Laplaciano são o foco deste
documento.
Palavras-Chave:
Limiarização, binarização, pelo operador Laplaciano, método de Chehikian
1. Introdução
Atualmente, existem muitas imagens, e softwares para trabalhar com elas, disponíveis em vários formatos
diferentes que podem ser interpretadas por uma máquina.
O principal elemento de uma imagem é o pixel. O pixel é a essência de uma imagem e, além disso é o
elemento principal para a análise das mesmas. Cada pixel existente em uma imagem consiste de um valor de
intensidade que pode ser ligado ou desligado. Para imagens binárias, os valores que os pixels podem assumir são
somente zero (desligado ou branco) e um (ligado ou preto). Para imagens em escalas de cinza, os valores
assumidos podem estar entre 0 e 255, onde 0 indica preto absoluto e 255 indica branco absoluto. Os valores
intermediários são tons de cinza que, se forem próximos a zero denotam tons próximos a preto e no caso
contrário, denotam tons próximos a branco. Por fim, as imagens coloridas são compostas por três canais de
valores, entre zero e 255, onde cada um dos canais está ligado a uma das cores primárias. Estes canais compõem
o sistema RGB (Red Green Blue).
Por outro enfoque, cada conjunto de pixels com uma intensidade constante, é uma seqüência de regiões.
Neste aspecto, imagens podem ser entendidas como a união entre regiões de tamanhos diversos, e entre as
fronteiras (encontros de várias regiões), também chamadas de bordas.
A limiarização (ou binariazação) é um processo que visa, a partir de uma imagem em tons de cinza, obter
uma imagem binária. Assim, a limiarização, resulta em uma transformação da imagem. Os pixels com tons mais
próximos a preto e os que são totalmente pretos na imagem original vão gerar pixels pretos na imagem binária.
De forma análoga, os pixels cuja intensidade for branco ou próximo a ele, irão originar pixels brancos na
imagem transformada.
A imagem limiarizada apresenta dois contextos distintos de análise. Um deles se refere ao primeiro plano
da imagem, que é o texto, o gráfico ou objeto de interesse, o componente primordial; o outro corresponde ao
fundo da imagem. O objetivo da binarização é marcar os pixels que pertencem que pertencem as regiões do
primeiro plano como ligado e os pixels do segundo plano como desligados.
O processo de limiarização tem seu uso muito difundido em scanners binários, que combinam a
2
digitalização com a limiarização da imagem para obter uma figura binária. Mesmo que nestes dispositivos o
usuário, muitas vezes, possa adaptar a imagem de acordo com suas necessidades (ele pode escolher um valor de
limiarização – o limiar), de modo a adaptar uma imagem “binariamente fraca”, nem sempre isto produz
resultados desejados. O produto final de uma imagem digitalizada e binarizada através de um scanner é
geralmente pobre, já que qualquer captor introduz uma falta de nitidez mais visível, principalmente, nas bordas e
detalhes (que são componentes com muitas variações no nível de cinza).
Uma alternativa para contornar este problema, consiste em implementar uma das técnicas existentes de
limiarização. A vantagem deste mecanismo é um bom nível de limiar pode ser encontrado automaticamente,
assegurando que as imagens finais sejam boas e evitando diversas digitalizações repetidas de uma imagem para
alcançar um padrão esperado. Várias técnicas são conhecidas, porém o foco principal deste trabalho enfatiza a
Ponderação Laplaciana, presumindo a atuação do Laplaciano sobre uma imagem digitalizada em níveis de
cinza.
2. Tipos de Limiarização
Quando os valores dos pixels de ambos os planos tem valores consistentes (as regiões não se confundem
muito) sobre a imagem inteira, então um único valor limiar é suficiente para deixar a imagem em um formato
adequado. Quando um único limiar é utilizado para todos os pixels da imagem, tem-se uma Limiarização
Global. Contudo, quando este processo não for o bastante (devido as deformidades dentro das regiões de
primeiro e segundo planos), deve-se usar a Limiarização Adaptativa - a partir de uma janela 3x3. Com isto, é
possível definir vários valores de limiar, um para cada região definida. Como implementamos a Ponderação
Laplaciana através de uma técnica de Limiarização local adaptativa, e ela é o objetivo maior deste documento, a
forma global não será mais discutida.
A maneira mais direta para selecionar um valor global de limiar é através do uso de um histograma de
intensidade dos pixels de uma imagem. Um histograma “varre” a imagem contando quantos pixels dela existem
para cada tom de cinza existente. Com base nestes números obtém-se um gráfico, onde um dos eixos apresenta
as intensidades existentes e o outro, o número de pixels para cada tom. O histograma é desenhado de modo a
traçar linhas paralelas verticais, que indicam quantos pixels uma intensidade possui.
Para uma imagem com primeiro e segundo planos bem diferenciados, o histograma terá dois picos
distintos. O vale entre estes dois picos é o ponto de mínimo entre os dois pontos de máximo, e o valor da
intensidade no vale será escolhido como o limiar global.
Mas, um histograma nem sempre tem esta forma ideal. As imagens, nem sempre apresentam intensidades
bem diferenciadas entre o primeiro e o segundo plano, o que gera contrastes significativos no histograma destas
imagens. Em adição, o mecanismo empregado para encontrar um vale, pode não ser confiável.
3. Limiarização a partir pelo operador Laplaciano, método de Chehikian
Um método para melhorar o enfoque do item anterior é pelo operador Laplaciano. O Laplaciano é um
operador de segunda derivada, que pondera altamente as transições das regiões em bordas de ambos os objetos
de interesse quanto de seus fundos respectivos (o operador de diferenciação amplifica as altas-freqüências –
zonas com muita variação de níveis de cinza). Assim, o histograma terá dois picos de áreas similares, e um
limiar global poderá ser encontrado e aplicado sobre a imagem.
É importante lembrar, que um ruído é também um elemento de alta-freqüência. Portanto, é necessário
fazer um tratamento na imagem que amplifique as bordas, mas não os ruídos.
3.1. O Operador Laplaciano
Um operador de diferenciação é baseado sobre a noção de derivada. Do ponto de vista matemático, as
regiões são caracterizadas por derivadas suaves e pouco acentuadas e, as fronteiras, por derivadas fortes e
acentuadas. O princípio utilizado é baseado na derivação da imagem para acentuar as bordas contidas na mesma.
Seja a imagem I (x,y) e f (x) a função que define quantos pixels uma região da imagem tem para cada
nível de cinza. É possível perceber, que as derivadas de f (x) apresentam variações fortes ao nível das fronteiras.
3
Com base nas derivadas de segunda ordem de uma imagem, O Laplaciano é definido da seguinte forma:
A intensificação das bordas pode ser realizada pela subtração da imagem I (x,y) com a derivada segunda
de I (x,y). A máscara utilizada, resultante do operador de segunda derivada é a seguinte:
∆2 I ( x, y ) = L[ I ( x, y )] =
f ' ' ( x, y ) f ' ' ( x, y )
+
f ' x2
f ' y2
onde:
0 1 0
(L) = 1 − 4 1
0 1 0
3.2. A construção de uma Imagem Laplaciana
De forma prática, para construir uma “Imagem Laplaciana” da imagem original, deve-se deslizar sobre
toda a imagem uma janela do tamanho da máscara. Cada pixel que não pertencer aos extremos da imagem será
transformado da seguinte maneira:
•
•
•
•
O pixel que corresponder a posição 2,2 da máscara terá o seu valor alterado.
Todos os valores da máscara são multiplicados, individualmente, pelos valores dos níveis de cinza
correspondentes a cada posição da imagem;
Os nove valores resultantes da multiplicação devem ser somados;
A soma total representa o valor do operador aplicado ao pixel central dessa vizinhança.
Esse processo repete-se até que se tenham todos os pixels da imagem que não pertençam à primeira e
última linha e, à primeira e última coluna.
Esta informação será utilizada para o desenvolvimento de um histograma global. Utilizando os valores
encontrados pelo Laplaciano, é possível acentuar o histograma, e obter o valor limiar global, que permite
escolher, a cor que determinado pixel deve ter (preto ou branco).
3.3. Binarização
A partir da imagem gerada A, deve-se ler todas as linhas da mesma, para avaliar o nível superior (branco:
B[i, j]) e inferior (preto: N[i, j]) da informação.
O valor do operador Laplaciano no pixel [i, j] é chamado de δ[i, j]. Para o tratamento da linha i, o cálculo
de B[i, j] e de N[i, j] é dado pelas seguintes regras recursivas:
seδ [i, j ] < 0
A[i, j ]
caso contrário B[i, j − 1]
seδ [i, j ] > 0
A[i, j ]
N [i, j ] =
caso contrário N [i, j − 1]
B[i, j ] =
Com isto, um Laplaciano negativo corresponde ao gradiente de decréscimo de intensidade. A intensidade
do pixel corrente neste caso, é dada como um nível de alta referência; a baixa referência permanece inalterada.
Por outro lado, um Laplaciano positivo corresponde a gradiente de crescimento de intensidade.
O limiar para a binarização é, então, fornecido pela relação:
t[i, j ] =
N [i, j ] + B[i, j ]
2
4
4. Conclusão
A técnica descrita neste documento é o resultado da construção de um algoritmo que proporciona uma
ferramenta de binarização de imagens. Os resultados obtidos foram satisfatórios, pois se colocados em
comparação com outras técnicas existentes, observa-se que em muitos casos, pelo operador Laplaciano do
método de Chehikian, é melhor. Porém, cabe ressaltar, que nem sempre isso é verdade.
No decorrer deste trabalho, foi possível sentir dificuldades para determinar os valores iniciais das imagens
B e N, que foram inicializadas com os valores branco e preto, respectivamente. Também, no que diz respeito a
obtenção do limiar, utilizamos a técnica local adaptativa através do cálculo da média aritmética, por ser esta
técnica mais fácil, embora seja possível limiarizar uma imagem usando uma técnica local .
5. Referências
Jean Pierre Cocquerez and Sylvie Philipp, “Analyse d´Images: filtrage et segmentation”, Editor Masson, Paris,
pp. 256-257, 1995.
5
IMPLEMENTAÇÃO:
// Algoritmo de Limiarizacao por Ponderaçao Laplaciana
BOOL CLimiar::LimiarPonderacaoLaplaciana()
{
unsigned long i,j;
unsigned long soma,pixels;
DWORD
dwWidthB;
HGLOBAL
Hnl, Hnb, Hnn;
int FAR
*lpL;
BYTE FAR
*lpB,*lpN,*lpI;
BYTE
Limiar;
if ( !(VerifyConsistentIn() && VerifyConsistentOut()) )
return FALSE;
CopyImageInOut();
ClockStart();
lpI
= piRW_ImgIn ->GetImageBits();
dwWidthB = piRW_ImgIn ->GetImageWidthBytes();
Hnl = GlobalAlloc(GPTR, m_TotalPixels*sizeof(int )); // imagem para o laplaciano
Hnb = GlobalAlloc(GPTR, m_TotalPixels*sizeof(BYTE)); // imagem dos niveis de branco
Hnn = GlobalAlloc(GPTR, m_TotalPixels*sizeof(BYTE)); // imagem dos niveis de preto
lpL = (int FAR*) GlobalLock(Hnl);
lpB = (BYTE FAR*) GlobalLock(Hnb);
lpN = (BYTE FAR*) GlobalLock(Hnn);
// aplica o operador laplaciano sobre lpBits e resultado em lpL
for(i=1;i<m_Height-1;i++)
{
for(j=1;j<m_Width-1;j++)
{
lpL[i*m_Width+j] = lpI[(i-1)*dwWidthB+(j )] +
lpI[(i )*dwWidthB+(j-1)] +
lpI[(i )*dwWidthB+(j+1)] +
lpI[(i+1)*dwWidthB+(j )] 4*lpI[(i )*dwWidthB+(j )];
}
}
// borda superior
for(j=1;j<m_Width-1;j++)
lpL[
(
j)] = lpL[(
// borda inferior
for(j=1;j<m_Width-1;j++)
lpL[(m_Height-1)*m_Width+(
// borda esquerda
for(i=0;i<m_Height;i++)
lpL[(
i)*m_Width
1)*m_Width+(
j)];
j)] = lpL[(m_Height-2)*m_Width+(
] = lpL[(
i)*m_Width+(
// borda direita
for(i=0;i<m_Height;i++)
lpL[(
i)*m_Width+(m_Width-1)] = lpL[(
j)];
1)];
i)*m_Width+(m_Width-2)];
6
// inicializa as imagens B e N
for(i=0;i<m_TotalPixels;i++)
{
lpB[i]=255;
lpN[i]=0;
}
// aplica o tratamento de binarizacao
for(i=1;i<m_Height-1;i++)
{
for(j=1;j<m_Width-1;j++)
{
// para limiar em branco
// se laplaciano for menor que 0
if(lpL[i*m_Width+j]<0)
// entao pega a valor da imagem original
lpB[i*m_Width+j] = lpI[i*dwWidthB+j ];
else
// senao pega o valor da coluna anterior
lpB[i*m_Width+j] = lpB[i*m_Width +j-1];
}
}
// para limiar em preto
// se laplaciano for maior que 0
if(lpL[i*m_Width+j]>0)
// entao pega o valor da imagem original
lpN[i*m_Width+j] = lpI[i*dwWidthB+j ];
else
// senao pega o valor da coluna anterior
lpN[i*m_Width+j] = lpN[i*m_Width +j-1];
// calcula o limiar pela media dos valores locais
soma = 0;
pixels = 0;
for(i=1;i<m_Height-1;i++)
for(j=1;j<m_Width-1;j++)
{
soma += (lpN[i*m_Width+j] + lpB[i*m_Width+j])/2;
pixels++;
}
Limiar = (UINT) (soma/pixels);
// libera as imagens de trabalho
GlobalUnlock(Hnl);
GlobalUnlock(Hnb);
GlobalUnlock(Hnn);
GlobalFree(Hnl);
GlobalFree(Hnb);
GlobalFree(Hnn);
SetLimiar(Limiar);
AplicarLimiar();
ClockFinish("Limiarizacao por Ponderacao Laplaciana");
}
return TRUE;
Download

Técnica por Laplaciano de Chehikian