javaでぼかし(blur)

Java2Dではどこにでもサンプルがあるように簡単にぼかしが可能でした。
でも、いざ実際に使ってみると、端だけなぜか処理が変で、使えなかったので、実用的に修正してみました。
欠点は、もとより画面サイズが縦横ともに、blurのサイズの2倍になりますが、元のまだらぼかしに、絶望したらこのやり方もありだと思います。

public static BufferedImage getBluredImage(BufferedImage image,int size){
float[] elements = new float[size*size];
float v=1.0f/elements.length;
for (int i = 0; i < elements.length; i++) {
elements[i]=v;
}
BufferedImage base=new BufferedImage(image.getWidth()+size*2,image.getHeight()+size*2,BufferedImage.TYPE_INT_RGB);
base.getGraphics().drawImage(image,size,size,null);
//copy w
base.getGraphics().copyArea(size, size, size, image.getHeight(), -size, 0);
base.getGraphics().copyArea(image.getWidth()+size-size, size, size, image.getHeight(), size, 0);
//copy h
base.getGraphics().copyArea(0, size, image.getWidth()+size*2, size, 0, -size);
base.getGraphics().copyArea(0, image.getHeight()+size-size, image.getWidth()+size*2, size, 0, size);

BufferedImage bimg = new BufferedImage(image.getWidth()+size*2,image.getHeight()+size*2,BufferedImage.TYPE_INT_RGB);
Kernel kernel = new Kernel(size, size, elements);
ConvolveOp cop = new ConvolveOp(kernel, ConvolveOp.EDGE_NO_OP, null); //ConvolveOp.EDGE_ZERO_FILL is just black
cop.filter(base,bimg);

return bimg;
}