From f618466c25d43f3bae9e40920273bf77de1e1149 Mon Sep 17 00:00:00 2001 From: leochanj105 Date: Mon, 19 Oct 2020 23:09:30 -0400 Subject: initial sd-vbs initial sd-vbs add sd-vbs sd-vbs --- SD-VBS/benchmarks/tracking/src/matlab/Filtering.m | 30 ++++ .../benchmarks/tracking/src/matlab/calcAreaSum.m | 48 ++++++ .../tracking/src/matlab/calcGoodFeature.m | 28 ++++ .../tracking/src/matlab/calcPyrLKTrack.m | 108 +++++++++++++ SD-VBS/benchmarks/tracking/src/matlab/calcSobel.m | 74 +++++++++ .../tracking/src/matlab/getInterpolatePatch.m | 22 +++ SD-VBS/benchmarks/tracking/src/matlab/getPyramid.m | 10 ++ SD-VBS/benchmarks/tracking/src/matlab/imageBlur.m | 36 +++++ .../benchmarks/tracking/src/matlab/imageResize.m | 50 ++++++ .../tracking/src/matlab/rgb2gray_f2_f3.m | 16 ++ .../tracking/src/matlab/script_run_profile.m | 178 +++++++++++++++++++++ 11 files changed, 600 insertions(+) create mode 100755 SD-VBS/benchmarks/tracking/src/matlab/Filtering.m create mode 100755 SD-VBS/benchmarks/tracking/src/matlab/calcAreaSum.m create mode 100755 SD-VBS/benchmarks/tracking/src/matlab/calcGoodFeature.m create mode 100755 SD-VBS/benchmarks/tracking/src/matlab/calcPyrLKTrack.m create mode 100755 SD-VBS/benchmarks/tracking/src/matlab/calcSobel.m create mode 100755 SD-VBS/benchmarks/tracking/src/matlab/getInterpolatePatch.m create mode 100755 SD-VBS/benchmarks/tracking/src/matlab/getPyramid.m create mode 100755 SD-VBS/benchmarks/tracking/src/matlab/imageBlur.m create mode 100755 SD-VBS/benchmarks/tracking/src/matlab/imageResize.m create mode 100755 SD-VBS/benchmarks/tracking/src/matlab/rgb2gray_f2_f3.m create mode 100755 SD-VBS/benchmarks/tracking/src/matlab/script_run_profile.m (limited to 'SD-VBS/benchmarks/tracking/src/matlab') diff --git a/SD-VBS/benchmarks/tracking/src/matlab/Filtering.m b/SD-VBS/benchmarks/tracking/src/matlab/Filtering.m new file mode 100755 index 0000000..d42ebb7 --- /dev/null +++ b/SD-VBS/benchmarks/tracking/src/matlab/Filtering.m @@ -0,0 +1,30 @@ +function imageOut = Filtering(imageIn, rows, cols, kernel, kernelSize) + +imageOut = zeros(rows, cols);%initalize output image to all zeros +imageIn = double(imageIn);%convert to double to allow image arithmetic + + intialCol = ((kernelSize+1)/2); + endCol = round(cols - ((kernelSize+1)/2)); + halfKernel = (kernelSize-1)/2; + + initialRow = ((kernelSize+1)/2); + endRow = (rows - ((kernelSize+1)/2)); + + %% Start 1-D filtering row-wise first. + + for i=initialRow:endRow + for j=initialCol:endCol + imageOut(i,j) = sum(imageIn(i,j-halfKernel:j+halfKernel).*kernel)/sum(kernel);%actual filtering step + end + end + + %% Start 1-D filtering col-wise first. + +% kernelT = kernel'; +% for i=initialRow:endRow +% for j=initialCol:endCol +% imageOut(i,j) = sum(imageOut(i-halfKernel:i+halfKernel,j).*kernelT)/sum(kernel);%kernel to be transposed for performing multiplcation +% end +% end +% +% %imshow(uint8(imageOut)); diff --git a/SD-VBS/benchmarks/tracking/src/matlab/calcAreaSum.m b/SD-VBS/benchmarks/tracking/src/matlab/calcAreaSum.m new file mode 100755 index 0000000..f8dd3da --- /dev/null +++ b/SD-VBS/benchmarks/tracking/src/matlab/calcAreaSum.m @@ -0,0 +1,48 @@ +%calcAreaSum: +% sizeX = cols +% sizeY = rows +function ret = calcAreaSum(src, sizeX, sizeY, winSize, dataDir) + +src = double(src); +nave = winSize; +nave_half = floor((nave+1)/2); +a1=zeros(1,sizeX+nave); + +for i=1:sizeY + %pull out one row + for j=1:sizeX + a1(j+nave_half)=src(i,j); + end + + a1sum=0; + %sum up values within a window + for k=1:nave + a1sum = a1sum+a1(k); + end + + for j=1:sizeX + ret(i,j) = a1sum; + a1sum = a1sum + a1(j+nave) - a1(j); + end +end + +a1=zeros(1,sizeY+nave); +for i=1:sizeX + + %pull out one col + for j=1:sizeY + a1(j+nave_half)=ret(j,i); + end + + a1sum=0; + %sum up values within a window + for k=1:nave + a1sum = a1sum+a1(k); + end + + for j=1:sizeY + ret(j,i) = a1sum; + a1sum = a1sum + a1(j+nave) - a1(j); + end +end + diff --git a/SD-VBS/benchmarks/tracking/src/matlab/calcGoodFeature.m b/SD-VBS/benchmarks/tracking/src/matlab/calcGoodFeature.m new file mode 100755 index 0000000..b83faa6 --- /dev/null +++ b/SD-VBS/benchmarks/tracking/src/matlab/calcGoodFeature.m @@ -0,0 +1,28 @@ +%calcGoodFeature: + +function [lambda, tr, det,c_xx, c_xy, c_yy] = calcGoodFeature(dX, dY, sizeX, sizeY, winSize, dataDir) + + for i=1:sizeY + for j=1:sizeX + xx(i,j)=dX(i,j)*dX(i,j); + xy(i,j)=dX(i,j)*dY(i,j); + yy(i,j)=dY(i,j)*dY(i,j); + end + end + + c_xx=calcAreaSum(xx, sizeX, sizeY, winSize,dataDir); + c_xy=calcAreaSum(xy, sizeX, sizeY, winSize,dataDir); + c_yy=calcAreaSum(yy, sizeX, sizeY, winSize,dataDir); + + for i=1:sizeY + for j=1:sizeX + tr(i,j)= c_xx(i,j)+c_yy(i,j); + det(i,j)= c_xx(i,j)*c_yy(i,j)-c_xy(i,j)*c_xy(i,j); +% if( tr(i,j) == 0 ) +% lambda(i,j) = 0; +% else + lambda(i,j)=det(i,j)/(tr(i,j) + 0.00001); +% end + end + end + diff --git a/SD-VBS/benchmarks/tracking/src/matlab/calcPyrLKTrack.m b/SD-VBS/benchmarks/tracking/src/matlab/calcPyrLKTrack.m new file mode 100755 index 0000000..c965c2b --- /dev/null +++ b/SD-VBS/benchmarks/tracking/src/matlab/calcPyrLKTrack.m @@ -0,0 +1,108 @@ +function [newFPnt, valid] = calcPyrLKTrack(iP, iDxP, iDyP, jP, fPnt, nFeatures, winSize, accuracy_th, max_iter) + +cellDims = size(iP); +GOOD_FEATURE_LAMBDA_TH = accuracy_th; + +for i=1:(cellDims(1)) + curImgDims = size(iP{i}); + imgDims(i,1)= curImgDims(1); + imgDims(i,2)= curImgDims(2); + +end + +pLevel = cellDims(1); + +rate=[1, 0.5, 0.25, 0.125, 0.0625, 0.03125]; +winSizeSq=4*winSize*winSize; +iPatch=cell(1, winSizeSq); +jPatch=cell(1, winSizeSq); +iDxPatch=cell(1,winSizeSq); +iDyPatch=cell(1,winSizeSq); + +valid(1:nFeatures) = 1; +newFPnt = zeros(2,nFeatures); + +for i=1:nFeatures + + dX=0; + dY=0; + +%% x is rows here and y is cols + + x=fPnt(1,i)*rate(pLevel+1); %half size of real level + y=fPnt(2,i)*rate(pLevel+1); + + for level=pLevel:-1:1 + + x = x+x; + y = y+y; + dX = dX+dX; + dY = dY+dY; + imgSize(1)=imgDims(level,1); %y,x + imgSize(2)=imgDims(level,2); %y,x + + c_xx = 0; + c_xy = 0; + c_yy = 0; + + %when feature goes out to the boundary. + + if ((x-winSize)<1 || (y-winSize)<1 || (y+winSize+1)>imgSize(1) || (x+winSize+1)>imgSize(2)) + %winSize+1due to interpolation + %error or skip the level?? + valid(i) = 0; + break; + end + + + iPatch = getInterpolatePatch(iP{level}, imgSize(1), imgSize(2), x, y, winSize); + iDxPatch = getInterpolatePatch(iDxP{level}, imgSize(1), imgSize(2), x, y, winSize); + iDyPatch = getInterpolatePatch(iDyP{level}, imgSize(1), imgSize(2), x, y, winSize); + + for idx=1:winSizeSq + c_xx = c_xx + iDxPatch(idx) * iDxPatch(idx); + c_xy = c_xy + iDxPatch(idx) * iDyPatch(idx); + c_yy = c_yy + iDyPatch(idx) * iDyPatch(idx); + end + + c_det = c_xx * c_yy - c_xy * c_xy; + + if (c_det/(c_xx+c_yy+0.00001)) < GOOD_FEATURE_LAMBDA_TH + valid(i)=0; + break; + end + + c_det=1/c_det; + + for k=1:max_iter + if ((x+dX-winSize)<1 || (y+dY-winSize)<1 || (y+dY+winSize+1)>imgSize(1) || (x+dX+winSize+1)>imgSize(2)) + %winSize+1due to interpolation + %error or skip the level?? + valid(i)=0; + break; + end + + jPatch = getInterpolatePatch(jP{level}, imgSize(1), imgSize(2), x+dX, y+dY, winSize); + eX = 0; + eY = 0; + for idx=1:winSizeSq + dIt = iPatch(idx) - jPatch(idx); + eX = eX + (dIt*iDxPatch(idx)); + eY = eY + (dIt*iDyPatch(idx)); + end + + mX = c_det*(eX*c_yy-eY*c_xy); + mY = c_det*(-eX*c_xy+eY*c_xx); + dX = dX + mX; + dY = dY + mY; + + + if ((mX*mX+mY*mY)