freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于opencv的車輛輪廓線檢測本科生畢業(yè)論文(編輯修改稿)

2025-08-15 14:27 本頁面
 

【文章內(nèi)容簡介】 灰度 圖像 中,由于 其 本身計算公式的影響,噪聲點是肯定存在 于 其中的,并且 對圖像的質(zhì)量有很大的影響。作為一種 對 圖像 進行 平滑去噪的手段,中值濾波既可第 3 章 車輛圖像的處理 9 以去除孤點噪聲點, 也可以保持圖像的邊緣特性, 適于光線條件較好的環(huán)境。 中值濾波是 一種以 排序統(tǒng)計理論 為基礎(chǔ) 的 非線性信號處理技術(shù),它的作用是能夠 有效抑制噪聲。它是一種 和卷積相似的 鄰域運算 , ,但是 它 不是 按照 加權(quán)求和來計算的 ,而是 是用圖像中指定一點的領(lǐng)域中各邊緣點的值求平均值后來取代這個點,這樣能 讓周圍像素 值差異 較大的 點 用周圍的像素值 接近的值來替代 ,以此來 達到 消除 圖像中孤立 噪聲點 的目的 。 在處理圖像是, 傅立葉空間的高頻分量 可以依靠中值濾波的方法來消除或削弱 ,但 是對傅立葉空間的 低頻分量 來說也會造成一定的影響 。因為 傅立葉的 高頻分量 在圖像中 是 與指定 區(qū)域邊緣的灰度值 相差較大的 部分 相對應(yīng)的 ,運用中值濾波 可以 把 這些分量 去除 掉 ,平滑圖像,為接下來的實驗做好準(zhǔn)備,為得到精確的實驗結(jié)果打好基礎(chǔ) 。 本試驗中,在測試場地所采集到的車輛圖片,由于場地和環(huán)境、天氣等因素的影響,存在這許多的噪聲,所以需要對圖像進行平滑處理才能使車輛的輪廓保持清晰,同時還要除去圖像中的高頻噪聲。采用中值濾波,能實現(xiàn)這一目的。 中值濾波器 在濾除長尾疊加噪聲和疊加白噪聲時能夠取得較好的效果 。為了 使中值濾波 在更多的場合運用 ,人們對它進行了很多的算法改進 ,如 一種改進就是權(quán)重中值濾波 ,其原理是 給窗口內(nèi)的 各像素指定 不同的權(quán)值 ,以此 來 平衡抑制圖像 噪聲與 保持圖像 細(xì)節(jié) 之間所存在的 矛盾 ,這種較傳統(tǒng)的中值濾波方法而言,能更好的保持圖像的細(xì)節(jié),但也有一定不足,即 犧牲 了圖像的 噪聲抑制 ; 還有一種方法 是 以 排序 閾值 為基礎(chǔ) 的開關(guān)中值濾波算法 。這種方法的原理是 對 圖像的 噪聲點和平坦 的 區(qū) 域 進行中值濾波 ,效果顯著,能夠有效 的 濾除 噪聲 ,同時,因為對邊緣細(xì)節(jié)區(qū)域沒有做任何處理,故有良好的細(xì)節(jié)保持能力 。 為了處理更大概率的沖激噪聲,人們還改進出一種自適應(yīng)中值濾波器,這種濾波器在對圖像進行處理時的特點是,它可以根據(jù)條件需要來改變領(lǐng)域的大小。 圖像 的 二值化閾值分割 在圖像處理過程時,有著相當(dāng)多的圖像分割方法, 其中一種簡單而又高效的方法就是二值化 。 在對圖像進行 二值化 時可以由 下 面給出的 公式 來實現(xiàn) : ????( x,y) = *0 ????(??,??)??1 ????(??,??)≥?? 在這個公式 中 ,H(x,y)代表的是 中 在原圖像中 ( i, j)處像素的灰度 ; ????( i,j) 的值只能是 1 或者 0,代表的 是 這點在 二值化 過 后的像素值 ,用 0來表示上面公式中所得到的二值化圖像中的背景,用 1 來表示對象圖像。上述公式中, T 代表的 是 用于二值化處理的閉值。 只要決定好了閾值的選取,圖像的二值化過程也變得相對簡單。 圖像分割的 作用 是把 要處理的 圖像空間分割成 若干 具 有 特定 意義的區(qū)域。 在本篇文章中,要完成對 車輛輪廓 線 的 檢測 并繪制出車輛的輪廓線 , 首先要完成的 就第 3 章 車輛圖像的處理 10 是通過 輸入的 圖像 進行 分割,得到 該圖的 二值 化 圖像。 所以為了將圖像中的指定對象和背景分割,就要使用 二值 化閾值分割法 將兩者當(dāng)作用是以閾值來分割的不同成分來實現(xiàn)去除圖像背景的目的。 采用二值化閾值分割法時要 先 確定分割閾值, 根據(jù) 順序 來 讀取圖像 中 各像素點的 灰度值 ,然后和確定好的 閾值 進行 對比 , 如果該點的灰度值是 大于 或 者 等于 確定的閾值,就 用 1來代替; 否則 就 用 0代替 該點的灰度值 。 在對輸入的圖像進行了二值化分割 后 , 能夠 得到 該圖像的 黑白圖像, 為接下來的實驗做好準(zhǔn)備工作 。 車輛輪廓 提取 與輪廓跟蹤 在對輸入圖像進行了預(yù)處理后,得到了去噪平滑的二值化圖像 ,在此基礎(chǔ)上,利用輪廓提取語句對汽車輪廓進行提取,并用跟蹤語句對圖像輪廓進行跟蹤,得到完整的輪廓曲線。 輪廓提取 圖像的 輪 廓 由 外輪廓和內(nèi)輪廓 兩類組成 。 輪廓的提取需要特定的算法,這個 算法 很 簡單, 原理是把圖像 內(nèi)部 的 點 掏空 :如果 在二值化的 圖 像 中有一 個 點 是 黑 色 ,并 且 與 它 相鄰 的 8個點都是黑色時 ,那么這個 點 就 稱為是 內(nèi)部點, 需 要把這個 點刪除。 應(yīng)該指出的是 , 雖然 我們處理 時用 的是二值圖 像 ,但 是 實際上 我們輸入的卻 是 256 級 的 灰度圖, 只不過我們在處理圖像的時候只使用到 了 0 和 255 這 兩種顏色。 OpenCV 提供 的 尋找輪廓的函數(shù) 如下 : inttotals=cvFindContours(img,storage,amp。contours,sizeof(CvContour),CV_RETR_LIST,CV_CHAIN_APPROX_NONE,cvPoint(0,0))。 其中 img 是二值圖像, storage 是內(nèi)存存儲序列, contours 指向存儲的第一個輪廓, CvMemStorage *storage =cvCreateMemStorage(0)為內(nèi)存存儲序列,CvSeq *contours = 0; 指向 storage 中的序 列。 CV_RETR_LIST 表示的是圖像處理后提取的圖像 輪廓在內(nèi)存中的排列方式, 有下面四種方式 : ? CV_RETR_EXTERNAL: first = c0; ? CV_RETR_CCOMP: 輪廓的排列方式是按照 從里 依次 到外,從右 依次 到左 的順序 , 這 個表示的 是一個雙向鏈表; ? CV_RETR_LIST: first = c01001 – c01000 – h0100 – h0000 – h0100 – h0000 – c010 – c000 – h01 – h00 – c0 這也是雙向鏈表; ? CV_RETR_TREE 輪廓提取的代碼如下所示: 第 3 章 車輛圖像的處理 11 include iostream include include include using namespace std。 int main() { CvMemStorage *storage = cvCreateMemStorage(0)。 // 內(nèi)存存儲序列 IplImage *img = cvLoadImage(E:\\study_OpenCV_video\\lesson14_1\\Debug\\55 。 png, 0)。 IplImage *imgColor = cvCreateImage(cvGetSize(img), 8, 3)。 IplImage *contoursImage = cvCreateImage(cvGetSize(img), 8, 1)。 CvSeq *contours = 0, *contoursTemp = 0。 cvZero(contoursImage)。 cvThreshold(img, img, 100, 255, CV_THRESH_BINARY)。 // 二值化操作 cvCvtColor(img, imgColor, CV_GRAY2BGR)。 int totals = cvFindContours(img, storage,amp。contours, sizeof(CvContour), //img 必須是一個二值圖像 storage 用來存儲的contours 指向存儲的第 一個輪廓 CV_RETR_CCOMP, CV_CHAIN_APPROX_NONE, cvPoint(0,0))。 contoursTemp = contours。 int count = 0。 int i。 for(。contoursTemp != 0。 contoursTemp = contoursTemp h_next) /// 這樣可以訪問每一個輪廓 ====橫向輪廓 { for(i = 0。 i contoursTemp total。 i++) // 提取一個輪廓的所有坐標(biāo)點 { CvPoint *pt = (CvPoint*) cvGetSeqElem(contoursTemp, i)。 // cvGetSeqElem 是為了 得到輪廓中一個點的函數(shù) cvSetReal2D(contoursImage, pty, ptx, 255。 0)。 cvSet2D(imgColor, pty, ptx, cvScalar(0,0,255,0))。 第 3 章 車輛圖像的處理 12 } count ++。 CvSeq *InterCon = contoursTempv_next。 // 訪問每個輪廓的縱向輪廓 for(。 InterCon != 0。 InterCon = InterCon h_next) { for(i = 0。 i InterContotal。 i++ ) { CvPoint *pt = (CvPoint*)cvGetSeqElem(InterCon, i)。 cvSetReal2D(contoursImage, pty, ptx, 255。 0)。 cvSet2D(imgColor, pty, ptx, cvScalar(0, 255, 0, 0))。 } } } cvNamedWindow(contoursImage)。 cvShowImage(contoursImage, contoursImage)。 cvNamedWindow(imgColor)。 cvShowImage(imgColor,imgColor)。 cvWaitKey(0)。 cvReleaseMemStorage(amp。storage)。 // 也要釋放內(nèi)存序列空間 cvReleaseImage(amp。contoursImage)。 cvReleaseImage(amp。imgColor)。 cvDestroyWindow(contoursImage)。 cvDestroyWindow(imgColor)。 return 0。SPAN style=FONTFAMILY: Arial,Helvetica,sansserif}/SPAN 輪廓跟蹤 對一個簡單的 二值化圖像而言,對它的閉合邊界的輪廓進行跟蹤,只需一個簡單的算法 :首先 需要依照先左后右,先上后下 的順序 依次對圖像 進行 搜索, 在搜索結(jié)果中,把 第一個黑點 當(dāng)作是 左上方的邊界點,記為 點 a。 在這個邊界點 a 周圍, 右,右下,下,左下 這 四個 相 鄰 的 點 當(dāng) 中 需要 至少有一個 點也 是邊界點, 那么把這個點記作 b。 然后又 從 b 點為起點 開始 找起, 依 照 從 右,右下,下,左下,左,左上,上,右上的 搜索 順序 依次來 找 到 與 b 點 相鄰 的周圍 點中的 邊界點,如果有,那么記這個點為點 c。 若通過 b點查找到的邊界點 c 點 就是 a點, 那就 表第 3 章 車輛圖像的處理 13 明 對圖像的搜索在此時已經(jīng)經(jīng)過了一個輪回 , 結(jié)束運行的搜索 程序; 如果 c點不是 a 點,那么又 將
點擊復(fù)制文檔內(nèi)容
研究報告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1