rendered paste bodyimport java.awt.image.BufferedImage;
public class DilationOperator extends Operator
{
public ImageCanv performOperator(ImageCanv canvasLeft)
{
double [][] kernel ;
kernel = new double [3][3];
kernel[0][0]=(double)0; kernel[1][0]=(double)1; kernel[2][0]=(double)0;
kernel[0][1]=(double)1; kernel[1][1]=(double)1; kernel[2][1]=(double)1;
kernel[0][2]=(double)0; kernel[1][2]=(double)1; kernel[2][2]=(double)0;
int canvasWidth = canvasLeft.schets.bitmap.getWidth();
int canvasHeight = canvasLeft.schets.bitmap.getHeight();
BufferedImage newImage = new BufferedImage(canvasLeft.schets.bitmap.getWidth(), canvasLeft.schets.bitmap.getHeight(), BufferedImage.TYPE_BYTE_GRAY );
ImageCanv oldImage = new ImageCanv();
oldImage=canvasLeft;
//For all pixels
double min=255;
//for(int x=1; x<15 ; x++)
for(int y=1; y<canvasHeight-1; y++)
{
//for(int y=1; y<2 ; y++)
for(int x=1; x< canvasWidth-1; x++)
{
for(int kx =0; kx<3 ; kx++)
{
for(int ky = 0; ky<3; ky++)
{
double convolutionValue = kernel[kx][ky]*(double)oldImage.schets.bitmap.getRaster().getSample((int)(x+kx-1),(int)(y+ky-1),0);
//System.out.println("convolutionValue" + x + "," + y + "=" + convolutionValue);
//System.out.println("EchteValue = " + (double)oldImage.getRaster().getSample((int)(x+kx-1),(int)(y+ky-1),0));
if(kernel[kx][ky]!= 0 && min > convolutionValue)
{
min = convolutionValue;
// System.out.println("min" + min);
}
convolutionValue=255;
}
}
//System.out.println("kernel klaar. xy =" +x +","+y+" min=" + min);
newImage.getRaster().setSample(x, y, 0, min);
min = 255;
//System.out.println("min na reset"+ min);
}
// System.out.println("min naar volgende x = " + min);
}
canvasLeft.schets.bitmap = newImage;
return canvasLeft;
}
}