Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image processing 如何缩放图像中的像素以调整亮度?_Image Processing_Gamma_Pbmplus - Fatal编程技术网

Image processing 如何缩放图像中的像素以调整亮度?

Image processing 如何缩放图像中的像素以调整亮度?,image-processing,gamma,pbmplus,Image Processing,Gamma,Pbmplus,我有一张照片的灰度图像。我已经确定图像的某些部分照明不足,亮度Y=0.8的像素实际上应该调整为90%的灰色,也就是说,该像素的亮度应该为0.9。我的问题是如何缩放附近的其他像素?我很确定将所有亮度乘以9/8是错误的,因为我隐约记得听说为了看起来均匀,缩放必须是非线性的。但我很难找到一个能让我进步的方程式。(当然,我正在编写一个程序,对大量照片进行调整。) 我的像素的来源是pbmplus PGM格式,手册页上说: 每个灰度值都是一个与图像强度成比例的数字 像素,由CIE Rec.709伽马传递函数

我有一张照片的灰度图像。我已经确定图像的某些部分照明不足,亮度Y=0.8的像素实际上应该调整为90%的灰色,也就是说,该像素的亮度应该为0.9。我的问题是如何缩放附近的其他像素?我很确定将所有亮度乘以9/8是错误的,因为我隐约记得听说为了看起来均匀,缩放必须是非线性的。但我很难找到一个能让我进步的方程式。(当然,我正在编写一个程序,对大量照片进行调整。)

我的像素的来源是pbmplus PGM格式,手册页上说:

每个灰度值都是一个与图像强度成比例的数字 像素,由CIE Rec.709伽马传递函数调整。(那 传递函数指定伽马数为2.2,并具有线性 小强度部分)。因此,零值为黑色。 Maxval值表示CIE D65白色和最强烈的值 在图像和可能与该图像进行比较的任何其他图像中

如果我能更好地理解这一点,我可能会对如何进行有更好的想法

我发现了一个相关的问题


谢谢你让我走上正轨。我接受了你的回答,然后在其中添加了一些信息。

你可能需要,这将保持真黑和真白的正确性,同时弯曲中间的值

当输入在范围(0.0,1.0)内时,伽马调整公式为:

…其中
gamma
将在小于1.0时变亮,在大于1.0时变暗

要将0.8推高到0.9,您需要计算
log(0.9)/log(0.8)
,以获得gamma值

注意,这是一个非常多的公式,它是数学上最简单的,将黑色和白色保存为唯一的颜色(一些人认为重要的)-然而,没有一个正确的公式给你什么是“真”。


附录:我验证了gamma校正可以应用于已经gamma编码的值。在markdown中很难记下数学,但关键的代数定律是

(y**a)**b == y**(a*b) == y**(b*a) == (y**b)**a

如果应用此定律,则可以确定gamma校正可转换,因此可以将gamma校正应用于已校正的值-NR

您是否试图增加灰度图像的对比度?不,实际上,我有一张图像,我认为拍摄对象的亮度(亮度/反照率)大致一致,但照片是在不均匀照明下拍摄的。我正在尝试纠正照明不良,并生成一幅代表原始拍摄对象的图像。选择什么伽马值?我拥有的像素已经是gamma编码的,这有关系吗?
(y**a)**b == y**(a*b) == y**(b*a) == (y**b)**a