Se permetti, io cambierei un po' approccio, visto che tra l'altro hai la possibilità di usare BufferedImage... conviene sfruttarne appieno alcune potenzialità.
In particolare, facciamo finta che
Buffered img1, img2 siano i BufferedImage che contengono i due spezzoni di immagine, che il confronto con i bordi sia andato a buon fine e che quindi sia possibile concatenare le due immagini, con img1 a sinistra e img2 a destra (ossia il bordo EST di im1 combacia con il bordo OVEST di img2).
codice:
//Creiamo un BufferedImage adatto a contenere i due spezzoni, quindi sarà
//largo come la somma delle larghezze di img1 e img2 e alto
//come l'altezza di qualsiasi delle due immagini, con lo stesso TYPE
BufferedImage destimage = new BufferedImage(img1.getWidth()+img2.getWidth(), img1.getHeight(), img1.getType());
//Andiamo a prendere il WritableRaster collegato a destimage: questo ci consente
//di accedere rapidamente a qualsiasi area della destimage per andarvi a scrivere
//i dati provenienti da img1 e img2
WritableRaster wr = destimage.getRaster();
//quindi scriviamo i dati a partire dall'angolo in alto a sx (per img1)
wr.setDataElements(0, 0, img1.getData());
//saltiamo un rettangolo di larghezza opportuna (ossia della larghezza di img1)
//e scriviamo i dati relativi ad img2
wr.setDataElements(img1.getWidth(), 0, img2.getData());
//non ci resta che farne il display: per comodità schiaffo destimage in
//un JLabel che utilizzo nella mia interfaccia grafica...
JLabel label = new JLabel(new ImageIcon(destimage));
//si può anche sovrascivere paintComponent e settare
//destimage come background di un JPanel... cerca nel forum per questa
//seconda soluzione.