size(600, 600); PImage myImage = loadImage("input.jpg"); colorMode(RGB, 1.0); float[] w={0.0242979124172085, 0.974145663246175, 0.0829599914900766, -0.0347804059944083, 0.0975009361149797, -0.26305326156169, -0.0428469898944963, 0.0191707560142681, -0.00612339946564458, 0.0068507818266704, 0.975673496001818, 0.0188544963524508, -0.0276228859661246, 0.0154411314424653, -0.00229227685097862, -0.0526694996683543, 0.0193133372795335, -0.03332131594754, 0.039482660815525, 0.982617916402083, 0.0751145879377187}; int pixelcount = myImage.width*myImage.height; myImage.loadPixels(); for (int i = 0; i < pixelcount; i++) { color c = myImage.pixels[i]; float oldred=red(c); float oldgreen=green(c); float oldblue=blue(c); float newred = w[0] + oldred*w[1] + oldred*oldred*w[2] + oldgreen*w[3] + oldgreen*oldgreen*w[4] + oldblue*w[5] + oldblue*oldblue*w[6]; float newgreen = w[7] + oldred*w[8] + oldred*oldred*w[9] + oldgreen*w[10] + oldgreen*oldgreen*w[11] + oldblue*w[12] + oldblue*oldblue*w[13]; float newblue = w[14] + oldred*w[15] + oldred*oldred*w[16] + oldgreen*w[17] + oldgreen*oldgreen*w[18] + oldblue*w[19] + oldblue*oldblue*w[20]; myImage.pixels[i] = color(newred, newgreen, newblue); } myImage.updatePixels(); image(myImage, 0, 0); myImage.save("result.jpg");