我印象中,图片是由3个通道构成,一个通道比如是200*200的,那么亮度如何通过这些数字来体现呢?我看到一些Python包说可以改变,原理是什么呢?
Randomly change the brightness, contrast, saturation and hue of an image
一般图像都是rgb或者bgr格式的,也就是常说的三通道格式,每个通道是图像光学三原色的像素值组成。而转成HSV格式则是有色调(H),饱和度(S),明度(V),其中的明度也就常说的亮度,调整这个通道就可以调整图片的亮度,这个是比较简单的做法。
还有一种就是亮度调整,简单粗暴的在原来的RGB上每个像素值给它加上一个偏移量(但是这种做法并不是很推荐,由于人眼的感受问题,增加同样的值在视觉上会导致图像颜色有偏差)。
而对比度的做法就是亮的越亮,黑的越黑,简单来说就是拉开相邻像素之间的灰阶差。比如简单的举个例子y=2x。
原来相邻两个点之间的灰阶值是【1,2】,经过上面的函数变换之后变成了【2,4】,原来的灰阶差是1,变换完之后的灰阶差变成了2,灰阶差变大对比度就变的更加明显了。当然实际上也不会是这么简单的直接y=2x这么直接的缩放,一般会用伽马变换来实现。具体效果可以看看下面的这个
https://www.freesion.com/article/3230368262/