Hi Wade,
Besides channel extraction/combination, you can do this very easily with JavaScript. For example, this little script applies a gamma curve to the CIE L* component of the active image:
#include <pjsr/ColorSpace.jsh>
#include <pjsr/ImageOp.jsh>
function GammaToCIEL( image, gamma )
{
image.colorSpace = ColorSpace_CIELab;
image.pushSelections();
image.selectedChannel = 0; // CIE L*
image.apply( gamma, ImageOp_Pow );
image.popSelections();
image.colorSpace = ColorSpace_RGB;
}
function main()
{
let window = ImageWindow.activeWindow;
if ( window.isNull )
throw new Error( "No active image." );
window.currentView.beginProcess();
GammaToCIEL( window.currentView.image, 1.8 );
window.currentView.endProcess();
}
main();
Since the transformation is performed in a colorimetrically defined color space with lightness/color separation, color hues are preserved as far as the applied transformation does not generate out-of-gamut colors.
I think the script is pretty self-describing; let me know if you need more information.
New PixelMath functions to perform these tasks are also in the to-do list for a future version of the PixelMath tool (namely fromCIEXYZ(), fromCIELab() and fromCIELch()).