summaryrefslogtreecommitdiffstats
path: root/SD-VBS/benchmarks/disparity/src/matlab/getDisparity.m
diff options
context:
space:
mode:
Diffstat (limited to 'SD-VBS/benchmarks/disparity/src/matlab/getDisparity.m')
-rwxr-xr-xSD-VBS/benchmarks/disparity/src/matlab/getDisparity.m54
1 files changed, 54 insertions, 0 deletions
diff --git a/SD-VBS/benchmarks/disparity/src/matlab/getDisparity.m b/SD-VBS/benchmarks/disparity/src/matlab/getDisparity.m
new file mode 100755
index 0000000..db64cac
--- /dev/null
+++ b/SD-VBS/benchmarks/disparity/src/matlab/getDisparity.m
@@ -0,0 +1,54 @@
1function [retDisparity retSAD minSAD]=getDisparity(Ileft, Iright, win_sz, max_shift)
2Ileft=double(Ileft);
3Iright=double(Iright);
4[nr,nc,nb]=size(Ileft);
5retSAD=zeros(nr, nc, max_shift);
6
7if(win_sz > 1)
8 half_win_sz=win_sz/2;
9 IleftPadded=padarray(Ileft, [half_win_sz, half_win_sz]);
10 IrightPadded=padarray(Iright, [half_win_sz, half_win_sz]);
11 for i=1:max_shift
12 retSAD(:,:,i)=correlateSAD(IleftPadded,IrightPadded, win_sz, i-1);
13 end
14 [minSAD retDisparity]=min(retSAD,[],3);
15else
16 IleftPadded = Ileft;
17 IrightPadded = Iright;
18 retSAD=correlateSAD(IleftPadded,IrightPadded, win_sz, 0);
19 [minSAD retDisparity]=min(retSAD,[],3);
20end
21end
22
23function retSAD=correlateSAD(Ileft, Iright, win_sz, disparity)
24
25Iright_moved=padarray(Iright, [0,disparity], 'pre');
26Iright_moved=Iright_moved(:, 1:end-disparity,:);
27
28[rows, cols] = size(Ileft);
29for i=1:rows
30 for j=1:cols
31 diff = Ileft(i,j) - Iright_moved(i,j);
32 SAD(i,j) = diff * diff;
33 end
34end
35
36%2D scan.
37integralImg=integralImage2D(SAD);
38retSAD=integralImg(win_sz+1:end,win_sz+1:end,:) +integralImg(2:end-win_sz+1,2:end-win_sz+1,:)-integralImg(2:end-win_sz+1,win_sz+1:end,:)-integralImg(win_sz+1:end,2:end-win_sz+1,:);
39
40end
41
42function retImg=integralImage2D(I)
43[nr,nc,nb]=size(I);
44retImg=zeros(nr,nc,nb);
45retImg(1,:,:)=I(1,:,:);
46for i=2:nr
47 retImg(i,:,:)=retImg(i-1,:,:)+I(i,:,:);
48end
49%vtuneResumeMex;
50for j=2:nc
51 retImg(:,j,:)=retImg(:,j-1,:)+retImg (:,j,:);
52end
53%vtunePauseMex;
54end