1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
|
public class Convolve implements Filter
{
private float[][] convolve;
public Convolve(float[][] matrix){
this.convolve = matrix;
}
@Override
public BufferedImage perform(BufferedImage img)
{
BufferedImage res = new BufferedImage(img.getWidth(), img.getHeight(), img.getType());
//BufferedImage op = new ConvolveOp(new Kernel(3, 3, convolve)).filter(img, res);
for (int i = 1; i < img.getWidth() - 1; i++)
for (int j = 1; j < img.getHeight() - 1; j++) {
double pix = img.getRGB(i, j) * convolve[1][1] + img.getRGB(i, j+1) * convolve[1][2] +
img.getRGB(i, j-1) * convolve[1][0] + img.getRGB(i-1, j) * convolve[0][1] +
img.getRGB(i-1, j+1) * convolve[0][2] + img.getRGB(i-1, j-1) * convolve[0][0] +
img.getRGB(i+1, j) * convolve[2][1] + img.getRGB(i+1, j+1) * convolve[2][2] +
img.getRGB(i+1, j-1) * convolve[2][0];
res.setRGB(i, j, (int)pix);
}
return res;
} |
Partager