????????最近幾年圖像處理與機(jī)器視覺的發(fā)展非常迅速,圖像處理領(lǐng)域也被認(rèn)為是未來幾十年最有前途的領(lǐng)域之一。
????????隨著現(xiàn)代圖像及視頻處理技術(shù)的不斷發(fā)展,人們對(duì)圖像處理提出了新的要求,圖像處理系統(tǒng)的硬件體積越來越小,實(shí)時(shí)性也越來越好。特別是最近幾年,圖像的分辨率和掃描頻率都有了較大范圍的提升,1080P分辨率的視頻已經(jīng)非常流行,2K甚至4K分辨率的圖像也在火熱發(fā)展中。目前,比較火熱的VR技術(shù)更是需要雙通道的高分辨率、高掃描頻率的視頻數(shù)據(jù)及處理能力。
????????這些新的要求給之前的圖像處理平臺(tái)帶來了嚴(yán)重的挑戰(zhàn),傳統(tǒng)的圖像處理技術(shù)主要基于軟件平臺(tái),一般運(yùn)行在Windows平臺(tái)的PC上。雖然現(xiàn)代PC的主頻較高,但是用軟件的串行化處理方法進(jìn)行圖像處理的效率還是非常低的。例如,用PC處理一個(gè)比較復(fù)雜的高分辨率圖像處理算法花費(fèi)半個(gè)小時(shí)或更多時(shí)間也是常見的事情。然而,對(duì)于實(shí)時(shí)圖像處理,例如實(shí)時(shí)跟蹤和視頻顯示,這個(gè)處理速度是遠(yuǎn)遠(yuǎn)不夠的。
????????正是由于這個(gè)原因,嵌入式圖像處理技術(shù)得到了廣泛的應(yīng)用,一些帶有圖像視頻處理組件的嵌入式處理器開始在圖像處理領(lǐng)域大顯身手,例如,TI公司生產(chǎn)的達(dá)芬奇系列的DSP。這些組件實(shí)際上是圖像處理硬核,但是大部分是標(biāo)準(zhǔn)化接口的硬核,針對(duì)數(shù)字視頻、圖像采樣處理、視覺分析等應(yīng)用進(jìn)行了剪裁和優(yōu)化。對(duì)于一個(gè)特定的圖像處理任務(wù),需要利用其內(nèi)部的處理器來進(jìn)行串行化軟件處理。多核處理器的發(fā)展使得多個(gè)圖像處理任務(wù)可以同時(shí)執(zhí)行,也大大提高了圖像處理的實(shí)時(shí)性。盡管這些嵌入式處理器的發(fā)展加快了圖像處理和視頻分析的實(shí)際應(yīng)用,但其本質(zhì)上仍為軟件處理的串行方式,難以滿足通用圖像處理中大數(shù)據(jù)量計(jì)算的需求。
????????隨著成像傳感器技術(shù)和信號(hào)處理技術(shù)的迅猛發(fā)展,圖像的分辨率、幀頻和像元有效位數(shù)越來越高,圖像處理算法越來越復(fù)雜,圖像處理結(jié)果的實(shí)時(shí)性要求越來越高,基于PC和DSP軟件平臺(tái)的圖像處理系統(tǒng)已難以滿足要求。由于圖像處理算法天然的并行性,F(xiàn)PGA的加入給圖像處理帶來了新的活力,特別是針對(duì)圖像處理底層一些并行特性的圖像處理算法。例如二維卷積,F(xiàn)PGA可以保證在極低主頻下得到比DSP平臺(tái)快得多的處理速度,利用其流水線技術(shù)可以在每個(gè)時(shí)鐘輸出一個(gè)處理后像素。然而,F(xiàn)PGA并不適合進(jìn)行串行化處理算法和部分其他的上層算法。因此,目前DSP+FPGA平臺(tái)是圖像處理平臺(tái)的主流。此外,F(xiàn)PGA在一些低成本的機(jī)器視覺領(lǐng)域也得到了廣泛的應(yīng)用。例如,著者所在實(shí)驗(yàn)室研究的利用線列CCD和激光實(shí)現(xiàn)高精度位移測量項(xiàng)目,該項(xiàng)目利用FPGA實(shí)現(xiàn)CCD時(shí)序驅(qū)動(dòng)、A/D轉(zhuǎn)換和測量算法實(shí)現(xiàn),并實(shí)現(xiàn)高速接口與上位機(jī)。? ? ? ? ? ? ? ? ? ? ?????????在FPGA上實(shí)現(xiàn)一個(gè)圖像處理算法包括確定具體算法和對(duì)其進(jìn)行并行性改造、將算法中計(jì)算和存儲(chǔ)需求與FPGA內(nèi)部可用資源相映射、將算法映射到硬件結(jié)構(gòu)上等步驟。然而,目前只有很少的公開資料可供初學(xué)者學(xué)習(xí)該領(lǐng)域的知識(shí),可以讓初學(xué)者深入了解設(shè)計(jì)思路、過程、代碼的文獻(xiàn)資料更難找到。
????????為改變這一現(xiàn)狀,本專欄從FPGA圖像處理理論和分析入手,重點(diǎn)講解圖像處理算法移植到FPGA中的基本思路和方法,突出工程應(yīng)用。每一章均附有C/C++實(shí)現(xiàn)代碼,同時(shí)用循序漸進(jìn)、自頂向下的方式設(shè)計(jì)FPGA算法模塊,針對(duì)每一個(gè)模塊設(shè)計(jì)了詳細(xì)的實(shí)現(xiàn)框圖,確保讀者能理解算法設(shè)計(jì)的原理。此外,每個(gè)算法都配有Verilog實(shí)現(xiàn)方法,并給出仿真結(jié)果。本專欄還提出了一個(gè)通用的利用Modelsim和VS實(shí)現(xiàn)圖像處理的仿真測試平臺(tái)。
本專欄內(nèi)容概述如下:
(1)第1~5章是基礎(chǔ)章節(jié),重點(diǎn)介紹數(shù)字圖像處理和FPGA程序設(shè)計(jì)的基礎(chǔ)知識(shí)。
????????第1章簡單介紹了圖像處理的基礎(chǔ)知識(shí),包括圖像處理的發(fā)展現(xiàn)狀,還地介紹了圖像從獲取到顯示存儲(chǔ)的基本流程。
????????第2章首先介紹了FPGA的發(fā)展現(xiàn)狀,生產(chǎn)廠家及其開發(fā)流程。接著介紹了基于FPGA的圖像處理的基本開發(fā)流程。
????????第3章主要介紹了在FPGA中應(yīng)用的編程語言。本章并沒有詳細(xì)介紹Verilog語法,而是從工程應(yīng)用的角度介紹常用的設(shè)計(jì)方法和實(shí)例。
????????第4章主要介紹了把軟件算法映射到FPGA常用的技巧。首先介紹了應(yīng)用較廣泛的流水線設(shè)計(jì)方法,接著介紹了FPGA硬件計(jì)算技術(shù),包括一些常用的計(jì)算轉(zhuǎn)換、查找表、浮點(diǎn)計(jì)算、Cordic計(jì)算等方法。最后介紹了在圖像處理中用途非常多的存儲(chǔ)器映射,并提出了一些其他設(shè)計(jì)技巧。
????????第5章首先簡要介紹了仿真測試軟件Modelsim的使用,接著重點(diǎn)介紹了一個(gè)通用的視頻圖像處理仿真測試系統(tǒng)。這個(gè)測試系統(tǒng)包括完整的視頻模擬、視頻捕獲,以及testbench設(shè)計(jì),并結(jié)合基于MFC的VC上位機(jī)來實(shí)現(xiàn)測試系統(tǒng)的搭建。
(2)第6~10章主要介紹算法實(shí)現(xiàn)。
????????第6章介紹直方圖操作,主要介紹幾種常用直方圖操作的FPGA實(shí)現(xiàn):直方圖統(tǒng)計(jì)、直方圖均衡、直方圖規(guī)定及直方圖線性拉伸。
????????第7章介紹基于圖像處理的線性濾波。首先,介紹了均值濾波算法、高斯濾波算法、Sobel算子及FFT等常見的幾種線性濾波原理。其次,介紹了均值濾波算法和Sobel算子的FPGA實(shí)現(xiàn)。
????????第8章主要介紹基于圖像處理的非線性濾波算法,包括排序?yàn)V波的基本原理及其FPGA實(shí)現(xiàn)方法。
????????第9章主要介紹基于圖像處理的形態(tài)學(xué)濾波算法,包括形態(tài)學(xué)濾波的基本概念,包括形態(tài)學(xué)膨脹、形態(tài)學(xué)腐蝕、開運(yùn)算及閉運(yùn)算等。重點(diǎn)介紹了基于FPGA的Tophat濾波的原理及實(shí)現(xiàn)方法。
????????第10章主要介紹基于圖像處理的常見的分割算法,包括全局閾值分割、局部自適應(yīng)閾值分割及Canny算子。重點(diǎn)介紹基于FPGA的局部自適應(yīng)閾值分割和Canny算子的設(shè)計(jì)與實(shí)現(xiàn)。
????????第11章主要介紹與視頻和圖像處理相關(guān)的輸入/輸出接口,包括CameraLink、火線接口、USB接口、千兆以太網(wǎng)等視頻輸入接口和CVT標(biāo)準(zhǔn),以及VGA,PAL,DVI,HDMI等視頻輸出接口。其中,給出了VGA和PAL接口的Verilog代碼實(shí)現(xiàn)。
為了確保讀者能夠快速地掌握FPGA圖像處理設(shè)計(jì)方法,本專欄提供了算法章節(jié)的全部源代碼。
第1章 圖像處理基礎(chǔ)
1.1 數(shù)字圖像處理簡介
????????光作用于視覺器官,使其感受細(xì)胞興奮,其信息經(jīng)視覺神經(jīng)系統(tǒng)加工后便產(chǎn)生視覺(vision)。通過視覺,人和動(dòng)物感知外界物體的大小、明暗、顏色、動(dòng)靜,獲得對(duì)機(jī)體生存具有重要意義的各種信息。至少有80%以上的外界信息經(jīng)視覺獲得,視覺可以說是人和動(dòng)物最重要的感覺。
????????圖像作為人類感知世界的視覺基礎(chǔ),是人類獲取信息、表達(dá)信息和傳遞信息的重要手段。數(shù)字圖像處理即用計(jì)算機(jī)對(duì)圖像進(jìn)行處理的發(fā)展歷史并不長。數(shù)字圖像處理技術(shù)源于20世紀(jì)20年代時(shí)通過海底電纜從英國倫敦到美國紐約傳輸了一幅照片,采用了數(shù)字壓縮技術(shù)。然而,由于當(dāng)時(shí)的計(jì)算技術(shù)和存儲(chǔ)空間的限制,基于計(jì)算機(jī)的圖像處理并沒有得到很快的發(fā)展。直到20世紀(jì)50年代,當(dāng)時(shí)的美國國家標(biāo)準(zhǔn)局的掃描儀第一次被加入一臺(tái)計(jì)算機(jī)中,用于進(jìn)行邊緣增強(qiáng)和模式識(shí)別的早期研究。在20世紀(jì)60年代,處理大量對(duì)從衛(wèi)星和空間探索取得的大尺寸圖像的需求直接推動(dòng)了美國航空航天局對(duì)圖像處理的研究。與此同時(shí),高能粒子的物理研究,需要對(duì)大量的云室照片進(jìn)行處理以捕獲感興趣的事件。隨著計(jì)算機(jī)計(jì)算能力的增加及計(jì)算成本的降低,數(shù)字圖像處理的應(yīng)用范圍呈爆炸式增長,從工業(yè)檢測到醫(yī)療影像,都稱為數(shù)字圖像處理的應(yīng)用領(lǐng)域。
1.1.1 圖像采樣
????????多數(shù)圖像傳感器(如CCD等)的輸出是連續(xù)的電壓波形信號(hào),這些波形的幅度和空間特性都與其所感知的光照有關(guān)。為了產(chǎn)生一幅數(shù)字圖像,我們需要把連續(xù)的感知數(shù)據(jù)轉(zhuǎn)換為數(shù)字形式,這個(gè)轉(zhuǎn)換的過程被稱為圖像采樣和量化。
采樣和量化的過程如圖1-1所示。
????????采樣頻率是指1秒內(nèi)采樣的次數(shù)(即圖1-1中采樣間隔的倒數(shù)),它反映了采樣點(diǎn)之間的間隔大小。采樣頻率越高,得到的圖像樣本越逼真,圖像的質(zhì)量越高,但要求的存儲(chǔ)量也越大。圖1-2(a)、(b)、(c)是采樣間隔分別為16s、32s、64s采樣所獲得的圖像。
????????在進(jìn)行采樣時(shí),采樣點(diǎn)間隔大小的選取很重要,它決定了采樣后的圖像能否真實(shí)地反映原圖像的程度。一般來說,原圖像中的畫面越復(fù)雜,色彩越豐富,則采樣間隔應(yīng)越小。由于二維圖像的采樣是一維的推廣,根據(jù)信號(hào)的采樣定理,要從取樣樣本中精確地復(fù)原圖像,可得到圖像采樣的奈奎斯特(Nyquist)定理:圖像采樣的頻率必須大于或等于源圖像最高頻率分量的兩倍。
1.1.2 圖像量化
????????量化是指要使用多大范圍的數(shù)值來表示圖像采樣之后的每一個(gè)點(diǎn)。量化的結(jié)果是圖像能夠容納的顏色總數(shù),它反映了采樣的質(zhì)量。例如:如果以4位存儲(chǔ)一個(gè)點(diǎn),就表示圖像只能有16種顏色;若采用16位存儲(chǔ)一個(gè)點(diǎn),則有216 =65536種顏色。因此,量化位數(shù)越來越大,表示圖像可以擁有更多的顏色,自然可以產(chǎn)生更為細(xì)致的圖像效果。但是,也會(huì)占用更大的存儲(chǔ)空間。兩者的基本問題都是視覺效果和存儲(chǔ)空間的取舍。圖1-3給出了量化級(jí)數(shù)分別為2,8,64所獲得的數(shù)字圖像。
????????在實(shí)際應(yīng)用中,常常用8位,24位和32位數(shù)字來存儲(chǔ)一個(gè)像素。8位圖像也就是常說的灰度圖像,這個(gè)灰度圖像包含了一幅圖像的主要亮度信息。一般情況下,對(duì)數(shù)字圖像進(jìn)行算法處理,通常會(huì)將圖像轉(zhuǎn)換為灰度圖像進(jìn)行處理。24位圖像也就是常說的真彩圖像,包括RGB 3個(gè)通道的顏色信息。32位的圖像還包含了Alpha通道,用來表示圖像的透明度。此外,在紅外圖像的處理中,通常用14位的數(shù)字來表示一個(gè)像素。
????????從圖像傳感器出來的信號(hào)經(jīng)過采樣和量化之后,便獲得了一系列的 數(shù) 字 圖 像 。 這 個(gè) 數(shù) 字 圖 像 通 常 情 況 下 被 取 樣 為 一 個(gè) 二 維 陣 列f(x,y),該陣列包含M列和N行,其中(x,y)是離散坐標(biāo),M也就是所說的圖像寬度,N是圖像的高度。(x,y)的取值范圍為
0≤x≤M-1,0≤y≤N-1
????????通常情況下,用一個(gè)二維矩陣來表示這個(gè)數(shù)字圖像,如圖1-4所示。
????????一般情況下,數(shù)字圖像的原點(diǎn)位于左上角。數(shù)字圖像的掃描方式是從左上角開始向右掃描,掃描完一行之后轉(zhuǎn)到下一行的最左側(cè)開始掃描,一直到達(dá)圖像的右下角,即x坐標(biāo)軸方向?yàn)樽宰笙蛴遥瑈坐標(biāo)軸方向?yàn)樽陨系较?。這與傳統(tǒng)的笛卡兒坐標(biāo)系還是有區(qū)別的,如圖1-5所示。
1.1.3 數(shù)字圖像處理
????????獲得圖像的下一步就是盡快對(duì)獲得數(shù)字圖像進(jìn)行預(yù)期目的的處理。對(duì)一幅圖像來說,從一個(gè)狀態(tài)得到另一個(gè)狀態(tài)的圖像處理操作序列稱為圖像處理算法。一般來說,數(shù)字圖像處理常用方法有以下幾種:
????????(1)圖像變換。由于圖像陣列很大,直接在空間域中進(jìn)行處理,涉及計(jì)算量很大。因此,往往采用各種圖像變換的方法,例如傅里葉變換、沃爾什變換、離散余弦變換等間接處理技術(shù),將空間域的處理轉(zhuǎn)換為變換域處理,不僅可減少計(jì)算量,而且可獲得更有效的處理(如傅里葉變換可在頻域中進(jìn)行數(shù)字濾波處理)。新興研究的小波變換在時(shí)域和頻域中都具有良好的局部化特性,它在圖像處理中也有著廣泛而有效的應(yīng)用。
????????(2)圖像編碼壓縮。圖像編碼壓縮技術(shù)可減少描述圖像的數(shù)據(jù)量(即比特?cái)?shù)),以便節(jié)省圖像傳輸、處理時(shí)間和減少所占用的存儲(chǔ)器容量。壓縮可以在不失真的前提下獲得,也可以在允許的失真條件下進(jìn)行。編碼是壓縮技術(shù)中最重要的方法,它在圖像處理技術(shù)中是發(fā)展最早且比較成熟的技術(shù)。
????????(3)圖像增強(qiáng)和復(fù)原。圖像增強(qiáng)和復(fù)原的目的是為了提高圖像的質(zhì)量,例如,去除噪聲及提高圖像的清晰度等。圖像增強(qiáng)不考慮圖像降質(zhì)的原因,突出圖像中所感興趣的部分。例如強(qiáng)化圖像高頻分量,可使圖像中物體輪廓清晰、細(xì)節(jié)明顯,以及強(qiáng)化低頻分量可減少圖像中噪聲影響。圖像復(fù)原要求對(duì)圖像降質(zhì)的原因有一定的了解,一般來說,應(yīng)根據(jù)降質(zhì)過程建立“降質(zhì)模型”,再采用某種濾波方法,恢復(fù)或重建原來的圖像。? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?????????(4)圖像分割。圖像分割是數(shù)字圖像處理中的關(guān)鍵技術(shù)之一。圖像分割是將圖像中有意義的特征部分提取出來,其有意義的特征包括圖像中的邊緣、區(qū)域等,這是進(jìn)一步進(jìn)行圖像識(shí)別、分析和理解的基礎(chǔ)。雖然已研究出不少邊緣提取、區(qū)域分割的方法,但是還沒有一種普遍適用于各種圖像的有效方法。因此,對(duì)圖像分割的研究還在不斷深入之中,是圖像處理中研究的熱點(diǎn)之一。
????????(5)圖像描述。圖像描述是圖像識(shí)別和理解的必要前提。作為最簡單的二值圖像可采用其幾何特性描述物體的特性,一般圖像的描述方法采用二維形狀描述,它有邊界描述和區(qū)域描述兩類方法。對(duì)于特殊的紋理圖像可采用二維紋理特征描述。隨著圖像處理研究的深入發(fā)展,已經(jīng)開始進(jìn)行三維物體描述的研究,提出了體積描述、表面描述、廣義圓柱體描述等方法。
????????(6)圖像分類(識(shí)別)。圖像分類(識(shí)別)屬于模式識(shí)別的范疇,其主要內(nèi)容是圖像經(jīng)過某些預(yù)處理(增強(qiáng)、復(fù)原、壓縮)后,進(jìn)行圖像分割和特征提取,從而進(jìn)行判決分類。圖像分類常采用經(jīng)典的模式識(shí)別方法,有統(tǒng)計(jì)模式分類和句法(結(jié)構(gòu))模式分類,近年來新發(fā)展起來的模糊模式識(shí)別和人工神經(jīng)網(wǎng)絡(luò)模式分類在圖像識(shí)別中也越來越受到重視。
1.2 數(shù)字圖像處理系統(tǒng)
1.2.1 圖像處理系統(tǒng)構(gòu)成
????????一個(gè)典型的圖像處理系統(tǒng)由圖像傳感器、圖像編碼、圖像處理器、顯示設(shè)備、存儲(chǔ)設(shè)備及控制設(shè)備幾大部分組成,如圖1-6所示。
文章來源:http://www.zghlxwxcb.cn/news/detail-851525.html
(1)圖像傳感器。圖像傳感器負(fù)責(zé)采集光照信息,常用的圖像傳感器有CCD和CMOS等。在實(shí)際應(yīng)用中,獲取圖像的方法不一定是傳感器,可能是一個(gè)現(xiàn)成的圖像采集卡、攝像機(jī)、數(shù)碼相機(jī)、掃描儀或者一個(gè)專用的圖像設(shè)備等。這一設(shè)備將待處理的圖像場景或光照信息轉(zhuǎn)換為數(shù)字或者模擬信號(hào)進(jìn)行下一步的處理。
(2)圖像編碼。圖像編碼負(fù)責(zé)對(duì)圖像傳感器輸出的圖像進(jìn)行采樣和量化(對(duì)于模擬輸出的圖像傳感器),將圖像變換為適合圖像處理器處理的數(shù)字形式。然后,將編碼后的結(jié)果送入圖像處理器進(jìn)行進(jìn)一步的處理。
(3)圖像處理器。圖像處理器是整個(gè)圖像處理系統(tǒng)的核心,圖像處理器將以取樣和量化的結(jié)果作為數(shù)據(jù)源,根據(jù)圖像處理任務(wù)的需求,對(duì)圖像進(jìn)行一系列的變換,例如圖像預(yù)處理、圖像分割及目標(biāo)識(shí)別等。圖像處理器還負(fù)責(zé)與圖像顯示設(shè)備、圖像存儲(chǔ)設(shè)備及控制設(shè)備進(jìn)行交互。圖像處理器可以是以×86為硬件平臺(tái)的PC,也可以是一個(gè)嵌入式圖像處理器,例如,TI公司的達(dá)芬奇系列專用數(shù)字視頻處理器、ARM處理器及本書所介紹的FPGA等。部分處理器有一系列現(xiàn)成的圖像處理軟
件包,可以大大減輕開發(fā)的工作量。例如,如果圖像處理系統(tǒng)以×86作為硬件平臺(tái),處理系統(tǒng)就可以以Windows操作系統(tǒng)為軟件平臺(tái),并在其基礎(chǔ)上采用已經(jīng)開發(fā)好的圖像處理軟件。
(4)顯示設(shè)備。圖像顯示設(shè)備負(fù)責(zé)對(duì)圖像進(jìn)行顯示。被顯示的圖像可能是最終的處理結(jié)果,或者使原始圖像,或者是中間處理結(jié)果。這個(gè)顯示設(shè)備可以是一個(gè)視頻顯示器、打印機(jī),或者使Internet上的其他設(shè)備等。
(5)存儲(chǔ)設(shè)備。圖像存儲(chǔ)設(shè)備負(fù)責(zé)對(duì)視頻或圖像進(jìn)行保存。
(6)控制設(shè)備。圖像控制設(shè)備在一個(gè)圖像處理系統(tǒng)中不一定是必需的??刂圃O(shè)備通常應(yīng)用在一些專用的場合,例如工業(yè)自動(dòng)化領(lǐng)域的自動(dòng)控制系統(tǒng)。圖像處理的算法往往要完成一個(gè)特定的檢測目的,圖像處理器根據(jù)圖像處理的結(jié)果進(jìn)行決策。決策的結(jié)果被輸出到控制設(shè)備用來完成一些控制目的,這個(gè)控制設(shè)備可能是電機(jī)、語音提示系統(tǒng)、報(bào)警系統(tǒng)或者是軍工領(lǐng)域的一些控制設(shè)備等。
?文章來源地址http://www.zghlxwxcb.cn/news/detail-851525.html
到了這里,關(guān)于基于FPGA的數(shù)字圖像處理【1.0】的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!