图像处理中GAMMA校正的研究和实现

合集下载

gamma校正 电流

gamma校正 电流

gamma校正电流
Gamma校正是一种用于调整图像或视频信号的非线性校正方法,它通过改变输入信号的强度或对比度来纠正显示设备或图像处理系统的非线性失真。

在电流应用中,Gamma校正通常用于调节LED显示屏的亮度和色温。

通过调整LED驱动电流的大小,可以改变每个像素点的亮度,从而实现对整个显示屏亮度和色温的精细控制。

在LED显示屏中,Gamma校正通常通过以下步骤实现:
1、测量原始亮度:使用测量设备(如亮度计)测量LED显示屏在各个驱动电流下的亮度值。

2、建立亮度-电流曲线:将测量得到的亮度值与对应的驱动电流值绘制成曲线,得到原始的亮度-电流曲线。

3、计算Gamma值:根据需要校正的亮度和原始亮度的差异,计算出所需的Gamma值。

4、应用Gamma校正:在LED显示屏的驱动电路中应用Gamma校正,通过改变驱动电流的大小来实现亮度的非线性调整。

5、测试校正效果:使用测量设备再次测量校正后的亮度值,确保满足要求。

通过应用Gamma校正,可以纠正LED显示屏的亮度非线性失真,提高图像的对比度和色彩还原度,使显示效果更加逼真和细腻。

同时,Gamma校正还可以延长LED显示屏的使用寿命,提高能效和节省能源。

gamma校正算法灰度值

gamma校正算法灰度值

gamma校正算法灰度值
Gamma校正是一种非线性操作,用于调整图像的灰度值,使其更符合人眼的视觉特性。

在数字图像处理中,Gamma校正通常用于改善图像的对比度和亮度,使得图像看起来更加自然和舒适。

Gamma校正的原理是基于人眼对亮度的感知是非线性的,即人眼对亮度的感知随着亮度的增加而加速增加,随着亮度的减小而减缓减小。

因此,通过将图像的灰度值进行非线性变换,可以更好地匹配人眼的感知特性,提高图像的可视效果。

在数学上,Gamma校正通常使用以下公式实现:
O=I^gamma
其中 O 是校正后的灰度值,I 是原始灰度值,gamma 是校正系数。

当gamma 大于 1 时,图像的对比度会增强,当 gamma 小于 1 时,图像的
对比度会降低。

在实现上,通常需要将输入的灰度值进行映射变换,以得到校正后的灰度值。

这个映射关系可以用一个曲线来表示,这个曲线就是Gamma校正曲线。

Gamma校正的方法有很多种,包括简单的幂函数、分段函数、多项式函数等。

不同的方法可以适用于不同的场景和需求,需要根据具体情况选择适合的方法。

图像格式入门色彩配对与Gamma值校正

图像格式入门色彩配对与Gamma值校正

图像格式入门:色彩配对与Gamma值校正直线网色彩配对与 Gamma 值校正我们在处理RGB的图像时经常遭遇到一个非常令人讨厌的问题,那就是色彩的准确度问题。

RG 图像往往会因为搭配的硬件有所不同而出现不一致的结果。

所以经常出现的问题就是--在某一操作台所制作的图像到了另外一台机器上看就不是那么回事了。

例如,一张在 PC 上制作出的杰作移到MAC上浏览就变得灰灰白白的甚至有点褪色的样子。

这个问题是因为并非所有的显示器都是一个样的,常常会因为显示器摆放位置周围的以及亮度调整值不同而无法一致。

但是RGB 各数值与实际屏幕屏幕上所显示的色彩几乎是一模一样的。

例我们将红色频设置为 200 时,理论上应该就会比红色频设置为 100 时看来明亮 2 倍,但实际上如此。

而实际影响这种结果的因素,我们称他为gamma。

每一台电脑的 gamma 值都不尽相同,因使某一个色彩能够吻合,但是其余的色彩却?有办法对应。

以下的图像就是我模拟不同的 gamma 值在 PC 和在MAC上的影响:(图七 PC)(图八 MAC)色彩管理对于许多电脑周边设备来说也是一道难题。

例如在MAC上所使用的是一种叫做图像处软件--ColorSync 的?建式色彩配对系统,而数码相机、扫描仪和打印机所使用的色彩管理系统则--Pantone Matching System,它会直接将色彩原封不动的传到这些硬件上。

那么在网页上的图像如何做色彩管理呢?这恐怕难度更高了,这是和每个使用者的所使用的显示器设置有关。

不过倒也是没有办法,你可以试试 gamma 校正的方式。

你可以将特定的 gamma 值放入图像中,那么当使用打开图像的时候,使用者所安装的相关工具就可以完成对 gamma 值的校正,并且调整使用者的显色彩曲线,使得完整的原始图像能够准确地表现出来。

但是非常遗憾的是目前最欢迎迎且流通最广泛的图像格式并不支持 gamma 值的校正。

可以预是在网络非常发达的今天,使用者对于网络上视觉所见的每个物品的真实度的要求只会越来越迫切特?是对于某些从网上服装、化妆品以及艺术品销售的公司来说,色彩的表现是否适当而准确更是常重要的一个课题。

Gamma校正及其实现

Gamma校正及其实现

Gamma校正及其实现图2中左图为原图,中图为gamma = 1/2.2在校正结果,原图中左半侧的灰度值较⾼,右半侧的灰度值较低,经过gamma = 1/2.2校正后(中图),左侧的对⽐度降低(见胡须),右侧在对⽐度提⾼(明显可以看清⾯容),同时图像在的整体灰度值提⾼。

右图为gamma = 2.2在校正结果,校正后,左侧的对⽐度提⾼(见胡须),右侧在对⽐度降低(⾯容更不清楚了),同时图像在的整体灰度值降低。

值得⼀提的是,⼈眼是按照gamma < 1的曲线对输⼊图像进⾏处理的。

参考资料:[1] /wiki/Gamma_correction[2] /tutorials/gamma-correction.htm[3] https:///bytefish/opencv/blob/master/misc/tan_triggs.cpp代码:[cpp] view plain copy1. #include <opencv2/core/core.hpp>2. #include <opencv2/imgproc/imgproc.hpp>3. #include <opencv2/highgui/highgui.hpp>4.5. #include <iostream>6.7. using namespace cv;8. using namespace std;9.10. // Normalizes a given image into a value range between 0 and 255.11. Mat norm_0_255(const Mat& src) {12. // Create and return normalized image:13. Mat dst;14. switch(src.channels()) {15. case 1:16. cv::normalize(src, dst, 0, 255, NORM_MINMAX, CV_8UC1);17. break;18. case 3:19. cv::normalize(src, dst, 0, 255, NORM_MINMAX, CV_8UC3);20. break;21. default:22. src.copyTo(dst);23. break;24. }25. return dst;26. }27.28. int main(int argc, const char *argv[]) {29. // Get filename to the source image:30. if (argc != 2) {31. cout << "usage: " << argv[0] << " <image.ext>" << endl;32. exit(1);33. }34. // Load image & get skin proportions:35. //Mat image = imread(argv[1], CV_LOAD_IMAGE_GRAYSCALE);36. Mat image = imread(argv[1], CV_LOAD_IMAGE_COLOR);37. // Convert to floating point:38. Mat X;39. image.convertTo(X, CV_32FC1);40. //image.convertTo(X, CV_32F);41. // Start preprocessing:42. Mat I;43. float gamma = 1/2.2;44. pow(X, gamma, I);45.46.47. // Draw it on screen:48. imshow("Original Image", image);49. imshow("Gamma correction image", norm_0_255(I));50. //imwrite("origin.jpg", image);51. imwrite("gamma_inv2.2.jpg", norm_0_255(I));52. // Show the images:53. waitKey(0);54. // Success!55. return 0;56. }。

emgucv gamma校正公式

emgucv gamma校正公式

emgucv gamma校正公式Emgucv中的gamma校正公式呀,这可有点小有趣呢。

gamma校正呢,在图像处理里是个挺重要的东西。

咱们先来说说gamma校正的基本概念哈。

简单来讲呢,它就是一种对图像亮度进行非线性调整的方法。

就好像是给图像的亮度来一场独特的变身派对。

在Emgucv里,gamma校正公式有着它独特的形式和作用。

一般来说,gamma校正的基本公式可以表示为这样:输出像素值 = 输入像素值的(1 / gamma)次方。

这里的gamma呢,是一个可以调整的参数哦。

当gamma大于1的时候,图像会变得更暗一些,就像是给图像拉上了一层稍微厚一点的窗帘,让光线透进来得少一点。

比如说,原本很亮的一些部分呢,经过这样的校正,就不会那么刺眼啦。

而当gamma小于1的时候呢,图像就会变得更亮,就像是给图像打了个小灯光,把那些原本暗暗的角落都照亮一些。

那在Emgucv里怎么具体运用这个公式呢?这就涉及到代码实现啦。

在Emgucv的库里面,有一些函数和方法可以帮助我们来运用这个gamma校正公式。

我们要先把图像读进来呀,就像是把一幅画从画框里拿出来放到我们面前一样。

然后呢,根据这个公式去对图像的每个像素进行处理。

这个过程就像是我们拿着小刷子,一个像素一个像素地给图像做调整呢。

这个gamma校正呀,在很多实际的应用场景里都超级有用。

比如说在医学图像的处理中,如果图像太亮或者太暗,可能会影响医生对病情的判断。

这个时候gamma校正就可以大显身手啦。

它可以把图像的亮度调整到一个合适的范围,让医生能够更清楚地看到那些重要的细节,就像是给医生戴上了一副能看清所有微小之处的神奇眼镜。

再比如说在一些监控视频的处理中,如果夜晚的视频太暗了,用gamma校正就可以让画面变亮一点,这样保安叔叔就能更清楚地看到有没有可疑的人或者东西啦。

而且呀,gamma校正还有助于提高图像的视觉效果。

有些艺术照片或者广告图片,为了营造出特定的氛围,就可以通过调整gamma值来让图片看起来更有感觉。

伽马校正GammaCorrection

伽马校正GammaCorrection

伽马校正GammaCorrection⼀. 伽马校正简介:伽马校正⽤来对照相机等电⼦设备传感器的⾮线性光电转换特性进⾏校正。

如果图像原样显⽰在显⽰器等上,画⾯就会显得很暗。

伽马校正通过预先增⼤ RGB 的值来排除影响,达到对图像校正的⽬的。

伽马校正做了什么↑⼆. 伽马校正算法:⾮线性变换是由下式引起的,其中I_in和I_out 被归⼀化,限定在 [0,1] 范围内,c是常数,g为伽马变量,通常取 2.2。

该式引起⾮线性变换↑我们只需要进⾏上⾯⾮线性变换的逆变换就可以进⾏伽马校正了,伽马校正式⼦如下:伽马校正算法↑三. 伽马校正python实现,其中c=1,g=2.21import cv22import numpy as np3import matplotlib.pyplot as plt45# gamma correction6def gamma_correction(img, c=1, g=2.2):7 out = img.copy()8 out /= 255.9 out = (1/c * out) ** (1/g)1011 out *= 25512 out = out.astype(np.uint8)1314return out1516# Read image17 img = cv2.imread("../paojie.jpg").astype(np.float)18# Gammma correction19 out = gamma_correction(img)20# Save result21 cv2.imshow("result", out)22 cv2.imwrite("out.jpg", out)23 cv2.waitKey(0)24 cv2.destroyAllWindows()四. 实验结果:原图↑伽马校正后↑说⽩了,照相机等电⼦设备传感器在成像时会使得图像变暗,变得不真实,我们采⽤伽马校正来校正图像,使得图像明亮真实。

gamma校正方法

gamma校正方法gamma校正啊,这可是个挺有趣的东西呢。

你可以把gamma校正想象成是给图像或者显示内容化个妆。

在我们的数字世界里,图像的颜色和亮度如果不经过处理,有时候看起来就会很奇怪。

比如说,可能会太暗或者颜色对比度过高,就像一个人穿了超级夸张的衣服,看着很不协调。

gamma校正就是来调整这个的。

它主要是对图像的亮度进行一种非线性的调整。

简单来说呢,就是改变图像中不同亮度值的分布。

如果gamma值大于1,那图像就会变得更暗一些,就像是给图像戴了个深色的滤镜。

而如果gamma值小于1呢,图像就会变亮,就像开了个小灯照着一样。

在实际应用里呀,gamma校正可太有用啦。

在我们的电脑屏幕或者手机屏幕上,要是没有gamma校正,那显示出来的画面可能就不是设计师想要的效果。

比如说,游戏画面如果没有正确的gamma校正,那些黑暗的场景可能就黑成一片,啥都看不见,你就没法好好玩游戏啦。

电影也是一样,要是gamma不对,色彩和明暗就不对劲儿,就像看一场被搞砸了色调的电影,多扫兴呀。

那这个gamma校正具体是怎么做到的呢?其实是通过一个数学公式啦。

不过你不用太担心这个复杂的公式,只要知道它能把输入的亮度值按照一定的规则转化成输出的亮度值就好。

就像是把一些不听话的小朋友(亮度值)按照一定的规矩排好队,让整个画面看起来更和谐。

对于一些搞图像设计或者视频制作的人来说,gamma校正就像是他们的魔法棒。

他们可以根据自己的创意和想要表达的氛围来调整gamma值。

想要那种神秘的暗色调,就把gamma值调大一点;想要明亮欢快的感觉,就把gamma值弄小一点。

不过呢,gamma校正也不是随便乱调的。

如果调得太过了,图像也会变得失真,就像化浓妆化过头了一样。

所以还是要根据具体的情况,找到那个最合适的gamma 值,让图像或者视频看起来刚刚好,就像给它们穿上了最合身、最漂亮的衣服一样。

gamma校正的目的和方法

Gamma校正的目的和方法目的Gamma校正是一种图像处理技术,用于调整图像的亮度和对比度,以使其在不同的显示设备上呈现出更准确、更自然的色彩。

其主要目的是通过改变图像中每个像素的亮度值,以修正显示设备的非线性特性,从而提高图像的视觉效果和观看体验。

在传统的CRT显示器上,由于其亮度响应与输入电压并非线性关系,图像的亮度和对比度可能会失真。

而在现代的LCD和LED显示器上,由于其亮度响应曲线与CRT显示器不同,图像也可能出现亮度和对比度失真的问题。

通过使用Gamma校正技术,可以将图像的亮度和对比度调整到最佳状态,使其在不同的显示设备上呈现出更加一致和真实的色彩。

方法Gamma校正的方法主要是通过对图像中每个像素的亮度值进行非线性变换来实现的。

其基本原理是根据显示设备的特性,对图像中的亮度值进行合适的调整,以达到最佳的视觉效果。

具体来说,Gamma校正的方法可以分为以下几个步骤:1. 理解Gamma值在Gamma校正中,一个重要的概念是Gamma值。

Gamma值是一个非线性的参数,用来描述显示设备的亮度响应曲线。

一般情况下,Gamma值在0.5到2.5之间,其中1.0表示线性响应。

2. 图像预处理在进行Gamma校正之前,通常需要对图像进行预处理。

预处理的目的是将图像从RGB颜色空间转换到线性空间,以便更好地进行校正。

这可以通过对图像的每个像素进行颜色空间转换来实现。

3. Gamma校正Gamma校正的核心是对图像中每个像素的亮度值进行非线性变换。

具体的变换公式如下:output = input ^ (1 / gamma)其中,input表示输入图像中的亮度值,output表示校正后的亮度值,gamma表示Gamma值。

通过将输入图像中的每个像素的亮度值进行Gamma变换,可以得到校正后的图像。

4. 后处理在进行Gamma校正之后,通常还需要对图像进行后处理。

后处理的目的是将校正后的图像从线性空间转换回RGB颜色空间,以便最终显示或保存。

基于Gamma校正的图像处理技术研究

基于Gamma校正的图像处理技术研究Gamma校正是一种数字图像处理技术,它是亮度非线性调整的一种方法。

人眼对于亮度的感知并不是线性的,而是呈现出一种“对比敏感度”的特性。

Gamma校正可以通过调整灰度级的映射曲线,使得图像的呈现更加符合人类视觉感知。

在数字图像处理中,Gamma校正通常用于纠正因摄像机和显示器不同而产生的亮度变化。

它通过调整图像亮度,使得相同区域不同曝光条件下拍摄的图像看上去亮度基本一致。

除此之外,还可以通过Gamma校正实现图像增强、色彩校正等多个应用场景。

那么,Gamma校正涉及到哪些技术和算法呢?首先,Gamma校正需要确定Gamma值。

Gamma值是一个非线性调整的参数,通常用来描述显示设备的亮度响应曲线。

在数字图像处理中,我们需要根据摄像机或显示器的特点,确定合适的Gamma值。

其次,Gamma校正需要对图像中的每个像素进行亮度非线性调整。

通常情况下,我们使用Gamma校正函数对图像的灰度值进行变换。

具体而言,Gamma校正函数可以写为:V_out = V_in ^ (1 / Gamma)其中,V_in 表示输入图像的灰度值,V_out 表示Gamma校正后输出的图像灰度值。

除此之外,还有一些基于Gamma校正的扩展算法。

例如,Sigmoid校正法可以用于颜色平衡,sRGB校正法可以处理因输入设备和输出设备不同而产生的颜色偏差等。

当然,Gamma校正并不是一个完美的技术。

在Gamma校正过程中,信息的丢失不可避免。

此外,不同设备之间的显示效果也可能存在较大差异。

因此,在Gamma校正应用时需要注意设备之间的兼容性和良好的用户体验。

总的来说,基于Gamma校正的图像处理技术在数字图像处理中应用非常广泛。

它可以用于图像增强、色彩校正、亮度调整等多个场景。

在实践中,还可以通过调整Gamma值和使用扩展算法等方式实现更加精细的图像处理效果。

伽马校正python代码


伽马校正python代码
在上述代码中,`gamma_correction`数接受一个图像和一个gamma值作为输入,然 后对图像进行伽马校正。首先,将图像的像素值归一化到0-1范围,然后应用伽马校正公式对 图像进行处理,最后将图像的像素值重新缩放到0-255范围,并转换为整数类型。最后,使 用OpenCV的`imshow`函数显示原始图像和校正后的图像。
伽马校正python代码
伽马校正(Gamma Correction)是一种图像处理技术,用于调整图像的亮度和对比度。
下面是一个使用Python实现伽马校正的示例代码:
```python import cv2 import numpy as np
def gamma_correction(image, gamma): # 将图像像素值归一化到0-1范围 image = image / 255.0 # 对图像进行伽马校正 image = np.power(image, gamma) # 将图像像素值重新缩放到0-255范围 image = image * 255 # 将图像像素值转换为整数类型 image = image.astype(np.uint8) return image
请注意,上述代码中的`input.jpg`是输入图像的文件名,你需要将其替换为你自己的图像 文件。另外,你可以根据需要调整`gamma`的值来控制伽马校正的效果。较大的gamma值 会使图像变亮,较小的gamma值会使图像变暗。
# 读取图像 image = cv2.imread('input.jpg', cv2.IMREAD_COLOR) # 进行伽马校正,gamma值越大,图像越亮 gamma = 1.5 corrected_image = gamma_correction(image, gamma)
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
下面说明视觉编码的优越性 。 假定 RGB 信号分别由 256 ×8 bit表示 , 256 代表 灰度值 0~255, 8 bit代表每个灰度值由 8 位表示 ,只 有当对比度大于 1%时 ,人类视觉才可以准确地辨别 两个相邻编码 ,例如码 202 是码 200 的 1. 01 倍 ,而码 201只有码 200的 1. 005倍 ,因此邻近的码 200和 201 代表的形状人类视觉无法察觉 。这就导致了“编码 100问题 ”。码 100 就是视觉灵敏度的门槛 。对于低 于 100的编码 ,相邻码的亮度比率远大于 1% ,例如与 25相邻的码比率为 4% ,对于图像的平滑区域 ,不同亮 度值的编码 ,例如 25 和 26会导致条端和轮廓 。对于 超过 100的编码 ,相邻代码的亮度比率小于 1% ,这又
模拟了人类视觉 ,它在摄像机捕获动画镜头过程中实
现 。传输函数可分段表达如下 [ 4 ] :
X=
1.
009L0. s045 Nhomakorabea-
0. 099 0. 018 ≤ Ls ≤ 1. 0
4. 50L s 0 ≤ L s ≤ 0. 018
(2)
最佳近似可以由单一幂函数表达 [ 4 ] :
X = L s0. 518
将造成许多编码在视觉上是无用的 。在 8 bit线性光 系统中 ,灰度值最白 (码 255)和最黑 (码 0)之间没有 任何轮廓的比率仅为 2. 55: 1,为了获得 100∶1的对比 度 ,线性光编码需要 9 900 个码 ,这将需要 14 bit的二 进制系统 。如果使用视觉编码的话 ,就只需要 463 个 码 。在视觉编码中 ,两个相邻的码之间比率为 1. 01, 视觉编码可表达为 ( 1. 01 ) N 对比度 ,因此仅需要 463 个代码即可获得 100∶1的对比度 。
·信号处理与显示技术 ·
电子工程师
2006年 2月
1所示 。
表 1 K值与 I0 值的关系
K
I0
0
0. 020 0
1
0. 020 3
2
0. 020 6


254
0. 984 5
255
1. 000 0
原始 RGB 三色信号的强度值 ( 0 ~255 ) 再经式 (5)校正 ,得到校正后的 RGB 值 ,然后通过查找表得 到最终的颜色值 。基本原理示于图 4。
CRT显示器基本的成像过程可以由图 3表示 。
图 3 CRT显示器成像的基本示意图 [ 5]
下面详细说明具体的实现方法 。CRT使用 RGB
三种颜色的荧光粉 ,设 I0 为最小光照强度 ,取值范围 通常为 0. 005~0. 025 之间 , r为相邻强度之比 (为常
数 ) ,则有 : I0 = I0 , I1 = rI0 , I2 = r2 I0 , …, I255 = r255 I0 = 1
图 4 帧缓存颜色查找表和 D /A转换基本结构 [ 4]
RGB 颜色 Gamma校正查找表的具体安排如表 2
所示 。
表 2 RGB颜色 Gamma校正查找表安排
原始 R G B值 ( hex)
Gamma校正后 R G B 值 ( hex)
00
00
01
15
02
1d
03
23
04
27
05
2b


99
a7
0 引 言
1 Gamma 校正的研究和实现
Gamma校正是一种参数值 ,用来表达 CRT (阴极 射线管 )显示器的非线性特性 ,但事实上 ,即使 CRT显 示器是线性的 , Gamma校正仍然存在 。原因在于人类 视觉系统对于亮度或者说对于 RGB 三色信号的感觉 大致成对数关系 ,而并非线性关系 , Gamma 校正正是 为了克服这种非线性而引入的一种传输函数 ,在视频 流 、计算机图形学以及其他成像系统中应用广泛 [ 1 ] 。 一般地 ,由于视觉环境和显示设备特性的差异 , Gamma 值取 2. 2~2. 5 之间 。一般情况下 ,当用于 Gamma矫 正的值大于 1时 ,图像的高光部分被压缩而暗调部分 被扩展 ,当 Gamma矫正的值小于 1时 ,图像的高光部 分被扩展而暗调部分被压缩 , Gamma矫正一般用于平 滑地扩展暗调的细节 。
图 1所示为在 3 个对比度下的 CRT传输函数 , X 轴代表输入视频信号 , Y 轴代表显示器屏幕显示的亮 度 ,曲线可以近似为 : Lm = (Vs )γ,γ即 CRT的 Gamma 值 [4]。
图 1 CRT的传输函数
为了补偿 CRT的非线性 ,由视频摄像机捕获的三 色信号 RGB 必须经非线性传输函数的处理 ,这一过程 就是通常所说的 Gamma校正 。校正所用到的函数近 似 平方根 ,在视频中 , Gamma校正是由置于摄影机内
(4)
由于荧光粉发射的光强与 CRT电子束包含的电
子个数相关 , 即
I
=
K1
γ
N
,


γ为
CRT 显 示 器 的
Gamma值 ,一般取 2. 2 ~2. 5, K1 为常数 , N 正比与光
栅电压 。于是有 :
I
=
γ
KV
,
K为常数 [ 6 ] 。假定我们要得
到的强度为 I,从查找表中找到了最接近的值 Ij ,由于
(3)
图 2所示为 ITU 2T BT709推荐的电视摄影机的传
输函数 。理论上 ,该函数将接近 Gamma校正曲线 , 但
实际应用中 ,例如电视摄影机 ,在最暗区为了减少噪
声 ,函数的斜率将限制在 0附近 [ 4 ] 。
图 2 电视摄影机的传输函数
前已指出 ,人类视觉对于对比度的感觉是非线性 的 ,经典心理学试验给出了这一表达 ,即 W eber2Fech2 ner定理 :人眼感觉的光线 (视觉定量 )近似等于亮度 的 0. 4 次方幂 [ 1 ] ,这一关系近似为 CRT电压 2亮度函 数的反函数 。在模拟系统中 ,光信息被表达为电压经 CRT幂函数转化为亮度信息 ;在数字系统中 ,只要把 模拟电压数字化即可 。由于 CRT传输函数极近似于 视觉对于光线敏感度的反函数 ,因此 CRT的电压可作 为视觉唯一性编码 。
没有经过 Gamma矫正的设备会影响最终输出图 像的颜色亮度 ,例如一种颜色由红色和绿色组成 ,红色 的亮度为 50% ,绿色的亮度为 25% ,如果一个未经过 Gamma矫正的 CRT显示器的 Gamma 值是 2. 5,那么 输出结果的亮度将分别为 18%和 3% ,其亮度大大降 低了 。
为了补偿这方面的不足 ,我们需要使用反效果补 偿曲线来让显示器尽可能地输出与输入图像相同的图 像 ,这样才能在显示器上得到比较理想的输出结果 。 一般的反效果可以直接被赋予存储在帧缓存中的图 像 ,使 Gamma曲线呈非线性 ,也可以通过 RAMDAC进 行这种反效果补偿 (或者说是 Gamma曲线矫正 ) 。这 样 ,就可以在显示器上看到与输入图像接近的图像 。 当然 ,这只是理想状态下的情况 ,在实际应用中并不可 能得到完美的校正效果 ,所以不同的厂商之间所竞争 的就是谁能做到最接近于这个效果 。
100
a7
101
a8
102
a9


f8
fc
f9
fc


fd
fe
fe
fe
ff
ff
具体校正过程可以按如下实现 :首先 ,摄影机镜头 捕获原始图像 ,并根据每个 8 bit的 RGB 强度信号提 供的地址索引搜索到帧缓存颜色查找表 ,每个查找表 的最小容量为 28 ,为了使帧缓存颜色查找表进一步丰 富 ,可以对于 RGB 三原色使用 8 bit进行地址编码 ,而 对于颜色查找表使用大于 8 bit的编码 ,如 10 bit等 ,
·32·
同时进行 Gamma校正 ,经过 D /A 转换器把帧缓存颜 色数字信号转变成电子枪的电压值 ,此时的电压值和 帧缓存的颜色信号是一一对应 ,至于如何根据输入信 号的强度找到 CRT的电压值 ,已经在上面给出了详细 的公式 ,不再赘述 ,此时的 γ = 0. 45;然后经过 CRT显 示器成像 ,显示器的 Gamma值 γ = 2. 2,最终完成校正 过程 。至此 ,完成了对图像的 Gamma校正过程 。
第 32卷第 2期
彭国福 ,等 :图像处理中 Gamma校正的研究和实现
·信号处理与显示技术 ·
的模拟 (或有时是数字 )电路实现的 。在计算机图形
学中 , Gamma校正通常是把传输函数与帧缓存查找表
联系起来实现 。为了获得 Gamma校正 ,用得最广泛的
标准传输函数由 ITU 2R BT709 推荐 ,这一传输函数还
(5)
255
B gamma = 255 B source 0. 45 255
根据视觉编码的特点 ,取 γ = 1. 015,设最小强度
I0 = 0. 02,最小强度取决于 CRT显示器的性能 ,显示器 的动态范围为最大强度与最小强度的比值 ,即 I255 / I0
= 1 /0. 02 = 50,则由递推关系式可以得到强度值如表 ·31·
第 32卷第 2期 2006年 2月
EL
电子工 ECTRON IC
程 EN
师 G IN
EER
V oFl. e3b.2
No. 2 2006
图像处理中 Gamma校正的研究和实现
彭国福 , 林正浩
(同济大学电子与信息工程学院 , 上海市 200092)
【摘 要 】 对图像处理中的 Gamma校正进行了详细分析 ,从 CRT (阴极射线管 )显示器和人类视 觉特性两方面分析了 Gamma校正的必要性 ,给出了 RGB 三原色的非线性编码 ,并对 Gamma校正给出 了基于帧缓存颜色查找表的实现方法 。
相关文档
最新文档