塊匹配block match演算法常用於雙目立體匹配和幀間距離匹配上,特點是實現步驟簡單,這裡介紹四種基本的block match演算法:
1.sum of absolute differencse(sad)公式如下:
c++實現**:
2.sum of squared differences(ssd)公式如下:mat funcsadr2l(mat leftimage, mat rightimage, int windowsize, int dispmin, int dispmax, int step = 1)
sad = sad + temp;}}
}if (prevsad > sad)
}dispmap.at(i, j) = bestmatchsofar;
} }normalize(dispmap, dispmap, 0, 255, cv_minmax);
return dispmap;
}

c++實現**:
3.sum of hamming distances(shd)公式如下:mat funcssdr2l(mat leftimage, mat rightimage, int windowsize, int dispmin, int dispmax, int step = 1)}}
if (prevsdd > ssd)
}dispmap.at(i, j) = bestmatchsofar;
} }normalize(dispmap, dispmap, 0, 255, cv_minmax);
return dispmap;
}

bit()的含義是畫素轉為二進位制後含有多少個1,整個公式意思就是兩張區域性圖先異或一下,然後統計所有畫素二進位製化後1的個數,取最少的那個就行了。
c++實現**:
4.normalized cross correlation(ncc)公式如下:mat funcshdr2l(mat leftimage, mat rightimage, int windowsize, int dispmin, int dispmax,int step = 1)
}int dis = 0;
for (int m = 0; m < leftwindow.rows; m++)
}if (disprange == 0)
min = dis;
else if (min > dis)}}
dispmap.at(i, j) = position;
} }normalize(dispmap, dispmap, 0, 255, cv_minmax);
return dispmap;
}

c++實現**:
mat funcnccr2l(mat leftimage, mat rightimage, int windowsize, int dispmin, int dispmax, int step = 1)
}nccdenominator = sqrt(nccdenominatorrightwindow*nccdenominatorleftwindow);
ncc = nccnumberator / nccdenominator;
if (prevncc < ncc)
}dispmap.at(i, j) = bestmatchsofar;
} }normalize(dispmap, dispmap, 0, 255, cv_minmax);
return dispmap;
}
Sort List(四種演算法)
sort a linked list in o nlog n time using constant space complexity.演算法一 快速排序。因為鍊錶是單向,所以有很多細節要注意,比如quick sort p,r 排序的區間其實是 p next,r next 因為單向鍊錶不能回頭。de...
排序演算法(四種)
氣泡排序是非常容易理解和實現,以從小到大排序舉例 設陣列長度為n。氣泡排序從前往後遍歷和從後往前遍歷一樣的原理。目標陣列 3,5,2,6,4,9,7,12,11 從前往後 第一波 從第乙個數開始,如果第乙個數大於第二個數,就把這兩個數調換位置,否則保留之前的排列,第二次把第二個和第三個數比較,比較方...
四種洗牌演算法
官方點的話如下 fisher yates shuffle 演算法思想就是從原始陣列中隨機抽取乙個新的數字到新陣列中。演算法描述如下 1.從還沒處理的陣列 假如還剩k個 中,隨機產生乙個 0,k 之間的數字p 假設陣列從0開 始 2.從剩下的k個數中把第p個數取出 3.重複步驟2和3直到數字全部取完 ...