女人荫蒂被添全过程13种图片,亚洲+欧美+在线,欧洲精品无码一区二区三区 ,在厨房拨开内裤进入毛片

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

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

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

FPGA通過UDP以太網(wǎng)傳輸JPEG壓縮圖片

OpenFPGA ? 來源:OpenFPGA ? 2024-01-26 09:30 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

FPGA 通過 UDP 以太網(wǎng)傳輸 JPEG 壓縮圖片

簡介

在 FPGA 上實現(xiàn)了 JPEG 壓縮和 UDP 以太網(wǎng)傳輸。從攝像機的輸入中獲取單個灰度幀,使用 JPEG 標準對其進行壓縮,然后通過UDP以太網(wǎng)將其傳輸?shù)搅硪粋€設備(例如計算機),所有這些使用FPGA(Verilog)實現(xiàn)。

本文是常春藤盟校Cornell University 康奈爾大學的FPGA項目,僅供參考學習~

理論背景

JPEG 圖像壓縮是一種有損壓縮標準,它使用 DCT 變換及其相關屬性來減少用于表示圖像的位數(shù)。編碼過程涉及許多步驟,在我們的設計中將其分解為幾個獨立模塊。此外,為了驗證壓縮的正確性,還為系統(tǒng)設計了UDP以太網(wǎng)傳輸。

離散余弦變換

離散余弦變換 (Discrete Cosine Transform, DCT)類似于傅里葉變換將周期函數(shù)表示為不同頻率的正弦之和,其可以將有限長度的數(shù)字序列表示為不同頻率的余弦項的總和。DCT,更具體地說是DCT-II,由于其高能量壓縮特性而被用于圖像壓縮。簡而言之,大部分數(shù)據(jù)(或原始信息)可以被壓縮為更少的比特數(shù)。

JPEG 壓縮的第一步是將相關圖像分割成 8x8 的像素塊。然后將 2D-DCT 應用于每個 8x8 塊。2-D DCT 的結果表示原始塊在與矩陣索引相對應的離散頻率處的空間頻率信息。變換后,左上系數(shù)給出空間DC信息,右下系數(shù)給出最高空間頻率(水平和垂直方向)信息。

注意,左上元素在水平和垂直方向上的空間頻率較低,而右下元素的頻率較高。使用 DCT,大多數(shù)原始信息可以從較低頻率系數(shù)(靠近左上角的系數(shù))重建,因為這些系數(shù)中的高能量壓縮。此外,人類視覺系統(tǒng)對高頻空間內(nèi)容中的錯誤的感知能力較差。這兩個原因疊加在一起意味著低頻系數(shù)中的誤差比高頻元素中的誤差對人類來說更加明顯。

2-D DCT 運算是可分離的,意味著它可以通過對正在分析的塊(8x8)應用兩次 1-D DCT 來獲得。首先對塊的每一行執(zhí)行一維變換,然后對行變換結果的列再執(zhí)行一維變換。一維 DCT 系數(shù)可以使用以下等式獲得:

15ec461e-bbe3-11ee-8b88-92fbcf53809c.png

其中 k 是系數(shù)的索引。對于 JPEG 變換的情況,因為變換應用于圖像的 8x8 像素塊,所以 N 始終等于 8。

量化

DCT 應用于 8x8 塊時,量化因子會應用于系數(shù)。簡而言之,此步驟使用與能量密度相關的步長對系數(shù)進行離散化。低頻系數(shù)以較小的步長量化,因此比以較大步長量化的誤差更小。頻率越高,步長越大,從而降低了不太重要元素的精度。這是壓縮過程中的有損步驟。

15f87e70-bbe3-11ee-8b88-92fbcf53809c.png

盡管 JPEG 壓縮標準沒有指定要使用的量化矩陣,但上面建議的矩陣之一。為了量化 2-D DCT 的結果,每個系數(shù)除以上面矩陣中的適當值,并四舍五入到最接近的整數(shù)。

Zig-Zag 測序

量化后,二維矩陣被重新排列成一維數(shù)組。以給出具有高能量密度的系數(shù)的方式讀取元素。排序以之字形方法完成,使得系數(shù)以遞增的空間頻率順序排列。使用這種方法,更重要的系數(shù)出現(xiàn)在序列中較早的位置,而不太重要的系數(shù)則出現(xiàn)在較晚的位置。

15ffc306-bbe3-11ee-8b88-92fbcf53809c.png

可變大小、行程長度編碼

假設高頻系數(shù)使用較大的步長進行量化,這些系數(shù)為零的可能性比低頻系數(shù)高得多。這對零值系數(shù)的候選進行了分組,使我們能夠假設一系列零的可能性。

JPEG 標準壓縮的主要來源是可變大小和行程長度編碼。壓縮中的此步驟使用霍夫曼編碼和可變長度編碼的組合。每個非零系數(shù)都被轉換為可變長度的位串或代碼。該代碼包含其數(shù)量和長度信息(即 0 與 00 不同)。

如前所述,之字形組織增加了連續(xù)零的可能性,尤其是在數(shù)組末尾附近。為了避免發(fā)送連續(xù)的零,前面的零的行程長度被編碼到每個非零系數(shù)的轉換中。每個非零系數(shù)都被編碼為可變長度代碼,以及指示前面的零游程的“標頭”霍夫曼代碼以及 VL 代碼的長度。鏈接(https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/f2009/jl589_jbw48/jl589_jbw48/trans_tables.html)顯示了像素轉換表和霍夫曼表 。這些轉換表僅適用于圖像的亮度值。由于我們的系統(tǒng)處理灰度圖像,所以無需改變方案,但是對于彩色圖像使用的色度值有不同的轉換方案。

無論長度如何,霍夫曼碼都是唯一可識別的,因此在不知道長度的情況下始終可以識別新非零值的零行程和大小。然后,使用霍夫曼給出的大小,可以提取以下 VL 位并將其轉換回適當?shù)姆橇阆禂?shù)。除非事先知道代碼的長度,否則 VL 代碼無法唯一識別。

DC與AC系數(shù)

DC 系數(shù)的編碼與 AC 系數(shù)略有不同。由于 DC 系數(shù)不會有前面的零(這些零不會在塊之間傳遞),因此霍夫曼碼僅反映 VL 碼的長度。

以太網(wǎng)

在開放系統(tǒng)互連參考模型(Open System Interconnection Reference Model,OSI 模型)中,以太網(wǎng)位于鏈路層和物理層。在物理層,以太網(wǎng)描述了線路如何互連。在鏈路層,以太網(wǎng)指定以太網(wǎng)幀應如何格式化以及幀應如何傳送。

由于以太網(wǎng)本質(zhì)上是一種廣播協(xié)議,可能有許多設備連接到同一物理線路,因此一次只能有一個設備進行廣播。如果線路發(fā)生沖突,以太網(wǎng)控制器能夠檢測到?jīng)_突并執(zhí)行隨機退避。隨機退避僅僅意味著在檢測到?jīng)_突時,在嘗試另一次發(fā)送之前等待隨機的時間。以太網(wǎng)幀由前導碼、幀起始定界符、MAC 目標、MAC 源、以太網(wǎng)類型、有效負載和校驗和組成。

關于以太網(wǎng)的介紹可以查看《基于FPGA的網(wǎng)口通信實例設計總結》。

用戶數(shù)據(jù)報協(xié)議/互聯(lián)網(wǎng)協(xié)議

用戶數(shù)據(jù)報協(xié)議 (UDP) 和互聯(lián)網(wǎng)協(xié)議 (IP) 分別位于 OSI 模型的接下來兩層:傳輸層和網(wǎng)絡層。UDP/IP 協(xié)議與以太網(wǎng)一樣,不保證可靠的數(shù)據(jù)包接收,只能保證盡力傳送。IP 協(xié)議的主要目的是在鏈路層之上提供一個抽象層。這樣,如果底層鏈路層不是以太網(wǎng),則不需要更改應用層軟件。IP 協(xié)議通過另一對源地址和目標地址、分段偏移、標頭校驗和以及有效負載中使用的協(xié)議來提供此抽象。

設計

代碼高度模塊化,輸出饋送到successive模塊的輸入中。編碼步驟分為以下步驟(每個步驟都在單獨的模塊中實現(xiàn)):1-D DCT、2-D DCT/量化、zig-zag 組織、VL 轉換、Huffman 轉換和比特流構建。該系統(tǒng)目前可以實現(xiàn) 256x256 圖像,但可以擴展分析更多像素。數(shù)據(jù)架構圖如下所示:

160c0350-bbe3-11ee-8b88-92fbcf53809c.png

因為僅涉及灰度成像,所以只需要彩色系統(tǒng)所需的三分之一的內(nèi)存和處理能力。對于處理彩色圖像的系統(tǒng),需要將上述整個壓縮過程單獨應用于每個顏色通道。該項目通過選擇每個像素的綠色值來獲得灰度圖像,而不是從 RGB 到 YUV 的轉換。這種簡化雖然并不完全正確,但該項目的重點不是圖像,而是壓縮,因此沒有必要在轉換操作上浪費額外的計算。

1-D DCT

1-D DCT 使用快速算法實現(xiàn),需要八個周期才能完成。該算法主要需要輸入和結果總和的連續(xù)相加,其中三個中間步驟期間發(fā)生五次乘法。該算法產(chǎn)生 DCT 結果,結果是根據(jù)實際 DCT 結果按某個因子縮放的。然而,可以在量化步驟中考慮比例,從而產(chǎn)生正確的量化變換矩陣。系數(shù)的比例因子如下:

162b2dca-bbe3-11ee-8b88-92fbcf53809c.png

算法數(shù)據(jù)流如下圖所示。

1637ab72-bbe3-11ee-8b88-92fbcf53809c.png1653848c-bbe3-11ee-8b88-92fbcf53809c.png

該模塊是按照流水線設計,所以每個時鐘周期都可以輸入新的輸入值,并在八個周期后輸出新的輸出。這使得模塊能夠更快地進行數(shù)據(jù)處理。

2-D DCT

2-D DCT 是可分離運算,意味著它可以通過對 8x8 塊的每一行應用 1-D DCT,然后再將其應用于 8x8 塊的列來獲得最終結果。使我們能夠使用流水線 1-D DCT 非常快速地執(zhí)行 2-D DCT,方法是將塊的行饋送到 1-D 模塊中 8 個周期,然后獲取結果并將這些列反饋回同一模塊。

在將結果寫回內(nèi)存之前,也會在此 2D 模塊中執(zhí)行量化。由于算法的縮放與量化相結合的方式,整個操作僅需要對二維算法結果進行移位。

Zig-Zag

通過適當?shù)捻樞驈膬?nèi)存中讀取值來實現(xiàn)Zig-Zag。塊的元素存儲在直接從圖像內(nèi)像素坐標獲得的地址中。存儲器的輸出以每周期一個像素的速率直接饋送到轉換器中。

VL 和 RL

從像素的量化值到可變長度代碼的轉換是使用查找表完成的。該表包含代碼的值和長度(以bit為單位)。然后這兩個值被發(fā)送到霍夫曼翻譯器。霍夫曼轉換器采用前面的零數(shù)量和系數(shù)代碼的大小。這兩個數(shù)字被饋送到另一個查找表,該查找表給出霍夫曼代碼作為非零系數(shù)的“標頭”。

硬件以太網(wǎng)控制器

硬件以太網(wǎng)控制器用于初始化 DM9000A 控制芯片、向 DM9000A 推送數(shù)據(jù)包、從 DM9000A 抓取接收到的數(shù)據(jù)以及從 DM9000A 接收中斷。

控制器分為兩個獨立的狀態(tài)機,一個處理發(fā)往 DM9000A 和來自 DM9000A 的命令(包括中斷),另一個處理發(fā)送和接收序列。

發(fā)送序列包括:

等待輸入 FIFO 不為空。將第一個值存儲為有效負載中的字節(jié)數(shù)。

告訴硬件控制器將存儲多少字節(jié),包括以太網(wǎng)標頭。

將以太網(wǎng)幀作為數(shù)據(jù)發(fā)送到DM9000A。

將負載發(fā)送到DM9000A。

通過中斷等待傳輸完成。返回空閑狀態(tài)。

UDP

使用FIFO數(shù)據(jù)結構,UDP Wrapper 首先獲取有效負載中的字節(jié)總數(shù),然后一次獲取 16 位的有效負載。Wrapper 使用狀態(tài)機執(zhí)行以下步驟來發(fā)送單個 UDP 數(shù)據(jù)包:

等待輸入 FIFO 不為空。將第一個值存儲為有效負載中的字節(jié)數(shù)。

告訴硬件控制器將存儲多少字節(jié),包括 UDP/IP 標頭。

將以太網(wǎng)幀作為數(shù)據(jù)發(fā)送到硬件控制器。

將IP 標頭作為數(shù)據(jù)發(fā)送到硬件控制器。IP 校驗和是在發(fā)送標頭之前計算的。

將UDP 標頭作為數(shù)據(jù)發(fā)送到硬件控制器。

將所有數(shù)據(jù)發(fā)送到硬件控制器。

由于 UDP Wrapper 的目的是讓 FPGA 能夠與通過以太網(wǎng)直接連接的單臺計算機進行通信,因此許多值都被硬編碼到 Verilog 中。硬編碼值包括目標和源 MAC 地址、目標和源 IP 地址以及目標端口。這四個硬編碼值均設置為廣播地址,MAC 地址為 FFFFFF:FF,IP 地址為 255.255.255.255。目標端口被硬編碼為 31373。其他值(例如 IP 標頭校驗和)是動態(tài)計算的,因為標頭值不一定每次都相同。完成后,控制寄存器復位并返回等待狀態(tài)。

結論

盡管我們無法讓最終所需的系統(tǒng)運行,但我們確實創(chuàng)建了可以與各種其他應用程序相關的可用功能模塊。UDP 包裝器和硬件以太網(wǎng)控制器在任何網(wǎng)絡通信項目中都非常有用。流水線式一維 DCT 算法可用于信號和圖像處理項目。

審核編輯:湯梓紅

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

    關注

    1644

    文章

    22008

    瀏覽量

    616548
  • 以太網(wǎng)

    關注

    40

    文章

    5610

    瀏覽量

    175355
  • 計算機
    +關注

    關注

    19

    文章

    7643

    瀏覽量

    90478
  • UDP
    UDP
    +關注

    關注

    0

    文章

    330

    瀏覽量

    34573

原文標題:FPGA 通過 UDP 以太網(wǎng)傳輸 JPEG 壓縮圖片

文章出處:【微信號:Open_FPGA,微信公眾號:OpenFPGA】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    谷歌用人工智能模擬人腦壓縮圖片 效果超JPEG

    8月24日晚間消息,谷歌正在研發(fā)一項新技術,利用神經(jīng)網(wǎng)絡模擬人腦的工作方式去壓縮圖片。這項技術能在確保圖片質(zhì)量的同時,大大降低圖片文件的體積。
    發(fā)表于 08-25 10:35 ?1080次閱讀

    STM32H743通過以太網(wǎng)連續(xù)發(fā)送圖片,一段時間后,發(fā)送會很慢的原因?

    我用的芯片是STM32H743+LAN8742,在這個平臺上實現(xiàn)攝像頭圖片采集壓縮JPEG格式,然后通過以太網(wǎng)(LWIP)的netconn
    發(fā)表于 04-19 07:44

    AC6102 開發(fā)板千兆以太網(wǎng)UDP傳輸實驗

    本帖最后由 芯航線跑堂 于 2016-12-19 00:20 編輯 AC6102 開發(fā)板千兆以太網(wǎng)UDP傳輸實驗 在芯航線AC6102開發(fā)板上,設計了一路GMII接口的千兆以太網(wǎng)
    發(fā)表于 12-15 15:01

    【AC620 FPGA開發(fā)板試用預熱貼】自寫以太網(wǎng)傳輸代碼,實現(xiàn)以太網(wǎng)的圖像采集傳輸【小梅哥力作】

    攝像頭的相關對比介紹。關于圖像傳輸 AC620開發(fā)板上有一個百兆以太網(wǎng)PHY芯片RTL8201,對FPGA提供MII接口,使用該芯片,我們可以自己編寫以太網(wǎng)MAC層,然后使用MII接
    發(fā)表于 06-14 11:51

    MT9V011以太網(wǎng)傳輸顯示

    1. 概述本設計采用FPGA技術,將CMOS攝像頭(DVP接口)的視頻數(shù)據(jù)采集,并通過以太網(wǎng)傳輸(UDP方式)給PC機,上位機DEMO
    發(fā)表于 10-09 09:55

    請問以太網(wǎng)UDP協(xié)議傳輸速度能達到多少?

    我用STM32F107+dp83848方案做以太網(wǎng)傳輸數(shù)據(jù),用的UDP協(xié)議,但是經(jīng)測試傳輸速度才45KB/s左右,跟理論速度差太遠了吧我想問一些有沒有誰做過這個方案的,
    發(fā)表于 08-05 22:38

    AC6102開發(fā)板千兆以太網(wǎng)UDP傳輸實驗分享!

    AC6102 開發(fā)板千兆以太網(wǎng)UDP傳輸實驗在芯航線AC6102開發(fā)板上,設計了一路GMII接口的千兆以太網(wǎng)電路,通過
    發(fā)表于 10-18 02:15

    簡談基于FPGA的千兆以太網(wǎng)設計

    以太網(wǎng)是一個描述各種以吉比特每秒速率進行以太網(wǎng)傳輸技術的術語,由IEEE 802.3-2005標準定義。該標準允許通過集線器連接的半雙工千兆連接,但是在市場上利用交換機的全雙工連接所
    發(fā)表于 06-01 18:39

    一種基于FPGA以太網(wǎng)高速傳輸平臺

    一種基于FPGA以太網(wǎng)高速傳輸平臺,采用DM9000和FPGA芯片,實現(xiàn)100M以太網(wǎng)數(shù)據(jù)傳輸
    發(fā)表于 02-25 14:45 ?17次下載

    C#教程之壓縮圖片

    C#教程之壓縮圖片,很好的C#資料,快來學習吧。
    發(fā)表于 04-20 11:13 ?3次下載

    谷歌人工智能模擬人腦壓縮圖片,效果居然比JPEG還好

    谷歌正在研發(fā)一項新技術,利用神經(jīng)網(wǎng)絡模擬人腦的工作方式去壓縮圖片
    發(fā)表于 08-25 09:03 ?636次閱讀

    以太網(wǎng)的傳播速率_以太網(wǎng)傳輸介質(zhì)

    本文首先介紹了以太網(wǎng)的傳播速率,其次介紹了千兆以太網(wǎng)傳輸速度,最后介紹了以太網(wǎng)傳輸介質(zhì)。
    發(fā)表于 03-20 10:12 ?7785次閱讀

    基于FPGAUDP千兆以太網(wǎng)光通信

    本文介紹一個FPGA開源項目:UDP千兆以太網(wǎng)光通信。利用SFP接口,可以通過使用SFP轉RJ45模塊或者直接使用光纖進行以太網(wǎng)通信。
    的頭像 發(fā)表于 08-31 11:26 ?5359次閱讀
    基于<b class='flag-5'>FPGA</b>的<b class='flag-5'>UDP</b>千兆<b class='flag-5'>以太網(wǎng)</b>光通信

    基于FPGAUDP RGMII千兆以太網(wǎng)通信方案

    本文介紹一個FPGA開源項目:UDP RGMII千兆以太網(wǎng)通信。該項目在我之前的工作中主要是用于FPGA和電腦端之間進行圖像數(shù)據(jù)傳輸。本文簡
    的頭像 發(fā)表于 09-04 16:49 ?2264次閱讀
    基于<b class='flag-5'>FPGA</b>的<b class='flag-5'>UDP</b> RGMII千兆<b class='flag-5'>以太網(wǎng)</b>通信方案

    基于MM32F3270以太網(wǎng)UDP使用

    基于MM32F3270以太網(wǎng) UDP使用
    的頭像 發(fā)表于 09-27 15:42 ?759次閱讀
    基于MM32F3270<b class='flag-5'>以太網(wǎng)</b><b class='flag-5'>UDP</b>使用
    主站蜘蛛池模板: 乌兰察布市| 宝坻区| 利辛县| 建宁县| 高台县| 南部县| 敦化市| 玛曲县| 九龙坡区| 和硕县| 额尔古纳市| 措勤县| 海原县| 方山县| 故城县| 沁水县| 依兰县| 齐河县| 通江县| 峨边| 林周县| 彭山县| 武宁县| 荣成市| 来安县| 沈阳市| 特克斯县| 桃园县| 沐川县| 乐平市| 启东市| 溧阳市| 阿图什市| 会理县| 连云港市| 阿拉善右旗| 七台河市| 东乡族自治县| 沧州市| 谢通门县| 应城市|