Kernel Border - neoneper/ClassProg3D1 GitHub Wiki
DETECTANDO BORDAS COM A CONVOLUÇÃO DE KERNEL
Inicializando objeto que me permite trabalhar com convolução e efeitos visuais na imagem origem:
BufferedImageOperation imageOperation = new BufferedImageOperation();
Carregando imagem para manipulação:
BufferedImage inImage = ImageIO.read(new File( "metroid.jpg"));
Criando imagem e aplicando kernel de borda Prewitt:
BufferedImage outImage = imageOperation.Convolve(inImage, BufferedImageOperationType.PREWITT);
Salvando nova Imagem:
ImageIO.write(outImage, "jpg",new File("metroid_prewitt.jpg"));
Observe na imagem abaixo todos os metodos até o momento de detecção de bordas disponíveis para o metodo Convolve.
Note: Você também pode utilizar um Kernel customizado, apenas passando o kernel como parâmetro da função Convolve, Ex:
Criando Kernel, array 2D 3x3 contendo os valores de manipulação de pixels.
private static final float[][] Kernel_BoxBlur = //Kernel 3x3
{
{1.0f / 9.0f, 1.0f / 9.0f, 1.0f / 9.0f},
{1.0f / 9.0f, 1.0f / 9.0f, 1.0f / 9.0f},
{1.0f / 9.0f, 1.0f / 9.0f, 1.0f / 9.0f},
}
Aplicando Kernel customizado à imagem de destino:
BufferedImage outImage = imageOperation.Convolve(inImage, Kernel_BoxBlur );