El primer método exitoso que encontré para hacer el mismo tipo de cosas fue usar ImageMagick, pero con un operador diferente al anteriormente sugerido -separar/intercambiar.
El operador diferente es -recolor o -color-matriz, dependiendo de la versión de ImageMagick.
Específicamente, porque conocía un “color maestro” de la imagen original (verde, en tu caso y en el mío) y conocía el “color maestro” de la imagen resultante deseada (azul, en tu caso, naranja en el mío), le di a la opción -recolor/-matriz de color de ImageMagick una matriz de transformación con valores que reflejaban las diferencias en cada uno de los canales RGB.
Por ejemplo, en mi caso, el color totalmente verde era R:141 G:198 B:63 y quería que se cambiara a R:231 G:159 B:70. El resto de los colores querían ser cambiados de forma equivalente.
Eso significa que quería que el valor R de los nuevos píxeles fuera 231/141 del valor rojo actual. El valor del verde sería 159/198 del valor actual. Y el valor del azul es 63/70 de los valores actuales.
Entonces:
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
Esto parecía funcionar en un instante después de pasar mucho tiempo luchando con Gimp/plugins y paint.net/plugins.