在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于FPGA實(shí)現(xiàn)圖像直方圖設(shè)計(jì)

FPGA設(shè)計(jì)論壇 ? 來(lái)源:FPGA設(shè)計(jì)論壇 ? 2024-12-24 10:24 ? 次閱讀

直方圖統(tǒng)計(jì)的原理

直方圖統(tǒng)計(jì)從數(shù)學(xué)上來(lái)說(shuō),是對(duì)圖像中的像素點(diǎn)進(jìn)行統(tǒng)計(jì)。圖像直方圖統(tǒng)計(jì)常用于統(tǒng)計(jì)灰度圖像,表示圖像中各個(gè)灰度級(jí)出現(xiàn)的次數(shù)或者概率。統(tǒng)計(jì)直方圖的實(shí)現(xiàn)采用C/C++或者其他高級(jí)語(yǔ)言實(shí)現(xiàn)十分簡(jiǎn)單,單采用FPGA來(lái)實(shí)現(xiàn)直方圖的統(tǒng)計(jì)就稍顯麻煩。若使用Xilinx和Altera的FPGA芯片,可以使用HLS來(lái)進(jìn)行圖像的加速處理。但這暫時(shí)不是我的重點(diǎn)。

C語(yǔ)言實(shí)現(xiàn)直方圖統(tǒng)計(jì):unsigned int histoBuffer[256];

for(int idxCol = 0; idxCol < imageWidth; idxCol ++)

{

for(int idxRow = 0; idxRow < imageHeight; idxRow ++)

{

histoBuffer[image[idxRow * imageWidth + idxCol]] ++;

}

}

基于FPGA實(shí)現(xiàn)圖像直方圖

在前面可以看到基于C/C++或者其他高級(jí)語(yǔ)言實(shí)現(xiàn)直方圖統(tǒng)計(jì)十分簡(jiǎn)單。但是在FPGA中,需要設(shè)計(jì)具體的時(shí)序和電路才能正確地將直方圖進(jìn)行統(tǒng)計(jì)。

直方圖統(tǒng)計(jì)的注意點(diǎn)

使用FPGA來(lái)完成直方圖的統(tǒng)計(jì)需要注意以下幾點(diǎn):

對(duì)一幅圖像進(jìn)行統(tǒng)計(jì),必須等到當(dāng)前的圖像“流過(guò)”后才能完成。這使得采用FPGA相較于其他方式并沒(méi)有太大的優(yōu)勢(shì)。

在統(tǒng)計(jì)的過(guò)程中,需要對(duì)已經(jīng)統(tǒng)計(jì)的像素的統(tǒng)計(jì)值進(jìn)行緩存。

在下一幀圖像來(lái)臨的時(shí)候,需要將RAM中的數(shù)據(jù)清空。

設(shè)計(jì)統(tǒng)計(jì)模塊

根據(jù)上面的要點(diǎn),在設(shè)計(jì)直方圖統(tǒng)計(jì)電路的時(shí)候可以按照如下思路來(lái)進(jìn)行:

新的一幀圖像來(lái)臨是,需要將上一幀圖像的直方圖統(tǒng)計(jì)結(jié)果清零。

在新一幀圖像數(shù)據(jù)有效時(shí),進(jìn)行統(tǒng)計(jì)

一幀圖像數(shù)據(jù)統(tǒng)計(jì)完成后,將統(tǒng)計(jì)結(jié)果讀出,并將統(tǒng)計(jì)結(jié)果輸出到外部。

狀態(tài)機(jī)設(shè)計(jì):

在復(fù)位或空閑狀態(tài)下,系統(tǒng)處于IDLE狀態(tài),當(dāng)檢測(cè)到新一幀圖像(vsync信號(hào)的上升沿)時(shí),狀態(tài)跳轉(zhuǎn)到CLEAR狀態(tài),清空RAM中保存的上一幀圖像的數(shù)據(jù)。當(dāng)RAM中的圖像數(shù)據(jù)清空完成后,進(jìn)入到直方圖統(tǒng)計(jì)狀態(tài)CALCULATE,在該狀態(tài)下進(jìn)行直方圖的統(tǒng)計(jì)當(dāng)一幀圖像統(tǒng)計(jì)完成后,將本幀圖像的統(tǒng)計(jì)結(jié)果輸出,也即GET_HISTO狀態(tài)。

4b988b6e-c01b-11ef-9310-92fbcf53809c.png

CLEAR狀態(tài):

下圖是CLEAR狀態(tài)下的時(shí)序設(shè)計(jì)圖,拉高一個(gè)clear_flag信號(hào),向RAM中寫入0,將上一幀圖像的統(tǒng)計(jì)結(jié)果清零。

4ba85c74-c01b-11ef-9310-92fbcf53809c.png

CALCULATE狀態(tài):

統(tǒng)計(jì)狀態(tài)下完成的任務(wù)是最復(fù)雜的,由于在圖像數(shù)據(jù)流來(lái)領(lǐng)的時(shí)候,常常會(huì)遇到相鄰幾個(gè)像素點(diǎn)的灰度值是相同的,因此可以將這些點(diǎn)進(jìn)行統(tǒng)計(jì),然后在將統(tǒng)計(jì)值寫入到RAM中,將小對(duì)RAM的讀寫操作。

下面的時(shí)序圖是一個(gè)典型的統(tǒng)計(jì)時(shí)序設(shè)計(jì)圖,基本包括了圖像流入時(shí)的像素狀態(tài)。

在統(tǒng)計(jì)時(shí),主要是來(lái)比較當(dāng)前的像素點(diǎn)和上一個(gè)像素點(diǎn)的值是否相同,若相同則像素統(tǒng)計(jì)值cal_pixel就會(huì)加一,直到相鄰兩像素值不同或者一行圖像結(jié)束時(shí),停止加一,并且將當(dāng)前統(tǒng)計(jì)結(jié)果cal_pixel和RAM中已經(jīng)緩存的統(tǒng)計(jì)值進(jìn)行累加,重新寫入到RAM中(也即wr_ram_data),同時(shí)需要使能RAM的寫操作。wr_ram_en。寫入RAM的地址,其實(shí)就是當(dāng)前的灰度值。在這之中,需要注意從RAM中讀出數(shù)據(jù)具有1或者2個(gè)時(shí)鐘周期的Latency(根據(jù)IP核設(shè)置有關(guān)。

在FPGA的直方圖統(tǒng)計(jì)中,該部分是最重要的。完成了該時(shí)序圖,也就基本上完成了統(tǒng)計(jì)電路。

4bbb6a58-c01b-11ef-9310-92fbcf53809c.png

GET_HISTO狀態(tài):

4bd43d30-c01b-11ef-9310-92fbcf53809c.png

該狀態(tài)下,就是完成對(duì)直方圖的統(tǒng)計(jì)結(jié)果的讀出。

程序設(shè)計(jì)

FPGA完成直方圖的設(shè)計(jì),其實(shí)就是上面的三個(gè)時(shí)序圖的設(shè)計(jì),完成了上述三個(gè)時(shí)序圖后,就能夠直方圖統(tǒng)計(jì)模塊。下面的這個(gè)模塊完成的是一個(gè)256*256大小的灰度圖的直方圖統(tǒng)計(jì),若需要對(duì)其他大小的圖像進(jìn)行直方圖統(tǒng)計(jì),只需修改其中的參數(shù)即可。其實(shí)對(duì)于我的設(shè)計(jì),每一行的像素個(gè)數(shù)是由上游模塊確定的,在本模塊中,只需指定圖像的高度即可,指定高度,也僅僅是為了將直方圖從RAM中讀出。

parameter IMG_WIDTH=256;

parameter IMG_HEIGHT=256;

`timescale 1ns / 1ps

module calculate_histogram(

input wire clk ,

inputwire rst ,

input wire pi_hsync,

inputwire pi_vsync,

inputwire pi_data_vld,

input wire [7:0]pi_data ,

output wire po_histo_vld,

output wire [31:0]po_histo_data

);

//==========================================

//parameter define

//==========================================

parameter IMG_WIDTH = 256 ;

parameter IMG_HEIGHT =256 ;

parameter GRAY_LEVEL= 256;//灰度級(jí)

parameter IDLE = 4'b0001;//空閑狀態(tài)

parameter CLEAR= 4'b0010;//清空RAM中數(shù)據(jù)狀態(tài)

parameter CALCULATE = 4'b0100;//統(tǒng)計(jì)圖像直方圖狀態(tài)

parameter GET_HISTO = 4'b1000;//輸出直方圖

//==========================================

//internal siganls

//==========================================

reg [3:0]state ;//狀態(tài)寄存器

reg [1:0]vsync_dd;//場(chǎng)同步信號(hào)寄存

//==========================================

//清空RAM階段

//==========================================

reg [8:0]cnt_clear ;

wireadd_cnt_clear;

wire end_cnt_clear;

reg clear_flag;//清空RAM指示信號(hào)

//==========================================

//統(tǒng)計(jì)直方圖階段

//==========================================

reg [12:0]cnt_row ;

wire add_cnt_row ;

wire end_cnt_row;

reg data_vld_dd0;//數(shù)據(jù)有效延時(shí)信號(hào)

reg data_vld_dd1;//數(shù)據(jù)有效延時(shí)信號(hào)

reg [7:0]pi_data_dd0;//有效數(shù)據(jù)延時(shí)

reg [7:0]pi_data_dd1;//有效數(shù)據(jù)延時(shí)

reg [31:0]cal_pixle;//相同的像素統(tǒng)計(jì)值

reg [31:0]cal_value ;//寫入RAM的統(tǒng)計(jì)值

reg cal_value_vld;//寫入RAM數(shù)據(jù)有效信號(hào)

reg cal_one_row_done;//統(tǒng)計(jì)一行圖像數(shù)據(jù)結(jié)束

wire [7:0]cal_wr_ram_addr;//統(tǒng)計(jì)狀態(tài)下寫RAM的地址

wire [7:0]cal_rd_ram_addr;//統(tǒng)計(jì)狀態(tài)下讀RAM的地址

//==========================================

//讀出數(shù)據(jù)階段

//==========================================

reg get_data_flag ;

reg [8:0]cnt_get ;

wire add_cnt_get ;

wire end_cnt_get ;

reg histo_data_vld ;

wire [31:0]histo_data ;

//==========================================

//Block RAM Related Signals

//==========================================

reg wr_ram_en ;//寫RAM使能信號(hào)

reg [7:0]wr_ram_addr;//寫RAM地址

reg [31:0]wr_ram_data ;//寫入RAM的數(shù)據(jù)

reg [7:0]rd_ram_addr ;//讀RAM的地址

wire[31:0]rd_ram_data;//從RAM中讀出的數(shù)據(jù)

assign po_histo_data = (histo_data_vld) ? histo_data : 32'd0;

assign po_histo_vld = histo_data_vld;

//----------------state machine describe------------------

always @(posedge clk) begin

if (rst==1'b1) begin

state <= IDLE ;

end

else begin

case(state)

IDLE : begin

//檢測(cè)到新的一幀圖像

if (vsync_dd[0] == 1'b1 && vsync_dd[1] == 1'b0) begin

state <= CLEAR;

end

else begin

state <= IDLE;

end

end

CLEAR : begin

//當(dāng)前RAM中的數(shù)據(jù)已經(jīng)清空

if (end_cnt_clear == 1'b1) begin

state <= CALCULATE;

end

else begin

state <= CLEAR;

end

end

CALCULATE : begin

//當(dāng)前一幅圖像數(shù)據(jù)的灰度直方圖已經(jīng)統(tǒng)計(jì)完成

if (end_cnt_row == 1'b1) begin

state <= GET_HISTO;

end

else begin

state <= CALCULATE;

end

end

GET_HISTO : begin

//將RAM中的直方圖數(shù)據(jù)全部讀出

if (end_cnt_get == 1'b1) begin

state <= IDLE;

end

else begin

state <= GET_HISTO;

end

end

default : begin

state <= IDLE;

end

endcase

end

end

//----------------vsync_dd------------------

//檢測(cè)一幀圖像

always @(posedge clk) begin

if (rst==1'b1) begin

vsync_dd <= 'd0;

end

else begin

vsync_dd <= {vsync_dd[0], pi_vsync};

end

end

//==========================================

//during the clear state

//==========================================

//----------------cnt_clear------------------

//用于清空RAM的計(jì)數(shù)器

always @(posedge clk) begin

if (rst == 1'b1) begin

cnt_clear <= 'd0;

end

else if (add_cnt_clear) begin

if(end_cnt_clear)

cnt_clear <= 'd0;

else

cnt_clear <= cnt_clear + 1'b1;

end

else begin

cnt_clear <= 'd0;

end

end

assign add_cnt_clear = state == CLEAR && wr_ram_en == 1'b1;

assign end_cnt_clear = add_cnt_clear &&cnt_clear == GRAY_LEVEL - 1;

//----------------clear_flag------------------

always @(posedge clk) begin

if (rst==1'b1) begin

clear_flag <= 1'b0;

end

else if (state == CLEAR ) begin

if (end_cnt_clear == 1'b1) begin

clear_flag <= 1'b0;

end

else begin

clear_flag <= 1'b1;

end

end

else begin

clear_flag <= 1'b0;

end

end

//==========================================

//during the calculate state

//==========================================

//----------------delay------------------

always @(posedge clk) begin

if (rst==1'b1) begin

data_vld_dd0 <= 'd0;

data_vld_dd1 <= 'd0;

pi_data_dd0 <= 'd0;

pi_data_dd1 <= 'd0;

end

else begin

data_vld_dd0 <= pi_data_vld;

data_vld_dd1 <= data_vld_dd0;

pi_data_dd0 <= pi_data;

pi_data_dd1 <= pi_data_dd0;

end

end

//----------------cal_pixle------------------

always @(posedge clk) begin

if (rst==1'b1) begin

cal_pixle <= 'd1;

end

else if (state == CALCULATE && data_vld_dd0 == 1'b1 ) begin

//相鄰兩個(gè)像素點(diǎn)的值不同,統(tǒng)計(jì)值回到1

if (pi_data != pi_data_dd0 ) begin

cal_pixle <= 'd1;

end

//一行圖形數(shù)據(jù)統(tǒng)計(jì)結(jié)束

else if (pi_data_vld == 1'b0 ) begin

cal_pixle <= 'd1;

end

//相鄰兩個(gè)像素點(diǎn)的值相同

else if (pi_data == pi_data_dd0) begin

cal_pixle <= cal_pixle + 1'b1;

end

end

else begin

cal_pixle <= 'd1;

end

end

//----------------cal_value------------------

//寫入RAM的數(shù)據(jù)

always @(posedge clk) begin

if (rst==1'b1) begin

cal_value <= 'd0;

cal_value_vld <= 1'b0;

end

else if (state == CALCULATE ) begin

//相鄰兩個(gè)像素值不同,將當(dāng)前統(tǒng)計(jì)結(jié)果寫入

if (pi_data != pi_data_dd0 && data_vld_dd0 == 1'b1) begin

//從RAM中讀出的數(shù)據(jù),有一拍的延時(shí),這里保證了數(shù)據(jù)對(duì)齊

cal_value <= rd_ram_data + cal_pixle;

cal_value_vld <= 1'b1;

end

//一行圖像統(tǒng)計(jì)結(jié)束,將當(dāng)前結(jié)果寫入

else if(pi_data_vld == 1'b0 && data_vld_dd0 == 1'b1)begin

cal_value <= rd_ram_data + cal_pixle;

cal_value_vld <= 1'b1;

end

else begin

cal_value <= 'd0;

cal_value_vld <= 1'b0;

end

end

else begin

cal_value <= 'd0;

cal_value_vld <= 1'b0;

end

end

//----------------cal_wr_ram_addr/cal_rd_ram_addr------------------

assign cal_wr_ram_addr = pi_data_dd1; //寫入數(shù)據(jù)RAM的地址

assign cal_rd_ram_addr = pi_data;//讀出數(shù)據(jù)RAM的地址

//----------------cal_one_row_done------------------

always @(posedge clk) begin

if (rst==1'b1) begin

cal_one_row_done <= 1'b0;

end

//一行圖像統(tǒng)計(jì)完成

else if (state == CALCULATE && pi_data_vld == 1'b0 && data_vld_dd0 == 1'b1) begin

cal_one_row_done <= 1'b1;

end

else begin

cal_one_row_done <= 1'b0;

end

end

//----------------cnt_row------------------

always @(posedge clk) begin

if (rst == 1'b1) begin

cnt_row <= 'd0;

end

else if (add_cnt_row) begin

if(end_cnt_row)

cnt_row <= 'd0;

else

cnt_row <= cnt_row + 1'b1;

end

end

assign add_cnt_row = cal_one_row_done == 1'b1;

assign end_cnt_row = add_cnt_row &&cnt_row == IMG_HEIGHT - 1;

//==========================================

//during get histogram data state

//==========================================

//----------------get_data_flag------------------

always @(posedge clk) begin

if (rst==1'b1) begin

get_data_flag <= 1'b0;

end

else if (state == GET_HISTO) begin

if (end_cnt_get == 1'b1) begin

get_data_flag <= 1'b0;

end

else begin

get_data_flag <= 1'b1;

end

end

else begin

get_data_flag <= 1'b0;

end

end

//----------------cnt_get------------------

always @(posedge clk) begin

if (rst == 1'b1) begin

cnt_get <= 'd0;

end

else if (add_cnt_get) begin

if(end_cnt_get)

cnt_get <= 'd0;

else

cnt_get <= cnt_get + 1'b1;

end

else begin

cnt_get <= 'd0;

end

end

assign add_cnt_get = get_data_flag == 1'b1;

assign end_cnt_get = add_cnt_get &&cnt_get == GRAY_LEVEL - 1;

//----------------histo_data_vld------------------

always @(posedge clk) begin

if (rst==1'b1) begin

histo_data_vld <= 1'b0;

end

else begin

histo_data_vld <= get_data_flag;

end

end

assign histo_data = (histo_data_vld) ? rd_ram_data : 'd0 ;

//==========================================

//signals that related to Block RAM

//==========================================

histogram_ram inst_bram_histo (

.clka(clk), // input wire clka

.wea(wr_ram_en), // input wire [0 : 0] wea

.addra(wr_ram_addr), // input wire [7 : 0] addra

.dina(wr_ram_data), // input wire [31 : 0] dina

.clkb(clk), // input wire clkb

.addrb(rd_ram_addr), // input wire [7 : 0] addrb

.doutb(rd_ram_data) // output wire [31 : 0] doutb

);

//----------------wr_ram_addr,wr_ram_data,wr_ram_en------------------

always @(*) begin

if (state == CLEAR) begin

wr_ram_addr = cnt_clear;

wr_ram_en = clear_flag;

wr_ram_data = 'd0;

end

else if (state == CALCULATE) begin

wr_ram_addr = cal_wr_ram_addr;

wr_ram_en = cal_value_vld;

wr_ram_data = cal_value;

end

else begin

wr_ram_addr = 'd0;

wr_ram_en = 1'b0;

wr_ram_data = 'd0;

end

end

//----------------rd_ram_addr------------------

always @(*) begin

if (state == CALCULATE) begin

rd_ram_addr = cal_rd_ram_addr;

end

else if (state == GET_HISTO) begin

rd_ram_addr = cnt_get;

end

else begin

rd_ram_addr = 'd0;

end

end

endmodule

仿真驗(yàn)證

由于只是算法的一個(gè)驗(yàn)證,我并不想使用太多的外部資源,使用片上的存儲(chǔ)資源即可。一個(gè)2562568bit大小的圖像并不會(huì)占用多少資源。圖像大小是256*256的灰度圖,在matlab中完成直方圖的統(tǒng)計(jì),是十分簡(jiǎn)單的,只需使用imhist這個(gè)函數(shù)即可。

4be67144-c01b-11ef-9310-92fbcf53809c.png

直方圖部分統(tǒng)計(jì)結(jié)果如下:

4bf7e51e-c01b-11ef-9310-92fbcf53809c.png

在modelsim中,對(duì)前面所設(shè)計(jì)的模塊進(jìn)行仿真。仿真的結(jié)果如下:

4c084080-c01b-11ef-9310-92fbcf53809c.png

可以看到仿真的直方圖統(tǒng)計(jì)結(jié)果與matlab中的仿真結(jié)果相比一致。在Modelsim的Memory List中,也可以看到一幀圖像統(tǒng)計(jì)完成后,RAM中的結(jié)果,從結(jié)果中可以看到統(tǒng)計(jì)結(jié)果和matlab一致。

4c1d3f6c-c01b-11ef-9310-92fbcf53809c.png

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1629

    文章

    21736

    瀏覽量

    603319
  • 直方圖
    +關(guān)注

    關(guān)注

    0

    文章

    21

    瀏覽量

    7884

原文標(biāo)題:FPGA圖像處理基礎(chǔ)----直方圖統(tǒng)計(jì)

文章出處:【微信號(hào):gh_9d70b445f494,微信公眾號(hào):FPGA設(shè)計(jì)論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    基于直方圖算法進(jìn)行FPGA架構(gòu)設(shè)計(jì)

    引言 直方圖統(tǒng)計(jì)在圖像增強(qiáng)和目標(biāo)檢測(cè)領(lǐng)域有重要應(yīng)用,比如直方圖均衡,梯度直方圖直方圖的不同種類和統(tǒng)計(jì)方法請(qǐng)見(jiàn)之前的文章。本章就是用
    的頭像 發(fā)表于 12-10 16:37 ?2800次閱讀

    基于FPGA實(shí)現(xiàn)分離用軟件的圖像處理系統(tǒng)設(shè)計(jì)

    灰度直方圖統(tǒng)計(jì)直方圖圖像的灰度分布統(tǒng)計(jì)的一種表示方法,統(tǒng)計(jì)目標(biāo)圖像中各個(gè)灰度點(diǎn)的像素個(gè)數(shù),很多對(duì)于圖像的調(diào)整算法都是基于此進(jìn)行的;如何基于
    的頭像 發(fā)表于 04-04 10:32 ?1435次閱讀

    FPGA直方圖處理方法

    圖像直方圖用作數(shù)字圖像中色調(diào)分布的圖形表示。它繪制了每個(gè)色調(diào)值的像素?cái)?shù)。通過(guò)查看特定圖像直方圖,觀看者將能夠一目了然地判斷整個(gè)色調(diào)分布。
    的頭像 發(fā)表于 12-15 09:20 ?1068次閱讀
    <b class='flag-5'>FPGA</b><b class='flag-5'>直方圖</b>處理方法

    一文帶你了解FPGA直方圖操作

    后面慢慢介紹,先重點(diǎn)介紹直方圖均衡。公眾號(hào):OpenFPGA 直方圖統(tǒng)計(jì)及FPGA實(shí)現(xiàn) 從數(shù)學(xué)上來(lái)說(shuō),
    發(fā)表于 01-10 15:07

    基于FPGA的HDTV視頻圖像灰度直方圖統(tǒng)計(jì)算法設(shè)計(jì)

    本文介紹了如何在FPGA 中利用Block RAM 的特殊結(jié)構(gòu)實(shí)現(xiàn)HDTV 視頻增強(qiáng)算法中灰度直方圖統(tǒng)計(jì)。灰度直方圖統(tǒng)計(jì)灰度直方圖統(tǒng)計(jì)是
    發(fā)表于 05-14 12:37

    有誰(shuí)用FPGA做過(guò)數(shù)字圖像直方圖統(tǒng)計(jì)

    剛開(kāi)始用FPGA做數(shù)字圖像處理,看了一些有關(guān)直方圖方面的資料但是感覺(jué)還是不太清晰,請(qǐng)問(wèn)有誰(shuí)做過(guò)求帶順便求推薦FPGA做數(shù)字圖像處理方面入門級(jí)
    發(fā)表于 08-21 09:48

    有誰(shuí)用FPGA做過(guò)數(shù)字圖像直方圖統(tǒng)計(jì)

    剛開(kāi)始用FPGA做數(shù)字圖像處理,看了一些有關(guān)直方圖方面的資料但是感覺(jué)還是不太清晰,請(qǐng)問(wèn)有誰(shuí)做過(guò)求帶順便求推薦FPGA做數(shù)字圖像處理方面入門級(jí)
    發(fā)表于 08-23 11:01

    基于FPGA圖像直方圖實(shí)時(shí)顯示

    ``基于FPGA圖像直方圖實(shí)時(shí)顯示 AT7_Xilinx開(kāi)發(fā)板(USB3.0+LVDS)資料共享 騰訊鏈接:https://share.weiyun.com/5GQyKKc 百度網(wǎng)盤鏈接
    發(fā)表于 07-12 17:33

    基于FPGA圖像直方圖均衡處理

    放在projectzstar_ex66matlab文件夾下。3基于FPGA直方圖均衡處理工程文件夾at7_img_ex04at7.srcssources_1 ew下的laplace_transform.v模塊實(shí)現(xiàn)
    發(fā)表于 07-14 17:26

    【干貨】基于FPGA圖像處理(圖像增強(qiáng))之直方圖均衡

    最近一直在用FPGA調(diào)圖像處理相關(guān)的算法,主要是集中在圖像增強(qiáng)和增晰方面。現(xiàn)在來(lái)介紹一個(gè)復(fù)雜度不高,但確實(shí)也還比較好用的圖像增強(qiáng)算法-直方圖
    發(fā)表于 12-08 09:40

    Labview圖像處理——直方圖介紹

    一、Labview直方圖程序介紹1、前面板2、程序框圖二、直方圖基本概念介紹圖像直方圖圖像的基本屬性之一,也是
    發(fā)表于 11-24 17:59

    基于FPGA的視頻圖像灰度信號(hào)直方圖均衡算法實(shí)現(xiàn)設(shè)計(jì)

    直方圖均衡作為一種基礎(chǔ)的圖像處理方法在很多領(lǐng)域得到應(yīng)用,但大多是通過(guò)DSP或者CPU編程實(shí)現(xiàn),其優(yōu)點(diǎn)是靈活性比較高,調(diào)試方便,最大的缺點(diǎn)是很難做到實(shí)時(shí)或者準(zhǔn)實(shí)時(shí)處理,這在某些領(lǐng)域是不可接受的。而使
    發(fā)表于 07-20 18:06 ?2692次閱讀
    基于<b class='flag-5'>FPGA</b>的視頻<b class='flag-5'>圖像</b>灰度信號(hào)<b class='flag-5'>直方圖</b>均衡算法<b class='flag-5'>實(shí)現(xiàn)</b>設(shè)計(jì)

    MATLAB如何實(shí)現(xiàn)圖像增強(qiáng)灰度變換直方圖均衡匹配

    在MATLAB數(shù)字圖像處理領(lǐng)域,如何實(shí)現(xiàn)空間域圖像增強(qiáng)的灰度變換,以及圖像直方圖的均衡和匹配(配準(zhǔn))?本文通過(guò)大量的圖片增強(qiáng)案例,從
    發(fā)表于 01-13 21:56 ?1.1w次閱讀
    MATLAB如何<b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>圖像</b>增強(qiáng)灰度變換<b class='flag-5'>直方圖</b>均衡匹配

    基于直方圖算法的FPGA設(shè)計(jì)架構(gòu)

    直方圖統(tǒng)計(jì)在圖像增強(qiáng)和目標(biāo)檢測(cè)領(lǐng)域有重要應(yīng)用,比如直方圖均衡,梯度直方圖直方圖的不同種類和統(tǒng)計(jì)方法請(qǐng)見(jiàn)之前的文章。本章就是用
    發(fā)表于 04-20 10:47 ?1200次閱讀
    基于<b class='flag-5'>直方圖</b>算法的<b class='flag-5'>FPGA</b>設(shè)計(jì)架構(gòu)

    如何使用FPGA實(shí)現(xiàn)實(shí)時(shí)圖像增強(qiáng)算法

    FPGA,通過(guò)并行處理結(jié)構(gòu)及流水線技術(shù),可實(shí)時(shí)處理每秒50幀780×582×12bits的可見(jiàn)光圖像。在處理視頻的過(guò)程中,由前一幀圖像直方圖信息,來(lái)增強(qiáng)后一幀
    發(fā)表于 02-03 15:21 ?10次下載
    如何使用<b class='flag-5'>FPGA</b><b class='flag-5'>實(shí)現(xiàn)</b>實(shí)時(shí)<b class='flag-5'>圖像</b>增強(qiáng)算法
    主站蜘蛛池模板: 757福利影院合集3000| 亚洲jizzjizz中文在线播放| 免费看欧美一级特黄α大片| 久久国产精品免费| 欧美xx网站| 男男gay高h文| 五月激情综合婷婷| 免费观看a毛片一区二区不卡| 国产成人一区二区三中文| 天天射天天操天天干| 福利视频999| 久久久久国产一级毛片高清版 | 免费视频网站在线观看| 情趣店上班h系列小说| 午夜日韩精品| 美女一级毛片毛片在线播放| 成人久久伊人精品伊人| 免费看欧美理论片在线| 国产在线精品一区免费香蕉| 色多多18免费观看| 国产主播在线一区| 色偷偷尼玛图亚洲综合| 综合亚洲一区二区三区| 日韩黄色成人| 7777在线| 亚洲乱强| 亚洲大成色www永久网址| 久久综合九色综合网站| 天天伊人网| 49pao强力免费打造在线高清| 日本免费一级| 亚洲夜夜骑| 91大神视频在线播放| 四虎看片| 丁香六月婷婷在线| 91网站免费在线观看| 欧美一级片在线视频| 天天综合亚洲国产色| 乱说欲小说又粗又长| 国产色女人| 国产精品japanese人妖|