You may want to consider a commercial library such as the Leadtools SDK. It supports 16bpp color or extended grayscale and even 32, 48, and 64bpp images. Image processing commands for color correction, such as L_HistoEqualizeBitmap and L_TemperatureBitmap are available in C and C++ which you can access in Python using bindings. Just as a disclaimer, I work for this vendor.
https://www.leadtools.com/help/sdk/v21/main/api/l-histoequalizebitmap.html
https://www.leadtools.com/help/sdk/v21/main/api/l-temperaturebitmap.html
Here's some sample code in C:
BITMAPHANDLE bitmap1;
BITMAPHANDLE bitmap2;
L_LoadBitmap("C:\temp\inputImage1.png", &bitmap1, sizeof(BITMAPHANDLE), 0, ORDER_BGR, NULL, NULL);
L_TemperatureBitmap(&bitmap2, -200, 0);
L_SaveBitmap("C:\temp\outputImage1.png", &bitmap1, FILE_PNG, 24, 0, NULL);
L_LoadBitmap("C:\temp\inputImage2.png", &bitmap2, sizeof(BITMAPHANDLE), 0, ORDER_BGR, NULL, NULL);
L_HistoEqualizeBitmap(&bitmap2, RGB_SPACE);
L_SaveBitmap("C:\temp\outputImage2.png", &bitmap2, FILE_PNG, 24, 0, NULL);