Removing Watermark with Java using Pixel Color proximity

I had to replace watermark from the image below,

334-1104-asnStep 1. Create the area to replace i created this image using photoshop,

alfa

Here is the complete code,

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FilenameFilter;
import javax.imageio.IIOImage;
import javax.imageio.ImageIO;
import javax.imageio.ImageWriteParam;
import javax.imageio.stream.FileImageOutputStream;
import com.sun.imageio.plugins.jpeg.JPEGImageWriter;

public class Main {
    public static void main(String[] args) throws Exception {
        new Main().execute();
    }

    private void execute() throws Exception {
        init();

        new File("c:\\src\\").list(new FilenameFilter() {

            @Override
            public boolean accept(File dir, String name) {
                filter(new File("c:\\src\\" + name), new File("c:\\src\\removed\\" + name));
                return false;
            }
        });
    }

    public void filter(File src, File dest) {
        try {
            BufferedImage img = ImageIO.read(src);

            int[] rgbArray = new int[420 * 420];
            img.getRGB(0, 0, 420, 420, rgbArray, 0, 420);

            BufferedImage finalImage = new BufferedImage(420, 420, BufferedImage.TYPE_INT_RGB);

            for (int i = 0; i < rgbArray.length; i++) {

                if (findProximity(rgbArray[i], watermarkPx[i])) {
                    rgbArray[i] = 0xffffff;
                }

            }

            finalImage.setRGB(0, 0, 420, 420, rgbArray, 0, 420);

            JPEGImageWriter writer = (JPEGImageWriter) ImageIO.getImageWritersByFormatName("jpeg").next();
            ImageWriteParam iwp = writer.getDefaultWriteParam();
            iwp.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
            iwp.setCompressionQuality(1);

            FileImageOutputStream output = new FileImageOutputStream(dest);
            writer.setOutput(output);
            IIOImage iimage = new IIOImage(finalImage, null, null);

            writer.write(null, iimage, iwp);
            writer.reset();
        } catch (Exception e) {
            // TODO: handle exception
        }

    }

    private boolean findProximity(int rgb1, int rgb2) {
        int r1 = (rgb1 >> 16 ) &     0xff;
        int g1 = (rgb1 >> 8 ) &     0xff;
        int b1 = (rgb1) &      0xff;

        int r2 = (rgb2 >> 16 )    &    0xff;
        int g2 = (rgb2 >> 8 )    &    0xff;
        int b2 = (rgb2 ) &     0xff;

        int r = Math.abs(r1 - r2);
        int g = Math.abs(g1 - g2);
        int b = Math.abs(b1 - b2);

        int k = 20;
        return (r < k) && (b < k) && (g < k);

    }

    private int[] watermarkPx = new int[420 * 420];

    private void init() throws Exception {
        BufferedImage watermark = ImageIO.read(new File("green-alfa.jpg"));
        watermark.getRGB(0, 0, 420, 420, watermarkPx, 0, 420);
    }

}

Here is the result,

334-1104-asn