精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

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

優(yōu)秀的IC/FPGA開(kāi)源項(xiàng)目:偽紅外圖像處理

OpenFPGA ? 來(lái)源:OpenFPGA ? 2023-06-09 09:42 ? 次閱讀

紅外圖像處理

副標(biāo)題:優(yōu)秀的IC/FPGA開(kāi)源項(xiàng)目(七)-偽紅外圖像處理

《優(yōu)秀的IC/FPGA開(kāi)源項(xiàng)目》是新開(kāi)的系列,旨在介紹單一項(xiàng)目,會(huì)比《優(yōu)秀的 Verilog/FPGA開(kāi)源項(xiàng)目》內(nèi)容介紹更加詳細(xì),包括但不限于綜合、上板測(cè)試等。兩者相輔相成,互補(bǔ)互充~

演示偽紅外圖像處理。

介紹

紅外攝像機(jī)因?yàn)閷?duì)可見(jiàn)光不敏感,所以在一些特殊行業(yè)應(yīng)用越來(lái)越廣泛。

紅外攝像機(jī)甚至可以透過(guò)太陽(yáng)鏡看到人眼,并且攝像機(jī)圖像不受白天或夜晚的影響,并且?guī)缀鯖](méi)有環(huán)境光。

因?yàn)檎嬲募t外sensor價(jià)格比較昂貴,所以這次選用一種偽紅外sensor,即利用相機(jī)自己的光源,即安裝在鏡頭旁邊的 LED,反射紅外光后進(jìn)項(xiàng)圖像采集,這是一種利用近紅外成像,和我們熟知的紅外攝像頭還是有區(qū)別的。

502858a0-0297-11ee-90ce-dac502259ad0.png

該項(xiàng)目展示了一些紅外圖像處理算法,這些算法可以提高圖像質(zhì)量。

所選FPGA是 ZYNQ-020 SoC,攝像頭是便宜的 Raspberry PI 攝像頭,帶有兩個(gè)紅外 LED,最大分辨率為 1080p@60Hz。

該項(xiàng)目中呈現(xiàn)的體系結(jié)構(gòu)是可擴(kuò)展的,可以輕松添加更多算法。

理論

我選擇了五種基于 3x3 內(nèi)核的圖像處理算法:

壞點(diǎn)校正

50326fca-0297-11ee-90ce-dac502259ad0.png

這是所有這類(lèi)傳感器的普遍問(wèn)題,是一種常見(jiàn)的預(yù)處理算法。

中值濾波器

503e2d60-0297-11ee-90ce-dac502259ad0.png

常見(jiàn)的噪聲平滑預(yù)處理算法。

低通濾波器(平滑濾波器)

504928e6-0297-11ee-90ce-dac502259ad0.png

噪聲平滑,這個(gè)算法使圖像平滑,不會(huì)像中值濾波器那樣使圖像模糊。

圖像銳化

50518a54-0297-11ee-90ce-dac502259ad0.png

通過(guò)“邊緣銳化”提高圖像質(zhì)量,即強(qiáng)調(diào)邊緣。

邊緣檢測(cè)

5059e406-0297-11ee-90ce-dac502259ad0.png

應(yīng)用其中一種算法后,對(duì)圖像邊緣處理后,圖像尺寸會(huì)減?。蛇x)。

506315bc-0297-11ee-90ce-dac502259ad0.png

架構(gòu)

所有算法都基于 3x3 內(nèi)核,這就是為什么所有算法內(nèi)核 (PE) 都必須與 FIFO 通信,每個(gè) PE 都有一行的延遲。只有當(dāng)?shù)诙袛?shù)據(jù)到達(dá)時(shí)才開(kāi)始應(yīng)用算法內(nèi)核,考慮到圖像處理時(shí)候會(huì)對(duì)邊界有影響,但是我們需要輸出端輸出相同的圖像大小。

506e5260-0297-11ee-90ce-dac502259ad0.png 架構(gòu) 507936ee-0297-11ee-90ce-dac502259ad0.png

選擇模塊是一個(gè)可擴(kuò)展的 MUX 網(wǎng)絡(luò),在上圖情況下,具有五個(gè)圖像處理算法,由六個(gè)級(jí)聯(lián)的 MUX-es 組成,一個(gè)用于濾波器輸出,一個(gè)用于輸入信號(hào)。數(shù)據(jù)流可以配置,在這種情況下,視頻流從輸入到輸出,它通過(guò)的圖像處理元素的順序和數(shù)量是可配置的。

算法內(nèi)核的結(jié)構(gòu)如下所示,基本上在這種情況下是一個(gè)延遲線(xiàn),它以視頻流作為輸入并輸出一個(gè) 3x3 矩陣,輸出是處理后的幀。

50903ede-0297-11ee-90ce-dac502259ad0.png

設(shè)計(jì)

在該架構(gòu)中,我在 VDMA 和 Gamma Correction 模塊之間插入了我的模塊。

50a03690-0297-11ee-90ce-dac502259ad0.png50ac9796-0297-11ee-90ce-dac502259ad0.png

我為每個(gè)行緩沖區(qū)添加了一個(gè) FIFO。

接口

所有模塊都使用規(guī)定好的幀接口 (FI),它與參考設(shè)計(jì)中使用的 AXI Stream 接口非常相似(https://reference.digilentinc.com/learn/programmable-logic/tutorials/zybo-z7-pcam-5c-demo/start),可以在兩者之間進(jìn)行轉(zhuǎn)換。從 AXI Stream 到 Frame 不需要轉(zhuǎn)換,反之則必須生成一些額外的信號(hào)。AXI Stream 接口只有幀開(kāi)始和行結(jié)束控制信號(hào)。

50b642f0-0297-11ee-90ce-dac502259ad0.png

moduleaxi_stream2frame#(
parameterDATA_WIDTH=24
)(
inputclk,//Systeclock
inputrst_n,//Asynchronousresetactivelow
//-------------------------Configurationinterface----------------------------------
input[11:0]cfg_img_w,//Imagewidth
input[11:0]cfg_img_h,//Imagewidth
//-------------------------AXI-Streaminterface-------------------------------------
inputm_axi_stream_tuser,//Startofframe
inputm_axi_stream_tvalid,//Slavehasvaliddata
inputm_axi_stream_tlast,//Endofframe
input[DATA_WIDTH-1:0]m_axi_stream_tdata,//Datatransferred
outputm_axi_stream_tready,//Masterisreadytoreceive
//------------------------------FrameInterface-----------------------------------
outputregs_frm_val,//Masterhasvaliddata
inputs_frm_rdy,//Slaveisreadytoreceive
outputreg[DATA_WIDTH-1:0]s_frm_data,//Datatransferred
outputregs_frm_sof,//StartofFrame
outputregs_frm_eof,//EndofFrame
outputregs_frm_sol,//StartofLine
outputregs_frm_eol//EndofLine
);
reg[11:0]pix_cnt;
reg[11:0]line_cnt;
wireinvalrdy;
wireoutvalrdy;
wireset_eof;
assigninvalrdy=m_axi_stream_tvalid&m_axi_stream_tready;
assignoutvalrdy=s_frm_rdy&s_frm_val;
assignm_axi_stream_tready=s_frm_rdy;
assignset_eof=(line_cnt==(cfg_img_h-1'd1))&m_axi_stream_tlast&invalrdy;

always@(posedgeclkornegedgerst_n)
if(~rst_n)pix_cnt<=?11'd0?????????;?else
if(m_axi_stream_tuser?&?invalrdy?)?pix_cnt?<=?11'd0?????????;?else?//?Reset?at?start?of?frame
if(m_axi_stream_tlast?&?invalrdy?)?pix_cnt?<=?11'd0?????????;?else?//?Reset?at?end?of?frame
if(invalrdy??????????????????????)?pix_cnt?<=?pix_cnt?+?1'd1;??????//?Increment?at?each?pixel
always@(posedge?clk?or?negedge?rst_n)
if(~rst_n???????????????????????)?line_cnt?<=?11'd0??????????;?else
if(m_axi_stream_tuser?&?invalrdy)?line_cnt?<=?11'd0??????????;?else?//?Reset?at?start?of?frame
if(m_axi_stream_tlast?&?invalrdy)?line_cnt?<=?line_cnt?+?1'd1;??????//?Increment?at?each?pixel
always@(posedge?clk?or?negedge?rst_n)
if(~rst_n??????????????????????????????)?s_frm_sol?<=?1'b0;?else
if(outvalrdy?&?s_frm_sol???????????????)?s_frm_sol?<=?1'b0;?else?//?Reset?sol?is?transmitted
if(m_axi_stream_tuser?&?invalrdy???????)?s_frm_sol?<=?1'b1;?else?//?Set?start?of?line?after?last?pixel?of?line?is?transmitted
if(outvalrdy?&?s_frm_eol?&?(~s_frm_eof))?s_frm_sol?<=?1'b1;??????//?Set?at?start?of?frame
always@(posedge?clk?or?negedge?rst_n)
if(~rst_n???????????????)?s_frm_eof?<=?1'b0;?else
if(outvalrdy?&?s_frm_eof)?s_frm_eof?<=?1'b0;?else?//?Reset?after?eof?is?transmitted
if(set_eof??????????????)?s_frm_eof?<=?1'b1;??????//?Set?when?last?pixel?is?received
always@(posedge?clk?or?negedge?rst_n)
if(~rst_n????????????????????????????)?s_frm_val?<=?1'b0;?else
if(s_frm_rdy?&?(~m_axi_stream_tvalid))?s_frm_val?<=?1'b0;?else?//?Reset?when?ready?and?no?valid?data?at?the?input
if(invalrdy??????????????????????????)?s_frm_val?<=?1'b1;???//?Set?if?data?is?received
always@(posedge?clk?or?negedge?rst_n)
if(~rst_n???????????????????????)?s_frm_eol?<=?1'b0;?else
if(outvalrdy?&?s_frm_eol????????)?s_frm_eol?<=?1'b0;?else?//?Reset?after?eol?is?transmitted
if(m_axi_stream_tlast?&?invalrdy)?s_frm_eol?<=?1'b1;??????//?Set?when?last?pixel?in?a?row?is?received
always@(posedge?clk?or?negedge?rst_n)
if(~rst_n????????????????????????)?s_frm_sof?<=?1'b0;?else
if(outvalrdy?&?s_frm_sof?????????)?s_frm_sof?<=?1'b0;?else?//?Reset?after?sof?is???????????????????????????????transmitted
if(m_axi_stream_tuser??&?invalrdy)?s_frm_sof?<=?1'b1;??????//?Set?when?first?pixel?is?received
always@(posedge?clk?or?negedge?rst_n)
if(~rst_n??)?s_frm_data?<=?{(DATA_WIDTH){1'b0}};?else
if(invalrdy)?s_frm_data?<=?m_axi_stream_tdata??;
endmodule?//axi_stream2Frame

配置sensor

這個(gè)攝像頭是搭配樹(shù)莓派使用的,所有驅(qū)動(dòng)都是閉源的,所以沒(méi)有配置示例。我在 SCL 和 SDA 引腳上的 I2C 引腳上焊接了兩根電線(xiàn)。將相機(jī)連接到 Raspeberry Pi 并將邏輯分析儀連接到焊線(xiàn),我按照相機(jī)接口指南

https://projects.raspberrypi.org/en/projects/getting-started-with-picamera

邏輯分析儀解碼了I2C,抓取的值將在最后附上excel。

50c4f34a-0297-11ee-90ce-dac502259ad0.png

該配置已添加到 C++ 代碼中。

攝像頭是 RGB 攝像頭,只有在房間黑暗時(shí)才會(huì)啟動(dòng)紅外攝像頭。為了解決這個(gè)問(wèn)題,我在sensor前面粘上了一塊塑料,這是紅外 LED 前面的過(guò)濾器。這不是一個(gè)很好的解決方案,但可以。

配置模塊

使用 APB 接口進(jìn)行配置。

511d8d20-0297-11ee-90ce-dac502259ad0.png

voidfilter_cfg()
{
Xil_Out32(APB_BASE_ADDR+CFG_IMG_WIDTH_ADDR,IMG_W);
Xil_Out32(APB_BASE_ADDR+CFG_IMG_HEIGHT_ADDR,IMG_H);
Xil_Out32(APB_BASE_ADDR+CFG_PIX_CORR_SEL_ADDR,0);
Xil_Out32(APB_BASE_ADDR+CFG_SHARP_SEL_ADDR,0);
Xil_Out32(APB_BASE_ADDR+CFG_SMOOTH_SEL_ADDR,0);
Xil_Out32(APB_BASE_ADDR+CFG_MEDIAN_SEL_ADDR,0);
Xil_Out32(APB_BASE_ADDR+CFG_LAPLACE_SEL_ADDR,0);
Xil_Out32(APB_BASE_ADDR+CFG_OUTPUT_SEL_ADDR,0);
Xil_Out32(APB_BASE_ADDR+CFG_PIX_CORR_THR_ADDR,0);
Xil_Out32(APB_BASE_ADDR+CFG_SHARP_COEF_ADDR,0);
Xil_Out32(APB_BASE_ADDR+CFG_TEST_MODE_EN_ADDR,0);
}

上面給出的配置是每個(gè)選擇器模塊的選擇?,F(xiàn)在它被配置為輸入流不進(jìn)行任何處理的情況下轉(zhuǎn)到輸出。

512b0d92-0297-11ee-90ce-dac502259ad0.png

voidfilter_cfg()
{
Xil_Out32(APB_BASE_ADDR+CFG_IMG_WIDTH_ADDR,IMG_W);
Xil_Out32(APB_BASE_ADDR+CFG_IMG_HEIGHT_ADDR,IMG_H);
Xil_Out32(APB_BASE_ADDR+CFG_PIX_CORR_SEL_ADDR,0);
Xil_Out32(APB_BASE_ADDR+CFG_SHARP_SEL_ADDR,0);
Xil_Out32(APB_BASE_ADDR+CFG_SMOOTH_SEL_ADDR,SMOOTH_IN_CODE);
Xil_Out32(APB_BASE_ADDR+CFG_MEDIAN_SEL_ADDR,0);
Xil_Out32(APB_BASE_ADDR+CFG_LAPLACE_SEL_ADDR,SMOOTH_IN_CODE);
Xil_Out32(APB_BASE_ADDR+CFG_OUTPUT_SEL_ADDR,LAPLACE_IN_CODE);
Xil_Out32(APB_BASE_ADDR+CFG_PIX_CORR_THR_ADDR,0);
Xil_Out32(APB_BASE_ADDR+CFG_SHARP_COEF_ADDR,0);
Xil_Out32(APB_BASE_ADDR+CFG_TEST_MODE_EN_ADDR,0);
}

Xil_Out32(APB_BASE_ADDR+CFG_SMOOTH_SEL_ADDR,SMOOTH_IN_CODE);

將輸入視頻流放入算法核心。

51352656-0297-11ee-90ce-dac502259ad0.png

演示

我展示了帶平滑和不帶平滑的拉普拉斯濾波器,我們可以觀(guān)察到圖像有噪聲,應(yīng)用平滑濾波器后圖像有所變化。

為了比較原始圖像和處理后的兩個(gè)圖像,在 Gamma 校正之后添加了第二個(gè) VDMA,,現(xiàn)在校正后的圖像和原始圖像都在 DDR 中,因此可以復(fù)制裁剪處理后的圖像并將裁剪區(qū)域替換為原始圖像。

工程鏈接

I2C 解碼的 csv

https://github.com/hszilard13/Infa-red-based-Image-processing-Zybo/blob/master/config_1080p_rgb.csv

整體工程

https://github.com/hszilard13/Infared-based-Image-processing-Zybo

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀(guā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)注

    1626

    文章

    21665

    瀏覽量

    601803
  • led
    led
    +關(guān)注

    關(guān)注

    240

    文章

    23134

    瀏覽量

    658405
  • 光源
    +關(guān)注

    關(guān)注

    3

    文章

    696

    瀏覽量

    67735
  • 圖像處理
    +關(guān)注

    關(guān)注

    27

    文章

    1281

    瀏覽量

    56637
  • I2C
    I2C
    +關(guān)注

    關(guān)注

    28

    文章

    1481

    瀏覽量

    123278

原文標(biāo)題:工程鏈接

文章出處:【微信號(hào):Open_FPGA,微信公眾號(hào):OpenFPGA】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    DSP+FPGA+ASIC設(shè)計(jì)的實(shí)時(shí)紅外圖像處理系統(tǒng)

    1.引言 本文針對(duì)紅外圖像處理系統(tǒng)的實(shí)時(shí)性要求,提出了基于DSP+FPGA+ASIC的圖像處理
    發(fā)表于 07-22 15:18 ?892次閱讀

    開(kāi)源FPGA項(xiàng)目有哪些

    請(qǐng)問(wèn)開(kāi)源FPGA項(xiàng)目有哪些?
    發(fā)表于 12-26 12:09

    公司項(xiàng)目外包:圖像處理FPGA實(shí)現(xiàn))

    本公司有個(gè)項(xiàng)目需要尋找外援,價(jià)格面談大概要求:高清網(wǎng)絡(luò)攝像機(jī)采集到的圖像是原始圖像(貝爾模式下的RGB即CFA模式)經(jīng)過(guò)轉(zhuǎn)換處理成普通的RGB(需在
    發(fā)表于 12-07 10:16

    怎么設(shè)計(jì)多DSP紅外實(shí)時(shí)圖像處理系統(tǒng)?

    隨著紅外探測(cè)技術(shù)迅猛的發(fā)展,當(dāng)今紅外實(shí)時(shí)圖像處理系統(tǒng)所要處理的數(shù)據(jù)量越來(lái)越大,速度要求也越來(lái)越快,利用目前主流的單DSP+
    發(fā)表于 08-23 08:29

    如何設(shè)計(jì)多DSP紅外實(shí)時(shí)圖像處理系統(tǒng)?

    隨著紅外探測(cè)技術(shù)迅猛的發(fā)展,當(dāng)今紅外實(shí)時(shí)圖像處理系統(tǒng)所要處理的數(shù)據(jù)量越來(lái)越大,速度要求也越來(lái)越快,利用目前主流的單DSP+
    發(fā)表于 11-08 06:31

    FPGA開(kāi)發(fā)者項(xiàng)目連載】基于FPGA紅外激光圖像采集及顯示

    項(xiàng)目名稱(chēng):基于FPGA紅外激光圖像采集及顯示應(yīng)用領(lǐng)域:醫(yī)療,工業(yè)相機(jī),商業(yè)圖像處理參賽計(jì)劃:將
    發(fā)表于 05-12 18:02

    基于FPGA紅外圖像處理系統(tǒng)及算法設(shè)計(jì)

    本文在研究紅外焦平面陣列非均勻性的特點(diǎn)和成因后,首先設(shè)計(jì)了紅外圖像實(shí)時(shí)處理的硬件平臺(tái)。本硬件平臺(tái)以FPGA為核心
    發(fā)表于 05-17 14:29 ?5次下載

    基于FPGA的多功能紅外圖像源系統(tǒng)設(shè)計(jì)

    基于FPGA的多功能紅外圖像源系統(tǒng)設(shè)計(jì)。
    發(fā)表于 08-30 15:10 ?9次下載

    FPGA圖像處理

    FPGA圖像處理
    發(fā)表于 12-14 22:29 ?19次下載

    如何使用DSP和FPGA實(shí)現(xiàn)紅外圖像銳化算法的實(shí)現(xiàn)

    為了改善紅外圖像的成像質(zhì)量,根據(jù)紅外圖像的特點(diǎn),提出了一種改進(jìn)的拉普拉斯銳化算法——受限拉普拉斯銳化算法,并采用DSP+FPGA的架構(gòu)進(jìn)行實(shí)
    發(fā)表于 01-25 16:04 ?6次下載
    如何使用DSP和<b class='flag-5'>FPGA</b>實(shí)現(xiàn)<b class='flag-5'>紅外</b><b class='flag-5'>圖像</b>銳化算法的實(shí)現(xiàn)

    FPGA中如何使用Verilog處理圖像

    FPGA項(xiàng)目旨在詳細(xì)展示如何使用Verilog處理圖像,從Verilog中讀取輸入位圖圖像(.bmp),
    的頭像 發(fā)表于 09-23 15:50 ?5985次閱讀

    優(yōu)秀的 Verilog/FPGA開(kāi)源項(xiàng)目介紹(一)

    優(yōu)秀的 Verilog/FPGA開(kāi)源項(xiàng)目介紹(一)-PCIe通信 今天開(kāi)始會(huì)陸續(xù)介紹一些優(yōu)秀開(kāi)源
    的頭像 發(fā)表于 10-11 15:31 ?9186次閱讀
    <b class='flag-5'>優(yōu)秀</b>的 Verilog/<b class='flag-5'>FPGA</b><b class='flag-5'>開(kāi)源</b><b class='flag-5'>項(xiàng)目</b>介紹(一)

    紅外線(xiàn)板開(kāi)源項(xiàng)目

    電子發(fā)燒友網(wǎng)站提供《紅外線(xiàn)板開(kāi)源項(xiàng)目.zip》資料免費(fèi)下載
    發(fā)表于 07-12 11:14 ?0次下載
    <b class='flag-5'>紅外</b>線(xiàn)板<b class='flag-5'>開(kāi)源</b><b class='flag-5'>項(xiàng)目</b>

    TTL FPGA開(kāi)源項(xiàng)目

    電子發(fā)燒友網(wǎng)站提供《TTL FPGA開(kāi)源項(xiàng)目.zip》資料免費(fèi)下載
    發(fā)表于 07-28 10:18 ?3次下載
    TTL <b class='flag-5'>FPGA</b><b class='flag-5'>開(kāi)源</b><b class='flag-5'>項(xiàng)目</b>

    優(yōu)秀IC/FPGA開(kāi)源項(xiàng)目(二)-NetFPGA

    從上面的工作可以看出DPU的核心是:網(wǎng)絡(luò)。所以我們今天講一個(gè)未來(lái)的發(fā)展核心之一:用FPGA實(shí)現(xiàn)NIC(network interface controller,網(wǎng)絡(luò)接口控制器),從該項(xiàng)目出發(fā)可以實(shí)現(xiàn)數(shù)據(jù)可控制化,進(jìn)而實(shí)現(xiàn)DPU功能。
    的頭像 發(fā)表于 05-19 11:11 ?2921次閱讀
    <b class='flag-5'>優(yōu)秀</b>的<b class='flag-5'>IC</b>/<b class='flag-5'>FPGA</b><b class='flag-5'>開(kāi)源</b><b class='flag-5'>項(xiàng)目</b>(二)-Net<b class='flag-5'>FPGA</b>