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

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

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

基于ZYNQ的CameraLink圖像采集與邊緣檢測開發(fā)詳解

YCqV_FPGA_EETre ? 來源:FPGA開發(fā)圈 ? 2020-06-03 16:42 ? 次閱讀

1.

案例說明

(1) PL端接入CameraLink相機,通過Base模式采集圖像(1280*1024),然后通過VDMA緩存到PS端DDR。

(2)使用AXI4-Stream Switch IP核將圖像復(fù)分成兩路,一路用于邊緣檢測處理(Sobel算法),另一路直接回顯。

(3)利用Video Mixer IP核將圖像疊加,通過HDMI輸出原始圖像或者算法處理后的圖像。

本案例支持CameraLink Base/Full模式、彩色/黑白相機。

此開發(fā)詳解基于創(chuàng)龍ZYNQ Z-7045/Z-7100評估板TLZ7xH-EVM展開。

TLZ7xH-EVM評估板

2.

案例框圖

3.

申請IP核license

本開發(fā)案例使用的Video Mixer和Chroma Resampler IP核,需要到官網(wǎng)下載IP核免費license,否則將無法通過TcL腳本生成Vivado工程。

請參照創(chuàng)龍TLZ7xH-EVM評估板(ZYNQ Z-7045/Z-7100)用戶手冊《Xilinx Vivado 2017.4及License安裝教程》文檔,導(dǎo)入IP核。

成功導(dǎo)入后,點擊View License Status可以查看新添加的IP核license如下圖。

4.

Vivado工程說明

參照創(chuàng)龍TLZ7xH-EVM評估板(ZYNQ Z-7045/Z-7100)《基于TcL腳本生成Vivado工程及編譯》文檔,使用TcL腳本生成Vivado工程。

(1)生成評估板TLZ7xH-EVM、ZYNQ型號為xc7z100的Vivado工程:

Vivado#vivado -mode batch -source tl_cameralink_edge_display_project.tcl -tclargs tlz7xh-evm xc7z100ffg900-2

(2)生成評估板TLZ7xH-EVM、ZYNQ型號為xc7z045的Vivado工程:

Vivado#vivado -mode batch -source tl_cameralink_display_project.tcl -tclargs tlz7xh-evm xc7z045ffg900-2

進入Vivado工程所在的runs路徑,雙擊.xpr文件打開工程。

點擊"IP INTEGRATOR -> Open Block Design",打開Vivado工程如下圖所示。

Base模式

點擊Address Editor選項,可以看到IP核分配的地址,在PS端可以通過配置這些地址(寄存器)來控制IP核。

5.

IP核與模塊簡介

lvds_n_x_1to7_sdr_rx模塊

源碼路徑:

hwsrchdllvds_n_x_1to7_sdr_rx.v

模塊實現(xiàn)了將差分輸入數(shù)據(jù)轉(zhuǎn)化成并行數(shù)據(jù),參考時鐘delay_refclk_in需接200MHz或者300MHz,本例程使用PS端的200MHz的FCLK1。雙擊打開配置界面。參數(shù)N表示通道數(shù),X表示每個通道的數(shù)據(jù)差分對數(shù)量。

根據(jù)CameraLink V2.0標(biāo)準(zhǔn):

Lite/Base模式:單通道,每通道數(shù)據(jù)差分對為4對,需要1個連接器。

Medium模式:雙通道,每通道數(shù)據(jù)差分對為4對,需要2個連接器。

Full/80bit模式:三通道,每通道數(shù)據(jù)差分對為4對,需要2個連接器。

配置N=1表示使用Base模式,N=2為Medium模式,N=3為Full模式。X固定為4。更詳細的說明請查閱文檔xapp585-lvds-source-synch-serdes-clock-multiplication.pdf。

cameralink_bit_allocation_rx模塊

源碼路徑:

hwsrchdlcameralink_bit_allocation_rx.v

功能:將lvds_n_x_1to7_sdr_rx模塊Serdes串并轉(zhuǎn)換出來的數(shù)據(jù)進行重組,分離出行同步信號、場同步型號、數(shù)據(jù)有效信號和每個像素數(shù)據(jù)。參數(shù)N表示通道數(shù)量和lvds_n_x_1to7_sdr_rx模塊功能一致。

N=1,Base模式,輸出端PortA、PortB、PortC有效。

N=2,Meduim模式,輸出端PortA、PortB、PortC、PortD、PortE、PortF有效。

N=3,F(xiàn)ull模式,輸出端PortA、PortB、PortC、PortD、PortE、PortF、PortG、PortH有效。

關(guān)鍵代碼解釋:

(1) data_in的數(shù)據(jù)排列格式(lvds_n_x_1to7_sdr_rx模塊串轉(zhuǎn)并后的數(shù)據(jù))。

lvds_n_x_1to7_sdr_rx模塊將每一對數(shù)據(jù)差分對轉(zhuǎn)換后的數(shù)據(jù)如下(XAPP585文檔):

CameraLink(LVDS視頻)協(xié)議標(biāo)準(zhǔn)如下圖所示。

結(jié)合CameraLink(LVDS視頻)協(xié)議標(biāo)準(zhǔn),得出4對數(shù)據(jù)通道轉(zhuǎn)換后的數(shù)據(jù)在data_in數(shù)據(jù)的排列順序如下。

(2)分離出行場同步信號、數(shù)據(jù)有效信號和像素數(shù)據(jù)。

根據(jù)CameraLink協(xié)議:

RX24對應(yīng)行有效信號LVAL(行同步信號)。

RX25對應(yīng)幀有效信號FVAL(場同步信號)。

RX26對應(yīng)數(shù)據(jù)有效信號DVAL。

其他對應(yīng)關(guān)系如下圖:

因此,根據(jù)上圖即可將各信號分離出來。

Video In to AXI4-Stream IP核

Video In to AXI4-Stream IP核配置為Mono/Sensor視頻格式,Base模式2 pixels per clk,每個色彩數(shù)據(jù)位寬為8bits。關(guān)于IP核的詳細技術(shù)說明可以查看《pg043_v_vid_in_axi4s.pdf》文檔。

VDMA(AXI Video Direct Memory Access) IP核

VDMA IP核技術(shù)說明文檔為《pg020_axi_vdma.pdf》。S2MM是將視頻流傳到DDR中,MM2S是從DDR中把圖像數(shù)據(jù)傳輸出去。配置如下圖所示。

配置VDMA為讀寫跟隨模式。

AXI4-StreamSubsetConverterIP核

實現(xiàn)功能:Y轉(zhuǎn)RGB。

AXI4-Stream Switch IP核

實現(xiàn)功能:將圖像復(fù)分成兩路,一路用于邊緣檢測處理(Sobel算法),另一路直接回顯。

YCrCbtoRGB Color-SpaceConverterIP核

實現(xiàn)功能:RGB轉(zhuǎn)YCrCb444。

ChromeResamplerIP核

實現(xiàn)功能:YCbCr444轉(zhuǎn)YCbCr422,輸入24位YCbCr444數(shù)據(jù),輸出16位YCbCr422數(shù)據(jù)。

Image_filter IP核

Image_filter IP核源碼是基于Xilinx的xapp1167的Sobel邊緣檢測算法例程,對應(yīng)的HLS源碼在FPGA-HLS-demos目錄下,技術(shù)說明文檔為《ug925-zynq-zc702-base-trd.pdf》。

《ug925-zynq-zc702-base-trd.pdf》文檔附錄A:Register Description -> Sobel Filter Registers小節(jié)有相關(guān)寄存器說明。

寄存器0x00:控制和狀態(tài)寄存器,可控制IP核的停止和啟動

寄存器0x14:設(shè)置圖像的行數(shù)(最大支持1920x1080)

寄存器0x1c:設(shè)置圖像的列數(shù)

寄存器0xb4:Sobel濾波的高閾值

寄存器0xbc:Sobel濾波的低閾值

寄存器0xc4:反轉(zhuǎn)Sobel濾波器的輸出(黑白反轉(zhuǎn))

寄存器的定義也可以可查看以下文件:ip_package/xilinx_com_hls_image_filter_1_0/drivers/image_filter_v1_0/src/ximage_filter_hw.h

Video Mixer IP核

Video Mixer IP核可以對多路視頻進行疊加輸出,為OSD IP的升級版,功能和OSD相似。本例程的作用為,將相機輸入的圖像,通過Mixer IP核疊加到1920*1080的視頻中,最終通過HDMI輸出顯示。需要通過PS端,配置寄存器使能Mixer。

AXI Uartlite IP核

用于和CameraLink相機通信,PS端可通過該接口對CameraLink相機進行配置(分辨率、Base/Full模式等功能)。具體說明請參考pg142-axi-uartlite.pdf。

Video Timing Controller IP核

Video Timing Controller IP核用于產(chǎn)生分辨率為1080P60的時序,用于HDMI輸出,關(guān)于IP核的詳細技術(shù)說明可以查看《pg016_v_tc.pdf》文檔。雙擊Vivado工程v_tc IP核框圖。在彈出的界面,點擊"Default/Constant",可以看到已將Video Timing Controller IP核配置成1080P60的時序,如下圖所示。

AXI-Streamto video out IP核

AXI-Stream to video out IP核配置視頻格式為RGB,1 pixels per clk,每個色彩數(shù)據(jù)位寬為8bits。關(guān)于IP核的詳細技術(shù)說明可以查看《pg044_v_axis_vid_out.pdf》文檔。雙擊v_axi4s_vid_out IP核框圖,查看IP核具體配置如下圖。

Clocking Wizard IP核

配置一路148.5MHz的時鐘,用于HDMI輸出。該時鐘對應(yīng)的是1080P60的像素時鐘。

若輸入其他分辨率的視頻,則需要修改VDMA IP核中圖像大小的配置、Video Timing Controller IP的時序和Clocking Wizard IP核輸出的像素時鐘。

6.

案例演示

實驗硬件說明

CameraLink相機參考型號:

彩色RS-A5241-CC107-S00,支持Full/Base,分辨率2560*2048,幀率107Hz

黑白RS-A5241-CM107-S00,支持Full/Base,分辨率2560*2048,幀率107Hz

參考下表和圖將相機接到評估板CameraLink接口,顯示器接到HDMI OUT接口。

基于Linux系統(tǒng)測試

評估板上電啟動進入文件系統(tǒng),執(zhí)行如下指令新建一個"/lib/firmware"文件夾。將由Vivado工程編譯生成的xxx.bin文件傳送到評估板文件系統(tǒng)的"/lib/firmware/"目錄下,并重命名為system_wrapper.bin。

參考創(chuàng)龍TLZ7xH-EVM評估板(Z-7045/Z-7100)用戶手冊《生成PL設(shè)備樹及動態(tài)加載PL程序和設(shè)備樹》文檔,生成設(shè)備樹,然后將編譯好的dtbo文件拷貝到文件系統(tǒng)"lib/firmware"目錄下。

Target#mkdir -p/lib/firmware/

HDMI OUT芯片接的是PS端的I2C,需要加載PS端設(shè)備樹,加載成功后如下圖所示。

Target#mkdir /configfs

Target#mount -t configfs configfs /configfs

Target#mkdir /configfs/device-tree/overlays/full

Target#echo -n zynq-zc706-overlay.dtbo > /configfs/device-tree/overlays/full/path

再加載PL端程序和設(shè)備樹??梢钥吹紸XI UART對應(yīng)的節(jié)點為/dev/ttyUL1。

Target#mkdir /configfs/device-tree/overlays/cameralink

Target#echo -n "pl.dtbo" > /configfs/device-tree/overlays/cameralink/path

將例程image目錄下的腳本拷貝到文件系統(tǒng),執(zhí)行腳本進行配置,即可在顯示器看到相機采集的視頻。

Target#./camera_init.sh base //初始化CameraLink相機

Base模式

腳本說明:

Target#./sil9022_i2c_1080p.sh //初始化HDMI OUT

Target#./axi_vdma_cameralink.sh //初始化VDMA

Target# ./switch_video.sh 1 //配置AXI4-Stream Switch IP核,參數(shù)1為原始圖像

Target#./mixer_init.sh 1 //初始化Video Mixer IP核,參數(shù)1為原始圖像

Target#./sobel_filter_init.sh //初始化Image_filter IP核

Target#./mixer_init.sh 2 && ./switch_video.sh 2 //切換到算法處理后的圖像

對于RS-A5241的相機,Base模式下,1280*1024的分辨率狀態(tài)下,圖像幀率有120+幀,所以圖像曝光短,圖像較暗,增大Image_filter IP的閾值可以獲得更好的效果。

Target#devmem 0x43c000b4 w 0xff //設(shè)置高閾值為0xff

Target#devmem 0x43c000bc w 0xa0 //設(shè)置低閾值為0xa0

設(shè)置顏色反轉(zhuǎn):

Target#devmem 0x43c000c4 w 1 //0xc4寄存器設(shè)置為1,邊緣為白色,若為0;邊緣為黑色

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

    關(guān)注

    2

    文章

    1078

    瀏覽量

    40355
  • 邊緣檢測
    +關(guān)注

    關(guān)注

    0

    文章

    92

    瀏覽量

    18184
  • Zynq
    +關(guān)注

    關(guān)注

    9

    文章

    607

    瀏覽量

    47084

原文標(biāo)題:基于ZYNQ的CameraLink圖像采集與邊緣檢測開發(fā)詳解

文章出處:【微信號:FPGA-EETrend,微信公眾號:FPGA開發(fā)圈】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    基于 DSP5509 進行數(shù)字圖像處理中 Sobel 算子邊緣檢測的硬件連接電路圖

    以下是基于 DSP5509 進行數(shù)字圖像處理中 Sobel 算子邊緣檢測的硬件設(shè)計方案: 一、總體架構(gòu) 圖像采集:使用合適的
    發(fā)表于 09-25 15:25

    基于VDMA的遠程圖像采集系統(tǒng)參考設(shè)計

    本文參考設(shè)計基于 AMD ZYNQ 7000 Device, 使用 VDMA 做原始圖像采集系統(tǒng),在 Petalinux 下做服務(wù)器,通過 Socket 發(fā)送圖像至 Windows 或
    的頭像 發(fā)表于 09-18 10:11 ?283次閱讀
    基于VDMA的遠程<b class='flag-5'>圖像</b><b class='flag-5'>采集</b>系統(tǒng)參考設(shè)計

    DSP國產(chǎn)教學(xué)實驗箱_實驗案例_操作教程:5-11 邊緣檢測

    一、實驗?zāi)康?學(xué)習(xí)Canny邊緣檢測的原理,掌握圖像的讀取方法,并實現(xiàn)邊緣檢測。 二、實驗原理 邊緣
    發(fā)表于 07-19 10:38

    圖像邊緣檢測系統(tǒng)的設(shè)計流程

    圖像邊緣檢測系統(tǒng)的設(shè)計流程是一個涉及多個步驟的復(fù)雜過程,它旨在從圖像中提取出重要的結(jié)構(gòu)信息,如邊界、輪廓等。這些邊緣信息對于
    的頭像 發(fā)表于 07-17 16:39 ?255次閱讀

    opencv圖像識別有什么算法

    圖像識別算法: 邊緣檢測邊緣檢測圖像識別中的基本步驟之一,用于識別
    的頭像 發(fā)表于 07-16 10:40 ?617次閱讀

    基于FPGA的實時邊緣檢測系統(tǒng)設(shè)計,Sobel圖像邊緣檢測,F(xiàn)PGA圖像處理

    摘要 :本文設(shè)計了一種 基于 FPGA 的實時邊緣檢測系統(tǒng) ,使用OV5640 攝像頭模塊獲取實時的視頻圖像數(shù)據(jù),提取圖像邊緣信息并通過 V
    發(fā)表于 05-24 07:45

    算法系列:基于 FPGA 的圖像邊緣檢測系統(tǒng)設(shè)計(sobel算法)

    今天給大俠帶來基于 FPGA 的圖像邊緣檢測設(shè)計,話不多說,上貨。 設(shè)計流程如下:mif文件的制作→ 調(diào)用 ip 核生成rom以及仿真注意問題→ 灰度處理→ 均值濾波:重點是3*3 像素陣列
    發(fā)表于 03-26 16:40

    OpenCV邊緣檢測算子Laplace、LoG詳解

    一階導(dǎo)數(shù)算子(例如 Sobel 算子)通過對圖像求導(dǎo)來確定圖像邊緣,數(shù)值絕對值較高的點對應(yīng)了圖像邊緣。如果繼續(xù)求二階導(dǎo),原先數(shù)值絕對值較
    的頭像 發(fā)表于 12-21 16:34 ?1857次閱讀
    OpenCV<b class='flag-5'>邊緣</b><b class='flag-5'>檢測</b>算子Laplace、LoG<b class='flag-5'>詳解</b>

    圖像采集卡與千兆卡的區(qū)別

    卡是一種專門用于接收和處理圖像信號的設(shè)備。它一般通過接口將攝像機、監(jiān)控設(shè)備等圖像源連接到計算機上,實現(xiàn)圖像采集、存儲、處理和傳輸?shù)裙δ堋?b class='flag-5'>圖像
    的頭像 發(fā)表于 12-15 09:57 ?1287次閱讀

    機器視覺中采集圖像太暗時要如何增強圖像亮度?

    常需要采集圖像并根據(jù)圖像來進行下一步進程,如果采集圖像特別暗就不利于缺陷識別和檢測,下面主要從
    的頭像 發(fā)表于 12-15 08:36 ?747次閱讀
    機器視覺中<b class='flag-5'>采集</b>的<b class='flag-5'>圖像</b>太暗時要如何增強<b class='flag-5'>圖像</b>亮度?

    國產(chǎn)嵌入式實驗箱操作教程_創(chuàng)龍教儀:5-12 邊緣檢測(LCD顯示)

    顯示的初始化,最后讀取工程目錄下的BMP圖像并進行邊緣檢測處理,并在 LCD 顯示邊緣檢測前后的圖像
    發(fā)表于 12-14 14:09

    FPGA圖像處理方法

    圖像細節(jié)。 FPGA 圖像處理方法 1、圖像增強 兩大方法:空間域方法和時間域方法(以后再詳述) 2、圖像濾波 (1)平滑空間 濾波器 (2)中值濾波 算法 3、
    的頭像 發(fā)表于 12-02 13:15 ?964次閱讀

    圖像處理算法——邊緣檢測

    基于邊緣檢測的分析不易受整體光照強度變化的影響,同時利用邊緣信息容易凸顯目標(biāo)信息和達到簡化處理的目的,因此很多圖像理解方法都以邊緣為基礎(chǔ)。
    的頭像 發(fā)表于 11-30 16:56 ?901次閱讀
    <b class='flag-5'>圖像</b>處理算法——<b class='flag-5'>邊緣</b><b class='flag-5'>檢測</b>

    Canny雙閾值邊緣檢測和弱邊緣連接詳解

    在上一篇FPGA圖像處理--Canny邊緣檢測(一)里介紹了Canny邊緣檢測的NMS計算,這里就介紹一下雙閾值
    的頭像 發(fā)表于 11-18 17:07 ?2203次閱讀

    FPGA圖像處理之Canny邊緣檢測

    邊緣檢測算法里面Sobel是比較簡單的一個算法,但是其檢測出來的邊緣往往是比較粗的,效果不是很好,因為我們最理想的邊緣肯定就是一個寬度為1
    的頭像 發(fā)表于 11-17 09:10 ?1392次閱讀
    FPGA<b class='flag-5'>圖像</b>處理之Canny<b class='flag-5'>邊緣</b><b class='flag-5'>檢測</b>