(1)图像亮度:反映图像的明暗程度,在图像处理中,亮度常用灰度值表示,灰度值越高,图像越亮。对图像进行亮度调节,可以改善图像的视觉效果,让图片更亮或更暗,以适应实际需求。
(2)线性亮度和对比度调节:通过对每个像素进行相同系数的增加或减少,来整体提高或降低图像的亮度。线性算法简单,但是可能会引起图像细节的丢失,算法公式如下:
其中Out表示调整后的亮度值,In表示原始亮度,alpha表示增益,用来控制对比度;beta表示偏置,用来控制亮度。
(3)非线性亮度和对比度调节
采用非线性函数对图像的亮度进行调整,以更加精细地处理图像的亮度变化。在图像处理中,非线性亮度调整调节通常会使用伽马变换来实现,公式如下:
其中,O为输出像素的亮度值,r表示伽马值,这个公式实际上是对输入像素的亮度进行幂运算、通过调整伽马值来改变图像的亮度。
- 当r小于1时,提亮图像,拉伸暗部。这种变换对增加暗部细节非常有用。
- 当r大于1时,压暗图像,压缩暗部,这种变换对防止高亮区域过度曝光非常有效。
- 当r等于1时,伽马变换变为线性变换,即输入与输出亮度值相等,图像亮度保持不变。
伽马变换可以有效地调整图像地对比度和亮度,特别是在暗部和亮度区域,由于人眼对不同亮度的敏感度是非线性的,因此伽马变换被广泛应用于图像处理和显示设备中,以实现更加自然和逼真的图像视觉效果。
(4)FPGA实现线性变换
module image_bright_adjust
(
input wire [7:0] red ,
input wire [7:0] green ,
input wire [7:0] blue ,
input wire [7:0] adjust_val , //亮度调节0-255
input wire add_or_sub , //1表示增加亮度,0表示减少亮度
output wire [7:0] red_adjust ,
output wire [7:0] green_adjust ,
output wire [7:0] blue_adjust
);
wire [8:0] r_w,g_w,b_w;
assign r_w = add_or_sub ? (red + adjust_val):((red > adjust_val)?(red - adjust_val):9'd0);
assign g_w = add_or_sub ? (green + adjust_val):((green > adjust_val)?(green - adjust_val):9'd0);
assign b_w = add_or_sub ? (blue + adjust_val):((blue > adjust_val)?(blue - adjust_val):9'd0);
assign red_adjust = (r_w >= 9'd255)?(8'd255):r_w;
assign green_adjust = (g_w >= 9'd255)?(8'd255):g_w;
assign blue_adjust = (b_w >= 9'd255)?(8'd255):b_w;
endmodule
(8)实验现象:
- 顶层输入adjust_val = 128,add_or_sub =1,现象如下:
- 顶层输入adjust_val = 128,add_or_sub =0,现象如下: