1基本原理
真彩色圖像的顏色通道分為R,G,B。按照RGB888來講,三個通道分別為8bit,范圍為0-255。
因為圖像數(shù)據(jù)是無符號的所以再亮暗調(diào)節(jié)的時候不能超出這個范圍。
暗調(diào)節(jié):
Rnew=R-step 當(dāng)(R》step)Rnew=0 當(dāng)(R《step)
Gnew=G-step 當(dāng)(G》step)Gnew=0 當(dāng)(G《step)
Bnew=B-step 當(dāng)B》step)Bnew=0 當(dāng)(B《step)
2 verilog源碼設(shè)計
圖像的亮暗主要通過按鈕來調(diào)節(jié),調(diào)節(jié)的大小(步進(jìn))COE來控制。
其中數(shù)據(jù)的處理需要一個像素時鐘,所以需要對VGA的其他同步信號進(jìn)行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
-
仿真
+關(guān)注
關(guān)注
50文章
4044瀏覽量
133422 -
圖像數(shù)據(jù)
+關(guān)注
關(guān)注
0文章
52瀏覽量
11271 -
Verilog
+關(guān)注
關(guān)注
28文章
1345瀏覽量
109986 -
VGA
+關(guān)注
關(guān)注
5文章
533瀏覽量
62831
原文標(biāo)題:基于FPGA圖像的亮暗調(diào)節(jié)--變暗調(diào)節(jié)(附源碼)
文章出處:【微信號:leezym0317,微信公眾號:FPGA開源工作室】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論