伽玛

图像处理之gamma校正

限于喜欢 提交于 2019-12-28 03:51:37
1 gamma 校正背景   在电视和图形监视器中, 显像管 发生的电子束及其生成的图像亮度并不是随显像管的输入电压线性变化,电子流与输入电压相比是按照指数曲线变化的,输入电压的指数要大于 电子束 的指数。这说明暗区的信号要比实际情况更暗,而亮区要比实际情况更高。所以,要重现摄像机拍摄的画面,电视和监视器必须进行伽玛补偿。这种伽玛校正也可以由摄像机完成。我们对整个电视系统进行伽玛补偿的目的,是使摄像机根据入射光亮度与显像管的亮度对称而产生的输出信号,所以应对图像信号引入一个相反的 非线性失真 ,即与电视系统的伽玛曲线对应的摄像机伽玛曲线,它的值应为 1/ γ,我们称为摄像机的 伽玛值 。电视系统的伽玛值约为 2.2 ,所以电视系统的摄像机非线性补偿伽玛值为 0.45 。 彩色显像管 的伽玛值为 2.8 ,它的图像信号校正指数应为 1/2.8=0.35 ,但由于 显像管 内外 杂散光 的影响,重现图像的对比度和 饱和度 均有所降低,所以 彩色摄像机 的伽玛值仍多采用 0.45 。在实际应用中,我们可以根据实际情况在一定范围内调整伽玛值,以获得最佳效果。                            2 gamma 校正定义   (Gamma Correction ,伽玛校正):所谓伽玛校正就是对图像的伽玛曲线进行编辑,以对图像进行非线性色调编辑的方法

图像处理 _伽玛变换|幂次变换

醉酒当歌 提交于 2019-12-09 20:45:06
void PowerTrans(BYTE* pixel, BYTE* tempPixel, UINT width, UINT height, double b, double c, double r) { BYTE map[256]; double dTemp; for (int i = 0; i < 256; i++){ dTemp = c * pow((double)i / 255.0, r) * 255.0 + b; if (dTemp < 0) dTemp = 0.0; else if (dTemp > 255) dTemp = 255; //四舍五入 map[i] = int(dTemp + 0.5); } for (UINT i = 0; i < width * height; i++){ tempPixel[i] = map[pixel[i]]; } } 仅针对连续存储的灰度数据。 假设c和b都为0,主要的变量为r 1.当r>1时,图像中高灰度值区域的对比度得到增强。 2.当r<1时,图像中低灰度值区域的对比度得到增强。 3.当r=1时,为线性变换,不改变图像的值。 该处要注意i前面的(double),255后的小数点不能省,不然得出的dTemp恒为0.00000. 原因是计算式结果被强制转换成了int,另外作为中括号中的索引最好加上int,作用是截断小数点。

C# vb .net实现gamma伽玛调整特效滤镜

依然范特西╮ 提交于 2019-11-30 12:02:14
在.net中,如何简单快捷地实现Photoshop滤镜组中的gamma伽玛调整特效滤镜呢?答案是调用SharpImage!专业图像特效滤镜和合成类库。下面开始演示关键代码,您也可以在文末下载全部源码: 设置授权 第一步:在引用了SharpImage.dll之后,调用SharpImage方法之前,一定要先通过下面代码来设置授权信息,如果是试用版,直接输入Test即可。 KeyMgr.SetKey("Test"); 初始化一个ImageEngine 从之前的一篇博文中,我们介绍了一张图看懂SharpImage,从那篇文章我们可以看出,SharpImage通过ImageEngine来作为图像处理的基石,所有效果都是作为ImageEngine的Effects来进行的,Effects将被应用到ImageEngine的各种Element上,产生千变万化的效果。请看下面的代码: //实例化ImageEngine engine = new ImageEngine(); 设置ImageEngine的基础参数 对ImageEngine进行一些自定义设置,具体可参考API手册。代码如下: //对一些基础属性进行设置 engine.Canvas.AutoSize = true; engine.Canvas.CenterElements = true; engine.Canvas.Width = 320;/