-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathf_interp_flat_logistic.m
45 lines (37 loc) · 2.25 KB
/
f_interp_flat_logistic.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
function[interpValues] = f_interp_flat_logistic(partValues,flagUseCurvature,...
startRow,endRow,startCol,endCol)
% code by Yan Niu
% this function estimates the current value from its the horizontal and vertical neighbours
% input:
%partValues: part of the array have true values;
%flagUseCurvature: indication of using which differences formula to compute curvature
%startRow,endRow,startCol,endCol: the central region that has no boundary
%problem
global weightHori
global weightVert
meanHori = 0.5*(partValues(startRow:2:endRow,startCol+1:2:endCol+1)...
+partValues(startRow:2:endRow,startCol-1:2:endCol-1));
meanVert = 0.5*(partValues(startRow+1:2:endRow+1,startCol:2:endCol)...
+partValues(startRow-1:2:endRow-1,startCol:2:endCol));
curvHori = zeros((endRow-startRow)/2+1,(endCol-startCol)/2+1);
curvVert = zeros((endRow-startRow)/2+1,(endCol-startCol)/2+1);
if(flagUseCurvature==1)
curvHori = 0.25*(partValues(startRow:2:endRow,startCol+2:2:endCol+2)...
+partValues(startRow:2:endRow,startCol-2:2:endCol-2)...
-2*partValues(startRow:2:endRow,startCol:2:endCol));
curvVert = 0.25*(partValues(startRow+2:2:endRow+2,startCol:2:endCol)...
+partValues(startRow-2:2:endRow-2,startCol:2:endCol)...
-2*partValues(startRow:2:endRow,startCol:2:endCol));
elseif (flagUseCurvature==2)
curvHori = 0.125*(partValues(startRow:2:endRow,startCol+3:2:endCol+3)...
+partValues(startRow:2:endRow,startCol-3:2:endCol-3)...
-partValues(startRow:2:endRow,startCol+1:2:endCol+1)...
-partValues(startRow:2:endRow,startCol-1:2:endCol-1));
curvVert = 0.125*(partValues(startRow+3:2:endRow+3,startCol:2:endCol)...
+partValues(startRow-3:2:endRow-3,startCol:2:endCol)...
-partValues(startRow+1:2:endRow+1,startCol:2:endCol)...
-partValues(startRow-1:2:endRow-1,startCol:2:endCol));
end
partWeightHori = weightHori(startRow:2:endRow,startCol:2:endCol);
partWeightVert = weightVert(startRow:2:endRow,startCol:2:endCol);
interpValues = partWeightHori.*(meanHori-curvHori)+partWeightVert.*(meanVert-curvVert);