Il primo metodo di successo che ho trovato per fare lo stesso tipo di cose è stato quello di usare ImageMagick, ma con un operatore diverso da quello suggerito in precedenza —separato/-swap.
L'operatore diverso è o -recolor o -color-matrix, a seconda della versione di ImageMagick.
In particolare, poiché conoscevo un “colore master” dell'immagine originale (verde, nel vostro caso e nel mio) e conoscevo il “colore master” nell'immagine del risultato desiderato (blu, nel vostro caso, arancione nel mio), ho dato all'opzione -recolor/-color-matrix di ImageMagick’ una matrice di trasformazione con valori che riflettevano le differenze in ciascuno dei canali RGB.
Per esempio, nel mio caso, il colore completamente verde era R:141 G:198 B:63 e volevo che fosse cambiato in R:231 G:159 B:70. Il resto dei colori voleva essere cambiato in modo equivalente.
Ciò significa che volevo che il valore R dei nuovi pixel fosse 231/141esimo del valore attuale del rosso. I valori del verde dovevano essere 159/198 dei valori attuali. E i valori del blu dovevano essere 63/70 dei valori attuali.
Quindi:
convert input.png -recolor "1.638297872 0 0 0 0.803030303 0 0 0 1.111111111" output.png
o
convert input.png -color-matrix "1.638297872 0 0 0 0.803030303 0 0 0 1.111111111" output.png
o
Questo sembrava funzionare in un lampo dopo aver passato molto tempo a lottare inutilmente con Gimp/plugins e paint.net/plugins.