//Perform Gamma Transform on LUTs //Version 1: Support Grays LUT only, John Lim, IMB, 20 March 2012 //Version 2: Support Linear LUTs only, John Lim, IMB, 27 March 2012 //Version 3: Support both linear and non-linear LUTs, John Lim, IMB, 2 April 2012 Input=newArray(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255); LUTs=newArray("Grays","Red","Green","Blue","Cyan","Magenta","Yellow","1 Meta_M"); Output=newArray(256); //Create Dialog Dialog.create("Gamma LUT Transform"); Dialog.addChoice("Transform", LUTs); Dialog.addNumber("Gamma", 0.7); Dialog.addCheckbox("Plot Output LUT vs Input LUT", false) Dialog.show(); LUT=Dialog.getChoice(); power=Dialog.getNumber(); plot=Dialog.getCheckbox(); resetMinAndMax; run(LUT); getLut(Reds, Greens, Blues); for(i=0;i<256;i++){ Output[i]=pow(Input[i],power); } scale=255/Output[255]; for(i=0;i<256;i++){ Output[i]=round(Output[i]*scale); //Limit the ouput to 8bit range if(Output[i]<0){ Output[i]=0; } if(Output[i]>255){ Output[i]=255; } } New_Reds=newArray(256); New_Greens=newArray(256); New_Blues=newArray(256); for(i=0;i<256;i++){ j=Output[i]; New_Reds[i]=Reds[j]; New_Greens[i]=Greens[j]; New_Blues[i]=Blues[j]; } setLut(New_Reds, New_Greens, New_Blues); if (plot==true){ Plot.create("Gamma LUT Transform", "Input LUT", "Output LUT", Output); }