-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
3/26 新書到! 3/19 新書到! 3/14 新書到! 12/12 新書到!
購書流程Q & A站務留言版客服信箱
3ds MaxMayaRhinoAfter EffectsSketchUpZBrushPainterUnity
PhotoShopAutoCadMasterCamSolidWorksCreoUGRevitNuke
C#CC++Java遊戲程式Linux嵌入式PLCFPGAMatlab
駭客資料庫搜索引擎影像處理FluentVR+ARANSYS深度學習
單晶片AVROpenGLArduinoRaspberry Pi電路設計CadenceProtel
HadoopPythonStm32CortexLabview手機程式AndroidiPhone
可查書名,作者,ISBN,3dwoo書號
詳細書籍分類

基于FPGA的嵌入式圖像處理系統設計

( 簡體 字)
作者:原魁,何文浩,肖?類別:1. -> 電子工程 -> FPGA
譯者:
出版社:電子工業出版社基于FPGA的嵌入式圖像處理系統設計 3dWoo書號: 34988
詢問書籍請說出此書號!

缺書
不接受訂購

出版日:2/1/2013
頁數:440
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 版 )
不接受訂購
ISBN:9787121195976
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證)
作者序:

譯者序:

前言:

基于FPGA的嵌入式系統具有體積小、功耗低、速度快等許多優點,在圖像處理以及許多需要高速計算的嵌入式系統(例如智能相機、智能手機等)中有著廣闊的應用前景,也是高性能嵌入式系統未來的技術發展趨勢。
目前國內外關于FPGA應用系統開發的圖書很少,各種技術資料也比較分散。因此,雖然許多科研人員和工程技術人員已經充分認識到了基于FPGA的嵌入式系統的重要性,但卻因為缺乏比較系統完整的學習資料等原因而難以深入了解和掌握相關技術,也難以研制開發出具有實用價值的FPGA應用系統。
本書對FPGA的發展歷程以及如何利用FPGA技術設計開發嵌入式視覺系統進行了比較詳盡的介紹,不但介紹了相關方法,而且給出了許多具體算法和應用實例。本書對FPGA技術的初學者以及已經具有比較豐富的設計經驗的讀者來說都有很好的參考價值,也將為從事基于FPGA的嵌入式系統開發和應用的軟、硬件工程師和科研人員提供一本比較系統、全面的學習材料。
本書的專業性很強,對于普通讀者來說,理解書中給出的所有知識點可能存在一定的困難。作者在本書的前言中已經相當詳細地介紹了他本人寫作本書的出發點,以及面向的主要讀者群。建議讀者先認真讀一下作者所寫的前言,然后再根據自己的需要開始本書的學習。
對FPGA技術應用感興趣的初學者可以先讀一下本書的前4章和第14章,對FPGA及其應用建立一些感性認識,了解一下FPGA的基本特點及其主要用途,然后根據自己的需要選擇書中的相關章節進行學習;而對于已經具有一定的FPGA知識并希望進行FPGA系統開發的讀者來說,則可以根據自己的需要,直接選擇書中的相關章節進行學習,重點了解相關算法的具體實現,以及是否可以根據書中所提供的方法來解決自己所面對或可能面對的問題。
譯者所在的課題組近10年來一直在從事基于FPGA的嵌入式視覺系統的研究,完成了多種基于FPGA的圖像處理算法,研制開發出兩種基于FPGA和DSP技術的高性能嵌入式圖像處理系統并在多種機器人系統中進行了成功應用,可以說已經在一定程度上掌握了基于FPGA的嵌入式圖像處理系統的相關知識。為了盡可能準確地表達作者的原意,此次譯者所在課題組中從事相關研究工作的主要研究人員都參加了本書的翻譯工作,并由主要翻譯人員原魁、何文浩、肖?、徐正東、宋海濤、王照、高舒對譯稿進行了認真校對。但由于譯者的水平有限,仍然難免出現一些錯誤,因此,譯文中如有不當之處,還希望能夠得到讀者的原諒。

原魁
2012.9


前言



我認為介紹一下本書面世的原因和過程的背景對讀者是有幫助的,因為這樣有可能使讀者能夠更好地理解本書內容的構成方式,以及為什么要采用這種方式。
背景
首先,介紹一點歷史。我自己在圖像處理方面有比較廣泛的背景,尤其在圖像分析、機器視覺和機器人視覺等領域,而上述領域都有很強的應用背景。在超過25年的時間里,通過把圖像處理技術應用到各種各樣的問題中,我在算法開發方面積累了大量經驗,不僅在圖像處理應用層面,而且在圖像處理操作層面。在解決一個應用問題時,我往往更傾向于采用實證方法而不是理論方法——我的著眼點一直是,研制開發可以解決所面對的問題的圖像處理算法。這通常會涉及對現有的圖像處理操作方法進行組合,但是偶爾也需要開發新的算法和技術來解決問題的某一個方面。通過機器視覺和機器人應用方面的工作,我開始意識到了基于軟件的方法的局限性,尤其是計算速度和算法效率方面的局限性。
這就很自然地使我想到了使用FPGA作為開發嵌入式圖像應用的實現平臺。許多圖像處理操作本身就是并行的,并且FPGA提供的可編程硬件,其本質上也是并行的。因此,將其中一個映射到另一個上應該很簡單,對吧?當我開始在FPGA上實現圖像處理算法時我有很多想法,但是對相關知識了解得卻很少。我很快就發現實現一個有效的設計需要很多技巧,因此,在進行了許多實驗并經歷了許多失敗后,我和我的學生很艱難地學到了一些技巧。
通過成為一個電子工程師所接受的基本訓練,我很容易就適應了這種硬件的思維模式。但通過觀察我的學生,包括本科水平和研究生水平的,我發現這種思維模式可能是完成一個有效設計的最大障礙。圖像處理在傳統上被認為是軟件領域的工作,然而基于FPGA的設計卻完全是硬件領域的工作。為了在兩者之間搭起橋梁,在考慮算法時不僅要考慮算法本身,更要考慮算法的基本計算結構。
因此,在FPGA上實現一個圖像處理算法(或者實際上任意算法)包括確定法的基本結構,將該結構映射到FPGA中的可用資源上,最后將算法映射到硬件結構上等步驟。遺憾的是,目前只有很少的可用材料可以幫助初學者開始該領域的學習,而可以深入了解設計思路及過程的文獻資料實際上很難找到,雖然工作在該領域的大多數人都會不自覺地(無論有意還是無意)遵循一定的設計思路。
可用文獻
雖然發表在會議論文集和期刊上的研究論文已有很多,但是側重于怎樣將圖像處理算法映射到FPGA上的并不多。在文獻上能找到的研究論文可被分為幾個大組。
(1)第一組論文側重于研究FPGA本身的結構。該組的大部分論文分析了與邏輯塊的結構和粒度、布線網絡以及嵌入式內存有關的一系列技術;除了FPGA結構,還涵蓋了各種論題,包括基本方法、電源問題、過程可變性和動態可重構性的影響。許多論文僅僅只是建議或與FPGA原型設計有關而與商用芯片無關。雖然從作者自己的角度來看這些論文是令人感興趣的,而且也給出了非常合適的研究課題,但是,從應用的角度來看,這些論文基本上是不能直接提供解決方案的。雖然這些論文也對一些可能用于設備的下一代產品的特點進行了分析,但大部分論文討論的主題水平不高。
(2)第二組論文是對可重構計算進行的研究。這里的側重點在于怎樣使用FPGA能加速計算密集型的任務或者一系列任務。雖然可以將圖像處理看作這樣的一個任務,但是大部分的研究是針對高性能(并且大功耗)計算而不是低功耗嵌入式系統的。該組的主題包括軟、硬件劃分,軟、硬件的協同設計,動態可重構性,FPGA和CPU之間的通信,FPGA、GPU和CPU性能之間的比較,以及對用于可重構計算應用及研究的操作系統和特定平臺的設計。從許多論文中可以得到重要的設計原則和技巧,雖然這可能并不是論文本身的主要著眼點。
(3)這一組論文和前面一組密切相關,主要考慮FPGA和應用程序編程所用的工具。該組論文側重于提高開發過程的效率,提出了多種硬件描述語言,而這些語言則以軟件開發語言如C、Java甚至Prolog為模型。許多論文的開發工作僅是作為科研工具,因而這些工作很少走出實驗室而被用于商業目的。此外,也有大量論文對編譯方法進行研究,使其能夠將標準軟件語言映射到硬件上。這些編譯器嘗試采用如循環展開、帶狀開發和流水線等方法產生并行的硬件。同樣,許多該類型的論文介紹了有助于實現更有效設計的重要的原則和方法。然而,現有的編譯器還不夠成熟,難以自動使用各種并行性,它們僅能對所給算法完成相對簡單的轉換,而不能對算法進行重新設計。
(4)最后一組論文側重于各種應用,包括圖像處理以及對圖像處理操作和系統的實現。令人遺憾的是,由于篇幅限制和空間約束,許多論文只給出了各種系統實現的結果,而很少給出設計細節。這些論文通常描述了最終產品,而并沒有說明采用該設計的理由和決策過程。在沒有專門的平臺和工具,或者對許多丟失的細節進行推斷的情況下,并不能重新實現這些設計。雖然許多細節對于專業人士來說是顯而易見的,但是,如果沒有這方面的知識,僅僅閱讀這些論文則完全不能得到同樣結論。在該組論文中,比較好的論文會將問題聚焦,并考慮一個單一的圖像處理操作的實現。
綜上所述,雖然目前已經可以得到大量的相關文獻,但這些文獻非常分散。在很多情況下,明確知道你要找什么是很有必要的,否則只能靠運氣來找。
在開始本領域的研究后不久,我和我的學生列出了一個我們已經知道的研究主題和方法的清單。隨著研究工作的進展,我們的清單也在增長。我們最初的想法就是將這些資料編成一本書去幫助其他像我們一樣不得不艱苦地自學的人。從本質上講,這本書反映出了我們在該領域積累的經驗,并結合了我們從文獻中收集到的(包括FPGA設計和圖像處理)方法。
面向的讀者
這本書主要面向對圖像處理的基本操作比較熟悉并且想將其用FPGA實現的人群。我們希望讀者在剛開始涉足這一領域時能知道本書提到的這些技術和方法。可能從軟件思維模式轉換到硬件思維模式是最大的障礙。通常來說,我們在進行軟件編程時并不需要認真考慮其基本結構,可能這是因為大多數的軟件處理器的結構非常相似,因此其差別也僅僅是一個次要因素,無論其對計算機工程師來說多么重要。一個好的編譯器能相對有效地將編程語言描述的算法映射到結構上,因此我們沒有必要對其考慮太多。但是當編寫硬件時,結構則是最重要的問題。這不僅僅是將軟件映射到硬件上的問題,還需要對基本的硬件結構進行設計。特別是,對硬件進行編程經常需要將算法轉換成一個合適的并行結構,這通常就造成算法本身很大的改變。這不是目前的編譯器所能夠實現的,因為該工作需要完成大量的設計工作而不是僅僅對數據流進行分解。本書針對這一問題不僅給出了用于圖像處理操作的算法,而且給出了有效實現這些算法所使用的基本結構。
本書也將有益于那些熟悉編程并想用FPGA解決其他問題的人和那些正考慮圖像處理應用的人。雖然本文中許多技術與很多應用領域相關并且是適用的,但是大部分的重點和例子都取自圖像處理應用中。本書中給出了構成許多算法及其實現的足夠多的細節。但是,我認為對圖像處理的學習不僅僅是收集一組算法的過程,還需要有一些數量的優秀的圖像處理文本能提供這些算法。成像是一種實用性的學科,動手做去學習最有效,并且在軟件環境下學習圖像處理比通過FPGA學習能提供更大的靈活性和交互性。
這就是說,本書所涉及的是FPGA發揮重要作用的嵌入式圖像處理領域,一個在實現高效低功耗的最終解決方案時需要硬件工程師和軟件工程師將其技術進行緊密結合的技術領域。
內容大綱
本書旨在為實現基于FPGA的圖像處理所用的算法和技術提供一個全面的概述,尤其是針對低級和中級視覺。然而,同任何領域中的設計一樣,實現某一特定的任務不是只有一個辦法。本書將重點放在了基于流的圖像處理方法實現上,因為該方法能有效地利用并行性。這種強調反映了我在該領域的研究背景和經驗,但并不意味著是關于該研究方向的最終結論。
第1章廣泛概述了圖像處理操作,包括一段簡短的歷史背景,解釋了許多基本的圖像處理的術語,并且用一個例子論證說明了圖像處理算法的不同階段。本章介紹了實時嵌入式圖像處理遇到的問題,說明了用傳統的串行處理器解決該問題的局限性。高速圖像處理必須利用處理圖像過程中固有的并行性。本章回顧了并行圖像處理系統的一段簡短的歷史,并給出了使用FPGA進行圖像處理的緣由。
因為FPGA提供可重復編程的硬件,因此它結合了軟、硬件系統的優點。第2章介紹了FPGA技術。雖然其中的一些技術對于實現算法來說并不是必需的,但是了解構建模塊和底層架構對于開發一個高效利用資源的解決方案來說是很重要的。在實現圖像處理算法部分還回顧了目前可用的FPGA的主要特點。
基于FPGA的設計是一種硬件設計,因此需要用某些形式的硬件描述語言來表示這些硬件。第3章回顧了一些主要的語言,同時特別強調了實現算法的設計流程。傳統的硬件描述語言如VHDL和Verilog需要對所有的控制進行清楚的編程,因此屬于低級編程語言。在過去的15年里,主要是基于C語言的硬件編程的算法研究已經有了很多。文中闡述了其中的一些研究,并且最后簡單介紹了幾種商業產品。
第4章詳細描述了在FPGA上設計和實現一個圖像處理應用程序的過程,并特別強調了基于FPGA的實現和基于一個標準軟件實現的不同點。初始階段最重要的一步是要清楚地說明待解決的圖像處理的問題是什么。這一步必須足夠的詳細,提供一個可以評估解決方案的規范說明。本章詳述了開發圖像處理算法的過程,概述了許多圖像處理算法的基本步驟。最終產生的算法必須能夠定義系統和計算架構。算法映射過程不是僅僅將算法移植給一種硬件描述語言即可,還需要將算法轉換,使得FPGA能充分利用可用資源。實現算法的最后一步是將其映射到計算架構上。
映射過程中的三種約束為:有限的處理時間、受限的數據訪問,以及有限的系統資源。第5章介紹了幾種可克服或者緩解這些約束的方法,并給出了計算機視覺算法中常見的幾種數據結構的可行的FPGA實現。這些有助于在軟、硬件實現之間搭起橋梁。圖像處理部分介紹了數字表示方法和數字系統,討論了一系列高效的硬件計算技術。其中的一些技術雖是用硬件實現的,但在高效實現常用函數時可等效于軟件庫函數。
本書的接下來部分介紹了許多常用圖像處理操作的實現,并考慮了一些設計選擇和將操作映射到FPGA上時的可選方案。雖然本書介紹得已經相當全面,尤其是在低級圖像與圖像之間的轉換方面,但還是不可能涵蓋了每個可能的設計。文中討論的例子旨在為其他相關操作提供基礎。
第6章介紹了點操作,只考慮輸出僅取決于輸入圖像中相應像素的情況,對直接計算法和查表法都做了介紹。對于多輸入圖像的情況,詳細介紹了如圖像平均及背景去除等技術。本章的最后一節將之前的討論延伸到對彩色圖像的處理。重點討論的特定主題是顏色空間轉換、顏色分割和顏色均衡。
第7章討論了直方圖和基于直方圖處理的實現,描述了累積一個直方圖然后從中抽取數據的一些技術細節,講述了直方圖均衡化、閾值選擇以及使用直方圖進行圖像匹配等具體任務。此外,文中將標準一維直方圖的概念擴展到了多維直方圖,詳細討論了色彩分割時的聚類和分類的使用。本章結束部分介紹了從多維直方圖中提取特征用于紋理分析的過程。
第8章重點介紹了各種局部濾波器,包括線性濾波器和非線性濾波器。本章重點分析了基于流實現的高速緩存技術以及用于高效處理圖像邊界周圍操作的方法,介紹了排序濾波器和一種相關的排序網絡架構。形態學濾波器是另一類非常重要的濾波器。形態學濾波器的狀態機實現為經典的濾波器實現提供了一種選擇方法,對分離性以及串行和并行分解技術的描述使得到更有效的實現成為可能。
第9章涵蓋了圖像整形及相關技術。本章對幾何變換中的正向和逆向映射方法進行了比較詳細的比較,并特別強調了采用流操作的實現方法。插值技術通常與幾何變換相關聯。本章介紹了用硬件來實現雙線性插值、雙三次插值以及基于樣條的插值算法。本章的末尾還介紹了圖像配準的相關技術,包括對尺度不變特征變換和超分辨率的討論。
第10章介紹了線性變換,將重點放在了快速傅里葉變換、離散余弦變換以及小波變換。本章介紹了FFT和DCT的并行實現和流水線實現,并對頻率域的濾波和逆濾波進行了比較詳細的介紹。為小波變換開發的基于提升的濾波,可將基于直接有限脈沖響應實現所需的邏輯最高減至原來的四分之一。本章最后討論了圖像和視頻編碼的步驟,并且概述了每個步驟可以用到的一些技術。
第11章介紹了與區域檢測和標記有關的中間級操作的一種選擇方案。對鏈式編碼和連通部分標記所用的標準軟件算法進行相應的改造,從而實現了高效的流操作。這能在很大程度上縮短潛伏期并且減少應用程序所需的內存。本章還介紹了距離變換、分水嶺變換以及霍夫變換的硬件實現。
任何一個嵌入式應用程序必須具有與現實世界相連接的接口。第12章介紹了一系列的常用外設,并給出了關于它們如何連接到FPGA上的一些建議。本章重點介紹了攝像機和視頻輸出設備接口,同時也介紹了若干種用戶接口和存儲器設備。本章還重新探討了圖像處理中的隔行掃描技術和拜爾模式的馬賽克技術。
接下來的一章對前面提到的與測試和整定技術有關的一些問題進行了擴展。本章論證了可導致實現方案無法按預期的方式運行的四種情況,即設計時的錯誤、實現時的漏洞、錯誤的參數選擇以及不符合時間約束。幾種清單為測試和調試FPGA算法提供了指南和一些提示。
本書的最后選擇了一些案例,說明怎樣把前面章節介紹的材料和技術集成在一個完整的應用中。這些應用簡短地說明了設計步驟,并且在整個算法級而并非僅在操作級解釋了映射過程。將操作結合在一個相兼容的整體架構中能獲益很多。所介紹的這些應用是用于基于手勢的用戶接口的彩色區域跟蹤、校準和糾正鏡頭的桶形畸變、由人類視覺系統的屬性特點聯想到開發一種中央窩圖像傳感器、從一段時間的飛行距離圖像系統中提取范圍,以及用于實時生產分級的一種機器視覺系統。
使用約定
本書內容獨立于任何特定的FPGA或者FPGA供應商,或任何特定的硬件描述語言。該書并不限制讀者的范圍,其主題就已經足夠專業!因此,許多函數和操作使用模塊化示意圖的形式表示,這就使得用一種獨立于語言的表示成為可能,可以把重點放在算法的硬件實現上,并便于移植。這些示意圖的基本組成元素如圖P.1所示。I通常表示一個圖像處理操作的輸入,Q通常表示輸出。

P.1 本書使用的約定。左上方:一個典型的圖像處理操作;左邊中間:P.1所示方程的模塊化示意圖;
左下方:操作數的順序很重要時操作符的表示形式。右圖:模塊示意圖內各種模塊所用符號
對于一些數學運算來說,例如減法運算和比較運算,操作數的順序是很重要的。鑒于這個原因,第一個操作數用一個點表示而不是箭頭表示,如圖P.1左下方所示。
考慮對流數據進行操作的一個遞歸濾波器:
(P.1)
這里的下標表示流圖像的第n個像素。在較高的級別上,這可以被視為一個圖像處理操作,并用一個單獨的模塊表示,如圖P.1左上圖所示。其左邊中間模塊給出了上式的低級實現。輸入和輸出,I和Q,用黑框的寄存器表示,而其他可選的寄存器用白框表示。圖中下標都省略掉了,因為它們在流操作中都是隱含的。在一些例子中,可能會出現其他的控制輸入:CE表示時鐘使能,RST表示置位,等等。用中灰色塊表示常數,淺灰色表示其他的功能模塊。
當用等式表示邏輯函數時, 表示邏輯或, 表示邏輯與。這樣就可以避免與加法和乘法符號混淆。


致謝



我要感謝所有那些幫助并使我對基于FPGA設計的理解達到目前水平的人們。我特別想感謝我的研究生們(David Johnson,Kim Gribbon,Chris Johnston,Aaron Bishell,Andreas Buhler,Ni Ma)。當我們一起努力找出實現圖像處理算法的有效方法時,是他們幫助我形成了對FPGA開發的理解和方法。本書反映了多少我的工作,也就反映了多少他們的工作。
我們用于FPGA上的大多數算法是用Handel-C編寫的,并且用由Celoxica公司提供的板卡進行了測試。我想要對Roger Gook和他的團隊所提供的支持表示感謝,起初提供了Celoxica University Programme,后來又提供了Agility Design Solutions。Roger為開發套件提供了費用大幅度打折的許可,沒有這些,本書中提到的很多想法就不會得到充分的探討。
Massey大學為我提供了一個有利的環境并允許我對這一領域進行自由探索。尤其是Serge Demidenko,他給了我開始研究FPGA的動力和決心。自那時以來,他一直給我們啟發并提出一些挑戰性的問題。其他的同事中尤其值得感謝的是GourabSen Gupta和Richard Harris,同時我還要感謝Paul Lyons,他幫助我一起監督我的學生。
本書一些材料的早期版本作為為時半天的輔導材料,出現在2005年在澳大利亞墨爾本舉辦的IEEE第十區大會(TenCon)、2007年在美國德克薩斯州圣安東尼奧舉辦的IEEE圖像處理國際會議(ICIP)以及2010年在新西蘭皇后鎮舉辦的亞洲計算機視覺會議(ACCV)上。我想感謝這些研討會的與會者,感謝他們提供的寶貴的反饋意見以及他們的令人興奮的討論。
2008年期間,我到英國倫敦帝國學院電路和系統組休假。我非常感謝Peter Cheung,他招待了我,給我提供了一個安靜的辦公室,使我免受分心和干擾。我在那里真正開始寫這本書,并至少完成了大部分的框架內容。我要特別感謝Peter Cheung、Christos Bouganis、Peter Sedcole 和George Constantinides,他們一起參與討論才給了我反復推敲想法的機會。
我的妻子Robyn兩年來給了我很多晚上和周末的自由時間來完成這篇稿子。我對她的耐心和支持表示感謝。她現在知道了FPGA并不是帶有射線槍的短吻鱷陷進沼澤地的意思。我將這本書獻給她。

Donald Bailey
內容簡介:

本書詳細介紹了FPGA(Field Programmable Gate Array,現場可編程門陣列)這種新型可編程電子器件的特點,對FPGA的各種編程語言的發展歷程進行了回顧,并針對嵌入式圖像處理系統的特點和應用背景,詳細介紹了如何利用FPGA的硬件并行性特點研制開發高性能嵌入式圖像處理系統。作者還結合自己的經驗,介紹了研制開發基于FPGA的嵌入式圖像處理系統所需要的正確思路以及許多實用性技巧,并給出了許多圖像處理算法在FPGA上的具體實現方法以及多個基于FPGA實現嵌入式圖像處理系統的應用實例。
本書對FPGA技術的初學者以及已經具有比較豐富的設計經驗的讀者來說都有很好的參考價值,也將為從事基于FPGA的嵌入式系統開發和應用的軟硬件工程師和科研人員提供一本比較系統、全面的學習材料。

目錄:

1
圖像處理
1.1 基本定義 2
1.2 圖像形成 3
1.3 圖像處理操作 6
1.4 應用實例 8
1.5 實時圖像處理 10
1.6 嵌入式圖像處理 11
1.7 串行處理 12
1.8 并行性 14
1.9 硬件圖像處理系統 17
2
現場可編程門陣列
2.1 可編程邏輯器件 19
2.1.1 FPGA與ASIC 21
2.2 FPGA和圖像處理 23
2.3 FPGA的內部 24
2.3.1 邏輯器件 24
2.3.2 互連 26
2.3.3 輸入和輸出 27
2.3.4 時鐘 28
2.3.5 配置 28
2.3.6 功耗 29
2.4 FPGA產品系列及其特點 31
2.4.1 Xilinx 31
2.4.2 Altera 35
2.4.3 Lattice半導體公司 41
2.4.4 Achronix 43
2.4.5 SiliconBlue 44
2.4.6 Tabula 44
2.4.7 Actel 45
2.4.8 Atmel 46
2.4.9 QuickLogic 46
2.4.10 MathStar 47
2.4.11 Cypress 47
2.5 選擇FPGA或開發板 48
3
編程語言
3.1 硬件描述語言 53
3.2 基于軟件的語言 58
3.2.1 結構化方法 60
3.2.2 擴展語言 61
3.2.3 本地編譯技術 66
3.3 Visual語言 69
3.3.1 行為式描述 69
3.3.2 數據流 70
3.3.3 混合型 71
3.4 小結 73
4
設計流程
4.1 問題描述 76
4.2 算法開發 77
4.2.1 算法開發過程 77
4.2.2 算法結構 78
4.2.3 FPGA開發問題 81
4.3 結構選擇 82
4.3.1 系統級結構 82
4.3.2 計算結構 84
4.3.3 硬件和軟件的劃分 88
4.4 系統實現 90
4.4.1 映射到FPGA資源 91
4.4.2 算法映射問題 93
4.4.3 設計流程 95
4.5 為調整和調試進行設計 96
4.5.1 算法調整 96
4.5.2 系統調試 97
5
映射技術
5.1 時序約束 99
5.1.1 低級流水線 99
5.1.2 處理同步 101
5.1.3 多時鐘域 103
5.2 存儲器帶寬約束 104
5.2.1 存儲器架構 105
5.2.2 高速緩存 107
5.2.3 行緩沖 108
5.2.4 其他存儲器結構 110
5.3 資源約束 113
5.3.1 資源復用 113
5.3.2 資源控制器 116
5.3.3 重配置性 120
5.4 計算技術 122
5.4.1 數字系統 122
5.4.2 查找表 127
5.4.3 CORDIC 131
5.4.4 近似 137
5.4.5 其他方法 138
5.5 小結 140
6
點操作
6.1 單幅圖像上的點操作 141
6.1.1 對比度和亮度調節 142
6.1.2 全局閾值化和等高線閾值化 145
6.1.3 查找表實現 147
6.2 多幅圖像上的點操作 148
6.2.1 圖像均值 149
6.2.2 圖像相減 150
6.2.3 圖像比對 154
6.2.4 亮度縮放 155
6.2.5 圖像掩模 156
6.3 彩色圖像處理 157
6.3.1 偽彩色 158
6.3.2 色彩空間轉換 160
6.3.3 顏色閾值化 172
6.3.4 顏色校正 173
6.3.5 顏色增強 176
6.4 小結 176
7
直方圖操作
7.1 灰度級直方圖 177
7.1.1 數據匯集 179
7.1.2 直方圖均衡化 183
7.1.3 自動曝光 187
7.1.4 閾值選擇 188
7.1.5 直方圖相似性 194
7.2 多維直方圖 194
7.2.1 三角陣列 195
7.2.2 多維統計信息 196
7.2.3 顏色分割 200
7.2.4 顏色索引 203
7.2.5 紋理分析 204
8
局部濾波器
8.1 緩存 207
8.2 線性濾波器 211
8.2.1 噪聲平滑 212
8.2.2 邊緣檢測 213
8.2.3 邊緣增強 215
8.2.4 線性濾波器技術 215
8.3 非線性濾波器 219
8.3.1 邊緣方向 221
8.3.2 非極大值抑制 222
8.3.3 零交點檢測 222
8.4 排序濾波器 223
8.4.1 排序濾波器的排序網絡 225
8.4.2 自適應直方圖均衡化 229
8.5 顏色濾波器 230
8.6 形態學濾波器 232
8.6.1 二值圖像的形態學濾波 233
8.6.2 灰度圖像形態學 236
8.6.3 顏色形態學濾波 238
8.7 自適應閾值分割 238
8.7.1 誤差擴散 239
8.8 小結 240
9
幾何變換
9.1 前向映射 242
9.1.1 可分離映射 243
9.2 逆向映射 248
9.3 插值 250
9.3.1 雙線性插值 251
9.3.2 雙三次插值 253
9.3.3 樣條插值 254
9.3.4 通過插值壓縮數據 256
9.4 映射的優化 256
9.5 圖像配準 258
9.5.1 基于特征的方法 258
9.5.2 基于區域的方法 262
9.5.3 應用 267
10
線性變換
10.1 傅里葉變換 270
10.1.1 快速傅里葉變換 271
10.1.2 濾波 277
10.1.3 逆濾波 279
10.1.4 插值 280
10.1.5 配準 281
10.1.6 特征提取 281
10.1.7 哥茲柔算法 282
10.2 離散余弦變換 283
10.3 小波變換 286
10.3.1 濾波實現 288
10.3.2 小波變換的應用 292
10.4 圖像和視頻編碼 293
11
目標檢測和標記
11.1 包圍盒 300
11.2 游程編碼 302
11.3 鏈碼 303
11.3.1 串行實現算法 304
11.3.2 單次掃描算法 304
11.3.3 特征提取 307
11.4 連通域標注 309
11.4.1 隨機讀取算法 309
11.4.2 多次掃描算法 309
11.4.3 兩次掃描算法 310
11.4.4 單次掃描算法 312
11.4.5 多輸入標號 314
11.4.6 進一步優化 315
11.5 距離變換 315
11.5.1 形態學方法 316
11.5.2 倒角距離 316
11.5.3 可分離變換 318
11.5.4 應用 320
11.5.5 測地線距離變換 321
11.6 分水嶺變換 321
11.6.1 流水算法 322
11.6.2 浸入算法 323
11.6.3 應用 324
11.7 哈夫變換 325
11.7.1 直線哈夫變換 326
11.7.2 圓哈夫變換 328
11.7.3 廣義哈夫變換 329
11.8 小結 329
12
接口
12.1 攝像機輸入 331
12.1.1 攝像機接口標準 331
12.1.2 消除隔行掃描 336
12.1.3 全局和卷簾快門的校正 336
12.1.4 Bayer模板處理 337
12.2 顯示輸出 339
12.2.1 顯示器驅動 340
12.2.2 顯示內容 342
12.3 串行通信 345
12.3.1 PS2接口 345
12.3.2 I2C總線 347
12.3.3 SPI總線 349
12.3.4 RS-232接口 349
12.3.5 USB接口 350
12.3.6 以太網 350
12.3.7 PCI Express 351
12.4 存儲器 352
12.4.1 靜態隨機存儲器(SRAM) 352
12.4.2 動態隨機存儲器 353
12.4.3 閃存 354
12.5 小結 354
13
測試、調整和調試
13.1 設計 356
13.1.1 隨機噪聲源 357
13.2 實現 359
13.2.1 常見的實現錯誤 361
13.3 調試 362
13.4 時序收斂 363
14
應用實例
14.1 彩色區域跟蹤 366
14.2 鏡頭畸變校正 369
14.2.1 畸變描述 369
14.2.2 畸變校正 372
14.3 中央窩傳感器 374
14.3.1 中央窩映射 376
14.3.2 使用傳感器 378
14.4 深度成像 379
14.4.1 擴展精確測量范圍 381
14.5 實時生產線分級 382
14.5.1 軟件算法 383
14.5.2 硬件實現 384
14.6 小結 387
參考文獻 388
序: