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

正文內(nèi)容

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

2025-08-15 14:27 本頁(yè)面
 

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