Procrustes Analysis普氏分析法

2022-07-09 22:45:20 字數 2537 閱讀 1266

由於影象中目標物體的形狀和位置存在較大偏差,因此所得到的資料並不具有仿射不變性,需要對其進行歸一化處理。這裡採用procrustes分析方法對樣本集中的所有形狀集合進行歸一化。形狀和位置的載體還是樣本點的空間座標。

普氏分析法是一種用來分析形狀分布的方法。數學上來講,就是不斷迭代,尋找標準形狀(canonical shape),並利用最小二乘法尋找每個樣本形狀到這個標準形狀的仿射變化方式。(可參照維基百科的gpa演算法)

本書中,兩個形狀的歸一化過程(乙個形狀為canonical shape,另乙個為樣本形狀):

(1)    求每個樣本點i(i=1,2..,n)在n幅影象中的均值

(2)    對所有形狀的大小進行歸一化,即將每個樣本點減去其對應均值

(3)    根據去中心化資料,計算每幅影象中形狀的重心,對於第i幅影象,其重心為:

(4)    根據重心和角度,將標準和樣本形狀對齊在一起,使得兩個形狀的普氏距離最小,下式為普氏距離定義:

這個第(4)步的具體做法,不斷迭代以下過程:

(a)通過計算每幅影象中所有歸一化樣本點的平均值得到每個影象的標準形狀canonical shape。

(b)利用最小二乘法求每個影象中樣本形狀到標準形狀的旋轉角度。根據普氏距離的定義,也就是求:

其中的a和b表示仿射變換裡旋轉變化的引數:

對上式求偏導數,可以得到所求的a和b:

(c)根據旋轉引數,對樣本形狀做旋轉變化,得到和標準形狀對齊的新的形狀

(d)重複以上步驟,直到達到指定迴圈次數或者前後兩次迭代之間canonical shape的絕對範數滿足一定閾值

procrustesanalysis的作用可以看作是一種對原始資料的預處理,目的是為了獲取更好的區域性變化模型作為後續模型學習的基礎。如下圖所示,每乙個人臉特徵點可以用一種單獨的顏色表示;經過歸一化變化,人臉的結構越來越明顯,即臉部特徵簇的位置越來越接近他們的平均位置;經過一系列迭代,尺度和旋轉的歸一化操作,這些特徵簇變得更加緊湊,它們的分布越來越能表達人臉表情的變化。【剔除剛性部分、保留柔性部分】

上圖為不同大小、不同長寬比的矩形,經過歸一化過程後,各個樣本點分布服從一定概率分布趨勢。

具體**實現:

函式:mat shape_model::procrustes(const mat &x,const int itol,constfloat ftol)

矩陣x:2n*n維矩陣,即有n副影象,每幅影象有n個特徵點(2n是因為x和y座標)

itol:迭代次數

ftol:求絕對範數的閾值

返回值:矩陣p,存放對齊後的形狀座標

1 mat shape_model::procrustes(const mat &x,const

int itol,const

float

ftol)218

/*分別求影象集,2維空間座標x和y的平均值

*/19 mx /=n;

20 my /=n;

21/*

對x,y座標去中心化

*/22

for(int j = 0; j < n; j++)

2327}28

//optimise scale and rotation

29mat c_old;

30for(int iter = 0; iter < itol; iter++)

3141 c_old =c.clone();

42for(int i = 0; i < n; i++)

4353}54

}55return

p;56 }

分析 影像分析

1.效果圖 2.發布服務 3.引入模組 查詢影像資料esri tasks imageserviceidentifytask 引數 esri tasks imageserviceidentifyparameters esri tasks imageserviceidentifyresult esri ...

後端分析 前端分析 邊緣分析

後端分析 前端分析 邊緣分析 那麼什麼是邊緣分析呢?其實邊緣分析介於後端分析和前端分析之間。後端分析需要將原始資料上傳到後台伺服器,前端分析中原始資料在採集的地方就可以被分析,而邊緣分析要求先將乙個小範圍的待分析資料傳到乙個區域性中心 可以是乙個小型嵌入式伺服器,但是規模比後端分析中的伺服器小得多 ...

需求分析,分析需求

1.何為需求 我們吧需求兩個漢字拆分開來看 需 需要 求 要求 即需要的要求,表示想要某種東西的堅定願望 這裡插入乙個小故事,某個小男孩在上小學二年級的時候,不經意間接觸到了一種叫psp的神奇玩具,就下定決心回家找家長要,一開始小孩的父親不贊同給小孩買那個東西,後來在小孩的再三請求,甚至為此寫了份保...