FPGA图像的亮暗调节之变暗调节

描述

1基本原理

真彩色图像的颜色通道分为R,G,B。按照RGB888来讲,三个通道分别为8bit,范围为0-255。

因为图像数据是无符号的所以再亮暗调节的时候不能超出这个范围。

暗调节:

Rnew=R-step 当(R》step)Rnew=0 当(R《step)

Gnew=G-step 当(G》step)Gnew=0 当(G《step)

Bnew=B-step 当B》step)Bnew=0 当(B《step)

2 verilog源码设计

图像的亮暗主要通过按钮来调节,调节的大小(步进)COE来控制。

其中数据的处理需要一个像素时钟,所以需要对VGA的其他同步信号进行1 clock的延时输出。

/**********************************

copyright@FPGA OPEN SOURCE STUDIO

`define COE 30*key_cnt

module dark#(

parameter DW = 24

)(

input pixelclk,

input reset_n,

input [DW-1:0] din,//rgb in

input i_hsync,

input i_vsync,

input i_de,

input [1:0] key_cnt,

output [DW-1:0]dout,//rgb out

output o_hsync,

output o_vsync,

output o_de

);

wire [7:0] r,g,b;

reg [7:

0] rout,gout,bout;

reg hsync_r;reg vsync_r;reg de_r;

assign r=din[23:16];assign g=din[15:8];assign b=din[7:0];

//assign rdark =(r》`COE)?(r-`COE):8‘b0;

assign o_hsync = hsync_r;assign o_vsync = vsync_r;assign o_de = de_r;assign dout={rout,gout,bout};

//synchronizationalways @(posedge pixelclk) begin hsync_r 《= i_hsync; vsync_r 《= i_vsync; de_r 《= i_de;end

always @(posedge pixelclk or negedge reset_n)begin if(!reset_n) begin rout《=0; gout《=0; bout《=0; end else begin case(key_cnt) 2’b00:begin rout《=r; gout《=g; bout《=b; end 2‘b01,2’b10,2‘b11:begin rout《=(r》`COE)?(r-`COE):8’b0; gout《=(g》`COE)?(g-`COE):8‘b0; bout《=(b》`COE)?(b-`COE):8’b0; end endcase endend

endmodule

3仿真效果

从亮到暗的变化很明显。

编辑:jq

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分