public void doErosion()
{
Image img = canvas.getImgRecon();
Image tempImg = new Image(img.getWidth(), img.getHeight(), BufferedImage.TYPE_BYTE_GRAY);
WritableRaster cRaster = tempImg.getRaster();
if (img != null)
{
WritableRaster raster = img.getRaster();
int h = img.getHeight();
int w = img.getWidth();
for (int i = 0; i < w; i++) {
for (int j = 0; j < h; j++)
{
cRaster.setSample(i,j,0,this.getMin(i,j,w,h,raster));
}
}
this.canvas.imgRecon = tempImg;
}
}
public int getMin(int i, int j, int w, int h, WritableRaster raster)
{
int x,y;
int ero = Integer.MAX_VALUE;
for (int k = -1; k < 2; k++) {
for (int l = -1; l < 2; l++)
{ x = i + k;
y = j + l;
if (!(x >= 0 && x < w))
{
x = i - k;
}
if (!(y >= 0 && y < h))
{
y = j - l;
}
ero = Math.min(ero, raster.getSample(x,y,0));
}
}
return ero;
}