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

正文內容

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

2025-06-23 15:49本頁面
  

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