gamma correction - using MATLAB vs. using hardware settings

3 Ansichten (letzte 30 Tage)
André
André am 27 Mär. 2024
I have a 8-bit monitor (or 32-bit it we consider all colors and alpha).
Lets say I have a grayscale image, with colors I would like to plot.
However, I would like to gamma correct the image, so that the users view the plot in a linear scale.
img = uint8(0:255);
img_corrected = unique(round(im2uint8(im2double(img).^(1/2.2))));
length(img)
ans = 256
length(img_corrected)
ans = 184
As you can see, there is a problem here. The corrected colormap has less colors than the original colormap, because the non-linear gamma transformation compressess the dark colors, which are rounded to the same integers and lost. This is expected.
What I want to know, is if there is any way to avoid this problem.
I know my LCD monitor has a linear relationship between voltage and luminance, and the gamma is only applied for convenience and back compatibility with CRT monitors.
There are 3 ways I can perform the gamma correction, in my 8-bit monitor:
1 - The method I did here, using MATLAB to do the gamma correction, with the problem I mentioned.
2 - Use my monitor hardware configurations to change the gamma to 1.
3 - Use an external software to do the gamma correction, for example the NVIDIA control panel.
What I want to know is that, if I use options 2 or 3, I will suffer the same problem I mentioned here. If I change the gamma directly at the monitor settings, then I don't need to use that round operation anymore, because the relationship will now be linear inside MATLAB. So I should not lose those 74 colors. Or I am wrong? Can somone expert in the filed help me with this?

Antworten (0)

Kategorien

Mehr zu Particle & Nuclear Physics finden Sie in Help Center und File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by