Gamma校正的理解
来源:互联网 发布:python php 开发效率 编辑:程序博客网 时间:2024/04/28 01:16
总是会遇到Gamma校正的字眼,但是真的要说明究竟什么是Gamma校正,却很难说清楚,这便是这篇博客的由来。
为了说清楚,从解决疑问的方式入手:
1.什么是Gamma校正?(what)
2.为什么要进行Gamma校正?(why)
3.怎样进行Gamma校正?(how)
1.什么是Gamma校正?
Gamma源于早期的CRT显示器的响应曲线,也就是输出亮度和输入电压的非线性关系,如图所示:
图1 亮度和输入电压的非线性关系图
由图可以看出,亮度和输入电压的关系更加近似于指数函数 (output = input ^ gamma )的关系。事实确实如此,CRT显示器厂商都默认将gamma值设为2.5,也就是如上的曲线。这里的指数,也就是我们所讨论的gamma。
2.为什么要进行Gamma校正?
我们已经知道输出和输入的非线性关系为指数函数 output = input ^ gamma,考虑指数函数的性质:
图2 指数函数性质
由图2可以看出,蓝色曲线对应指数gamma < 1,红色曲线对应指数gamma > 1,考虑一副图像,纵轴代表图像的亮度值,横轴代表自变量区间,当gamma > 1 时,随着gamma的变大,高光区对应的自变量区间逐渐变小,而低光区对应的自变量区间逐渐变大;相反,当gamma < 1 时,随着gamma的变小,高光区对应的自变量区间逐渐变大,而低光区对应的自变量区间逐渐变小。概括起来就是:gamma矫正的值大于1时,图像的高光部分被压缩而暗调部分被扩展,当gamma矫正的值小于1时,图像的高光部分被扩展而暗调部分被压缩。
至此,我们知道,通过调节gamma值,我们可以针对性地控制高光区或者低光区的显示细节(表现为:gamma > 1时,低光区被扩展高光区被压缩。表现为“越来越灰暗”,gamma < 1 是,低光区压缩而高光区扩展,表现为“越来越明亮”)。所以,我们可以根据图像的具体情况,选择合适的gamma值对图像进行校正,提升图像的显示细节。
3.怎么样进行Gamma校正?
根据Gamma校正公式 output = input ^ gamma,用MatLab做三组实验,分别对应着
(1)gamma = 0.4; (2)gamma = 1.0 ; (3) gamma = 1.8;
代码:
%Gamma校正clear all;img = imread('lena.jpg');%读入图像img = rgb2gray(img);%转成灰度图,即将[0,255]转成[0,1]imgGamma_0_4 = imadjust(img,[],[],0.4);%此处gamma = 0.4figure,imshow(imgGamma_0_4),title('gamma = 0.4');imgGamma_1_0 = imadjust(img,[],[],1.0);%此处gamma = 1.0figure,imshow(imgGamma_1_0),title('gamma = 1.0');imgGamma_1_8 = imadjust(img,[],[],1.8);%此处gamma = 1.8figure,imshow(imgGamma_1_8),title('gamma = 1.8');
实验结果:
gamma = 0.4 gamma = 1.0 gamma = 1.8
这里引用一下http://www.cnblogs.com/zhz3996/archive/2010/01/26/1657090.html的例子:
当遇到如下所示的图例:
图3 原始图像
对于这种图像,衣服的颜色属于高光区,难以看清纹理,就是因为高光区被压缩,如果想要看清衣服的纹理(不要邪恶。。。),那么自然想到扩展高光区,根据前面所讲的,那就是将gamma值调小,从而将高光区进行扩展,可以得到如下结果:
图4 Gamma校正后的结果
总结:
通过这样的处理,明显看到衣服的纹理更加清晰。所以Gamma校正就是这样操作的,根据具体情况选择合适的gamma值。
参考:
1.http://www.cnblogs.com/zhz3996/archive/2010/01/26/1657090.html(写得很好很详细)
2.http://blog.csdn.net/love_xunmeng/article/details/8274400
3.http://www2.xitek.com/info/showarticle.php?id=2521
- Gamma校正的理解
- 理解gamma校正
- 【图形学】我理解的伽马校正(Gamma Correction)
- gamma 校正理解及python实现
- gamma校正
- Gamma校正
- Gamma 校正
- gamma校正
- Gamma 校正
- Gamma 校正
- Gamma 校正
- Gamma校正
- gamma校正
- Gamma校正
- Gamma 校正
- 【数字图像处理】图像的gamma校正
- Gamma的完全理解
- Gamma校正问题
- poj3026--Borg Maze
- QEMU 与QEMU-KVM区别
- IP地址与子网划分讲解
- C++ Primer 复制控制
- 单例模式
- Gamma校正的理解
- Android自定义View(一)
- YII Active Record 详细解说
- oracle分页查询
- session的定义与使用
- 15.2
- 拓扑排序
- centOS 无线网卡驱动 安装 配置
- POJ 3254 Corn Fields