Matlab-通过循环创建子图显示不同γ值的γ校正结果


由于数字显示设备的非线性转换特征,使得图像的显示与原始场景相比较而言发生偏暗或偏亮的现象,这个时候就可以采用γ校正进行处理,使图像的显示等于或接近原始场景。

一、imadjust函数调整图像对比度

在Matlab中可以通过函数 J = imadjust(I, [low_in high_in], [low_out high_out], gamma) 实现对图像的Gamma校正。

[low_in high_in]:输入图像的对比度范围,默认为[0 1]。

[low_out high_out]:输出图像的对比度范围,默认为[0 1]。

gamma:描述输入和输出值关系的曲线形状,默认为1。

二、代码实现循环创建子图显示不同γ值的γ校正结果

%% Gamma校正
P = imread('light.jpg');% 偏亮的图像
% P = imread('dark.jpg');偏暗的图像
Pg = rgb2gray(P);

C = cell(1,5);  %创建元胞数组
C{1,1} = imadjust(Pg, [0 1], [0 1], 1);
C{1,2} = imadjust(Pg, [0 1], [0 1], 2);
C{1,3} = imadjust(Pg, [0 1], [0 1], 0.5);
C{1,4} = imadjust(Pg, [0 1], [0 1], 4);
C{1,5} = imadjust(Pg, [0 1], [0 1], 0.25);

a = {'Gamma=1', 'Gamma=2', 'Gamma=1/2', 'Gamma=4', 'Gamma=1/4'};

for i = 1:5
    subplot(2,5,i); imshow(C{1,i}); title(a{i});
    subplot(2,5,i+5); imhist(C{1,i});
end

结果如下: