課程設計(論文)-基于Hough變換的直線檢測程序_第1頁
課程設計(論文)-基于Hough變換的直線檢測程序_第2頁
課程設計(論文)-基于Hough變換的直線檢測程序_第3頁
課程設計(論文)-基于Hough變換的直線檢測程序_第4頁
課程設計(論文)-基于Hough變換的直線檢測程序_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

PAGEPAGE課程設計報告題目基于Hough變換的直線檢測程序專業(yè)電子信息工程班級電子2013-02班學號姓名指導教師電氣工程學院二〇一六年九月至二〇一六年十二月西南交通大學本科課程設計第PAGEIII頁課程設計任務書學生姓名學生學號學生專業(yè)電子信息工程學生班級電子2013-02發(fā)題日期2016年8月29日完成日期2016年12月18日課程名稱數(shù)字圖像處理指導教師設計題目基于Hough變換的直線檢測程序課程設計主要目的:學習圖像視頻處理的基礎知識,掌握圖像視頻處理的基本算法,熟悉VC++和OpenCV編程技術,培養(yǎng)基本的圖像視頻處理的應用能力。課程設計任務要求:(包括原始數(shù)據(jù)、技術參數(shù)、設計條件、設計要求等)學習圖像視頻處理的基礎知識和基本方法,研究Hough變換的基本原理和技術,采用VC++和OpenCV技術編程實現(xiàn)直線檢測程序,實現(xiàn)對圖像中的直線進行檢測。課程設計主要任務:1、學習圖像視頻處理的基礎知識和基本方法;2、研究Hough變換的基本原理和技術;3、學習VC++和OpenCV編程技術;4、實現(xiàn)對圖像中的直線進行檢測的程序。課程設計進度安排:(共16周)序號內容安排時間時間1學習圖像視頻處理的基礎知識和基本方法2周2研究Hough變換的基本原理和技術4周3學習VC++和OpenCV編程技術4周4實現(xiàn)對圖像中的直線進行檢測的程序4周5撰寫課程設計報告2周課程設計參考文獻:[1]劉瑞禎,于仕琪.OpenCV教程——基礎篇.北京航空航天大學版社,2007.[2]OpenCV中文網(wǎng)站(/)指導教師簽字系主任審核簽字摘要直線檢測是圖像處理中一個特別重要的研究課題,作為圖像分割處理的基礎。在圖像處理領域,直線特征經(jīng)常是被用于高層處理,所以直線檢測對于數(shù)字圖像處理有著重要的意義。同時在圖像處理中,對直線的識別和定位也是很重要的。例如在工程項目上經(jīng)常要進行直線檢測,對直線物體或圖標進行模式識別和定位。圖像處理是人類視覺延伸的重要手段之一,可以達到使人們看到任意波長所測得的圖像的目的。圖像處理是使用計算機對圖像進行分析,以達到所需結果的技術,因而又稱影像處理。圖像處理一般指數(shù)字圖像處理。數(shù)字圖像是指用數(shù)字攝像機、掃描儀等設備經(jīng)過采樣和數(shù)字化得到的一個大的二維數(shù)組,該數(shù)組的元素稱為像素,其值為一整數(shù),稱為灰度值.圖像處理技術的主要內容包括圖像壓縮,增強和復原,匹配、描述和識別3個部分。數(shù)字圖像處理技術發(fā)展很快,給定形狀圖像的檢測問題也是各種工程事項中經(jīng)常碰到的一類問題,類直線形狀圖形的檢測是其中主要的一類。本文給出Hough變換的基本原理。針對圖像空間的直線檢測問題,提出基于Hough變換的檢測算法。關鍵詞:Hough變換;邊緣檢測;直線檢測

目錄TOC\o"1-4"\h\z第一章緒論 11.1數(shù)字圖像處理與直線檢測 11.1.1圖像工程 11.1.2數(shù)字圖像處理 21.2圖像檢測技術發(fā)展歷史及現(xiàn)狀 51.3直線檢測課題存在的問題 6第二章編程工具和環(huán)境搭建 72.1OpenCV 72.2MicrosoftVisualStudio 82.3環(huán)境搭建 92.3.1安裝OpenCV 92.4OpenCV常用數(shù)據(jù)結構用法介紹 11第三章直線檢測算法的實現(xiàn) 133.1Hough變換 133.2Hough變換原理 133.3基于Hough變換的直線檢測的實現(xiàn) 143.3.1直線檢測的流程 153.3.2直線檢測算法分析 153.3.3函數(shù)分析 163.3.4顯示程序運行的結果 17第四章結論 18參考文獻 19附錄 20西南交通大學本科課程設計第23頁第一章緒論1.1數(shù)字圖像處理與直線檢測1.1.1圖像工程圖像工程是將圖像技術發(fā)展過程中出現(xiàn)的各種新理論、新方法、新技術、新設備等進行綜合研究和集成應用的一個整體框架,科分為3個層次:(1)圖像處理(ImageProcessing)強調在圖像之間進行一定程度地變換,功能上主要是滿足對圖像進行加工處理以達到改善圖像的視覺效果并為自動識別做好鋪墊,或對圖像進行壓縮編碼以減少所需存儲空間和時間、傳輸通路的要求。(2)圖像分析(ImageAnalysis)圖像分析是指對圖像中感興趣的目標進行檢測和測量,以獲得目標的客觀信息從而建立對圖像的描述。圖像分析是一個從圖像到數(shù)據(jù)的過程。這里的數(shù)據(jù)可以是對目標特征測量的結果,或是基于測量的符號表示,其主要是以觀察者為中心研究客觀世界。圖像分析是圖像工程中層的操作,分割和特征值提取把原來以像素描述的圖像轉變?yōu)楸容^簡單的非圖形式的描述。(3)圖像理解(ImageUnderstanding)圖像理解進一步研究圖像中各目標的性質和它們之間的相互聯(lián)系,并得出對圖像內容含義的理解以及對原來客觀場景的解釋,從而指導和規(guī)劃行動。圖像理解在一定程度上是以客觀世界為中心,借助知識、經(jīng)驗等來把握整個客觀世界(包括沒有直接觀察到的事物)。圖像理解是處于圖像工程最高層的操作,基本上是對從描述抽象出來的符號進行運算,其處理過程和方法與人類的思維推理可以有許多類似之處。本次課程設計直線段的檢測屬于圖像分析階段,對其研究的意義在于:直線段是圖像的基本組成元素,任何圖形微觀上都是由直線段組成:直線段的檢測為圖像分析階段中更高層的處理諸如目標的表達提取和識別提供數(shù)據(jù)支持,它的影響可以達到圖像理解階段。在實際應用中,道路識別、建筑物識別、醫(yī)學圖像分析、航空和衛(wèi)星圖像分析等領域都需要借重于直線檢測技術。1.1.2數(shù)字圖像處理數(shù)字圖像處理(DigitalImageProcessing)又稱為計算機圖像處理,簡單的說就是將圖像信號轉換成數(shù)字信號并利用計算機進行處理的過程。數(shù)字圖像處理常用方法有以下幾個方面:(1)圖像變換:由于圖像陣列很大,直接在空間域中進行處理,涉及計算量很大。因此,往往采用各種圖像變換的方法,如傅立葉變換、沃爾什變換、離散余弦變換等間接處理技術,將空間域的處理轉換為變換域處理,不僅可減少計算量,而且可獲得更有效的處理(如傅立葉變換可在頻域中進行數(shù)字濾波處理)。新興研究的小波變換在時域和頻域中都具有良好的局部化特性,它在圖像處理中也有著廣泛而有效的應用。(2)圖像編碼壓縮:圖像編碼壓縮技術可減少描述圖像的數(shù)據(jù)量(即比特數(shù)),以便節(jié)省圖像傳輸、處理時間和減少所占用的存儲器容量。壓縮可以在不失真的前提下獲得,也可以在允許的失真條件下進行。編碼是壓縮技術中最重要的方法,它在圖像處理技術中是發(fā)展最早且比較成熟的技術。(3)圖像增強和復原:圖像增強和復原的目的是為了提高圖像的質量,如去除噪聲,提高圖像的清晰度等。圖像增強不考慮圖像降質的原因,突出圖像中所感興趣的部分。如強化圖像高頻分量,可使圖像中物體輪廓清晰,細節(jié)明顯;如強化低頻分量可減少圖像中噪聲影響。圖像復原要求對圖像降質的原因有一定的了解,一般講應根據(jù)降質過程建立“降質模型”,再采用某種濾波方法,恢復或重建原來的圖像。(4)圖像分割:圖像分割是數(shù)字圖像處理中的關鍵技術之一。圖像分割是將圖像中有意義的特征部分提取出來,其有意義的特征有圖像中的邊緣、區(qū)域等,這是進一步進行圖像識別、分析和理解的基礎。雖然已研究出不少邊緣提取、區(qū)域分割的方法,但還沒有一種普遍適用于各種圖像的有效方法。因此,對圖像分割的研究還在不斷深入之中,是圖像處理中研究的熱點之一。(5)圖像描述:圖像描述是圖像識別和理解的必要前提。作為最簡單的二值圖像可采用其幾何特性描述物體的特性,一般圖像的描述方法采用二維形狀描述,它有邊界描述和區(qū)域描述兩類方法。對于特殊的紋理圖像可采用二維紋理特征描述。隨著圖像處理研究的深入發(fā)展,已經(jīng)開始進行三維物體描述的研究,提出了體積描述、表面描述、廣義圓柱體描述等方法。(7)圖像分類(識別):圖像分類(識別)屬于模式識別的范疇,其主要內容是圖像經(jīng)過某些預處理(增強、復原、壓縮)后,進行圖像分割和特征提取,從而進行判決分類。圖像分類常采用經(jīng)典的模式識別方法,有統(tǒng)計模式分類和句法(結構)模式分類,近年來新發(fā)展起來的模糊模式識別和人工神經(jīng)網(wǎng)絡模式分類在圖像識別中也越來越受到重視。應用工具數(shù)字圖像處理的工具可分為三大類:第一類包括各種正交變換和圖像濾波等方法,其共同點是將圖像變換到其它域(如頻域)中進行處理(如濾波)后,再變換到原來的空間(域)中。第二類方法是直接在空間域中處理圖像,它包括各種統(tǒng)計方法、微分方法及其它數(shù)學方法。第三類是數(shù)學形態(tài)學運算,它不同于常用的頻域和空域的方法,是建立在積分幾何和隨機集合論的基礎上的運算。由于被處理圖像的數(shù)據(jù)量非常大且許多運算在本質上是并行的,所以圖像并行處理結構和圖像并行處理算法也是圖像處理中的主要研究方向。數(shù)字圖像處理的應用:(1)數(shù)字圖像處理的典型應用:【圖像壓縮和傳輸(或者叫著圖像通信也可以)】(如:靜態(tài)圖像JPEG壓縮標準;動態(tài)MPEG標準,電信上類似的標準是H.264,娛樂上的MP4也屬于這方面),主要研究內容是研發(fā)更有效的圖像的編解碼算法(現(xiàn)在已經(jīng)有很多硬件實現(xiàn)的編解碼芯片了,具體性能指標和適用的標準不同);(2)生物識別為數(shù)字圖像處理在【信息安全】領域的應用(包含指紋識別、虹膜識別、人臉識別等),當然交通系統(tǒng)使用的車牌識別也是類似的技術。通用模式是:圖像預處理(如去噪、增強等)+不變特征提?。c特征庫中特征進行匹配=>識別;生物醫(yī)學工程方面的應用數(shù)字圖像處理在生物醫(yī)學工程方面的應用十分廣泛,而且很有成效。除了CT技術之外,還有一類是對醫(yī)用顯微圖像的處理分析,如紅細胞、白細胞分類,染色體分析,癌細胞識別等。此外,在X光肺部圖像增晰、超聲波圖像處理、心電圖分析、立體定向放射治療等醫(yī)學診斷方面都廣泛地應用圖像處理技術。【醫(yī)療影像處理】:CT成像,核磁共振MRI,超聲,X線成像。主要研究內容:圖像去噪,圖像增強,圖像識別,3維可視化等等(3)而真正集中了最先進軟硬件數(shù)字圖像處理的應用領域是:軍事:首先圖像數(shù)據(jù)類型上包含所有的成像頻段能獲取的影像(如無線電(雷達成像)、紅外、可見光、紫外、X線。。。你把電磁光譜拉開看就明白),用聲音回波來成像也可以,如聲納。千萬不要片面地理解圖像就是可見光成像,那是人眼的局限。軍事公安方面的應用在軍事方面圖像處理和識別主要用于導彈的精確末制導,各種偵察照片的判讀,具有圖像傳輸、存儲和顯示的軍事自動化指揮系統(tǒng),飛機、坦克和軍艦模擬訓練系統(tǒng)等;公安業(yè)務圖片的判讀分析,指紋識別,人臉鑒別,不完整圖片的復原,以及交通監(jiān)控、事故分析等。目前已投入運行的高速公路不停車自動收費系統(tǒng)中的車輛和車牌的自動識別都是圖像處理技術成功應用的例子。主要包含這些研究內容:目標捕獲目標鎖定目標跟蹤(4)飛機遙感和衛(wèi)星遙感技術中。許多國家每天派出很多偵察飛機對地球上有興趣的地區(qū)進行大量的空中攝影。對由此得來的照片進行處理分析,以前需要雇用幾千人,而現(xiàn)在改用配備有高級計算機的圖像處理系統(tǒng)來判讀分析,既節(jié)省人力,又加快了速度,還可以從照片中提取人工所不能發(fā)現(xiàn)的大量有用情報。從60年代末以來,美國及一些國際組織發(fā)射了資源遙感衛(wèi)星(如LANDSAT系列)和天空實驗室(如SKYLAB),由于成像條件受飛行器位置、姿態(tài)、環(huán)境條件等影響,圖像質量總不是很高。因此,以如此昂貴的代價進行簡單直觀的判讀來獲取圖像是不合算的,而必須采用數(shù)字圖像處理技術。如LANDSAT系列陸地衛(wèi)星,采用多波段掃描器(MSS),在900km高空對地球每一個地區(qū)以18天為一周期進行掃描成像,其圖像分辨率大致相當于地面上十幾米或100米左右(如1983年發(fā)射的LANDSAT-4,分辨率為30m)。這些圖像在空中先處理(數(shù)字化,編碼)成數(shù)字信號存入磁帶中,在衛(wèi)星經(jīng)過地面站上空時,再高速傳送下來,然后由處理中心分析判讀。這些圖像無論是在成像、存儲、傳輸過程中,還是在判讀分析中,都必須采用很多數(shù)字圖像處理方法?,F(xiàn)在世界各國都在利用陸地衛(wèi)星所獲取的圖像進行資源調查(如森林調查、海洋泥沙和漁業(yè)調查、水資源調查等),災害檢測(如病蟲害檢測、水火檢測、環(huán)境污染檢測等),資源勘察(如石油勘查、礦產(chǎn)量探測、大型工程地理位置勘探分析等),農(nóng)業(yè)規(guī)劃(如土壤營養(yǎng)、水份和農(nóng)作物生長、產(chǎn)量的估算等),城市規(guī)劃(如地質結構、水源及環(huán)境分析等)。我國也陸續(xù)開展了以上諸方面的一些實際應用,并獲得了良好的效果。在氣象預報和對太空其它星球研究方面,數(shù)字圖像處理技術也發(fā)揮了相當大的作用。(5)通信工程方面的應用當前通信的主要發(fā)展方向是聲音、文字、圖像和數(shù)據(jù)結合的多媒體通信。具體地講是將電話、電視和計算機以三網(wǎng)合一的方式在數(shù)字通信網(wǎng)上傳輸。其中以圖像通信最為復雜和困難,因圖像的數(shù)據(jù)量十分巨大,如傳送彩色電視信號的速率達100Mbit/s以上。要將這樣高速率的數(shù)據(jù)實時傳送出去,必須采用編碼技術來壓縮信息的比特量。在一定意義上講,編碼壓縮是這些技術成敗的關鍵。除了已應用較廣泛的熵編碼、DPCM編碼、變換編碼外,目前國內外正在大力開發(fā)研究新的編碼方法,如分行編碼、自適應網(wǎng)絡編碼、小波變換圖像壓縮編碼等。(6)工業(yè)和工程方面的應用在工業(yè)和工程領域中圖像處理技術有著廣泛的應用,如自動裝配線中檢測零件的質量、并對零件進行分類,印刷電路板疵病檢查,彈性力學照片的應力分析,流體力學圖片的阻力和升力分析,郵政信件的自動分揀,在一些有毒、放射性環(huán)境內識別工件及物體的形狀和排列狀態(tài),先進的設計和制造技術中采用工業(yè)視覺等等。其中值得一提的是研制具備視覺、聽覺和觸覺功能的智能機器人,將會給工農(nóng)業(yè)生產(chǎn)帶來新的激勵,目前已在工業(yè)生產(chǎn)中的噴漆、焊接、裝配中得到有效的利用。(7)文化藝術方面的應用目前這類應用有電視畫面的數(shù)字編輯,動畫的制作,電子圖像游戲,紡織工藝品設計,服裝設計與制作,發(fā)型設計,文物資料照片的復制和修復,運動員動作分析和評分等等,現(xiàn)在已逐漸形成一門新的藝術--計算機美術。1.2圖像檢測技術發(fā)展歷史及現(xiàn)狀圖像檢測作為圖像分析技術的一個研究內容,它也是伴隨著數(shù)字圖像處理的發(fā)展而發(fā)展的。數(shù)字圖像處理這門學科的形成也是和社會生產(chǎn)力發(fā)展的需要分不開。早期的圖像處理是由于通訊方面的要求而發(fā)展起來的,這就是本世紀20年代傳真技術的發(fā)明和發(fā)展。其后,則是由于宇宙方面的要求,需要處理大量的宇宙探測器上拍攝下來的不清楚的其他天體以及地球本身的照片。然而,圖像處理技術的發(fā)展,遠遠突破了這兩個領域,到今天,它已經(jīng)廣泛的應用到科學研究、工農(nóng)業(yè)生產(chǎn)、軍事技術、政府部門、醫(yī)療衛(wèi)生等許多領域,進一步推動著社會生產(chǎn)力的發(fā)展。圖像檢測是圖像分析研究內容的一部分。目前,在圖像分析領域已經(jīng)有很大的發(fā)展。圖像分析是一種從一幅圖像中通過自動的或半自動的方法提取圖像尺寸、數(shù)據(jù)或信息的方法。圖像分析方法通常因圖像分析系統(tǒng)最后的輸出是數(shù)字而不是畫面,使它與其他類型的圖像處理方法,如編碼、恢復、放大等不同。圖像分析源于經(jīng)典的模式識別方法,根據(jù)定義,分析系統(tǒng)并不局限于對一個固定數(shù)量類別的場景區(qū)域的分類,而是更傾向于可設計成用于描述復雜場景。根據(jù)實現(xiàn)預測,該場景的種類可能是非常多的和不確定的。目前,圖像分析領域主要包括形態(tài)學圖像處理、邊緣檢測、圖像特征提取、圖像分割、形狀分析、圖像檢測和配準等幾個方面的內容。1.3直線檢測課題存在的問題Hough變換的原理是把在圖像中對空間來說的直線檢測問題通過轉換變成參數(shù)中對點的檢測問題從而簡單化整個檢測流程。傳統(tǒng)的Hough變換法首先是運算量大,由于對所有源像素點都要進行無差別的Houh轉換運算,對像素較大的圖像進行轉換時相應的計算時間也太長。傳統(tǒng)的Hough變換法最主要的缺陷在于它會將中斷的直線無差別地連接起來,在某些場合有助于修補圖像,但是對源數(shù)據(jù)處理階段會產(chǎn)生錯誤的數(shù)據(jù),導致了與源圖像的偏差。第二章編程工具和環(huán)境搭建2.1OpenCVOpenCV的英文全稱為:OpenSourceComputerVisionLibrary.OpenCV是由Intel建立于1999年,現(xiàn)在是由WillowGarage提供相應的支持。它是一個基于BSD所授權許可的一個計算機視覺庫,還提供Python、Ruby、MATLAB等語言接口,從而實現(xiàn)圖像處理以及計算機視覺方面的通用算法。:OpenCV用C++語言編寫,它的主要接口也是C++語言,但是依然保留了大量的C語言接口。該庫也有大量的Python,JavaandMATLAB/OCTAVE(版本2.5)的接口。這些語言的API接口函數(shù)可以通過在線文檔獲得。如今也提供對于C#,Ch,Ruby的支持。所有新的開發(fā)和算法都是用C++接口。一個使用CUDA的GPU接口也于2010年9月開始實現(xiàn)。其主要特點是開放C源碼、基于Intel處理器指令集開發(fā)的優(yōu)化代碼、統(tǒng)一的結構和功能定義、強大的圖像和矩陣運算能力、方便靈活的用戶接口、支持MS-Windows和Linux平臺。作為一個基本的計算機視覺圖像處理和模式識別的開源項目,OpenCV可以直接應用于很多領域,可以作為二次開發(fā)的理想工具。圖3.1OpenCV的基本結構OpenCV主體分為五個模塊,其中四個模塊如圖3-1所示。OpenCV的CV模塊包含基本的圖像處理函數(shù)和高級的計算機視覺算法。ML是機器學習庫,包含一些基本統(tǒng)計的分類和聚類工具。HighGUI包含圖像和視頻輸入/輸出的函數(shù)。CXCore包含OpenCV的一些基本數(shù)據(jù)結構和相關函數(shù)。圖3-1中沒有包含CVAux模塊,該模塊中一般存放一些即將被淘汰的算法和函數(shù)(如基于嵌入式隱馬爾可夫模型的人臉識別算法),同時還有一些新出現(xiàn)的實驗性的算法和函數(shù)。.OpenCv是一個包含了超過300個C函數(shù)的應用編程接口,它不依賴于外部庫,既可以獨立運行,也可在運行時使用其它外部庫。OpenCv中所有的算法都是基于封裝于IPL的具有很高靈活性的動態(tài)數(shù)據(jù)結構,而且其中有一半以上的函數(shù)在設計及匯編時被1nto1公司針對其所生產(chǎn)的處理器優(yōu)化。.提供了一些與諸如EiC、Ch、MATLAB等其它語言或環(huán)境的接口,這些接口在其安裝完之后位于安裝目錄opencv/interfaces下。不管對于商業(yè)的還是非商業(yè)的用途,OpenCv都是完全免費的,其源代碼完全開放,開發(fā)者可以對源代碼進行修改,將自己設計的新類添加到庫中,只要設計符合規(guī)范,自己的代碼也可以被別人廣泛使用。OpenCV的主要特征有以下幾個方面:圖像數(shù)據(jù)的操作(分配、釋放、復制、設置和轉換)圖像是視頻的輸入輸出I/O(文件與攝像頭的輸入、圖像和視頻文件輸出)。矩陣和向量的操作以及線性代數(shù)的算法程序(矩陣積、解方程、特征值以及奇異值等)。各種動態(tài)數(shù)據(jù)結構(列表、隊列、集合、樹、圖等)?;镜臄?shù)字圖像處理(濾波、邊緣檢測、角點檢測、采樣與差值、色彩轉換、形態(tài)操作、直方圖、圖像金字塔等)。結構分析(連接部件、輪廓處理、距離變換、各自距計算、模塊匹配、Hough變換、多邊形逼近、直線擬合、橢圓擬合、Delaunay三角劃分等)。攝像頭定標(發(fā)現(xiàn)與跟蹤定標模式、定標、基本矩陣估計、齊次矩陣估計、立體對應)。運動分析(光流、運動分割、跟蹤)。目標識別(特征法、隱馬爾可夫模型:HMM).基本的GUI(圖像與視頻顯示、鍵盤和鼠標事件處理、滾動條)。圖像標注(線、二次曲線、多邊形、畫文字)2.2MicrosoftVisualStudioVisualStudio是微軟公司推出的開發(fā)環(huán)境,VisualStudio可以用來創(chuàng)建Windows平臺下的應用程序和網(wǎng)絡應用程序,也可以用來創(chuàng)建網(wǎng)絡服務、智能設備應用程序和Office插件。作為一種開發(fā)環(huán)境它的出現(xiàn)大大降低了研究人員在設計代碼開發(fā)程序中遇到的困難,他們可以把主要精力放在實現(xiàn)軟件的算法和思想上,而不是怎么用一種平臺。自從誕生以來,Microsoft將大量的人力物力投入到改進其性能和擴展其功能的研究上。VisualStudio97是最早的VisualStudio版本。1998年,Microsoft發(fā)布了VisualStudio6.0.所有的開發(fā)語言的開發(fā)環(huán)境版本均升到6.0.2005年,VisualStudio2005正式發(fā)布。.NET字眼從各種語言的名字中被抹去,但是這個版本的VisualStudio仍然還是面向.NET框架打的。這個版本的VisualStudio包含眾多的版本,分別面向不同的開發(fā)角色。2007年,Microsoft發(fā)布了VisualStudio2008.在這個版本里面,最大的改動就是不在支持JAVA。所以,JAVA還有J#都從這個版本中消失了。該軟件將在本次課程設計中使用最新的版本VisualStudio2010,該版本支持最新的C++標準,并且增強了IDE,提高了編程的效率。同時它還對于Windows7具有極強的兼容性,可適應當前操作系統(tǒng)的發(fā)展趨勢。正是因為這些特點,該軟件的設計過程是將它作為一個圖片處理平臺。2.3環(huán)境搭建2.3.1安裝OpenCV在官網(wǎng)上下載VS2010對應的OpenCV版本,隨后進行下列操作進行安裝程序:(1)雙擊下載完成的OpenCV壓縮包進行解壓操作圖3-1OpenCV解壓縮(2)在解壓縮操作完成之后,開始環(huán)境變量的配置操作,進入“我的電腦”-“屬性”-“高級系統(tǒng)設置”-“高級”-“環(huán)境變量”,雙擊里面的“PATH”變量,將路徑改成我們解壓縮的OpenCV對應的路徑。圖3-2PATH環(huán)境變量的配置(3)安裝MicrosoftVisual2008。(4)打開VS2008,進入“工具”-“選項”-“VC++目錄”,在顯示以下內容的下拉框中點擊“包含文件”,點擊“新行”圖表。創(chuàng)建三條路徑,如下圖所示:圖3-3包含文件的路徑設置(5)在顯示以下內容的下拉框中選擇“庫文件”,點擊“新行”圖標,創(chuàng)建一條路徑如下圖所示:圖3-4庫文件路徑的設置(6)新建一個OpenCV工程,進行局部配置——配置成功。2-4OpenCV常用數(shù)據(jù)結構用法介紹(1)CVCreateImage函數(shù)函數(shù)CVCreateImage的作用是創(chuàng)建首地址并分配存儲空間。函數(shù)的定義為:IplImage*cvCreateImage(CvSizesize,intdepth,intchannels);其中size指代的是圖像的寬和高,即我們通常所說的圖片的像素;depth是圖像元素的位深度,即圖像中一個像素所占的內存空間的大小,depth取值范圍有:IPL_DEPTH_8U(無符號8位整型)、IPL_DEPTH_8S(有符號8位整型)、IPL_DEPTH_16U(無符號16位整型)、IPL_DEPTH_16S(有符號16位整型)、IPL_DEPTH_32S(有符號32位整型)、IPL_DEPTH_32F(單精度浮點數(shù))和IPL_DEPTH_64F(雙精度浮點數(shù));channels代表的是每個元素的通道數(shù)。(2)IplImage由于OpenCV主要針對的是計算機視覺方面的處理,因此在函數(shù)庫中,最重要的結構體是IplImage結構。IplImage結構來源于Intel的另外一個函數(shù)庫IntelImageProcessingLibrary(IPL),該函數(shù)庫主要是針對圖像處理。在該函數(shù)結構定義中會使用到CVCreatImage.(3)CvMemStorage為opencv庫中的函數(shù),需要的頭文件是highgui.h。用來創(chuàng)建一個內存存儲器,來統(tǒng)一管理各種動態(tài)對象的內存。函數(shù)返回一個新創(chuàng)建的內存存儲器指針。參數(shù)block_size對應內存器中每個內存塊的大小,為0時內存塊默認大小為64k。(4)cvHoughLines2此函數(shù)是opencv圖像變換函數(shù)中的一個,主要用來訪問霍夫變換的兩個算法———標準霍夫變換(SHT)和累計概率霍夫變換(PPHT)。(5)cvShowImage該函數(shù)為開放計算機視覺(OpenCV)庫庫函數(shù),用來在在指定窗口中顯示圖像.函數(shù)cvShowImage在指定窗口中顯示圖像。如果窗口創(chuàng)建的時候被設定標志CV_WINDOW_AUTOSIZE,那么圖像將以原始尺寸顯示;否則,圖像將被伸縮以適合窗口大小.(6)cvCannycvCanny,開放計算機視覺(OpenCV)庫庫函數(shù)之一,用于對圖像的邊緣檢測(采用canny算法)。函數(shù)cvCanny采用Canny算法發(fā)現(xiàn)輸入圖像的邊緣而且在輸出圖像中標識這些邊緣。threshold1和threshold2當中的小閾值用來控制邊緣連接,大的閾值用來控制強邊緣的初始分割。(7)cvCvtColor色彩空間轉換voidcvCvtColor(constCvArr*src,CvArr*dst,intcode);src:輸入的8-bit,16-bit或32-bit單倍精度浮點數(shù)影像。dst:輸出的8-bit,16-bit或32-bit單倍精度浮點數(shù)影像。第三章直線檢測算法的實現(xiàn)3.1Hough變換Hough變換(霍夫變換)是圖像變換中的一個經(jīng)典手段。主要用來從圖像中分離出來具有某種相同特征的幾何形狀(比如,直線,圓,矩陣)。在檢測直線的方面來說Hough變換比檢測圓要更好的減少噪聲干擾?;镜脑硎抢脠D像全局特性而將邊緣像素連接起來組成區(qū)域封閉邊界的一種方法。在預先知道區(qū)域形狀的條件下,利用Hough變換可以方便地得到邊界曲線而將不連續(xù)的像素邊緣點連接起來。Hough變換的主要優(yōu)點是受噪聲和曲線間斷的影響小。利用Hough變換可以直接檢測某些已知形狀的目標,如直線。3.2Hough變換原理Hough變換的基本思想是點線的對偶性。一方面圖像空間中共線的點對應在參數(shù)空間里相交的線:另一方面,在參數(shù)空間中相交于同一個點的所有直線在圖像空間里都有共線的點與之對應。因此Hough變換把圖像空間中的直線檢測問題轉換到參數(shù)空間中對點的檢測問題,通過在參數(shù)空間里進行簡單的累加統(tǒng)計完成檢測任務。如果參數(shù)空間中使用直線方程,當圖像空間直線斜率為無窮大時,會使累加器尺寸和變很大,從而使計算復雜度過大。為解決這一問題,采用直線極坐標方程,變換方程如下:(3-1)根據(jù)這個方程,原圖像空間中的點對應新參數(shù)空間中的一條正弦曲線,即點正弦曲線對偶。檢測直線的具體過程就是讓θ取遍可能的值,然后計算ρ的值,再根據(jù)θ和ρ的值對累加數(shù)組累加,從而得到共線點的個數(shù)。下面介紹θ和ρ取值范圍的確定。設被檢測的直線在第一象限,右上角坐標為(m,n),則第一象限中直線的位置情況如下圖2-1所示:(a)檢測位置圖一圖3-1(b)檢測位置圖二由圖可見,當直線從與x軸重合處逆時針旋轉時,θ的值開始由0增大,直到180,所以θ的取值范圍為0-180.由直線極坐標方程可知:(3-2)由θ、ρ的取值范圍和它們的分辨率就可以確定累加器的大小,從而檢測直線。整個直線檢測算法流程如下圖所示:3.3基于Hough變換的直線檢測的實現(xiàn)圖3-2直線檢測流程圖3.3.1直線檢測的流程基于Hough的直線檢測流程圖如上所示:讀取待檢測圖像圖像預處理并使用Canny算子對待檢測圖像進行邊緣檢測對邊緣檢測的輸出圖像進行霍夫變換統(tǒng)計概率霍夫變換顯示原始圖像和檢測到的直線結束3.3.2直線檢測算法分析(1)讀取待檢測圖像利用OpenCV中的函數(shù)CVLoadImage可以載入指定圖像,然后可以將待處理圖像以houghlines.exe..\building.jpg的形式寫成TXT文件,然后轉為bat文件,進而可以進行批量操作方便用戶處理。使用函數(shù)為if(argc==2&&(src=cvLoadImage(argv[1],0))!=0)(2)圖像預處理并進行邊緣檢測在使用Hough變換前需對圖像進行圖像預處理操作以滿足Hough變換的要求,這一部分操作可以決定直線檢測系統(tǒng)的穩(wěn)定性。進行圖像灰度化處理,利用cvCvtColor函數(shù)可以將圖像由彩色轉為灰度。使用語句為:cvCvtColor(dst,color_dst,CV_GRAY2BGR)。邊緣檢測,使用Canny算子來對待處理圖像進行邊緣檢測。使用語句為:cvCanny(src,dst,50,200,3)。(3)使用Hough變化來進行直線檢測在直線檢測中要用到的函數(shù)是CVHoughLines2,得到的結果是lines,而lines其中的元素是由兩個元素組成的子向量(rho,theta),所以lines的訪問方式類似二維數(shù)組。CVHoughLines2的函數(shù)原型為CvSeq*cvHonghLines2(CvArr*image,void*line_storage,intmehtod,doublerho,doubletheta,intthreshold,doubleparam1=0,doubleparam2=0);參數(shù)說明:Image:輸入8-比特、單通道(二值)圖像,當用CV_HOUGH_PROBABILISTIC方法檢測的時候其內容會被函數(shù)所改變。Line_storage:檢測到的線段存儲倉。可以是內存存儲倉(此種情況下,一個線段序列在存儲倉中被創(chuàng)建,并且由函數(shù)返回),或者是包含線段參數(shù)的特殊類型的具有單行/單列的矩陣(CVMat*)。矩陣頭為函數(shù)所修改,使得它的cols/rows將包含一組檢測到的線段。如果line_storage是矩陣,而實際線段的數(shù)目超過矩陣尺寸,那么最大可能數(shù)目的線段被返回(線段沒有按照長度、可信度或其它指標排序)。Method:Hough變換變量,是下面變量的其中之一。CV_HOUGH_STANDARD-傳統(tǒng)或標準Hough變換。每一個線段由兩個浮點數(shù)(ρ,θ)表示,其中ρ是直線與原點(0,0)之間的距離,θ線段與x-軸之間的夾角。因此,矩陣類型必須是CV_32FC2type。CV_HOUGH_PROBABILISTIC-概率Hough變換(如果圖像包含一些長的線性分割,則效率更高)。它返回線段分割而不是整個線段。每個分割用起點和終點來表示,所以矩陣(或創(chuàng)建的序列)類型是CV_32SC4。CV_HOUGH_MULTI_SCALE-傳統(tǒng)Hough變換的多尺度變種。線段的編碼方式與CV_HOUGH_STANDARD的一致。rho:以象素為單位的距離精度,一般取1。theta:以弧度為單位角度精度,一般取CV_PI/180。Threshold:閾值參數(shù)。當在一條直線上的像素點數(shù)大于threshold時,才將該直線作為檢測結果顯示出來。該值越大,得到直線越少。(4)用函數(shù)cvNamedWindow創(chuàng)建兩個窗口并用函數(shù)cvShowImage分辨顯示源圖像和Hough變換處理后的圖像。3.3.3函數(shù)分析表3-1函數(shù)及其局部變量分析表編號返回類型函數(shù)名功能局部變量編號變量類型變量名作用1intmain主函數(shù)1intargc參數(shù)數(shù)量2char**argv參數(shù)指針3IplImage*src源圖像4IplImage*gray檢測圖像的灰度形式存儲5CvMemstorage*storage動態(tài)內存存儲器2voidCVShowImage顯示檢測結果1IplImage*Color_dst顯示畫線圖像2IplImage*Src源圖像3charsource顯示變換后圖像4charHough顯示畫線圖像3IplImage*cvCreateMemStorage創(chuàng)建內存存儲器4IplImage*cvCreateImage創(chuàng)建圖像intcvGetSize(src)獲取源圖像尺寸6VoidCVCanny圖像邊緣檢測1IplImage*src源圖像2IplImage*dst目的圖像7VoidCVCvtColor顏色空間轉換函數(shù)1IplImage*tsrc源圖像2IplImage*dst目的圖像8Cvseq*CVHoughLines2Hough直線檢測1IplImage*Color_dst顯示畫線圖像2CVMemStorage*storage內存9intcvNamedWindow創(chuàng)建窗口1charsource源圖像窗口2charHough變換后窗口3.3.4顯示程序運行結果(a)原始圖像圖3-3(b)直線檢測程序結果顯示第四章結論數(shù)字圖像處理這一技術應用特別廣泛,本次課程設計是基于Hough變換的直線檢測,主要是研究Hough變換在圖像檢測方面的應用。在實際的圖像檢測方面,對于一幅數(shù)字圖像進行定形狀圖形的檢測,需要對二進制的圖像進行圖像分析,其中包括:形態(tài)學處理、圖像分割、邊緣檢測,只有經(jīng)過這些處理之后才可以進行圖像的檢測。而在每一個處理過程中這些算法都是由一定地局限性,在顯示結果圖中,上方圖像直線檢測比較清晰,檢測比較成功,而位于圖像下方的密集直線段檢測就會出現(xiàn)漏掉或者檢測錯誤的情況。如何能夠消除算法的局限性,能夠成熟地運用這些算法進行直線檢測,這還是需要我們以后繼續(xù)學習的地方。在本次課程設計中,還有一個難點就是在之前的OpenCV和VS2008的安裝與環(huán)境配置中,由于對這方面知識太過于欠缺,在配置過程會出現(xiàn)各種各樣的問題。在這次的課程設計中最大的收獲就是學習了Hough變換,簡單地知道了該變換在數(shù)字圖像處理中是如何運用的,通過自學查資料也對Hough變換和數(shù)字圖像處理由不懂到懂,既學習到了知識,也提高了自己的學習能力和相關實踐能力。參考文獻[1]劉瑞禎,于仕琪.OpenCV教程——基礎篇.北京航空航天大學版社,2007[2]Bradski.GandKachler.A.學習OpenCV(中文版).于仕琪,劉瑞禎.清華大學出版社,2009[3]黎松,平西建,丁益洪.開放源代碼的計算機視覺類庫OpenCV的應用.計算機應用與軟件.2005,22(8):134-137附錄/*這是一個命令行程序,以圖像作為文件輸入變量編譯時選擇“#if1”或“#if0”,可以使用標準和概率HOUGH變換兩種方法*/#include<cv.h>#include<highgui.h>#include<math.h>intmain(intargc,char**argv){IplImage*src;if(argc==2&&(src=cvLoadImage(argv[1],0))!=0){IplImage*dst=cvCreateImage(cvGetSize(src),8,1);IplImage*color_dst=cvCreateImage(cvGetSize(src),8,3);CvMemStorage*storage=cvCreateMemStorage(0);CvSeq*lines=0;inti;cvCanny(src,dst,50,200,3);cvCvtColor(dst,color_dst,CV_GRAY2BGR);#if0lines=cvHoughLines2(dst,storage,CV_HOUGH_STANDARD,1,CV_PI/180,150,0,0);for(i=0;i<lines->total;i++){float*line=(float*)cvGetSeqElem(lines,i);floatrho=line[0];floattheta=line[1];CvPointpt1,pt2;doublea=cos(theta),b=sin(theta);if(fabs(a)<0.001){pt1.x=pt2.x=cvRound(rho);pt1.y=0;pt2.y=color_dst->height;}elseif(fabs(b)<0.001){pt1.y=pt2.y=cvRound(rho);pt1.x=0;pt2.x=color_dst->width;}else{pt1.x=0;pt1.y=cvRound(rho/b);pt2.x=cvRound(rho/a);pt2.y=0;}cvLine(color_dst,pt1,pt2,CV_RGB(255,0,0),3,8);}#elselines=cvHoughLines2(dst,storage,CV_HOUGH_PROBABILISTIC,1,CV_PI/180,80,30,10);for(i=0;i<lines->total;i++){CvPoint*line=(CvPoint*)cvGetSeqElem(lines,i);cvLine(color_dst,line[0],line[1],CV_RGB(255,0,0),3,8);}#endifcvNamedWindow("Source",1);cvShowImage("Source",src);cvNamedWindow("Hough",1);cvShowImage("Hough",color_dst);cvWaitKey(0);}}基于C8051F單片機直流電動機反饋控制系統(tǒng)的設計與研究基于單片機的嵌入式Web服務器的研究MOTOROLA單片機MC68HC(8)05PV8/A內嵌EEPROM的工藝和制程方法及對良率的影響研究基于模糊控制的電阻釬焊單片機溫度控制系統(tǒng)的研制基于MCS-51系列單片機的通用控制模塊的研究基于單片機實現(xiàn)的供暖系統(tǒng)最佳啟停自校正(STR)調節(jié)器單片機控制的二級倒立擺系統(tǒng)的研究基于增強型51系列單片機的TCP/IP協(xié)議棧的實現(xiàn)基于單片機的蓄電池自動監(jiān)測系統(tǒng)基于32位嵌入式單片機系統(tǒng)的圖像采集與處理技術的研究基于單片機的作物營養(yǎng)診斷專家系統(tǒng)的研究基于單片機的交流伺服電機運動控制系統(tǒng)研究與開發(fā)基于單片機的泵管內壁硬度測試儀的研制基于單片機的自動找平控制系統(tǒng)研究基于C8051F040單片機的嵌入式系統(tǒng)開發(fā)基于單片機的液壓動力系統(tǒng)狀態(tài)監(jiān)測儀開發(fā)模糊Smith智能控制方法的研究及其單片機實現(xiàn)一種基于單片機的軸快流CO〈,2〉激光器的手持控制面板的研制基于雙單片機沖床數(shù)控系統(tǒng)的研究基于CYGNAL單片機的在線間歇式濁度儀的研制基于單片機的噴油泵試驗臺控制器的研制基于單片機的軟起動器的研究和設計基于單片機控制的高速快走絲電火花線切割機床短循環(huán)走絲方式研究基于單片機的機電產(chǎn)品控制系統(tǒng)開發(fā)基于PIC單片機的智能手機充電器基于單片機的實時內核設計及其應用研究基于單片機的遠程抄表系統(tǒng)的設計與研究基于單片機的煙氣二氧化硫濃度檢測儀的研制基于微型光譜儀的單片機系統(tǒng)單片機系統(tǒng)軟件構件開發(fā)的技術研究基于單片機的液體點滴速度自動檢測儀的研制基于單片機系統(tǒng)的多功能溫度測量儀的研制基于PIC單片機的電能采集終端的設計和應用基于單片機的光纖光柵解調儀的研制氣壓式線性摩擦焊機單片機控制系統(tǒng)的研制基于單片機的數(shù)字磁通門傳感器基于單片機的旋轉變壓器-數(shù)字轉換器的研究基于單片機的光纖Bragg光柵解調系統(tǒng)的研究單片機控制的便攜式多功能乳腺治療儀的研制基于C8051F020單片機的多生理信號檢測儀基于單片機的電機運動控制系統(tǒng)設計Pico專用單片機核的可測性設計研究基于MCS-51單片機的熱量計基于雙單片機的智能遙測微型氣象站MCS-51單片機構建機器人的實踐研究基于單片機的輪軌力檢測基于單片機的GPS定位儀的研究與實現(xiàn)基于單片機的電液伺服控制系統(tǒng)用于單片機系統(tǒng)的MMC卡文件系統(tǒng)研制基于單片機的時控和計數(shù)系統(tǒng)性能優(yōu)化的研究基于單片機和CPLD的粗光柵位移測量系統(tǒng)研究單片機控制的后備式方波UPS提升高職學生單片機應用能力的探究基于單片機控制的自動低頻減載裝置研究基于單片機控制的水下焊接電源的研究基于單片機的多通道數(shù)據(jù)采集系統(tǒng)基于uPSD3234單片機的氚表面污染測量儀的研制基于單片機的紅外測油儀的研究96系列單片機仿真器研究與設計基于單片機的單晶金剛石刀具刃磨設備的數(shù)控改造基于單片機的溫度智能控制系統(tǒng)的設計與實現(xiàn)基于MSP430單片機的電梯門機控制器的研制基于單片機的氣體測漏儀的研究基于三菱M16C/6N系列單片機的CAN/USB協(xié)議轉換器基于單片機和DSP的變壓器油色譜在線監(jiān)測技術研究基于單片機的膛壁溫度報警系統(tǒng)設計基于AVR單片機的低壓無功補償控制器的設計基于單片機船舶電力推進電機監(jiān)測系統(tǒng)基于單片機網(wǎng)絡的振動信號的采集系統(tǒng)基于單片機的大容量數(shù)據(jù)存儲技術的應用研究基于單片機的疊圖機研究與教學方法實踐基于單片機嵌入式Web服務器技術的研究及實現(xiàn)基于AT89S52單片機的通用數(shù)據(jù)采集系統(tǒng)基于單片機的多道脈沖幅度分析儀研究機器人旋轉電弧傳感角焊縫跟蹤單片機控制系統(tǒng)基于單片機的控制系統(tǒng)在PLC虛擬教學實驗中的應用研究基于單片機系統(tǒng)的網(wǎng)絡通信研究與應用基于PIC16F877單片機的莫爾斯碼自動譯碼系統(tǒng)設計與研究基于單片機的模糊控制器在工業(yè)電阻爐上的應用研究基于雙單片機沖床數(shù)控系統(tǒng)的研究與開發(fā)基于Cygnal單片機的μC/OS-Ⅱ的研究基于單片機的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論