normalized cross correlation (ncc)
ncc(u,v) = [(wl - w)/(|wl - w|)]*[(wr - w)/(|wr - w|)] 選擇最大值
sum of squared defferences (ssd)
ssd(u,v) = sum 選擇最大值
sum of absolute defferences (sad)
sad(u,v) = sum 選擇最小值
先說說sad演算法的基本流程:
1.構造乙個小視窗,類似與卷積核。
2.用視窗覆蓋左邊的影象,選擇出視窗覆蓋區域內的所有畫素點。
3.同樣用視窗覆蓋右邊的影象並選擇出覆蓋區域的畫素點。
4.左邊覆蓋區域減去右邊覆蓋區域,並求出所有畫素點差的絕對值的和。
5.移動右邊影象的視窗,重複3,4的動作。(這裡有個搜尋範圍,超過這個範圍跳出)
6.找到這個範圍內sad值最小的視窗,即找到了左邊影象的最佳匹配的畫素塊。
opencv**示範sad:
1iplimage
*generatedisparityimage(iplimage
*greyleftimg32,
2iplimage
*greyrightimg32,
3int
windowsize,
intdsr)22}
2324
cvscalar sum;
25//
cvscalar s2;
26for(y=
0;y<
height
-n;y
++)
3233
//start matching
34do
else 40
41cvabsdiff(greyleftimg32,greyrightimg32,winimg);
//absolute difference
42sum
=cvsum(winimg);
//sum
43localsad[d]
=sum.val[0];
//0 means single channel
4445
cvresetimageroi(greyrightimg32); 46d
++;47}
while
(d<=
dsr);
4849
//to find the best d and store
50imga[y
+offset][x
+offset]
=getmaxmin(localsad,dsr,0)
*16; //
0 means return minimum index
51cvresetimageroi(greyleftimg32);52}
//x
53if(y%
10==
0)cout
<<
"row=
"<<
y<<
"of
"<<
height
<<
endl; 54}
//y5556
cvreleaseimage(
&winimg);
57//
cvreleaseimage(&rightwinimg);
5859
return
disparity;
6061}
立體匹配中的NCC,SAD,SSD演算法
normalized cross correlation ncc ncc u,v wl w wl w wr w wr w 選擇最大值 sum of squared defferences ssd ssd u,v sum 選擇最大值 sum of absolute defferences sad sa...
立體匹配 立體匹配過程
立體匹配就4個步驟 匹配代價計算,代價聚合,計算視差,視差精化 匹配代價計算 一般是通過計算左右兩圖對應畫素3個通道的灰度值差來決定匹配代價的,常用的就是基於畫素點匹配代價計算,一般有ad,sd,tad什麼的,基於區域的匹配代價計算一般有sad,ssd,stad之類的。匹配代價計算會生成乙個disp...
雙目立體匹配
公式 其中資料項描述了匹配程度,平滑項體現了定義場景的約束,c是匹配代價 或稱penalty p是不同兩畫素p和q視差的函式,一般稱之為平滑項 考慮到能量優化問題在一維空間的複雜度是多項式級的,因此一些研究試圖做一些近似來降低演算法的複雜度。例如,半全域性演算法 sgm 就利用了這一特性將二維問題簡...