-
Notifications
You must be signed in to change notification settings - Fork 0
/
figGenSFC2DCase.m
81 lines (74 loc) · 2.25 KB
/
figGenSFC2DCase.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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
function [ctLT, ctVO, myLT, myVO, HLT, HVO, lineLT, lineVO] = figGenSFC2DCase(filename, isPad, isPlot)
global V;
V = imread(filename);
dV = size(V);
if length(dV)==3
V = double(rgb2gray(V));
else
V = double(V(:,:,1));
end
V = V ./ 255;
zisPlot = true;
if nargin >= 3
zisPlot = isPlot;
end
if zisPlot
figure, hold on;
subplot(1,2,1); imagesc(V);
end
% V = imdiffusefilt(V);
% V = V .* 255;
if isPad
maxSize = max(size(V));
nextPow2 = 2^ceil(log2(maxSize));
padDimFirstHalf = zeros(2,1);
padDimSecondHalf = zeros(2,1);
for i = 1:2
if mod(size(V,i),2) == 0
padDimFirstHalf(i) = (nextPow2 - size(V,i))/2;
padDimSecondHalf(i) = (nextPow2 - size(V,i))/2;
else
padDimFirstHalf(i) = nextPow2/2 - floor(size(V,i)/2);
padDimSecondHalf(i) = nextPow2 - size(V,i) - padDimFirstHalf(i);
end
end
V = padarray(V, [padDimFirstHalf(1),padDimFirstHalf(2)], 'pre');
V = padarray(V, [padDimSecondHalf(1),padDimSecondHalf(2)],'post');
end
if zisPlot
subplot(1,2,2); imagesc(V);
end
[folder, baseFileName, ext] = fileparts(filename);
% %% Hilbert SFC:
% dimX = size(V,2);
% dimY = size(V,1);
% dimZ = size(V,3);
% [rD, rI] = hilbertCurve2D(V);
% subplot(2,2,4);plot(1:length(rD),rD);title('Hilbert');
% HLT = rD;
% % get 2D coords from rI
% HVO = zeros(length(rI),2);
% for i = 1:length(rI)
% HVO(i,1) = floor(rI(i)/dimX) + 1;
% HVO(i,2) = mod(rI(i)-1, dimX)+1;
% end
% hLTfilename = sprintf('HilbertLT%s.csv', baseFileName);
% hVOfilename = sprintf('HilbertVO%s.csv', baseFileName);
% csvwrite(hLTfilename, HLT);
% csvwrite(hVOfilename, HVO);
% return;
%% All SFCs
[ctLT, ctVO, myLT, myVO, HLT, HVO, lineLT, lineVO] = SFCMethodsTestMain(V, isPad);
LTfilename = sprintf('LT%s.csv', baseFileName);
VOfilename = sprintf('VO%s.csv', baseFileName);
%
% % write out SFC
csvwrite(LTfilename, myLT);
csvwrite(VOfilename, myVO);
if isPad
hLTfilename = sprintf('HilbertLT%s.csv', baseFileName);
hVOfilename = sprintf('HilbertVO%s.csv', baseFileName);
csvwrite(hLTfilename, HLT);
csvwrite(hVOfilename, HVO);
end
end