Estoy leyendo DIP 2nd edition de Gonzalez and Woods y trato de ensuciarme las manos con la máscara Laplacian (página 129 & 130) usando wxImage.implementar laplacian 3x3
float kernel [3][3]= {{1, 1, 1},{1,-8, 1},{1, 1, 1}};
aquí es los bucles de procesamiento:
unsigned char r,g,b;
float rtotal, gtotal, btotal; rtotal = gtotal = btotal = 0.0;
//ignore the border pixel
for(int i = 1; i<imgWidth-1; i++)
{
for(int j = 1; j<imgHeight-1; j++)
{
rtotal = gtotal=btotal =0.0;
for(int y = -1; y<=1;y++)
{
for(int x = -1; x<=1;x++)
{
// get each channel pixel value
r = Image->GetRed(i+y,j+x);
g = Image->GetGreen(i+y,j+x);
b = Image->GetBlue(i+y,j+x);
// calculate each channel surrouding neighbour pixel value base
rtotal += r* kernel[y+1][x+1];
gtotal += g* kernel[y+1][x+1] ;
btotal += b* kernel[y+1][x+1];
}
}
//edit1: here is how to sharpen the image
// original pixel - (0.2 * the sum of pixel neighbour)
rtotal = loadedImage->GetRed(x,y) - 0.2*rtotal;
gtotal = loadedImage->GetGreen(x,y) - 0.2*gtotal;
btotal = loadedImage->GetBlue(x,y) - 0.2*btotal;
// range checking
if (rtotal >255) rtotal = 255;
else if (rtotal <0) rtotal = 0;
if(btotal>255) btotal = 255;
else if(btotal < 0) btotal = 0;
if(gtotal > 255) gtotal = 255;
else if (gtotal < 0) gtotal =0;
// commit new pixel value
Image->SetRGB(i,j, rtotal, gtotal, btotal);
que aplica a la imagen que Polo Norte (imagen gris) y todo lo que consigo es una gota de píxeles blancos y negros!
¿Alguna idea de dónde puedo haber perdido algo en los bucles for?
Edit1: Finalmente obtiene la respuesta después de buscar en Google. ¡Este dsp es definitivamente complicado! Añadí al código anterior, se agudizará la imagen. ¿No se supone que
Saludos
Esta sería una buena pregunta para dsp.stackexchange.com – Dima