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

正文內(nèi)容

弦箭算法的c語言實(shí)現(xiàn)本科畢業(yè)論文-文庫吧資料

2025-07-04 18:17本頁面
  

【正文】 圖象數(shù)據(jù)寬度int x,int y 圖象中所要要刪除曲線的一個端點(diǎn)坐標(biāo) 函數(shù)中定義(x1,y1)來對曲線上個點(diǎn)進(jìn)行刪除處理,算法流程圖如圖36所示。曲線中所有的點(diǎn)在pUnchImage中標(biāo)記了對應(yīng)曲線序號,圖像數(shù)據(jù)pUnchEdge中標(biāo)記了曲線端點(diǎn),曲線中其余點(diǎn)均為0,曲線端點(diǎn)在pUnchEdge中以值不為0。算法通過函數(shù)Del_cur和函數(shù)Serch_cur來實(shí)現(xiàn),算法流程圖如下圖35所示。再遞歸調(diào)用dir_long函數(shù)從這下一個點(diǎn)開始判斷,直至該條曲線所有點(diǎn)判斷完畢后,算法結(jié)束。如果dir與本次判斷一致,則變量dir_long加一。圖33 割斷分叉點(diǎn) 圖33Del_l函數(shù)流程圖 函數(shù)Del_line()實(shí)現(xiàn)的功能是刪除圖像中長度小于某一閾值p的直線,其輸入?yún)?shù)說明如下: unsigned char *pUnchEdge 經(jīng)過邊緣檢測后的圖象數(shù)據(jù) int nWidth 圖象數(shù)據(jù)寬度int nHeight 圖像數(shù)據(jù)高度 int x,int y 圖象邊緣曲線中的一個點(diǎn)在函數(shù)中定義變量xy1來依次對各點(diǎn)進(jìn)行判斷,其值初始化圖34 Del_line函數(shù)流程圖為x、y;變量p為長度閾值;變量dir為方向向量,記錄曲線中點(diǎn)的走向,初始化為0;變量dir_long為直線長度,初始化為0;通過new函數(shù)開辟一段大小為nWidth*nHeight的數(shù)據(jù)單元unsigned char * pUnchEdge1,其數(shù)據(jù)初始化為圖像數(shù)據(jù),通過其來控制我完成對曲線的搜索計(jì)算。函數(shù)Del_l()實(shí)現(xiàn)的功能是刪除從點(diǎn)(x,y)開始的dir_long個值為255的點(diǎn),其輸入?yún)?shù)說明如下: unsigned char *pUnchEdge 經(jīng)過邊緣檢測后的圖象數(shù)據(jù); int nWidth 圖象數(shù)據(jù)寬度; int x,int y 圖象數(shù)據(jù)中的點(diǎn)(x,y);int dir_long 要刪除的點(diǎn)的個數(shù); 在函數(shù)中定義了變量xy1來對各點(diǎn)進(jìn)行判斷,其初始化為x、y,通過變量i控制循環(huán)。該段程序流程如圖33所示。通過分析發(fā)現(xiàn),如果將該點(diǎn)四鄰域中不為0的一個點(diǎn)置為0,最多只會將曲線斷成兩條曲線,如圖32(c)所示。若count值大于2,則表示曲線在該點(diǎn)處分叉, count值小于1(即為0),表示該點(diǎn)為孤立點(diǎn),count值為1表示該點(diǎn)為其所在曲線的一個端點(diǎn),count值為2表示該點(diǎn)為曲線的一個中間點(diǎn)。(a)原圖 (b)canny算子計(jì)算后的圖像圖31二、割斷圖像中分叉的邊緣點(diǎn)經(jīng)過canny算子的圖像曲線,會有很多分叉的曲線,我們通過將曲線交叉點(diǎn)置為0來將其斷開。這些參數(shù)會影響分割后邊界點(diǎn)數(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算子計(jì)算后的分割圖canny分割算子,計(jì)算的結(jié)果保存在pUnchEdge中,邏輯1(255)表示該點(diǎn)為邊界點(diǎn),邏輯0(0)表示該點(diǎn)為非邊界點(diǎn)。這里對類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)色板表項(xiàng)數(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 弦箭累加的編程實(shí)現(xiàn)一、類Cdib 及canny算子程序ImageProcessing是在VC++環(huán)境下編寫的對BMP圖像進(jìn)行處理的MFC AppWizard程序,可以對BMP圖像進(jìn)行變換、特征提取、圖像分割等多種處理。本文利用一個現(xiàn)有的圖像處理程序ImageProcessing,在此基礎(chǔ)上,嵌入弦箭算法。通過C++編程,弦箭算法可以方便地嵌入實(shí)際應(yīng)用,其代碼也可應(yīng)用于諸多領(lǐng)域。2 本文編程環(huán)境本文編程所使用的環(huán)境是Microsoft Visual C++ 。也就是說,從文件中最先讀到的是圖像最下面一行的左邊第一個像素,然后是第二個像素,接下來是倒數(shù)第二行左邊第一個像素,左邊第二個像素。下面有兩點(diǎn)需要注意:(1)每一行的字節(jié)數(shù)必須是4的整數(shù)倍,如果不是,則需補(bǔ)齊。對于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í)際的圖像數(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í)際的位圖數(shù)據(jù)占用的字節(jié)數(shù)LONG biXPelsPerMeter。 //指定顏色位數(shù),1為二值,4為16色//8為256色,1232位真彩色DWORD biCompression。 //圖像的高度,單位是像素WORD biPlanes。 //該結(jié)構(gòu)的長度,為40LONG biWidth。 //從文件頭到實(shí)際位圖數(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ù)。第三章 弦箭算法的編程實(shí)現(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弧長的點(diǎn)t3,“繪制”箭 ,箭長3τΔS。第2跨步:如果2ΔSL,且|At2||At1|,則跨到2ΔS弧長的點(diǎn)t2,“繪制”箭a2,箭長2τΔS?!袄L制”
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1