数字图像处理(18):图像亮度调节:线性变换

        (1)图像亮度:反映图像的明暗程度,在图像处理中,亮度常用灰度值表示,灰度值越高,图像越亮。对图像进行亮度调节,可以改善图像的视觉效果,让图片更亮或更暗,以适应实际需求。

        (2)线性亮度和对比度调节:通过对每个像素进行相同系数的增加或减少,来整体提高或降低图像的亮度。线性算法简单,但是可能会引起图像细节的丢失,算法公式如下:

         Out = In * alpha + beta

        其中Out表示调整后的亮度值,In表示原始亮度,alpha表示增益,用来控制对比度;beta表示偏置,用来控制亮度。

        (3)非线性亮度和对比度调节

        采用非线性函数对图像的亮度进行调整,以更加精细地处理图像的亮度变化。在图像处理中,非线性亮度调整调节通常会使用伽马变换来实现,公式如下:

  O= I^{r}

        其中,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,现象如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值