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

正文內(nèi)容

基于圖像分割的圖像摳取算法的研究與實現(xiàn)畢業(yè)論文-資料下載頁

2025-06-23 15:49本頁面
  

【正文】 分量,即為各個高斯混合模型分量計算初始值,:首先,需要把前景區(qū)域與背景區(qū)域中的像素分別劃分到K個不同的聚類中.然后,再由聚類中像素值來初始化計算各個高斯模型中的參數(shù).為了得到良好的分割效果,需要創(chuàng)建相對穩(wěn)定(低變化率)的高斯組件.因此,需要找到良好的聚類集合,這兒主要是利用顏色矩陣的特征向量去實現(xiàn)好的聚類劃分. 自學(xué)習(xí)的高斯組件在迭代進(jìn)行學(xué)習(xí)的過程中,以前的劃分將會被改變。這種變化就造成了一些像素的劃分信息從PartitionForeground變?yōu)镻artitionBackground,當(dāng)然也會有一些像素出現(xiàn)相反,就需要將前景摳圖區(qū)域中的每個像素重新分配到該像素“更適合”的高斯組件中去。這個過程可以通過簡單地將每個像素的像素值代入高斯方程進(jìn)四川大學(xué)本科畢業(yè)論文 基于圖像分割的簡單圖像摳取算法的研究與實現(xiàn)21行估算。相似地,把背景摳圖區(qū)域中的每個像素重新分配到該像素“更適合”的高斯組件中去。而具體的高斯學(xué)習(xí)算法被分為兩步 [13,2]:(1)將前景劃分中的像素劃分到它最可能屬于的前景高斯分量中,可能性的大小由高斯方分量中.由表示一個像素是屬于前景劃分區(qū)域還是屬于背景劃分區(qū)域的摳圖信息的值和高斯混合模型的組件索引值(1,?,K)的值對唯一地標(biāo)示了一個像素是屬于所創(chuàng)建的2K個高斯混合模型組件中的哪一個.也可以簡單的用組件的索引來表示1,?,2K個高斯混合模型的組件.(2)當(dāng)像素被聚集完成,就丟掉當(dāng)前的高斯分量值并且重新建立新的劃分以及高斯分量值. 最小分割GrabCut算法中通過maxflowmincut算法,即最大流最小切算法來實現(xiàn)最小分割.在最大流最小割算法所處理的圖中存在兩種連接分別為Nlinks和Tlinks。Nlink描述了在相鄰像素間放置一個分段邊界的處罰值,這個處罰值就是一個對放置這個分段邊界的衡量值,這個值在梯度低的位置較高,過程中是不變的,和背景的可能性,這個值會隨著算法的進(jìn)行或迭代而發(fā)生改變 [13,3].Nlink的值可通過下式進(jìn)行計算: ??????2,exp(413),mndistzNmndist???? ?其中 表示像素m,n間的距離,而 表示的時像素m,n顏色的差值, ,dist ,nitz mz分別表示m,n處的顏色, 對于每一個像素都有兩個Tlink值一個表示其是背景像素的可能性,另一個則表示其是前:像素類型 前景區(qū)域 0 m_L背景區(qū)域 m_L 0未知區(qū)域 DFore(m) DBack(m)表41DFore和DBack分別表示了像素屬于前景和背景區(qū)域的可能性,它們的值可通過以下方式得到: (414)????logDmp??四川大學(xué)本科畢業(yè)論文 基于圖像分割的簡單圖像摳取算法的研究與實現(xiàn)22 算法流程介紹GrabCut 算法主要就是在以上三個步驟進(jìn)行反復(fù)迭代,從而便算法達(dá)到收斂,進(jìn)而得到分割結(jié)果。而在具體的實現(xiàn)過程中,往往是選擇在高斯組件的自學(xué)習(xí)過程與最小分割算法間反復(fù)循環(huán) 5 次,就能得到較好的處理結(jié)果 ,因此在此次算法的實現(xiàn)中也只是選擇了對學(xué)習(xí)與分割過程反復(fù)進(jìn)行 5 次,其具體過程如下示:圖 41在圖 41 中,基本對 GrabCut 算法的整個流程進(jìn)行了很明確的說明,首先由用戶打開一待處理的圖片,再根據(jù)打開的圖片進(jìn)行相應(yīng)的數(shù)據(jù)對象初始化。之后,系統(tǒng)將提示并等待用戶選取矩形,若用戶未完成了矩形的選取則繼續(xù)等直到系統(tǒng)退出。若用戶正確的選擇了目標(biāo)矩形則根據(jù)其選擇的矩形,對部分?jǐn)?shù)據(jù)對象進(jìn)行二次初始化,進(jìn)而建立高斯混合模型。以為后面高斯混合組件的學(xué)習(xí)過程以及圖割與更新的迭代執(zhí)行準(zhǔn)備。最后當(dāng)是否圖割并更新循環(huán) 5 次?建立高斯混合組件高斯混合組件學(xué)習(xí)是二次初始化否選取矩形?打開圖片初始化數(shù)據(jù)對象圖割并更新是二次初始化建立高斯混合組件高斯混合組件學(xué)習(xí)選取矩形?打開圖片初始化數(shù)據(jù)對象四川大學(xué)本科畢業(yè)論文 基于圖像分割的簡單圖像摳取算法的研究與實現(xiàn)23循環(huán)執(zhí)行結(jié)束后,整個算法的執(zhí)行過程就結(jié)束了,這時處理的結(jié)果也就得到了。5 GrabCut 算法及輔助功能的實現(xiàn) GrabCut 算法的實現(xiàn)GrabCut 算法在用戶選取矩形框后,開始初始化各個相關(guān)的數(shù)據(jù)結(jié)構(gòu),然后建立混合高斯模型,再利用自學(xué)習(xí)的高斯組件,對分割進(jìn)行優(yōu)化,以獲得良好的目標(biāo)摳取結(jié)果。下面就數(shù)據(jù)結(jié)構(gòu)初始化,高斯混合模型建立及學(xué)習(xí)過程的實現(xiàn)進(jìn)行展示。 數(shù)據(jù)結(jié)構(gòu)介紹及初始化1) 算法的數(shù)據(jù)結(jié)構(gòu)構(gòu)造在 GrabCut 算法的處理過程中,為了使算法實現(xiàn)起來更為方便,自定義了很多枚舉,結(jié)構(gòu)和類來對數(shù)據(jù)進(jìn)行結(jié)構(gòu)化和規(guī)范化。下面就對其中一些主要的類或結(jié)構(gòu)進(jìn)行說明。a) class CRGB此類是用來描述像素的顏色信息,雖然在GDI和GDI+中都存在描述顏色的類或結(jié)構(gòu)如Class Color,Struct RGB但是由于算法只使用r,g,b三個顏色分量且還有一些基于其上的運算操作,所以采用了自定義的顏色信息類。CRGB類的具體定義如下所示:class CRGB{public:CRGB() : r(0), g(0), b(0) {}CRGB(Real _r, Real _g, Real _b) : r(_r), g(_g), b(_b) {}Real r, g, b。 //R,G,B三個顏色分量bool operator == (const CRGB amp。c) //對==運算符進(jìn)行重載{if( == r amp。amp。 == g amp。amp。 == b)四川大學(xué)本科畢業(yè)論文 基于圖像分割的簡單圖像摳取算法的研究與實現(xiàn)24return true。elsereturn false。}bool operator != (const CRGB amp。c) //對!= 運算符進(jìn)行重載{if( == r amp。amp。 == g amp。amp。 == b)return false。elsereturn true。}}。b) Struct Gaussian此結(jié)構(gòu)對高斯混合模型組件進(jìn)行了描述,用于對高斯混合模型建立后的組件信息進(jìn)行規(guī)范化存儲?;唧w定義如下:struct Gaussian{CRGB mu。 //顏色均值Real covariance[3][3]。 //協(xié)方差矩陣Real determinant。 //協(xié)方差矩陣的行列式的值Real inverse[3][3]。 //協(xié)方差矩陣和逆矩陣Real pi。 //組件的權(quán)重Real eigenvalues[3]。 //協(xié)方差矩陣的特征值Real eigenvectors[3][3]。 //協(xié)方差矩陣的特征向量}。c) template Class T class ImgRect此模板類對描述了一個與圖像長寬相同的矩陣容器,些矩陣容器可用來存儲像素的各種信息,如顏色,分割,標(biāo)簽等對應(yīng)各個像素的信息。其具體定義如下所示:template class Tclass ImgRect{public:ImgRect(void)。ImgRect(unsigned int w,unsigned int h)。四川大學(xué)本科畢業(yè)論文 基于圖像分割的簡單圖像摳取算法的研究與實現(xiàn)25T * ptr(){return m_img。}Tamp。 operator() (int x, int y) 。const Tamp。 operator() (int x, int y) const。void fillRect(int x1, int y1, int x2, int y2, const Tamp。 t)。void fill(const Tamp。 t)。unsigned int width() const { return m_width。 }unsigned int height() const { return m_height。 }public:~ImgRect(void)。private:void clampX(intamp。 x) const。void clampY(intamp。 y) const。private:unsigned int m_width,m_height。T* m_img。}。 類部分成員函數(shù)說明:fill:對整個矩形容器賦予指定類型的值t;fillRect:對矩形容器中的指定矩形區(qū)域賦予指定類型的值t; clampX,ClampY:分別的x,y坐標(biāo)進(jìn)行校正,防止出現(xiàn)溢出訪問;2) 數(shù)據(jù)結(jié)構(gòu)初始化在用戶打開文件的過程中程序就會對將會用到 一些數(shù)據(jù)結(jié)構(gòu)進(jìn)行初始化,在用戶選擇好打開的文件后,將會首先將圖像數(shù)據(jù)讀取出來放在一個先定義好的 ImgRectCRGB結(jié)構(gòu)中,由于程序需要支持多種格式的文件格式因此程序中選用了 GDI+中的 CImage 類來實現(xiàn)圖像的打開,數(shù)據(jù)讀取。主要代碼如下示:CImage img。char r,g,b。HRESULT hResult = (lpszPathName)。 //加載圖像,lpszPathName為文件路徑if(FAILED(hResult)){AfxMessageBox(Load File Failed!)。return FALSE。}四川大學(xué)本科畢業(yè)論文 基于圖像分割的簡單圖像摳取算法的研究與實現(xiàn)26unsigned int width,height。width = m_width = ()。height = m_height = ()。m_image = new ImgRectCRGB(width,height)。m_imagefill(CRGB(255,255,255))。int nPitch = ()。BYTE* pBits = (BYTE*)()。BYTE* pTemp。for(unsigned int i = 0。i height。i++){for(unsigned int j = 0。j width。j++){pTemp = pBits + j*3。b = (char)(*pTemp)。g = (char)(*(pTemp + 1))。r = (char)(*(pTemp + 2))。Real R, G, B。R = (Real)((unsigned char)r)/255。G = (Real)((unsigned char)g)/255。B = (Real)((unsigned char)b)/255。(*m_image)(j,height1i) = CRGB(R,G,B)。}pBits += nPitch。}注意:由于圖像的顏色數(shù)據(jù)在存儲時是按 B,G,R 的順序進(jìn)行的,因此的提取時應(yīng)注意提取順序。在圖像數(shù)據(jù)獲得完成后,就可以調(diào)用 initial()函數(shù)進(jìn)行初始化,這個初始化過程主要就是對像素的各種信息進(jìn)行初始化,以及對后面將會用到的參數(shù)進(jìn)行計算與賦值。initial()函數(shù)的主要代碼如下示:void CMyWorkDoc::initial(){m_vLabel = 1。m_area = new ImgRectAreaValue(m_width,m_height)。m_areafill(AreaUnknown)。四川大學(xué)本科畢業(yè)論文 基于圖像分割的簡單圖像摳取算法的研究與實現(xiàn)27m_GMMponent = new ImgRectunsigned int(m_width,m_height)。m_label = new ImgRectunsigned int(m_width,m_height)。m_labelfill(0)。m_hardPartition = new ImgRectPartitionValue(m_width,m_height)。m_hardPartitionfill(PartitionBackground)。m_AlphaImage = new ImgRectReal(m_width, m_height)。m_AlphaImagefill(0)。m_foregroundGMM = new GMM(5)。m_backgroundGMM = new GMM(5)。m_lambda = 50。puteL()。puteBeta()。m_NLinks = new ImgRectNLinks( m_width, m_height)。puteNLinks()。m_graph = 0。m_nodes = new ImgRectGraph::node_id( m_width, m_height )。}在以上函數(shù)中的部分初始化對象說明:m_vLabel:表示最
點擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1