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

正文內(nèi)容

弦箭算法的c語言實現(xiàn)(標(biāo)準(zhǔn)本科畢業(yè)論文)-文庫吧資料

2025-06-13 16:17本頁面
  

【正文】 度 int x, int y 圖象邊緣曲線中的一個點 在函數(shù)中定義變量 x y1來 依次 對各點進(jìn)行 判斷 ,其值初始化 圖 34 Del_line函數(shù)流程圖 開 始( x 1 , y 1 ) 初 始 化 為 ( x , y )判 斷 ( x 1 , y 1 ) 下 一 個 點 的 方 向 d i rd i r 與 上 一 點 的方 向 相 同 ?d i r _ l o n g + +( x 1 , y 1 ) 移 到 下 一 個 點d i r _ l o n g 閾 值p ?調(diào) 用 D e l _ l 函 數(shù) 刪 除 從 ( x 1 , y 1 )開 始 的 d i r _ l o n g 個 點將 ( x 1 , y 1 ) 作 為 輸 入 參數(shù) 遞 歸 調(diào) 用 D i r _ l o n g 對 刪除 后 的 曲 線 進(jìn) 行 判 斷是是( x 1 , y 1 ) 為 曲線 最 后 一 個 點 ?d i r _ l o n g 閾 值p ?調(diào) 用 D e l _ l 函 數(shù) 刪 除 從 ( x 1 , y 1 )開 始 的 d i r _ l o n g 個 點是是結(jié) 束為 x、 y;變量 p為長度閾值;變量 dir為方向向量 , 記錄曲線中點的走向 ,初始化為 0;變量 dir_long 為直線長度 ,初始化為 0;通過 new 函數(shù)開辟一段大小為 nWidth*nHeight 的數(shù)據(jù)單元 unsigned char * pUnchEdge1,其 數(shù)據(jù) 初始化 為圖像數(shù)據(jù),通過其 來控制我完成 對 曲線的搜索計算。 函數(shù) Del_l()實現(xiàn)的功能是 刪除從點( x, y)開始的 dir_long個值為 255 的點 ,其輸入?yún)?shù)說明如下: a b c d 0 b c d a b 0 d ( a) a 點四鄰域有 b、c、 d 三個點 ,曲線在 a點處 分叉 ( b) 若 將 a 點置為 0后, b、 c、 d 點分別位于三條曲線 ( c) 若 將 a 點鄰域中 c 點置為 0 后,曲線最多被分割成為兩條: c 點引出的曲線和 a、 b、 d 點所在曲線 開 始點 ( x , y ) 為 圖像 最 后 一 個 點 ?點 ( x , y ) 值為 0 ?判 斷 其 四 鄰 域 中 非 0 點 的 個 數(shù) c o u n tc o u n t 2 ?刪 除 該 點 四 鄰 域 中的 一 個 點結(jié) 束否是是( x , y ) 移 到 下 一 個 點( x , y ) 初 始 化 為 圖 像中 第 一 個 點是否否 unsigned char *pUnchEdge 經(jīng)過邊緣檢測后的圖象數(shù)據(jù) ; int nWidth 圖象數(shù)據(jù)寬度 ; int x, int y 圖象數(shù)據(jù)中的點( x, y) ; int dir_long 要刪除的點的個數(shù) ; 在函數(shù)中定義了變量 x y1來對各點進(jìn)行判斷,其初始化為 x、y,通過變量 i 控制循環(huán)。 該段程序流程如圖 33 所示。 通 過分析發(fā)現(xiàn),如果 將該點四鄰域中不為 0的一個點置為 0,最多只會將曲線斷成兩條曲線,如圖 32( c)所示。 若 count 值 大于 2,則表示 曲線在 該點處分叉, count 值 小于 1(即為 0) ,表示該點為孤立點 , count 值為 1 表示該點為 其 所在曲線的一個端點,count 值為 2表示該點為曲線的一個中間點。 ( a)原圖 ( b) canny算子計算后的圖像 圖 31 二、割斷圖像中分叉的邊緣點 經(jīng)過 canny 算子的圖像曲線,會有很多分叉的曲線,我們通過將曲線交叉點置為 0 來將其斷開。這些參數(shù)會影響分割后邊界點數(shù)目的多少 ,程序中這些參數(shù)取值為 , , 。 canny函數(shù) 輸入?yún)?shù) 說明如下 : unsigned char *pUnchImage 圖象數(shù)據(jù) int nWidth 圖象數(shù)據(jù)寬度 int nHeight 圖象數(shù)據(jù)高度 double sigma 高斯濾波的標(biāo)準(zhǔn)方差 double dRatioLow 低閾值和高閾值之間的比例 double dRatioHigh 高閾值占圖象象素總數(shù)的比例 unsigned char *pUnchEdge canny 算子計算后的分割圖 canny分割算子,計算的結(jié)果保存在 pUnchEdge中,邏輯 1(255)表示該點為邊界點,邏輯 0(0)表示該點為非邊界點。 這里對 類 Cdib中的 13 種屬性 進(jìn)行 簡要 說明 如下 : LPVOID m_lpvColorTable: 調(diào)色板指針 ; HBITMAP m_hBitmap: BITMAP結(jié)構(gòu)指針 ; LPBYTE m_lpImage: DIB 位圖數(shù)據(jù)塊地址 ; LPBITMAPINFOHEADER m_lpBMIH: DIB信息頭指針 ; HGLOBAL m_hGlobal: 全局的句柄,用于內(nèi)存映射文件中 ; Alloc m_nBmihAlloc: 表示信息頭內(nèi)存分配的狀況 ; Alloc m_nImageAlloc: 表示位圖數(shù)據(jù)分配的狀況 ; DWORD m_dwSizeImage: DIB 位圖中的字節(jié)數(shù)(信息頭和調(diào)色板數(shù)據(jù)除外) ; int m_nColorTableEntries: 調(diào)色板表項數(shù) ; HANDLE m_hFile: 文件句柄 ; HANDLE m_hMap: 內(nèi)存映射文件句柄 ; LPVOID m_lpvFile: 文件句柄 ; HPALETTE m_hPalette: 調(diào)色板句柄 ; 對于 Cdib類的構(gòu)造函數(shù)、文件讀寫成員函 數(shù)以及大多 數(shù) Get成員函數(shù) 等意義都是暗含的,程序中也都有詳細(xì)的注解,在此不再詳細(xì)討論。 3 弦箭 累加 的編程實現(xiàn) 一、 類 Cdib 及 canny 算子 程序 ImageProcessing 是 在 VC++環(huán)境下 編寫的對 BMP圖像進(jìn)行處理的 MFC AppWizard 程序,可以對 BMP圖像進(jìn)行變換、特征提取、圖像分割等多種處理。 本文 利用 一個 現(xiàn)有 的圖像處理程序 ImageProcessing,在此基礎(chǔ)上,嵌入弦箭算法 。通過C++編程,弦箭算法可以方便地嵌入實際應(yīng)用,其 代碼也可應(yīng)用于諸多領(lǐng)域。 2 本文 編程環(huán)境 本文 編程所使用的環(huán)境是 Microsoft Visual C++ 。也就是說,從文件中最先讀到的是圖像最下面一行的左邊第一個像素,然后是第二個像素,接下來是倒數(shù)第二行左邊第一個像素,左邊第二個像素。 下面有兩點需要注意: ( 1)每一行的字節(jié)數(shù)必須是 4的整數(shù)倍,如果不是,則需補齊。 對于 16色位圖,用 4位就可以表示該像素的顏色,所以一個字節(jié)可以表示 2 個像素。下面就 2 色、 16 色、 256 色和真彩色位圖分別介紹。數(shù)組中每個元素類型是一個 RGBQUAD 結(jié)構(gòu),占 4 個字節(jié),其定義如下: typedef struct tagRGBQUAD{ BYTE rgbBlue; //該顏色的藍(lán)色分量 BYTE rgbGreen//該顏色的綠色分量 BYTE rgbRed; //該顏色的紅色分量 BYTE rgbReserved; //保留值 }RGBQUAD; 第四部分就是實際的圖像數(shù)據(jù)。真彩色圖像是不需要調(diào)色板的, BITMAPINFOHEADER后直接是位圖數(shù)據(jù)。由于 RLE4和 RLE8的壓縮格式用的不多,一般 biCompression 的有效值為 BI_RGB,幾步壓縮的情況。 //圖像中重要的顏色數(shù),若該值 //為 0 則所有顏色都是重要的 }BITMAPINFOHEADER; 這個結(jié)構(gòu)的長度是固定的,為 40 個字節(jié)( LONG為 32為二進(jìn)制整數(shù))。 //目標(biāo)設(shè)備垂直分辨率 DWORD biClrUsed。 //實際的位圖數(shù)據(jù)占用的字節(jié)數(shù) LONG biXPelsPerMeter。 //指定顏色位數(shù), 1為二值, 4為 16色//8 為 256 色, 1 2 32 位真彩色 DWORD biCompression。 //圖像的高度,單位是像素 WORD biPlanes。 //該結(jié)構(gòu)的長度,為 40 LONG biWidth。 //從文件頭到實際位圖數(shù)據(jù) 的 偏移字節(jié)數(shù) }BITMAPFILEHEADER; 這個結(jié)構(gòu)的長度是固定的,為 14 個字節(jié)( WORD為無符號 16位二進(jìn)制整數(shù), DWORD為無符號 32位二進(jìn)制整數(shù))。 //保留字 WORD bfReserved2。//文件類型,必須是 0x424D,即字符串“ BM” DWORD bfSize。 BMP圖像的數(shù)據(jù)由四部分組成:位圖文件頭、位圖信息頭、調(diào)色板、位圖數(shù)據(jù)。 第三章 弦箭算法的 編程 實現(xiàn) 1 BMP 圖像文件格式 數(shù)字圖像有多種存儲格式,本文編程主要針對復(fù)雜背景下的二值灰度圖像,對于其他格式的圖像文件,可以通過多種工具很方便的 轉(zhuǎn)化為灰度圖像 , 下面首先介紹 BMP 圖像文件格式。所以采 上述矩形框?qū)⑷搜?、嘴覆蓋在內(nèi)的可能性也最大,同時也可最大程度地縮小搜索空間。確定以 ( Xmax,Ymax) 為中心以寬度為 2Dmax 的正方形區(qū)域作為 人臉位置的大概區(qū)域 : =∪ {A(i,j,1)= α ,|iXmax|Dmax,|jYmax|Dmax}。 圖 24弦箭法特殊情況處理 三、確定人臉區(qū)域大概位置 首先,求 A( i, j, 1) 數(shù)組中的最大值所在的位置( Xmax, Ymax)。 ( 3)當(dāng)箭的角度較大,近似 90 度時;或較小,近似 0 度時,由于累加數(shù)組的分辨率,導(dǎo)致出現(xiàn)類似圖 24(b)左邊直線累加位置的間斷。從 B 向 A時方法相同。 在上述弦箭法的正反過程 中,有如下特殊情況需要處理: ( 1)當(dāng)弦與所跨曲線近似重合,相差小于某個閾值時,該箭不做累加,如圖 24 中的 a1。當(dāng)反向過程停止時,則該曲線的弦箭算法結(jié)束,進(jìn)入下一條曲線。圖 23中由于 |Atn||At(n1)|,所以不“繪制” an,結(jié)束正向過程。 第 n跨步:如果 nΔ SL,且 |Atn||At(n1)|, 則跨到弧長為 nΔ S的 tn 的位置,“繪制”箭,箭長 nτ Δ S。 第 3 跨步:如果 3Δ SL,且 |At3||At2|, 則跨到 3Δ S 弧長的點 t3,“繪制”箭 ,箭長 3τ Δ S。 第 2跨步:如果 2Δ SL,且 |At2||At1|,則跨到 2Δ S弧長的點t2,“繪制”箭 a2,箭長 2τ Δ S?!袄L制”的含義包含( a)、( b)兩個方面: ( a)在箭 a1,即在垂直中分線對應(yīng) 的 累加數(shù)組 A( i, j, k)的位置上如式( 26)做累加: )62(1)1,()1,( ??? jiAjiA ( b)累加的同時,做如下 作,其中 Dis為當(dāng)前位置到箭尾的距離: If DisA(i,j,2) then 將此距離填入距離表中: A( i, j, 2) =Dis。在 A( i, j, k)的對應(yīng)坐標(biāo)位置上“繪制”長度為 τ Δ S個像素的垂直中分線,此即箭 a1?!?跨步”的長度以弧長計算(像素點個數(shù)近似代替),箭長為每次弦所跨過的曲線弧長的 τ 倍。其中 A( i, j, 1) 中保存累加和, A( i, j, 2) 中保存最大 距離 。下文稱垂直中分線為箭,弦線中心點為箭尾,另一端為箭頭,算法簡稱弦箭法。為了運算簡單,用橢圓弦線的垂直中分線來近似代替橢圓的法線。 二、弦箭算法 邊緣圖在去除直線之后,較大的人臉的邊緣曲線就較難連續(xù),如果是較小的人臉,則邊緣線就更接近于圓。 ( 4) 去除長度過小
點擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1