-
Notifications
You must be signed in to change notification settings - Fork 46
/
Copy pathsetup_image_registration_repository.m
116 lines (99 loc) · 3.97 KB
/
setup_image_registration_repository.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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
function setup_image_registration_repository()
% SETUP_IMAGE_REGISTRATION_REPOSITORY Call this function to setup and compile necessary files
%
% setup_image_registration_repository
%
% INPUT ARGUEMNTS
% N/A
%
% OPTIONAL INPUT ARGUEMNTS
% N/A
%
% OUTPUT ARGUEMNTS
% N/A
% Copyright (c) 2014 Daniel Forsberg
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
% the Free Software Foundation, either version 3 of the License, or
% (at your option) any later version.
%
% This program is distributed in the hope that it will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
% GNU General Public License for more details.
%
% You should have received a copy of the GNU General Public License
% along with this program. If not, see <http://www.gnu.org/licenses/>.
% Get folder of current file and go to folder
folder = fileparts(mfilename('fullpath'));
currentFolder = pwd;
cd(folder)
addpath(genpath(folder))
%% Download external dependencies if needed
% Load external dependencies and check which are missing
load externalDependenciesImageRegistration
missingExternalDependencies = [];
for k = 1 : length(fileNames)
if ~exist(fileNames{k},'file')
missingExternalDependencies(end + 1) = k;
end
end
% Ask missing files should be downloaded
if ~isempty(missingExternalDependencies)
disp('The following files, which are necessary for the image registration repository are missing:')
for k = 1 : length(missingExternalDependencies)
disp(fileNames{k})
end
answer = input('Would you like to download them? [y]/[n] ','s');
% If yes, download missing files
if strcmp(lower(answer),'y') || strcmp(lower(answer),'yes')
if ~exist([folder,filesep,'external-dependencies'],'dir')
mkdir('external-dependencies')
end
cd('external-dependencies')
for k = 1 : length(missingExternalDependencies)
disp(['Downloading: ',fileNames{missingExternalDependencies(k)}])
urlwrite(urls{missingExternalDependencies(k)},...
fileNames{missingExternalDependencies(k)});
end
addpath(pwd)
end
end
%% Add external dependencies path
if exist([folder,filesep,'external-dependencies'],'dir')
addpath([folder,filesep,'external-dependencies'])
end
% Go back to original folder
cd(currentFolder)
%% Compile mex files
[folder,~,~] = fileparts(mfilename('fullpath'));
compile_mex_files([folder,filesep,'external',filesep,'misc']);
compile_mex_files([folder,filesep,'external',filesep,'spatial_domain_toolbox'],...
'filesToExclude',{'antigradient.c'});
compile_mex_files([folder,filesep,'registration',filesep,'polynomial-expansion'],...
'fileExtension','cpp');
%% Create various filters
% Quadrature filters for linear phase-difference registration
if ~exist('quadratureFiltersLinearRegistration2D.mat')
disp('Missing quadrature filters needed for phase-based linear registration in 2D.')
disp('Attempting to create them.')
create_quadrature_filters_for_phase_difference_registration2d();
end
if ~exist('quadratureFiltersLinearRegistration3D.mat')
disp('Missing quadrature filters needed for phase-based linear registration in 3D.')
disp('Attempting to create them.')
create_quadrature_filters_for_phase_difference_registration3d();
end
% quadrature filter for morphon registration
if ~exist('quadratureFiltersForMorphonRegistration2D.mat')
disp('Missing quadrature filters needed for phase-based non-linear registration in 2D.')
disp('Attempting to create them.')
create_quadrature_filters_for_morphon_registration2d();
end
if ~exist('quadratureFiltersForMorphonRegistration3D.mat')
disp('Missing quadrature filters needed for phase-based non-linear registration in 3D.')
disp('Attempting to create them.')
create_quadrature_filters_for_morphon_registration3d();
end