gamma correction - using MATLAB vs. using hardware settings

조회 수: 3 (최근 30일)
André
André 2024년 3월 27일
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?

답변 (0개)

카테고리

Help CenterFile Exchange에서 Particle & Nuclear Physics에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by