From 255e2f9fe507d13286b768913c4888fc7acb01b4 Mon Sep 17 00:00:00 2001 From: Behnaz Pirzamanbein <bepi@dtu.dk> Date: Wed, 29 Jul 2020 15:49:51 +0200 Subject: [PATCH] add the functions and modified the codes added the relevant functions and modified the codes accordingly --- Demo.m | 41 +- Export2inp.m | 18 +- Functions/functions_GraphCut/GraphCutMex.cpp | 100 +++ .../functions_GraphCut/GraphCutMex.mexa64 | Bin 0 -> 22225 bytes .../functions_GraphCut/GraphCutMex.mexmaci64 | Bin 0 -> 18052 bytes .../functions_GraphCut/GraphCutMex.mexw64 | Bin 0 -> 134144 bytes .../functions_GraphCut/GraphCutMex.mexw64.pdb | Bin 0 -> 692224 bytes Functions/functions_GraphCut/block.h | 268 +++++++ .../compile_mex_functions.m | 7 + Functions/functions_GraphCut/graph.cpp | 114 +++ Functions/functions_GraphCut/graph.h | 506 +++++++++++++ Functions/functions_GraphCut/instances.inc | 16 + Functions/functions_GraphCut/maxflow.cpp | 702 ++++++++++++++++++ Functions/functions_auxiliary/click_points.m | 13 + .../functions_auxiliary/compute_normals.m | 23 + .../functions_auxiliary/distribute_points.m | 42 ++ Functions/functions_auxiliary/ginputWhite.m | 319 ++++++++ .../functions_auxiliary/registerImages.m | 54 ++ .../regularization_matrix_open.m | 14 + .../slice_points_interpolation.m | 48 ++ Functions/functions_cost/smoothsurface_cost.m | 28 + Functions/functions_curvature/surfature.m | 70 ++ Functions/functions_gridcut/grid_cut.m | 252 +++++++ Functions/functions_mesh/do_mesh_example.m | 87 +++ Functions/functions_mesh/elements_mesh.m | 19 + Functions/functions_mesh/write_mesh.m | 18 + .../functions_visualization/show_matvol.m | 48 ++ .../suptitle_modified.m | 109 +++ LayerDetection.m | 3 - PointSelection.m | 328 ++++---- PrepMeasure.m | 4 +- PrepRegistration.m | 4 +- Registration.m | 111 +-- Transformation.m | 11 +- 34 files changed, 3122 insertions(+), 255 deletions(-) create mode 100644 Functions/functions_GraphCut/GraphCutMex.cpp create mode 100644 Functions/functions_GraphCut/GraphCutMex.mexa64 create mode 100644 Functions/functions_GraphCut/GraphCutMex.mexmaci64 create mode 100644 Functions/functions_GraphCut/GraphCutMex.mexw64 create mode 100644 Functions/functions_GraphCut/GraphCutMex.mexw64.pdb create mode 100644 Functions/functions_GraphCut/block.h create mode 100644 Functions/functions_GraphCut/compile_mex_functions.m create mode 100644 Functions/functions_GraphCut/graph.cpp create mode 100644 Functions/functions_GraphCut/graph.h create mode 100644 Functions/functions_GraphCut/instances.inc create mode 100644 Functions/functions_GraphCut/maxflow.cpp create mode 100644 Functions/functions_auxiliary/click_points.m create mode 100644 Functions/functions_auxiliary/compute_normals.m create mode 100644 Functions/functions_auxiliary/distribute_points.m create mode 100644 Functions/functions_auxiliary/ginputWhite.m create mode 100644 Functions/functions_auxiliary/registerImages.m create mode 100644 Functions/functions_auxiliary/regularization_matrix_open.m create mode 100644 Functions/functions_auxiliary/slice_points_interpolation.m create mode 100644 Functions/functions_cost/smoothsurface_cost.m create mode 100644 Functions/functions_curvature/surfature.m create mode 100644 Functions/functions_gridcut/grid_cut.m create mode 100644 Functions/functions_mesh/do_mesh_example.m create mode 100644 Functions/functions_mesh/elements_mesh.m create mode 100644 Functions/functions_mesh/write_mesh.m create mode 100644 Functions/functions_visualization/show_matvol.m create mode 100644 Functions/functions_visualization/suptitle_modified.m diff --git a/Demo.m b/Demo.m index 13b9f58..63640af 100644 --- a/Demo.m +++ b/Demo.m @@ -1,10 +1,20 @@ close all clear -addpath(genpath('../Functions')) +addpath(genpath('./Functions')) %% Defaults -Data_path = '..\..\..\..\..\..\LINX FP08.001\Activity 7 - bending - visualizations and tiff stacks\mat_file\'; +% if you know the path otherwise choose the path using the +answer = questdlg('Write data path or browse to the data folder?', 'Data Path','Write','Browse','Browse'); +switch answer + case 'Write' + Data_path = '..\..\..\HCP Anywhere\LINX FP08.001\Activity 7 - bending - visualizations and tiff stacks\mat_file\'; + case 'Browse' + Data_path = uigetdir; + Data_path = fullfile(Data_path,'\'); + fprintf('Data Path: %s \n', Data_path) +end + samples = {'out_out_CD','out_out_MD','in_in_CD','in_in_MD'}; degree = {'0','45','90','180'}; layer_name = {'outer','inner'}; @@ -12,12 +22,17 @@ layer_name = {'outer','inner'}; %% extract poitns for the pipeline clc -flag_points = 0; % 1 if no point has been extracted and first time use of the code +flag_points = 1; % 1 if no point has been extracted and first time use of the code +flag_save = 0; % 0: to not save the results; 1: to save the results + +answer = inputdlg('Contrast Enhansed value:','Contrast',[1 50],{'.7 1.5'}); % this is default based on the data scanned at DTU +ce = str2num(answer{1}); + if flag_points for i = 1 sample = samples{i}; - for j = 1:4 + for j = 1 dg = degree{j}; %% load data @@ -35,7 +50,7 @@ clearvars -except Data_path samples degree layer_name clc answer = questdlg('Do you want to enhance the contrast? ','Contrast:','No','Yes','No'); -for i = 1 +for i = 1:4 sample = samples{i}; for j = 1:4 %% load data @@ -67,40 +82,48 @@ for i = 1 range = 20:-1:-20; end end + flag_save = 1; + flag_fig = 0; % if you want to check the results LayerDetection end %% measure disp('Measure ...') + flag_save = 1; PrepMeasure %% registration disp('Registration ...') + flag_save = 1; PrepRegistration end end %% visualize the measure -for i = 1%:4 +for i = 1:4 + flag_save = 1; Measure end close all %% apply the registration -for i = 1%:4 +for i = 1:4 + flag_save = 1; Registration end close all %% apply the alignment and transformation -for i = 1%:4 +for i = 1:4 + flag_save = 1; + flag_fig = 1; Transformation end close all %% convert the meshes -for i = 1%:4 +for i = 1:4 Export2inp end close all diff --git a/Export2inp.m b/Export2inp.m index 440cdcd..a24a276 100644 --- a/Export2inp.m +++ b/Export2inp.m @@ -3,8 +3,6 @@ samples = {'out_out_CD','out_out_MD','in_in_CD','in_in_MD'}; degree = {'0','45','90','180'}; -flag_save = 1; - load_folder_layers = 'Results\layer\transfer\align_0dg_rest\'; save_folder = 'Results\export\'; @@ -29,7 +27,7 @@ end reshape(permute(aligned_inner_dg0(:,:,3,:),[2,1,3,4]),[sz0(1)*sz0(2)*sz0(4),1])]; no = [(1:size(no,1))',no]; - disp('Write mesh ...') + disp('Write mesh inner 0 ...') parfeval(@write_mesh,0,no,ele,[save_folder,'inner_',sample,'_0']); no = [reshape(permute(aligned_outer_dg0(:,:,1,:),[2,1,3,4]),[sz0(1)*sz0(2)*sz0(4),1]), ... @@ -37,7 +35,7 @@ end reshape(permute(aligned_outer_dg0(:,:,3,:),[2,1,3,4]),[sz0(1)*sz0(2)*sz0(4),1])]; no = [(1:size(no,1))',no]; - disp('Write mesh ...') + disp('Write mesh outer 0 ...') parfeval(@write_mesh,0,no,ele,[save_folder,'outer_',sample,'_0']); % 45 @@ -46,7 +44,7 @@ end reshape(permute(aligned_inner_dg45(:,:,3,:),[2,1,3,4]),[sz0(1)*sz0(2)*sz0(4),1])]; no = [(1:size(no,1))',no]; - disp('Write mesh ...') + disp('Write mesh inner 45 ...') parfeval(@write_mesh,0,no,ele,[save_folder,'inner_',sample,'_45']); no = [reshape(permute(aligned_outer_dg45(:,:,1,:),[2,1,3,4]),[sz0(1)*sz0(2)*sz0(4),1]), ... @@ -54,7 +52,7 @@ end reshape(permute(aligned_outer_dg45(:,:,3,:),[2,1,3,4]),[sz0(1)*sz0(2)*sz0(4),1])]; no = [(1:size(no,1))',no]; - disp('Write mesh ...') + disp('Write mesh outer 45 ...') parfeval(@write_mesh,0,no,ele,[save_folder,'outer_',sample,'_45']); % 90 @@ -63,7 +61,7 @@ end reshape(permute(aligned_inner_dg90(:,:,3,:),[2,1,3,4]),[sz0(1)*sz0(2)*sz0(4),1])]; no = [(1:size(no,1))',no]; - disp('Write mesh ...') + disp('Write mesh inner 90 ...') parfeval(@write_mesh,0,no,ele,[save_folder,'inner_',sample,'_90']); no = [reshape(permute(aligned_outer_dg90(:,:,1,:),[2,1,3,4]),[sz0(1)*sz0(2)*sz0(4),1]), ... @@ -71,7 +69,7 @@ end reshape(permute(aligned_outer_dg90(:,:,3,:),[2,1,3,4]),[sz0(1)*sz0(2)*sz0(4),1])]; no = [(1:size(no,1))',no]; - disp('Write mesh ...') + disp('Write mesh outer 90 ...') parfeval(@write_mesh,0,no,ele,[save_folder,'outer_',sample,'_90']); % 180 @@ -80,7 +78,7 @@ end reshape(permute(aligned_inner_dg180(:,:,3,:),[2,1,3,4]),[sz0(1)*sz0(2)*sz0(4),1])]; no = [(1:size(no,1))',no]; - disp('Write mesh ...') + disp('Write mesh inner 180 ...') parfeval(@write_mesh,0,no,ele,[save_folder,'inner_',sample,'_180']); no = [reshape(permute(aligned_outer_dg180(:,:,1,:),[2,1,3,4]),[sz0(1)*sz0(2)*sz0(4),1]), ... @@ -88,7 +86,7 @@ end reshape(permute(aligned_outer_dg180(:,:,3,:),[2,1,3,4]),[sz0(1)*sz0(2)*sz0(4),1])]; no = [(1:size(no,1))',no]; - disp('Write mesh ...') + disp('Write mesh outer 180 s...') parfeval(@write_mesh,0,no,ele,[save_folder,'outer_',sample,'_180']); %end \ No newline at end of file diff --git a/Functions/functions_GraphCut/GraphCutMex.cpp b/Functions/functions_GraphCut/GraphCutMex.cpp new file mode 100644 index 0000000..0cd28e7 --- /dev/null +++ b/Functions/functions_GraphCut/GraphCutMex.cpp @@ -0,0 +1,100 @@ +#include <math.h> +#include "mex.h" +#include "graph.h" +#include <vector> + +void +mexFunction(int nout, mxArray *out[], + int nin, const mxArray *in[]) +{ + if (nin != 3) + mexErrMsgTxt("Three arguments are required (nNodes,TerminalWeights,EdgeWeights)") ; + if (nout > 2) + mexErrMsgTxt("Too many output arguments."); + + + int nNodes = (int) *mxGetPr(in[0]); + + + const int* twDim = mxGetDimensions(in[1]) ; + // mexPrintf("Dim is: %d\n", twDim[0]); + // mexPrintf("Dim is: %d\n", twDim[1]); + int twRows = twDim[0] ; + int twCols = twDim[1] ; + double* twPt = mxGetPr(in[1]) ; + if(twCols!=3) + mexErrMsgTxt("The Terminal Weight matix should have 3 columns, (Node,sink,source)."); + + + const int* ewDim = mxGetDimensions(in[2]) ; + int ewRows = ewDim[0] ; + int ewCols = ewDim[1] ; + double* ewPt = mxGetPr(in[2]) ; + if(ewCols!=4) + mexErrMsgTxt("The Terminal Weight matix should have 4 columns, (From,To,Capacity,Rev_Capacity)."); + + + typedef Graph<double,double,double> GraphType; + GraphType G(static_cast<int>(nNodes), static_cast<int>(ewRows+twRows)); + G.add_node(nNodes); + + for(int cTw=0;cTw<twRows;cTw++) + { + //Test for nodes in range + int node=(int)twPt[cTw]-1; + if(node<0 || node>=nNodes) + mexErrMsgTxt("index out of bounds in TerminalWeight Matrix."); + G.add_tweights(node,twPt[cTw+twRows],twPt[cTw+2*twRows]); + //mexPrintf("The loop for TerminalWeight is: %d\n", cTw); + } + + // mexPrintf("ewRows is: %d\n", ewRows); + // mexEvalString("drawnow"); + + for(int cEw=0;cEw<ewRows;cEw++) + { + //Test for nodes in range + int From=(int)ewPt[cEw]-1; + int To=(int)ewPt[cEw+ewRows]-1; + if(From<0 || From>=nNodes) + mexErrMsgTxt("From index out of bounds in Edge Weight Matrix."); + if(To<0 || To>=nNodes) + mexErrMsgTxt("To index out of bounds in Edge Weight Matrix."); + + G.add_edge(From,To,ewPt[cEw+2*ewRows],ewPt[cEw+3*ewRows]); + //mexPrintf("The loop for Edge Weight is: %d\n", cEw); + } + + double flow=G.maxflow(); + + std::vector<int> SourceCut; + + // mexPrintf("nNodes is: %d\n", nNodes); + // mexEvalString("drawnow"); + + for(int cNode=0;cNode<nNodes;cNode++) + { + if(G.what_segment(cNode)== GraphType::SOURCE) + SourceCut.push_back(cNode+1); + //mexPrintf("The loop for graph is: %d\n", cNode); + } + + + out[0] = mxCreateDoubleMatrix(SourceCut.size(), 1, mxREAL) ; + double* pOut=mxGetPr(out[0]); + std::vector<int>::const_iterator Itt(SourceCut.begin()); + for(;Itt!=SourceCut.end();++Itt) + { + *pOut=*Itt; + ++pOut; + //mexPrintf("The loop for pOut: %d\n", pOut); + } + + + if(nout==2) + { + out[1] = mxCreateDoubleMatrix(1, 1, mxREAL) ; + *mxGetPr(out[1])=flow; + } + +} \ No newline at end of file diff --git a/Functions/functions_GraphCut/GraphCutMex.mexa64 b/Functions/functions_GraphCut/GraphCutMex.mexa64 new file mode 100644 index 0000000000000000000000000000000000000000..a9df40a4455e24c1d68dffa4196f96e4cd9f291e GIT binary patch literal 22225 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 W!;y6>AiEqfx9QxQ5>dwQ68yjF&)xt4 literal 0 HcmV?d00001 diff --git a/Functions/functions_GraphCut/GraphCutMex.mexmaci64 b/Functions/functions_GraphCut/GraphCutMex.mexmaci64 new file mode 100644 index 0000000000000000000000000000000000000000..75cdb2c698cc1256beeb3c1826286d56f9dceda8 GIT binary patch literal 18052 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 literal 0 HcmV?d00001 diff --git a/Functions/functions_GraphCut/GraphCutMex.mexw64 b/Functions/functions_GraphCut/GraphCutMex.mexw64 new file mode 100644 index 0000000000000000000000000000000000000000..91d726b3416ff2f451c7efe36a90c2c845a2e55f GIT binary patch literal 134144 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 E0Y^!W-v9sr literal 0 HcmV?d00001 diff --git a/Functions/functions_GraphCut/GraphCutMex.mexw64.pdb b/Functions/functions_GraphCut/GraphCutMex.mexw64.pdb new file mode 100644 index 0000000000000000000000000000000000000000..6fd6cb3465dbb977dc57a697b6e9a9237d3bb484 GIT binary patch literal 692224 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 literal 0 HcmV?d00001 diff --git a/Functions/functions_GraphCut/block.h b/Functions/functions_GraphCut/block.h new file mode 100644 index 0000000..93675f2 --- /dev/null +++ b/Functions/functions_GraphCut/block.h @@ -0,0 +1,268 @@ +/* block.h */ +/* + Template classes Block and DBlock + Implement adding and deleting items of the same type in blocks. + + If there there are many items then using Block or DBlock + is more efficient than using 'new' and 'delete' both in terms + of memory and time since + (1) On some systems there is some minimum amount of memory + that 'new' can allocate (e.g., 64), so if items are + small that a lot of memory is wasted. + (2) 'new' and 'delete' are designed for items of varying size. + If all items has the same size, then an algorithm for + adding and deleting can be made more efficient. + (3) All Block and DBlock functions are inline, so there are + no extra function calls. + + Differences between Block and DBlock: + (1) DBlock allows both adding and deleting items, + whereas Block allows only adding items. + (2) Block has an additional operation of scanning + items added so far (in the order in which they were added). + (3) Block allows to allocate several consecutive + items at a time, whereas DBlock can add only a single item. + + Note that no constructors or destructors are called for items. + + Example usage for items of type 'MyType': + + /////////////////////////////////////////////////// + #include "block.h" + #define BLOCK_SIZE 1024 + typedef struct { int a, b; } MyType; + MyType *ptr, *array[10000]; + + ... + + Block<MyType> *block = new Block<MyType>(BLOCK_SIZE); + + // adding items + for (int i=0; i<sizeof(array); i++) + { + ptr = block -> New(); + ptr -> a = ptr -> b = rand(); + } + + // reading items + for (ptr=block->ScanFirst(); ptr; ptr=block->ScanNext()) + { + printf("%d %d\n", ptr->a, ptr->b); + } + + delete block; + + ... + + DBlock<MyType> *dblock = new DBlock<MyType>(BLOCK_SIZE); + + // adding items + for (int i=0; i<sizeof(array); i++) + { + array[i] = dblock -> New(); + } + + // deleting items + for (int i=0; i<sizeof(array); i+=2) + { + dblock -> Delete(array[i]); + } + + // adding items + for (int i=0; i<sizeof(array); i++) + { + array[i] = dblock -> New(); + } + + delete dblock; + + /////////////////////////////////////////////////// + + Note that DBlock deletes items by marking them as + empty (i.e., by adding them to the list of free items), + so that this memory could be used for subsequently + added items. Thus, at each moment the memory allocated + is determined by the maximum number of items allocated + simultaneously at earlier moments. All memory is + deallocated only when the destructor is called. +*/ + +#ifndef __BLOCK_H__ +#define __BLOCK_H__ + +#include <stdlib.h> + +/***********************************************************************/ +/***********************************************************************/ +/***********************************************************************/ + +template <class Type> class Block +{ +public: + /* Constructor. Arguments are the block size and + (optionally) the pointer to the function which + will be called if allocation failed; the message + passed to this function is "Not enough memory!" */ + Block(int size, void (*err_function)(char *) = NULL) { first = last = NULL; block_size = size; error_function = err_function; } + + /* Destructor. Deallocates all items added so far */ + ~Block() { while (first) { block *next = first -> next; delete first; first = next; } } + + /* Allocates 'num' consecutive items; returns pointer + to the first item. 'num' cannot be greater than the + block size since items must fit in one block */ + Type *New(int num = 1) + { + Type *t; + + if (!last || last->current + num > last->last) + { + if (last && last->next) last = last -> next; + else + { + block *next = (block *) new char [sizeof(block) + (block_size-1)*sizeof(Type)]; + if (!next) { if (error_function) (*error_function)("Not enough memory!"); exit(1); } + if (last) last -> next = next; + else first = next; + last = next; + last -> current = & ( last -> data[0] ); + last -> last = last -> current + block_size; + last -> next = NULL; + } + } + + t = last -> current; + last -> current += num; + return t; + } + + /* Returns the first item (or NULL, if no items were added) */ + Type *ScanFirst() + { + for (scan_current_block=first; scan_current_block; scan_current_block = scan_current_block->next) + { + scan_current_data = & ( scan_current_block -> data[0] ); + if (scan_current_data < scan_current_block -> current) return scan_current_data ++; + } + return NULL; + } + + /* Returns the next item (or NULL, if all items have been read) + Can be called only if previous ScanFirst() or ScanNext() + call returned not NULL. */ + Type *ScanNext() + { + while (scan_current_data >= scan_current_block -> current) + { + scan_current_block = scan_current_block -> next; + if (!scan_current_block) return NULL; + scan_current_data = & ( scan_current_block -> data[0] ); + } + return scan_current_data ++; + } + + /* Marks all elements as empty */ + void Reset() + { + block *b; + if (!first) return; + for (b=first; ; b=b->next) + { + b -> current = & ( b -> data[0] ); + if (b == last) break; + } + last = first; + } + +/***********************************************************************/ + +private: + + typedef struct block_st + { + Type *current, *last; + struct block_st *next; + Type data[1]; + } block; + + int block_size; + block *first; + block *last; + + block *scan_current_block; + Type *scan_current_data; + + void (*error_function)(char *); +}; + +/***********************************************************************/ +/***********************************************************************/ +/***********************************************************************/ + +template <class Type> class DBlock +{ +public: + /* Constructor. Arguments are the block size and + (optionally) the pointer to the function which + will be called if allocation failed; the message + passed to this function is "Not enough memory!" */ + DBlock(int size, void (*err_function)(char *) = NULL) { first = NULL; first_free = NULL; block_size = size; error_function = err_function; } + + /* Destructor. Deallocates all items added so far */ + ~DBlock() { while (first) { block *next = first -> next; delete first; first = next; } } + + /* Allocates one item */ + Type *New() + { + block_item *item; + + if (!first_free) + { + block *next = first; + first = (block *) new char [sizeof(block) + (block_size-1)*sizeof(block_item)]; + if (!first) { if (error_function) (*error_function)("Not enough memory!"); exit(1); } + first_free = & (first -> data[0] ); + for (item=first_free; item<first_free+block_size-1; item++) + item -> next_free = item + 1; + item -> next_free = NULL; + first -> next = next; + } + + item = first_free; + first_free = item -> next_free; + return (Type *) item; + } + + /* Deletes an item allocated previously */ + void Delete(Type *t) + { + ((block_item *) t) -> next_free = first_free; + first_free = (block_item *) t; + } + +/***********************************************************************/ + +private: + + typedef union block_item_st + { + Type t; + block_item_st *next_free; + } block_item; + + typedef struct block_st + { + struct block_st *next; + block_item data[1]; + } block; + + int block_size; + block *first; + block_item *first_free; + + void (*error_function)(char *); +}; + + +#endif + diff --git a/Functions/functions_GraphCut/compile_mex_functions.m b/Functions/functions_GraphCut/compile_mex_functions.m new file mode 100644 index 0000000..798ba78 --- /dev/null +++ b/Functions/functions_GraphCut/compile_mex_functions.m @@ -0,0 +1,7 @@ +% compiling mex functions +% using libut makes it possible to use (ctrl + C) to stop C++ from inside +% MATLAB + +mex -g -O LIBPATH="C:/Program Files/MATLAB/R2019b/extern/lib/win64/microsoft" -llibut -compatibleArrayDims GraphCutMex.cpp MaxFlow.cpp graph.cpp + +mex -g -O -llibut -compatibleArrayDims GraphCutMex.cpp MaxFlow.cpp graph.cpp diff --git a/Functions/functions_GraphCut/graph.cpp b/Functions/functions_GraphCut/graph.cpp new file mode 100644 index 0000000..19b0be6 --- /dev/null +++ b/Functions/functions_GraphCut/graph.cpp @@ -0,0 +1,114 @@ +/* graph.cpp */ + + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include "graph.h" +#include "instances.inc" + + +template <typename captype, typename tcaptype, typename flowtype> + Graph<captype, tcaptype, flowtype>::Graph(int node_num_max, int edge_num_max, void (*err_function)(char *)) + : node_num(0), + nodeptr_block(NULL), + error_function(err_function) +{ + if (node_num_max < 16) node_num_max = 16; + if (edge_num_max < 16) edge_num_max = 16; + + nodes = (node*) malloc(node_num_max*sizeof(node)); + arcs = (arc*) malloc(2*edge_num_max*sizeof(arc)); + if (!nodes || !arcs) { if (error_function) (*error_function)("Not enough memory!"); exit(1); } + + node_last = nodes; + node_max = nodes + node_num_max; + arc_last = arcs; + arc_max = arcs + 2*edge_num_max; + + maxflow_iteration = 0; + flow = 0; +} + +template <typename captype, typename tcaptype, typename flowtype> + Graph<captype,tcaptype,flowtype>::~Graph() +{ + if (nodeptr_block) + { + delete nodeptr_block; + nodeptr_block = NULL; + } + free(nodes); + free(arcs); +} + +template <typename captype, typename tcaptype, typename flowtype> + void Graph<captype,tcaptype,flowtype>::reset() +{ + node_last = nodes; + arc_last = arcs; + node_num = 0; + + if (nodeptr_block) + { + delete nodeptr_block; + nodeptr_block = NULL; + } + + maxflow_iteration = 0; + flow = 0; +} + +template <typename captype, typename tcaptype, typename flowtype> + void Graph<captype,tcaptype,flowtype>::reallocate_nodes(int num) +{ + int node_num_max = (int)(node_max - nodes); + node* nodes_old = nodes; + + node_num_max += node_num_max / 2; + if (node_num_max < node_num + num) node_num_max = node_num + num; + nodes = (node*) realloc(nodes_old, node_num_max*sizeof(node)); + if (!nodes) { if (error_function) (*error_function)("Not enough memory!"); exit(1); } + + node_last = nodes + node_num; + node_max = nodes + node_num_max; + + if (nodes != nodes_old) + { + arc* a; + for (a=arcs; a<arc_last; a++) + { + a->head = (node*) ((char*)a->head + (((char*) nodes) - ((char*) nodes_old))); + } + } +} + +template <typename captype, typename tcaptype, typename flowtype> + void Graph<captype,tcaptype,flowtype>::reallocate_arcs() +{ + int arc_num_max = (int)(arc_max - arcs); + int arc_num = (int)(arc_last - arcs); + arc* arcs_old = arcs; + + arc_num_max += arc_num_max / 2; if (arc_num_max & 1) arc_num_max ++; + arcs = (arc*) realloc(arcs_old, arc_num_max*sizeof(arc)); + if (!arcs) { if (error_function) (*error_function)("Not enough memory!"); exit(1); } + + arc_last = arcs + arc_num; + arc_max = arcs + arc_num_max; + + if (arcs != arcs_old) + { + node* i; + arc* a; + for (i=nodes; i<node_last; i++) + { + if (i->first) i->first = (arc*) ((char*)i->first + (((char*) arcs) - ((char*) arcs_old))); + } + for (a=arcs; a<arc_last; a++) + { + if (a->next) a->next = (arc*) ((char*)a->next + (((char*) arcs) - ((char*) arcs_old))); + a->sister = (arc*) ((char*)a->sister + (((char*) arcs) - ((char*) arcs_old))); + } + } +} diff --git a/Functions/functions_GraphCut/graph.h b/Functions/functions_GraphCut/graph.h new file mode 100644 index 0000000..87efe7e --- /dev/null +++ b/Functions/functions_GraphCut/graph.h @@ -0,0 +1,506 @@ +/* graph.h */ +/* + This software library implements the maxflow algorithm + described in + + "An Experimental Comparison of Min-Cut/Max-Flow Algorithms for Energy Minimization in Vision." + Yuri Boykov and Vladimir Kolmogorov. + In IEEE Transactions on Pattern Analysis and Machine Intelligence (PAMI), + September 2004 + + This algorithm was developed by Yuri Boykov and Vladimir Kolmogorov + at Siemens Corporate Research. To make it available for public use, + it was later reimplemented by Vladimir Kolmogorov based on open publications. + + If you use this software for research purposes, you should cite + the aforementioned paper in any resulting publication. + + ---------------------------------------------------------------------- + + REUSING TREES: + + Starting with version 3.0, there is a also an option of reusing search + trees from one maxflow computation to the next, as described in + + "Efficiently Solving Dynamic Markov Random Fields Using Graph Cuts." + Pushmeet Kohli and Philip H.S. Torr + International Conference on Computer Vision (ICCV), 2005 + + If you use this option, you should cite + the aforementioned paper in any resulting publication. +*/ + + + +/* + For description, license, example usage see README.TXT. +*/ + +#ifndef __GRAPH_H__ +#define __GRAPH_H__ + +#include <string.h> +#include "block.h" + +#include <assert.h> +// NOTE: in UNIX you need to use -DNDEBUG preprocessor option to supress assert's!!! + + + +// captype: type of edge capacities (excluding t-links) +// tcaptype: type of t-links (edges between nodes and terminals) +// flowtype: type of total flow +// +// Current instantiations are in instances.inc +template <typename captype, typename tcaptype, typename flowtype> class Graph +{ +public: + typedef enum + { + SOURCE = 0, + SINK = 1 + } termtype; // terminals + typedef int node_id; + + ///////////////////////////////////////////////////////////////////////// + // BASIC INTERFACE FUNCTIONS // + // (should be enough for most applications) // + ///////////////////////////////////////////////////////////////////////// + + // Constructor. + // The first argument gives an estimate of the maximum number of nodes that can be added + // to the graph, and the second argument is an estimate of the maximum number of edges. + // The last (optional) argument is the pointer to the function which will be called + // if an error occurs; an error message is passed to this function. + // If this argument is omitted, exit(1) will be called. + // + // IMPORTANT: It is possible to add more nodes to the graph than node_num_max + // (and node_num_max can be zero). However, if the count is exceeded, then + // the internal memory is reallocated (increased by 50%) which is expensive. + // Also, temporarily the amount of allocated memory would be more than twice than needed. + // Similarly for edges. + // If you wish to avoid this overhead, you can download version 2.2, where nodes and edges are stored in blocks. + Graph(int node_num_max, int edge_num_max, void (*err_function)(char *) = NULL); + + // Destructor + ~Graph(); + + // Adds node(s) to the graph. By default, one node is added (num=1); then first call returns 0, second call returns 1, and so on. + // If num>1, then several nodes are added, and node_id of the first one is returned. + // IMPORTANT: see note about the constructor + node_id add_node(int num = 1); + + // Adds a bidirectional edge between 'i' and 'j' with the weights 'cap' and 'rev_cap'. + // IMPORTANT: see note about the constructor + void add_edge(node_id i, node_id j, captype cap, captype rev_cap); + + // Adds new edges 'SOURCE->i' and 'i->SINK' with corresponding weights. + // Can be called multiple times for each node. + // Weights can be negative. + // NOTE: the number of such edges is not counted in edge_num_max. + // No internal memory is allocated by this call. + void add_tweights(node_id i, tcaptype cap_source, tcaptype cap_sink); + + + // Computes the maxflow. Can be called several times. + // FOR DESCRIPTION OF reuse_trees, SEE mark_node(). + // FOR DESCRIPTION OF changed_list, SEE remove_from_changed_list(). + flowtype maxflow(bool reuse_trees = false, Block<node_id>* changed_list = NULL); + + // After the maxflow is computed, this function returns to which + // segment the node 'i' belongs (Graph<captype,tcaptype,flowtype>::SOURCE or Graph<captype,tcaptype,flowtype>::SINK). + // + // Occasionally there may be several minimum cuts. If a node can be assigned + // to both the source and the sink, then default_segm is returned. + termtype what_segment(node_id i, termtype default_segm = SOURCE); + + + + ////////////////////////////////////////////// + // ADVANCED INTERFACE FUNCTIONS // + // (provide access to the graph) // + ////////////////////////////////////////////// + +private: + struct node; + struct arc; + +public: + + //////////////////////////// + // 1. Reallocating graph. // + //////////////////////////// + + // Removes all nodes and edges. + // After that functions add_node() and add_edge() must be called again. + // + // Advantage compared to deleting Graph and allocating it again: + // no calls to delete/new (which could be quite slow). + // + // If the graph structure stays the same, then an alternative + // is to go through all nodes/edges and set new residual capacities + // (see functions below). + void reset(); + + //////////////////////////////////////////////////////////////////////////////// + // 2. Functions for getting pointers to arcs and for reading graph structure. // + // NOTE: adding new arcs may invalidate these pointers (if reallocation // + // happens). So it's best not to add arcs while reading graph structure. // + //////////////////////////////////////////////////////////////////////////////// + + // The following two functions return arcs in the same order that they + // were added to the graph. NOTE: for each call add_edge(i,j,cap,cap_rev) + // the first arc returned will be i->j, and the second j->i. + // If there are no more arcs, then the function can still be called, but + // the returned arc_id is undetermined. + typedef arc* arc_id; + arc_id get_first_arc(); + arc_id get_next_arc(arc_id a); + + // other functions for reading graph structure + int get_node_num() { return node_num; } + int get_arc_num() { return (int)(arc_last - arcs); } + void get_arc_ends(arc_id a, node_id& i, node_id& j); // returns i,j to that a = i->j + + /////////////////////////////////////////////////// + // 3. Functions for reading residual capacities. // + /////////////////////////////////////////////////// + + // returns residual capacity of SOURCE->i minus residual capacity of i->SINK + tcaptype get_trcap(node_id i); + // returns residual capacity of arc a + captype get_rcap(arc* a); + + ///////////////////////////////////////////////////////////////// + // 4. Functions for setting residual capacities. // + // NOTE: If these functions are used, the value of the flow // + // returned by maxflow() will not be valid! // + ///////////////////////////////////////////////////////////////// + + void set_trcap(node_id i, tcaptype trcap); + void set_rcap(arc* a, captype rcap); + + //////////////////////////////////////////////////////////////////// + // 5. Functions related to reusing trees & list of changed nodes. // + //////////////////////////////////////////////////////////////////// + + // If flag reuse_trees is true while calling maxflow(), then search trees + // are reused from previous maxflow computation. + // In this case before calling maxflow() the user must + // specify which parts of the graph have changed by calling mark_node(): + // add_tweights(i),set_trcap(i) => call mark_node(i) + // add_edge(i,j),set_rcap(a) => call mark_node(i); mark_node(j) + // + // This option makes sense only if a small part of the graph is changed. + // The initialization procedure goes only through marked nodes then. + // + // mark_node(i) can either be called before or after graph modification. + // Can be called more than once per node, but calls after the first one + // do not have any effect. + // + // NOTE: + // - This option cannot be used in the first call to maxflow(). + // - It is not necessary to call mark_node() if the change is ``not essential'', + // i.e. sign(trcap) is preserved for a node and zero/nonzero status is preserved for an arc. + // - To check that you marked all necessary nodes, you can call maxflow(false) after calling maxflow(true). + // If everything is correct, the two calls must return the same value of flow. (Useful for debugging). + void mark_node(node_id i); + + // If changed_list is not NULL while calling maxflow(), then the algorithm + // keeps a list of nodes which could potentially have changed their segmentation label. + // Nodes which are not in the list are guaranteed to keep their old segmentation label (SOURCE or SINK). + // Example usage: + // + // typedef Graph<int,int,int> G; + // G* g = new Graph(nodeNum, edgeNum); + // Block<G::node_id>* changed_list = new Block<G::node_id>(128); + // + // ... // add nodes and edges + // + // g->maxflow(); // first call should be without arguments + // for (int iter=0; iter<10; iter++) + // { + // ... // change graph, call mark_node() accordingly + // + // g->maxflow(true, changed_list); + // G::node_id* ptr; + // for (ptr=changed_list->ScanFirst(); ptr; ptr=changed_list->ScanNext()) + // { + // G::node_id i = *ptr; assert(i>=0 && i<nodeNum); + // g->remove_from_changed_list(i); + // // do something with node i... + // if (g->what_segment(i) == G::SOURCE) { ... } + // } + // changed_list->Reset(); + // } + // delete changed_list; + // + // NOTE: + // - If changed_list option is used, then reuse_trees must be used as well. + // - In the example above, the user may omit calls g->remove_from_changed_list(i) and changed_list->Reset() in a given iteration. + // Then during the next call to maxflow(true, &changed_list) new nodes will be added to changed_list. + // - If the next call to maxflow() does not use option reuse_trees, then calling remove_from_changed_list() + // is not necessary. ("changed_list->Reset()" or "delete changed_list" should still be called, though). + void remove_from_changed_list(node_id i) + { + assert(i>=0 && i<node_num && nodes[i].is_in_changed_list); + nodes[i].is_in_changed_list = 0; + } + + + + + + +///////////////////////////////////////////////////////////////////////// +///////////////////////////////////////////////////////////////////////// +///////////////////////////////////////////////////////////////////////// + +private: + // internal variables and functions + + struct node + { + arc *first; // first outcoming arc + + arc *parent; // node's parent + node *next; // pointer to the next active node + // (or to itself if it is the last node in the list) + int TS; // timestamp showing when DIST was computed + int DIST; // distance to the terminal + int is_sink : 1; // flag showing whether the node is in the source or in the sink tree (if parent!=NULL) + int is_marked : 1; // set by mark_node() + int is_in_changed_list : 1; // set by maxflow if + + tcaptype tr_cap; // if tr_cap > 0 then tr_cap is residual capacity of the arc SOURCE->node + // otherwise -tr_cap is residual capacity of the arc node->SINK + + }; + + struct arc + { + node *head; // node the arc points to + arc *next; // next arc with the same originating node + arc *sister; // reverse arc + + captype r_cap; // residual capacity + }; + + struct nodeptr + { + node *ptr; + nodeptr *next; + }; + static const int NODEPTR_BLOCK_SIZE = 128; + + node *nodes, *node_last, *node_max; // node_last = nodes+node_num, node_max = nodes+node_num_max; + arc *arcs, *arc_last, *arc_max; // arc_last = arcs+2*edge_num, arc_max = arcs+2*edge_num_max; + + int node_num; + + DBlock<nodeptr> *nodeptr_block; + + void (*error_function)(char *); // this function is called if a error occurs, + // with a corresponding error message + // (or exit(1) is called if it's NULL) + + flowtype flow; // total flow + + // reusing trees & list of changed pixels + int maxflow_iteration; // counter + Block<node_id> *changed_list; + + ///////////////////////////////////////////////////////////////////////// + + node *queue_first[2], *queue_last[2]; // list of active nodes + nodeptr *orphan_first, *orphan_last; // list of pointers to orphans + int TIME; // monotonically increasing global counter + + ///////////////////////////////////////////////////////////////////////// + + void reallocate_nodes(int num); // num is the number of new nodes + void reallocate_arcs(); + + // functions for processing active list + void set_active(node *i); + node *next_active(); + + // functions for processing orphans list + void set_orphan_front(node* i); // add to the beginning of the list + void set_orphan_rear(node* i); // add to the end of the list + + void add_to_changed_list(node* i); + + void maxflow_init(); // called if reuse_trees == false + void maxflow_reuse_trees_init(); // called if reuse_trees == true + void augment(arc *middle_arc); + void process_source_orphan(node *i); + void process_sink_orphan(node *i); + + void test_consistency(node* current_node=NULL); // debug function +}; + + + + + + + + + + + +/////////////////////////////////////// +// Implementation - inline functions // +/////////////////////////////////////// + + + +template <typename captype, typename tcaptype, typename flowtype> + inline typename Graph<captype,tcaptype,flowtype>::node_id Graph<captype,tcaptype,flowtype>::add_node(int num) +{ + assert(num > 0); + + if (node_last + num > node_max) reallocate_nodes(num); + + if (num == 1) + { + node_last -> first = NULL; + node_last -> tr_cap = 0; + node_last -> is_marked = 0; + node_last -> is_in_changed_list = 0; + + node_last ++; + return node_num ++; + } + else + { + memset(node_last, 0, num*sizeof(node)); + + node_id i = node_num; + node_num += num; + node_last += num; + return i; + } +} + +template <typename captype, typename tcaptype, typename flowtype> + inline void Graph<captype,tcaptype,flowtype>::add_tweights(node_id i, tcaptype cap_source, tcaptype cap_sink) +{ + assert(i >= 0 && i < node_num); + + tcaptype delta = nodes[i].tr_cap; + if (delta > 0) cap_source += delta; + else cap_sink -= delta; + flow += (cap_source < cap_sink) ? cap_source : cap_sink; + nodes[i].tr_cap = cap_source - cap_sink; +} + +template <typename captype, typename tcaptype, typename flowtype> + inline void Graph<captype,tcaptype,flowtype>::add_edge(node_id _i, node_id _j, captype cap, captype rev_cap) +{ + assert(_i >= 0 && _i < node_num); + assert(_j >= 0 && _j < node_num); + assert(_i != _j); + assert(cap >= 0); + assert(rev_cap >= 0); + + if (arc_last == arc_max) reallocate_arcs(); + + arc *a = arc_last ++; + arc *a_rev = arc_last ++; + + node* i = nodes + _i; + node* j = nodes + _j; + + a -> sister = a_rev; + a_rev -> sister = a; + a -> next = i -> first; + i -> first = a; + a_rev -> next = j -> first; + j -> first = a_rev; + a -> head = j; + a_rev -> head = i; + a -> r_cap = cap; + a_rev -> r_cap = rev_cap; +} + +template <typename captype, typename tcaptype, typename flowtype> + inline typename Graph<captype,tcaptype,flowtype>::arc* Graph<captype,tcaptype,flowtype>::get_first_arc() +{ + return arcs; +} + +template <typename captype, typename tcaptype, typename flowtype> + inline typename Graph<captype,tcaptype,flowtype>::arc* Graph<captype,tcaptype,flowtype>::get_next_arc(arc* a) +{ + return a + 1; +} + +template <typename captype, typename tcaptype, typename flowtype> + inline void Graph<captype,tcaptype,flowtype>::get_arc_ends(arc* a, node_id& i, node_id& j) +{ + assert(a >= arcs && a < arc_last); + i = (node_id) (a->sister->head - nodes); + j = (node_id) (a->head - nodes); +} + +template <typename captype, typename tcaptype, typename flowtype> + inline tcaptype Graph<captype,tcaptype,flowtype>::get_trcap(node_id i) +{ + assert(i>=0 && i<node_num); + return nodes[i].tr_cap; +} + +template <typename captype, typename tcaptype, typename flowtype> + inline captype Graph<captype,tcaptype,flowtype>::get_rcap(arc* a) +{ + assert(a >= arcs && a < arc_last); + return a->r_cap; +} + +template <typename captype, typename tcaptype, typename flowtype> + inline void Graph<captype,tcaptype,flowtype>::set_trcap(node_id i, tcaptype trcap) +{ + assert(i>=0 && i<node_num); + nodes[i].tr_cap = trcap; +} + +template <typename captype, typename tcaptype, typename flowtype> + inline void Graph<captype,tcaptype,flowtype>::set_rcap(arc* a, captype rcap) +{ + assert(a >= arcs && a < arc_last); + a->r_cap = rcap; +} + + +template <typename captype, typename tcaptype, typename flowtype> + inline typename Graph<captype,tcaptype,flowtype>::termtype Graph<captype,tcaptype,flowtype>::what_segment(node_id i, termtype default_segm) +{ + if (nodes[i].parent) + { + return (nodes[i].is_sink) ? SINK : SOURCE; + } + else + { + return default_segm; + } +} + +template <typename captype, typename tcaptype, typename flowtype> + inline void Graph<captype,tcaptype,flowtype>::mark_node(node_id _i) +{ + node* i = nodes + _i; + if (!i->next) + { + /* it's not in the list yet */ + if (queue_last[1]) queue_last[1] -> next = i; + else queue_first[1] = i; + queue_last[1] = i; + i -> next = i; + } + i->is_marked = 1; +} + + +#endif diff --git a/Functions/functions_GraphCut/instances.inc b/Functions/functions_GraphCut/instances.inc new file mode 100644 index 0000000..9c9ee37 --- /dev/null +++ b/Functions/functions_GraphCut/instances.inc @@ -0,0 +1,16 @@ +#include "graph.h" + +#ifdef _MSC_VER +#pragma warning(disable: 4661) +#endif + +// Instantiations: <captype, tcaptype, flowtype> +// IMPORTANT: +// flowtype should be 'larger' than tcaptype +// tcaptype should be 'larger' than captype + +template class Graph<int,int,int>; +template class Graph<short,int,int>; +template class Graph<float,float,float>; +template class Graph<double,double,double>; + diff --git a/Functions/functions_GraphCut/maxflow.cpp b/Functions/functions_GraphCut/maxflow.cpp new file mode 100644 index 0000000..38b5dcc --- /dev/null +++ b/Functions/functions_GraphCut/maxflow.cpp @@ -0,0 +1,702 @@ +/* maxflow.cpp */ + + +#include <stdio.h> +#include "graph.h" +#include "instances.inc" +#include "mex.h" + + +/* + special constants for node->parent +*/ +#define TERMINAL ( (arc *) 1 ) /* to terminal */ +#define ORPHAN ( (arc *) 2 ) /* orphan */ + + +#define INFINITE_D ((int)(((unsigned)-1)/2)) /* infinite distance to the terminal */ +#ifdef __cplusplus /*function for stopping from MATLAB*/ +extern "C" bool utIsInterruptPending(); +#else +extern bool utIsInterruptPending(); +#endif + +/***********************************************************************/ + +/* + Functions for processing active list. + i->next points to the next node in the list + (or to i, if i is the last node in the list). + If i->next is NULL iff i is not in the list. + + There are two queues. Active nodes are added + to the end of the second queue and read from + the front of the first queue. If the first queue + is empty, it is replaced by the second queue + (and the second queue becomes empty). +*/ + + +template <typename captype, typename tcaptype, typename flowtype> + inline void Graph<captype,tcaptype,flowtype>::set_active(node *i) +{ + if (!i->next) + { + /* it's not in the list yet */ + if (queue_last[1]) queue_last[1] -> next = i; + else queue_first[1] = i; + queue_last[1] = i; + i -> next = i; + } +} + +/* + Returns the next active node. + If it is connected to the sink, it stays in the list, + otherwise it is removed from the list +*/ +template <typename captype, typename tcaptype, typename flowtype> + inline typename Graph<captype,tcaptype,flowtype>::node* Graph<captype,tcaptype,flowtype>::next_active() +{ + node *i; + + while ( 1 ) + { + if (!(i=queue_first[0])) + { + queue_first[0] = i = queue_first[1]; + queue_last[0] = queue_last[1]; + queue_first[1] = NULL; + queue_last[1] = NULL; + if (!i) return NULL; + } + + /* remove it from the active list */ + if (i->next == i) queue_first[0] = queue_last[0] = NULL; + else queue_first[0] = i -> next; + i -> next = NULL; + + /* a node in the list is active iff it has a parent */ + if (i->parent) return i; + } +} + +/***********************************************************************/ + +template <typename captype, typename tcaptype, typename flowtype> + inline void Graph<captype,tcaptype,flowtype>::set_orphan_front(node *i) +{ + nodeptr *np; + i -> parent = ORPHAN; + np = nodeptr_block -> New(); + np -> ptr = i; + np -> next = orphan_first; + orphan_first = np; +} + +template <typename captype, typename tcaptype, typename flowtype> + inline void Graph<captype,tcaptype,flowtype>::set_orphan_rear(node *i) +{ + nodeptr *np; + i -> parent = ORPHAN; + np = nodeptr_block -> New(); + np -> ptr = i; + if (orphan_last) orphan_last -> next = np; + else orphan_first = np; + orphan_last = np; + np -> next = NULL; +} + +/***********************************************************************/ + +template <typename captype, typename tcaptype, typename flowtype> + inline void Graph<captype,tcaptype,flowtype>::add_to_changed_list(node *i) +{ + if (changed_list && !i->is_in_changed_list) + { + node_id* ptr = changed_list->New(); + *ptr = (node_id)(i - nodes); + i->is_in_changed_list = true; + } +} + +/***********************************************************************/ + +template <typename captype, typename tcaptype, typename flowtype> + void Graph<captype,tcaptype,flowtype>::maxflow_init() +{ + node *i; + + queue_first[0] = queue_last[0] = NULL; + queue_first[1] = queue_last[1] = NULL; + orphan_first = NULL; + + TIME = 0; + + for (i=nodes; i<node_last; i++) + { + i -> next = NULL; + i -> is_marked = 0; + i -> is_in_changed_list = 0; + i -> TS = TIME; + if (i->tr_cap > 0) + { + /* i is connected to the source */ + i -> is_sink = 0; + i -> parent = TERMINAL; + set_active(i); + i -> DIST = 1; + } + else if (i->tr_cap < 0) + { + /* i is connected to the sink */ + i -> is_sink = 1; + i -> parent = TERMINAL; + set_active(i); + i -> DIST = 1; + } + else + { + i -> parent = NULL; + } + } +} + +template <typename captype, typename tcaptype, typename flowtype> + void Graph<captype,tcaptype,flowtype>::maxflow_reuse_trees_init() +{ + node* i; + node* j; + node* queue = queue_first[1]; + arc* a; + nodeptr* np; + + queue_first[0] = queue_last[0] = NULL; + queue_first[1] = queue_last[1] = NULL; + orphan_first = orphan_last = NULL; + + TIME ++; + + while ((i=queue)) + { + queue = i->next; + if (queue == i) queue = NULL; + i->next = NULL; + i->is_marked = 0; + set_active(i); + + if (i->tr_cap == 0) + { + if (i->parent) set_orphan_rear(i); + continue; + } + + if (i->tr_cap > 0) + { + if (!i->parent || i->is_sink) + { + i->is_sink = 0; + for (a=i->first; a; a=a->next) + { + j = a->head; + if (!j->is_marked) + { + if (j->parent == a->sister) set_orphan_rear(j); + if (j->parent && j->is_sink && a->r_cap > 0) set_active(j); + } + } + add_to_changed_list(i); + } + } + else + { + if (!i->parent || !i->is_sink) + { + i->is_sink = 1; + for (a=i->first; a; a=a->next) + { + j = a->head; + if (!j->is_marked) + { + if (j->parent == a->sister) set_orphan_rear(j); + if (j->parent && !j->is_sink && a->sister->r_cap > 0) set_active(j); + } + } + add_to_changed_list(i); + } + } + i->parent = TERMINAL; + i -> TS = TIME; + i -> DIST = 1; + } + + //test_consistency(); + + /* adoption */ + while ((np=orphan_first)) + { + orphan_first = np -> next; + i = np -> ptr; + nodeptr_block -> Delete(np); + if (!orphan_first) orphan_last = NULL; + if (i->is_sink) process_sink_orphan(i); + else process_source_orphan(i); + } + /* adoption end */ + + //test_consistency(); +} + +template <typename captype, typename tcaptype, typename flowtype> + void Graph<captype,tcaptype,flowtype>::augment(arc *middle_arc) +{ + node *i; + arc *a; + tcaptype bottleneck; + + + /* 1. Finding bottleneck capacity */ + /* 1a - the source tree */ + bottleneck = middle_arc -> r_cap; + for (i=middle_arc->sister->head; ; i=a->head) + { + a = i -> parent; + if (a == TERMINAL) break; + if (bottleneck > a->sister->r_cap) bottleneck = a -> sister -> r_cap; + } + if (bottleneck > i->tr_cap) bottleneck = i -> tr_cap; + /* 1b - the sink tree */ + for (i=middle_arc->head; ; i=a->head) + { + a = i -> parent; + if (a == TERMINAL) break; + if (bottleneck > a->r_cap) bottleneck = a -> r_cap; + } + if (bottleneck > - i->tr_cap) bottleneck = - i -> tr_cap; + + + /* 2. Augmenting */ + /* 2a - the source tree */ + middle_arc -> sister -> r_cap += bottleneck; + middle_arc -> r_cap -= bottleneck; + for (i=middle_arc->sister->head; ; i=a->head) + { + a = i -> parent; + if (a == TERMINAL) break; + a -> r_cap += bottleneck; + a -> sister -> r_cap -= bottleneck; + if (!a->sister->r_cap) + { + set_orphan_front(i); // add i to the beginning of the adoption list + } + } + i -> tr_cap -= bottleneck; + if (!i->tr_cap) + { + set_orphan_front(i); // add i to the beginning of the adoption list + } + /* 2b - the sink tree */ + for (i=middle_arc->head; ; i=a->head) + { + a = i -> parent; + if (a == TERMINAL) break; + a -> sister -> r_cap += bottleneck; + a -> r_cap -= bottleneck; + if (!a->r_cap) + { + set_orphan_front(i); // add i to the beginning of the adoption list + } + } + i -> tr_cap += bottleneck; + if (!i->tr_cap) + { + set_orphan_front(i); // add i to the beginning of the adoption list + } + + + flow += bottleneck; +} + +/***********************************************************************/ + +template <typename captype, typename tcaptype, typename flowtype> + void Graph<captype,tcaptype,flowtype>::process_source_orphan(node *i) +{ + node *j; + arc *a0, *a0_min = NULL, *a; + int d, d_min = INFINITE_D; + + /* trying to find a new parent */ + for (a0=i->first; a0; a0=a0->next) + if (a0->sister->r_cap) + { + j = a0 -> head; + if (!j->is_sink && (a=j->parent)) + { + /* checking the origin of j */ + d = 0; + while ( 1 ) + { + if (j->TS == TIME) + { + d += j -> DIST; + break; + } + a = j -> parent; + d ++; + if (a==TERMINAL) + { + j -> TS = TIME; + j -> DIST = 1; + break; + } + if (a==ORPHAN) { d = INFINITE_D; break; } + j = a -> head; + } + if (d<INFINITE_D) /* j originates from the source - done */ + { + if (d<d_min) + { + a0_min = a0; + d_min = d; + } + /* set marks along the path */ + for (j=a0->head; j->TS!=TIME; j=j->parent->head) + { + j -> TS = TIME; + j -> DIST = d --; + } + } + } + } + + if (i->parent = a0_min) + { + i -> TS = TIME; + i -> DIST = d_min + 1; + } + else + { + /* no parent is found */ + add_to_changed_list(i); + + /* process neighbors */ + for (a0=i->first; a0; a0=a0->next) + { + j = a0 -> head; + if (!j->is_sink && (a=j->parent)) + { + if (a0->sister->r_cap) set_active(j); + if (a!=TERMINAL && a!=ORPHAN && a->head==i) + { + set_orphan_rear(j); // add j to the end of the adoption list + } + } + } + } +} + +template <typename captype, typename tcaptype, typename flowtype> + void Graph<captype,tcaptype,flowtype>::process_sink_orphan(node *i) +{ + node *j; + arc *a0, *a0_min = NULL, *a; + int d, d_min = INFINITE_D; + + /* trying to find a new parent */ + for (a0=i->first; a0; a0=a0->next) + if (a0->r_cap) + { + j = a0 -> head; + if (j->is_sink && (a=j->parent)) + { + /* checking the origin of j */ + d = 0; + while ( 1 ) + { + if (j->TS == TIME) + { + d += j -> DIST; + break; + } + a = j -> parent; + d ++; + if (a==TERMINAL) + { + j -> TS = TIME; + j -> DIST = 1; + break; + } + if (a==ORPHAN) { d = INFINITE_D; break; } + j = a -> head; + } + if (d<INFINITE_D) /* j originates from the sink - done */ + { + if (d<d_min) + { + a0_min = a0; + d_min = d; + } + /* set marks along the path */ + for (j=a0->head; j->TS!=TIME; j=j->parent->head) + { + j -> TS = TIME; + j -> DIST = d --; + } + } + } + } + + if (i->parent = a0_min) + { + i -> TS = TIME; + i -> DIST = d_min + 1; + } + else + { + /* no parent is found */ + add_to_changed_list(i); + + /* process neighbors */ + for (a0=i->first; a0; a0=a0->next) + { + j = a0 -> head; + if (j->is_sink && (a=j->parent)) + { + if (a0->r_cap) set_active(j); + if (a!=TERMINAL && a!=ORPHAN && a->head==i) + { + set_orphan_rear(j); // add j to the end of the adoption list + } + } + } + } +} + +/***********************************************************************/ + +template <typename captype, typename tcaptype, typename flowtype> + flowtype Graph<captype,tcaptype,flowtype>::maxflow(bool reuse_trees, Block<node_id>* _changed_list) +{ + node *i, *j, *current_node = NULL; + arc *a; + nodeptr *np, *np_next; + + if (!nodeptr_block) + { + nodeptr_block = new DBlock<nodeptr>(NODEPTR_BLOCK_SIZE, error_function); + } + + changed_list = _changed_list; + if (maxflow_iteration == 0 && reuse_trees) { if (error_function) (*error_function)("reuse_trees cannot be used in the first call to maxflow()!"); exit(1); } + if (changed_list && !reuse_trees) { if (error_function) (*error_function)("changed_list cannot be used without reuse_trees!"); exit(1); } + + if (reuse_trees) maxflow_reuse_trees_init(); + else maxflow_init(); + + // main loop + while ( 1 ) + { + if (utIsInterruptPending()) { /* check for a Ctrl-C event */ + mexPrintf("Ctrl-C Detected. END\n\n"); + mexEvalString("drawnow"); + return -1; + } + // mexEvalString("drawnow"); + // test_consistency(current_node); + + if ((i=current_node)) + { + i -> next = NULL; /* remove active flag */ + if (!i->parent) i = NULL; + } + if (!i) + { + if (!(i = next_active())) break; + } + + /* growth */ + if (!i->is_sink) + { + /* grow source tree */ + for (a=i->first; a; a=a->next) + if (a->r_cap) + { + j = a -> head; + if (!j->parent) + { + j -> is_sink = 0; + j -> parent = a -> sister; + j -> TS = i -> TS; + j -> DIST = i -> DIST + 1; + set_active(j); + add_to_changed_list(j); + } + else if (j->is_sink) break; + else if (j->TS <= i->TS && + j->DIST > i->DIST) + { + /* heuristic - trying to make the distance from j to the source shorter */ + j -> parent = a -> sister; + j -> TS = i -> TS; + j -> DIST = i -> DIST + 1; + } + } + } + else + { + /* grow sink tree */ + for (a=i->first; a; a=a->next) + if (a->sister->r_cap) + { + j = a -> head; + if (!j->parent) + { + j -> is_sink = 1; + j -> parent = a -> sister; + j -> TS = i -> TS; + j -> DIST = i -> DIST + 1; + set_active(j); + add_to_changed_list(j); + } + else if (!j->is_sink) { a = a -> sister; break; } + else if (j->TS <= i->TS && + j->DIST > i->DIST) + { + /* heuristic - trying to make the distance from j to the sink shorter */ + j -> parent = a -> sister; + j -> TS = i -> TS; + j -> DIST = i -> DIST + 1; + } + } + } + + TIME ++; + + if (a) + { + i -> next = i; /* set active flag */ + current_node = i; + + /* augmentation */ + augment(a); + /* augmentation end */ + + /* adoption */ + while ((np=orphan_first)) + { + np_next = np -> next; + np -> next = NULL; + + while ((np=orphan_first)) + { + orphan_first = np -> next; + i = np -> ptr; + nodeptr_block -> Delete(np); + if (!orphan_first) orphan_last = NULL; + if (i->is_sink) process_sink_orphan(i); + else process_source_orphan(i); + } + + orphan_first = np_next; + } + /* adoption end */ + } + else current_node = NULL; + } + // test_consistency(); + + if (!reuse_trees || (maxflow_iteration % 64) == 0) + { + delete nodeptr_block; + nodeptr_block = NULL; + } + + maxflow_iteration ++; + return flow; +} + +/***********************************************************************/ + + +template <typename captype, typename tcaptype, typename flowtype> + void Graph<captype,tcaptype,flowtype>::test_consistency(node* current_node) +{ + node *i; + arc *a; + int r; + int num1 = 0, num2 = 0; + + // test whether all nodes i with i->next!=NULL are indeed in the queue + for (i=nodes; i<node_last; i++) + { + if (i->next || i==current_node) num1 ++; + } + for (r=0; r<3; r++) + { + i = (r == 2) ? current_node : queue_first[r]; + if (i) + for ( ; ; i=i->next) + { + num2 ++; + if (i->next == i) + { + if (r<2) assert(i == queue_last[r]); + else assert(i == current_node); + break; + } + } + } + assert(num1 == num2); + + for (i=nodes; i<node_last; i++) + { + // test whether all edges in seach trees are non-saturated + if (i->parent == NULL) {} + else if (i->parent == ORPHAN) {} + else if (i->parent == TERMINAL) + { + if (!i->is_sink) assert(i->tr_cap > 0); + else assert(i->tr_cap < 0); + } + else + { + if (!i->is_sink) assert (i->parent->sister->r_cap > 0); + else assert (i->parent->r_cap > 0); + } + // test whether passive nodes in search trees have neighbors in + // a different tree through non-saturated edges + if (i->parent && !i->next) + { + if (!i->is_sink) + { + assert(i->tr_cap >= 0); + for (a=i->first; a; a=a->next) + { + if (a->r_cap > 0) assert(a->head->parent && !a->head->is_sink); + } + } + else + { + assert(i->tr_cap <= 0); + for (a=i->first; a; a=a->next) + { + if (a->sister->r_cap > 0) assert(a->head->parent && a->head->is_sink); + } + } + } + // test marking invariants + if (i->parent && i->parent!=ORPHAN && i->parent!=TERMINAL) + { + assert(i->TS <= i->parent->head->TS); + if (i->TS == i->parent->head->TS) assert(i->DIST > i->parent->head->DIST); + } + } +} + + + void Inst() + { + Graph<int,int,int> G(1,1); + G.maxflow(); + } \ No newline at end of file diff --git a/Functions/functions_auxiliary/click_points.m b/Functions/functions_auxiliary/click_points.m new file mode 100644 index 0000000..8e10f20 --- /dev/null +++ b/Functions/functions_auxiliary/click_points.m @@ -0,0 +1,13 @@ +function [xp,yp] = click_points + +hold on +[x,y,button] = ginputWhite(1); +xp = []; +yp = []; +while button==1 + xp = [xp,x]; + yp = [yp,y]; + plot(x,y,'co') + [x,y,button] = ginputWhite(1); +end +end \ No newline at end of file diff --git a/Functions/functions_auxiliary/compute_normals.m b/Functions/functions_auxiliary/compute_normals.m new file mode 100644 index 0000000..741500e --- /dev/null +++ b/Functions/functions_auxiliary/compute_normals.m @@ -0,0 +1,23 @@ +function N = compute_normals(S,open) +% normals for a closed (or open!) curve + +if nargin<2 + open = false; +end + +X = S([end,1:end,1],:); % extended S + +dX = X(1:end-1,:)-X(2:end,:); % dX +Ne = [dX(:,2),-dX(:,1)]; % edge normals orthogonal to dX +de = sum(Ne.^2,2).^0.5; % for normalization +nonzero = de~=0; +Ne(nonzero,:) = Ne(nonzero,:)./de(nonzero,[1 1]); % edge normals +N = 0.5*(Ne(1:end-1,:)+Ne(2:end,:)); % vertices normals +d = sum(N.^2,2).^0.5; % for normalization +nonzero = d~=0; +N(nonzero,:) = N(nonzero,:)./d(nonzero,[1 1]); + +if open + N(1,:) = Ne(2,:); + N(end,:) = Ne(end-1,:); +end \ No newline at end of file diff --git a/Functions/functions_auxiliary/distribute_points.m b/Functions/functions_auxiliary/distribute_points.m new file mode 100644 index 0000000..df0df46 --- /dev/null +++ b/Functions/functions_auxiliary/distribute_points.m @@ -0,0 +1,42 @@ +function p_new = distribute_points(p,type,value,open) +% DISTRIBUTE_POINTS Distributes snakes points equidistantly +% (NOTE: this version can also handle open snake) +% +% DISTRIBUTE_POINTS(P) keeps the number of points +% DISTRIBUTE_POINTS(P,'number',N) returns N points +% DISTRIBUTE_POINTS(P,'ael',d) returns average edge length d +% Author: vand@dtu.dk + +if nargin<4 + open = false; +end + +if ~open + p = p([1:end,1],:); % closing the curve +end +N = size(p,1); % number of points (+ 1 for closed curve) +dist = sqrt(sum(diff(p).^2,2)); % edge segment lengths +t = [0;cumsum(dist)]; % current positions +% if we want the fixed edge length then the new N could be computed +% from the total length of the curve which is t(end) + +if nargin<2 + N_new = N; +else + switch lower(type) + case 'number' + N_new = value+~open; + case 'ael' + N_new = round(t(end)/value+~open); + otherwise + error('Unknown distribution type.') + end +end + +tq = linspace(0,t(end),N_new)'; % equidistant positions +%p_new(:,1) = interp1(t,p(:,1),tq); % distributed x +%p_new(:,2) = interp1(t,p(:,2),tq); % distributed y +p_new = interp1(t,p,tq); +if ~open + p_new = p_new(1:end-1,:); % opening the curve again +end diff --git a/Functions/functions_auxiliary/ginputWhite.m b/Functions/functions_auxiliary/ginputWhite.m new file mode 100644 index 0000000..c9c1b22 --- /dev/null +++ b/Functions/functions_auxiliary/ginputWhite.m @@ -0,0 +1,319 @@ +function [out1,out2,out3] = ginputWhite(arg1) +%GINPUT Graphical input from mouse. +% [X,Y] = GINPUT(N) gets N points from the current axes and returns +% the X- and Y-coordinates in length N vectors X and Y. The cursor +% can be positioned using a mouse. Data points are entered by pressing +% a mouse button or any key on the keyboard except carriage return, +% which terminates the input before N points are entered. If the current +% axes is a geographic axes, the coordinates returned are latitude and +% longitude instead of X and Y. +% +% [X,Y] = GINPUT gathers an unlimited number of points until the +% return key is pressed. +% +% [X,Y,BUTTON] = GINPUT(N) returns a third result, BUTTON, that +% contains a vector of integers specifying which mouse button was +% used (1,2,3 from left) or ASCII numbers if a key on the keyboard +% was used. +% +% Examples: +% [x,y] = ginput; +% +% [x,y] = ginput(5); +% +% [x, y, button] = ginput(1); +% +% See also GTEXT, WAITFORBUTTONPRESS. + +% Copyright 1984-2018 The MathWorks, Inc. + +out1 = []; out2 = []; out3 = []; y = []; + +if ~matlab.ui.internal.isFigureShowEnabled + error(message('MATLAB:hg:NoDisplayNoFigureSupport', 'ginput')) +end + + % Check Inputs + if nargin == 0 + how_many = -1; + b = []; + else + how_many = arg1; + b = []; + if ~isPositiveScalarIntegerNumber(how_many) + error(message('MATLAB:ginput:NeedPositiveInt')) + end + if how_many == 0 + % If input argument is equal to zero points, + % give a warning and return empty for the outputs. + warning (message('MATLAB:ginput:InputArgumentZero')); + end + end + + % Get figure + fig = gcf; + drawnow; + figure(gcf); + + % Make sure the figure has an axes + gca(fig); + + % Setup the figure to disable interactive modes and activate pointers. + initialState = setupFcn(fig); + + % onCleanup object to restore everything to original state in event of + % completion, closing of figure errors or ctrl+c. + c = onCleanup(@() restoreFcn(initialState)); + + drawnow + char = 0; + + while how_many ~= 0 + waserr = 0; + try + keydown = wfbp; + catch %#ok<CTCH> + waserr = 1; + end + if(waserr == 1) + if(ishghandle(fig)) + cleanup(c); + error(message('MATLAB:ginput:Interrupted')); + else + cleanup(c); + error(message('MATLAB:ginput:FigureDeletionPause')); + end + end + % g467403 - ginput failed to discern clicks/keypresses on the figure it was + % registered to operate on and any other open figures whose handle + % visibility were set to off + figchildren = allchild(0); + if ~isempty(figchildren) + ptr_fig = figchildren(1); + else + error(message('MATLAB:ginput:FigureUnavailable')); + end + % old code -> ptr_fig = get(0,'CurrentFigure'); Fails when the + % clicked figure has handlevisibility set to callback + if(ptr_fig == fig) + if keydown + char = get(fig, 'CurrentCharacter'); + button = abs(get(fig, 'CurrentCharacter')); + else + button = get(fig, 'SelectionType'); + if strcmp(button,'open') + button = 1; + elseif strcmp(button,'normal') + button = 1; + elseif strcmp(button,'extend') + button = 2; + elseif strcmp(button,'alt') + button = 3; + else + error(message('MATLAB:ginput:InvalidSelection')) + end + end + + if(char == 13) % & how_many ~= 0) + % if the return key was pressed, char will == 13, + % and that's our signal to break out of here whether + % or not we have collected all the requested data + % points. + % If this was an early breakout, don't include + % the <Return> key info in the return arrays. + % We will no longer count it if it's the last input. + break; + end + + axes_handle = gca; + if ~(isa(axes_handle,'matlab.graphics.axis.Axes') ... + || isa(axes_handle,'matlab.graphics.axis.GeographicAxes')) + % If gca is not an axes, warn but keep listening for clicks. + % (There may still be other subplots with valid axes) + warning(message('MATLAB:Chart:UnsupportedConvenienceFunction', 'ginput', axes_handle.Type)); + continue + end + + drawnow; + pt = get(axes_handle, 'CurrentPoint'); + how_many = how_many - 1; + + + + out1 = [out1;pt(1,1)]; %#ok<AGROW> + y = [y;pt(1,2)]; %#ok<AGROW> + b = [b;button]; %#ok<AGROW> + end + end + + % Cleanup and Restore + cleanup(c); + + if nargout > 1 + out2 = y; + if nargout > 2 + out3 = b; + end + else + out1 = [out1 y]; + end + +end + +function valid = isPositiveScalarIntegerNumber(how_many) +valid = ~isa(how_many, 'matlab.graphics.Graphics') && ... % not a graphics handle + ~ischar(how_many) && ... % is numeric + isscalar(how_many) && ... % is scalar + (fix(how_many) == how_many) && ... % is integer in value + how_many >= 0; % is positive +end + +function key = wfbp +%WFBP Replacement for WAITFORBUTTONPRESS that has no side effects. + +fig = gcf; +current_char = []; %#ok<NASGU> + +% Now wait for that buttonpress, and check for error conditions +waserr = 0; +try + h=findall(fig,'Type','uimenu','Accelerator','C'); % Disabling ^C for edit menu so the only ^C is for + set(h,'Accelerator',''); % interrupting the function. + keydown = waitforbuttonpress; + current_char = double(get(fig,'CurrentCharacter')); % Capturing the character. + if~isempty(current_char) && (keydown == 1) % If the character was generated by the + if(current_char == 3) % current keypress AND is ^C, set 'waserr'to 1 + waserr = 1; % so that it errors out. + end + end + + set(h,'Accelerator','C'); % Set back the accelerator for edit menu. +catch %#ok<CTCH> + waserr = 1; +end +drawnow; +if(waserr == 1) + set(h,'Accelerator','C'); % Set back the accelerator if it errored out. + error(message('MATLAB:ginput:Interrupted')); +end + +if nargout>0, key = keydown; end +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +end + +function initialState = setupFcn(fig) + +% Store Figure Handle. +initialState.figureHandle = fig; + +% Suspend figure functions +initialState.uisuspendState = uisuspend(fig); + +% Disable Plottools Buttons +initialState.toolbar = findobj(allchild(fig),'flat','Type','uitoolbar'); +if ~isempty(initialState.toolbar) + initialState.ptButtons = [uigettool(initialState.toolbar,'Plottools.PlottoolsOff'), ... + uigettool(initialState.toolbar,'Plottools.PlottoolsOn')]; + initialState.ptState = get (initialState.ptButtons,'Enable'); + set (initialState.ptButtons,'Enable','off'); +end + +% Disable AxesToolbar +initialState.axes = findobj(allchild(fig),'-isa','matlab.graphics.axis.AbstractAxes'); +tb = get(initialState.axes, 'Toolbar'); +if ~isempty(tb) && ~iscell(tb) + initialState.toolbarVisible{1} = tb.Visible; + tb.Visible = 'off'; +else + for i=1:numel(tb) + if ~isempty(tb{i}) + initialState.toolbarVisible{i} = tb{i}.Visible; + tb{i}.Visible = 'off'; + end + end +end + +%Setup empty pointer +cdata = NaN(16,16); +hotspot = [8,8]; +set(gcf,'Pointer','custom','PointerShapeCData',cdata,'PointerShapeHotSpot',hotspot) + +% Create uicontrols to simulate fullcrosshair pointer. +initialState.CrossHair = createCrossHair(fig); + +% Adding this to enable automatic updating of currentpoint on the figure +% This function is also used to update the display of the fullcrosshair +% pointer and make them track the currentpoint. +set(fig,'WindowButtonMotionFcn',@(o,e) dummy()); % Add dummy so that the CurrentPoint is constantly updated +initialState.MouseListener = addlistener(fig,'WindowMouseMotion', @(o,e) updateCrossHair(o,initialState.CrossHair)); + +% Get the initial Figure Units +initialState.fig_units = get(fig,'Units'); +end + +function restoreFcn(initialState) +if ishghandle(initialState.figureHandle) + delete(initialState.CrossHair); + + % Figure Units + set(initialState.figureHandle,'Units',initialState.fig_units); + + set(initialState.figureHandle,'WindowButtonMotionFcn',''); + delete(initialState.MouseListener); + + % Plottools Icons + if ~isempty(initialState.toolbar) && ~isempty(initialState.ptButtons) + set (initialState.ptButtons(1),'Enable',initialState.ptState{1}); + set (initialState.ptButtons(2),'Enable',initialState.ptState{2}); + end + + % Restore axestoolbar + for i=1:numel(initialState.axes) + if ~isempty(initialState.axes(i).Toolbar) + initialState.axes(i).Toolbar.Visible_I = initialState.toolbarVisible{i}; + end + end + + % UISUSPEND + uirestore(initialState.uisuspendState); +end +end + +function updateCrossHair(fig, crossHair) +% update cross hair for figure. +gap = 3; % 3 pixel view port between the crosshairs +cp = hgconvertunits(fig, [fig.CurrentPoint 0 0], fig.Units, 'pixels', fig); +cp = cp(1:2); +figPos = hgconvertunits(fig, fig.Position, fig.Units, 'pixels', fig.Parent); +figWidth = figPos(3); +figHeight = figPos(4); + +% Early return if point is outside the figure +if cp(1) < gap || cp(2) < gap || cp(1)>figWidth-gap || cp(2)>figHeight-gap + return +end + +set(crossHair, 'Visible', 'on'); +thickness = 1; % 1 Pixel thin lines. +set(crossHair(1), 'Position', [0 cp(2) cp(1)-gap thickness]); +set(crossHair(2), 'Position', [cp(1)+gap cp(2) figWidth-cp(1)-gap thickness]); +set(crossHair(3), 'Position', [cp(1) 0 thickness cp(2)-gap]); +set(crossHair(4), 'Position', [cp(1) cp(2)+gap thickness figHeight-cp(2)-gap]); +end + +function crossHair = createCrossHair(fig) +% Create thin uicontrols with black backgrounds to simulate fullcrosshair pointer. +% 1: horizontal left, 2: horizontal right, 3: vertical bottom, 4: vertical top +for k = 1:4 + crossHair(k) = uicontrol(fig, 'Style', 'text', 'Visible', 'off', 'Units', 'pixels', 'BackgroundColor', [1 1 1], 'HandleVisibility', 'off', 'HitTest', 'off'); %#ok<AGROW> +end +end + +function cleanup(c) +if isvalid(c) + delete(c); +end +end + +function dummy(~,~) +end diff --git a/Functions/functions_auxiliary/registerImages.m b/Functions/functions_auxiliary/registerImages.m new file mode 100644 index 0000000..8d225e4 --- /dev/null +++ b/Functions/functions_auxiliary/registerImages.m @@ -0,0 +1,54 @@ +function [MOVINGREG] = registerImages(MOVING,FIXED,MatchThreshold) +%registerImages Register grayscale images using auto-generated code from Registration Estimator app. +% [MOVINGREG] = registerImages(MOVING,FIXED) Register grayscale images +% MOVING and FIXED using auto-generated code from the Registration +% Estimator app. The values for all registration parameters were set +% interactively in the app and result in the registered image stored in the +% structure array MOVINGREG. + +% Auto-generated by registrationEstimator app on 29-Apr-2020 +%----------------------------------------------------------- + + +% Feature-based techniques require license to Computer Vision Toolbox +checkLicense() + +% Default spatial referencing objects +fixedRefObj = imref2d(size(FIXED)); +movingRefObj = imref2d(size(MOVING)); + +% Detect SURF features +fixedPoints = detectSURFFeatures(FIXED,'MetricThreshold',750.000000,'NumOctaves',3,'NumScaleLevels',5); +movingPoints = detectSURFFeatures(MOVING,'MetricThreshold',750.000000,'NumOctaves',3,'NumScaleLevels',5); + +% Extract features +[fixedFeatures,fixedValidPoints] = extractFeatures(FIXED,fixedPoints,'Upright',false); +[movingFeatures,movingValidPoints] = extractFeatures(MOVING,movingPoints,'Upright',false); + +% Match features +indexPairs = matchFeatures(fixedFeatures,movingFeatures,'MatchThreshold',MatchThreshold,'MaxRatio',0.01*MatchThreshold); +fixedMatchedPoints = fixedValidPoints(indexPairs(:,1)); +movingMatchedPoints = movingValidPoints(indexPairs(:,2)); +MOVINGREG.FixedMatchedFeatures = fixedMatchedPoints; +MOVINGREG.MovingMatchedFeatures = movingMatchedPoints; + +% Apply transformation - Results may not be identical between runs because of the randomized nature of the algorithm +tform = estimateGeometricTransform(movingMatchedPoints,fixedMatchedPoints,'affine'); +MOVINGREG.Transformation = tform; +MOVINGREG.RegisteredImage = imwarp(MOVING, movingRefObj, tform, 'OutputView', fixedRefObj, 'SmoothEdges', true); + +% Store spatial referencing object +MOVINGREG.SpatialRefObj = fixedRefObj; + +end + +function checkLicense() + +% Check for license to Computer Vision Toolbox +CVSTStatus = license('test','Video_and_Image_Blockset'); +if ~CVSTStatus + error(message('images:imageRegistration:CVSTRequired')); +end + +end + diff --git a/Functions/functions_auxiliary/regularization_matrix_open.m b/Functions/functions_auxiliary/regularization_matrix_open.m new file mode 100644 index 0000000..85816be --- /dev/null +++ b/Functions/functions_auxiliary/regularization_matrix_open.m @@ -0,0 +1,14 @@ +function B = regularization_matrix_open(N,alpha,beta) +% B is an NxN matrix for imposing elasticity and rigidity to snakes +% alpha is weigth for second derivative (elasticity) +% beta is weigth for (-)fourth derivative (rigidity) + +r = zeros(1,N); +r(1:3) = alpha*[-2 1 0]/4 + beta*[-6 4 -1]/16; +r(end-1:end) = alpha*[0 1]/4 + beta*[-1 4]/16; +A = toeplitz(r); +A([1,2,end-1,end],:) = 0; +A(2,1:3) = alpha*[1 -2 1]/4; +A(end-1,end-2:end) = alpha*[1 -2 1]/4; + +B = inv(eye(N)-A); \ No newline at end of file diff --git a/Functions/functions_auxiliary/slice_points_interpolation.m b/Functions/functions_auxiliary/slice_points_interpolation.m new file mode 100644 index 0000000..e841338 --- /dev/null +++ b/Functions/functions_auxiliary/slice_points_interpolation.m @@ -0,0 +1,48 @@ +function pk = slice_points_interpolation(p1,p2,n,m,flag_fig) +% SLICE_POINTS_INTERPOLATION takes two sets of points and the range of +% interpolition n & m and return pk which is the interpolants points +% [n:(n-m+1):m] +% +% the sampling is done by computing +% v = p1-p2 +% pk = p2 + d/norm(v)*v where d is the increment of the distances +% +% written by bepi@dtu.dk first version 2019.12.02 + +%default no figure +if nargout < 3 + flag_fig = 0; +end + +d_p = sqrt(sum((p1-p2).^2,2)); + +pk = nan(n-m+1,3,length(d_p)); +for j = 1:length(d_p) + sim = linspace(0,d_p(j),n-m+1); + for i = 1:length(sim) + if sim(i) == 0 + pk(i,1:2,j) = p2(j,:); + else + pk(i,1:2,j) = p2(j,:) + (sim(i)/d_p(j)).*(p1(j,:)-p2(j,:)); + end + pk(i,3,j) = m + i-1;%n,m = (220:800)'; + end +end + +if flag_fig + figure, + plot3([p2(:,1),p2(:,1)]',... + [p1(:,2),p1(:,2)]',... + [ones(size(p1,1),1)*n,ones(size(p1,1),1)*m]') + xlabel('x') ; ylabel('y') ; zlabel('z') + hold on + + for s = 1:size(pk,3) + tmp = squeeze(pk(:,:,s)); + plot3(tmp(:,1),tmp(:,2),tmp(:,3),'-xm') + end +end + +end + + diff --git a/Functions/functions_cost/smoothsurface_cost.m b/Functions/functions_cost/smoothsurface_cost.m new file mode 100644 index 0000000..eb93a67 --- /dev/null +++ b/Functions/functions_cost/smoothsurface_cost.m @@ -0,0 +1,28 @@ +function cost = smoothsurface_cost(V,mu,std,s1,s2) +% abda@dtu.dk + +if nargin == 1 + mu = 23000; + std = 4000; + s1 = 5; + s2 = 1.5; +elseif nargin == 3 + s1 = 5; + s2 = 1.5; +end + +V_exp = 1/(std*sqrt(2*pi))*exp(-(V-mu).^2/(2*std^2)); +V_exp = V_exp/(max(V_exp(:))); +g = get_gauss(s1); +[~,dg] = get_gauss(s2); +cost = imfilter(imfilter(V_exp, dg','replicate'),g,'replicate'); + +cost = (cost-min(cost(:)))/(max(cost(:))-min(cost(:))); + +function [g,dg] = get_gauss(s) + +x = -ceil(3*s):ceil(3*s); +g = exp(-x.^2/(2*s*s)); +g = g/sum(g); +dg = -x/(s^2).*g; +%ddg = -g/(s^2) - x/(s^2).*dg; \ No newline at end of file diff --git a/Functions/functions_curvature/surfature.m b/Functions/functions_curvature/surfature.m new file mode 100644 index 0000000..93ef859 --- /dev/null +++ b/Functions/functions_curvature/surfature.m @@ -0,0 +1,70 @@ +function [K,H,Pmax,Pmin] = surfature(X,Y,Z) +% SURFATURE - COMPUTE GAUSSIAN AND MEAN CURVATURES OF A SURFACE +% [K,H] = SURFATURE(X,Y,Z), WHERE X,Y,Z ARE 2D ARRAYS OF POINTS ON THE +% SURFACE. K AND H ARE THE GAUSSIAN AND MEAN CURVATURES, RESPECTIVELY. +% SURFATURE RETURNS 2 ADDITIONAL ARGUEMENTS, +% [K,H,Pmax,Pmin] = SURFATURE(...), WHERE Pmax AND Pmin ARE THE MINIMUM +% AND MAXIMUM CURVATURES AT EACH POINT, RESPECTIVELY. +% +% modified by bepi@dtu.dk 2020.03.17 +% +% Example +% [X,Y,Z] = peaks; +% [K,H,P1,P2] = surfature(X,Y,Z); +% surf(X,Y,Z,H,'facecolor','interp'); +% set(gca,'clim',[-1,1]) + +% First Derivatives +[Xu,Xv] = gradient(X); +[Yu,Yv] = gradient(Y); +[Zu,Zv] = gradient(Z); + +% Second Derivatives +[Xuu,~] = gradient(Xu); +[Yuu,~] = gradient(Yu); +[Zuu,~] = gradient(Zu); + +[Xuv,Xvv] = gradient(Xv); +[Yuv,Yvv] = gradient(Yv); +[Zuv,Zvv] = gradient(Zv); + +% Reshape 2D Arrays into Vectors +Xu = Xu(:); Yu = Yu(:); Zu = Zu(:); +Xv = Xv(:); Yv = Yv(:); Zv = Zv(:); +Xuu = Xuu(:); Yuu = Yuu(:); Zuu = Zuu(:); +Xuv = Xuv(:); Yuv = Yuv(:); Zuv = Zuv(:); +Xvv = Xvv(:); Yvv = Yvv(:); Zvv = Zvv(:); + +Xu = [Xu Yu Zu]; +Xv = [Xv Yv Zv]; +Xuu = [Xuu Yuu Zuu]; +Xuv = [Xuv Yuv Zuv]; +Xvv = [Xvv Yvv Zvv]; + +% First fundamental Coeffecients of the surface (E,F,G) +E = dot(Xu,Xu,2); +F = dot(Xu,Xv,2); +G = dot(Xv,Xv,2); + +m = cross(Xu,Xv,2); +p = sqrt(dot(m,m,2)); +n = m./[p p p]; + +% Second fundamental Coeffecients of the surface (L,M,N) +L = dot(Xuu,n,2); +M = dot(Xuv,n,2); +N = dot(Xvv,n,2); + +[s,t] = size(Z); + +% Gaussian Curvature +K = (L.*N - M.^2)./(E.*G - F.^2); +K = reshape(K,s,t); + +% Mean Curvature +H = (E.*N + G.*L - 2.*F.*M)./(2*(E.*G - F.^2)); +H = reshape(H,s,t); + +% Principal Curvatures +Pmax = H + sqrt(H.^2 - K); +Pmin = H - sqrt(H.^2 - K); diff --git a/Functions/functions_gridcut/grid_cut.m b/Functions/functions_gridcut/grid_cut.m new file mode 100644 index 0000000..9635300 --- /dev/null +++ b/Functions/functions_gridcut/grid_cut.m @@ -0,0 +1,252 @@ +function s = grid_cut(s_cost, r_cost, delta_xy, wrap_xy, delta_lu) +%GRID_CUT detects terrain-like surfaces in a volumetric data. +% +% Detected surfaces are terrain-like, i.e. height z is a function of the +% position (x,y). Only on-surface costs, only in-region costs or both type +% of costs may be used. When using in-region costs for multiple surfaces, +% surfaces are non-intersecting and ordered, so that the first surface has +% the smallest z values, and the last surface has the largest z values. +% +% S = GRID_CUT(S_COST,R_COST,DELTA_XY,WRAP_XY,DELTA_LU) +% +% S_COST is a size (X,Y,Z,K) surface cost function. Cost (x,y,z,k) is an +% inverse to likelihood of a voxel (x,y,z) containing surface k. +% K is the number of surfaces and Z is up. When using only in-region +% costs, S_COST should either contain only zeros or be empty. +% R_COST is a size (X,Y,Z,K+1) region cost function. Cost (x,y,z,k) is an +% inverse to likelihood of a voxel (x,y,z) being in a region between +% the surface k and k+1, where the first and the last region are +% boundedend with the volume boundary. When using only on-surface +% costs, R_COST should either contain only zeros or be empty. +% DELTA_XY is a size (K,2) array of stiffness parameters for x and y. If a +% size (1,2) array is given, the same stiffness parameteres are used +% for all surfaces. If size (K,1) array is given, the same stiffness +% is used for x and y. +% WRAP_XY is a length 2 array of boolean wrap options for x and y. If not +% given defaults to false. +% DELTA_LU is a size (K-1,2) array of lower and upper surface overlaps, +% [dl du]. The constraint is: dl <= surf_k - surf_k+1 <= du. When +% using in-region costs, the surfaces are non-intersecting and +% ordered which requires dl > 0 and du >= dl. If a size (1,2) array +% is given, the same overlap parameteres are used for all surfaces. +% If not given, defaults to "no constraint" (dl=-Z, du=Z) when using +% only on-surface costs and to "no overlap" (dl=1, du=Z) otherwise. +% S is a size (X,Y,K) matrix of z coordinates for K segmented surfaces. +% +% Based on: +% "Optimal surface segmentation in volumetric images-a graph-theoretic +% approach." Li, Wu, Chen and Sonka. PAMI 2006. +% "Incorporation of Regional Information in Optimal 3-D Graph Search with +% Application for Intraretinal Layer Segmentation of Optical Coherence +% Tomography Images". Haeker, Wu, Abramoff, Kardon and Sonka. IPMI 2007. +% +% Author: Vedrana Andersen Dahl, vand@dtu.dk, 2013 +% +% NOTE: needs Kolmogorovs implementation of the algorithm from +% "An Experimental Comparison of Min-Cut/Max-Flow Algorithms for +% Energy Minimization in Vision." +% Yuri Boykov and Vladimir Kolmogorov. PAMI 2004 + +% assigning an unique index to each vertex in the first 3D graph (first surface) + +if nargin<5 + delta_lu = []; +end +if nargin<4 + wrap_xy = []; +end +[s_cost, r_cost, delta_xy, wrap_xy, delta_lu] = assign_defaults... + (s_cost, r_cost, delta_xy, wrap_xy, delta_lu); +[X,Y,Z,K] = size(s_cost); +dimension = [X Y Z]; +indices = reshape(1:prod(dimension),dimension); +base = indices(:,:,1); +next_surface = prod(dimension); % adding to indices is a shift to next surface +layers = (0:(K-1))*next_surface; + +wrap = [wrap_xy 0]; % we do not wrap in z direction + +% EDGES WHICH ARE THE SAME FOR ALL SURFACES: +% intracolumn arcs pointing down, Equation (2) +Ea1 = displacement_to_edges(indices, [0 0 -1], wrap); % first surface +Ea = repmat(Ea1,[K 1]) + kron(layers(:),ones(size(Ea1))); % all surfaces +Ea = [Ea,ones(size(Ea,1),1)*[inf,0]]; % assigning [inf 0] weight +% base edges, part of intercolumn arcs, Equation (3) +erxb1 = displacement_to_edges(base, [1 0 0], wrap); +eryb1 = displacement_to_edges(base, [0 1 0], wrap); +Erb1 = [erxb1; eryb1]; % first surface +Erb = repmat(Erb1,[K 1]) + kron(layers(:),ones(size(Erb1))); % all surfaces +% assigning [inf inf] weight, base edges are in both directions +Erb = [Erb,ones(size(Erb,1),1)*[inf,inf]]; + +% EDGES WHICH DEPEND ON SURFACE STIFFNESS: +% slanted edges, part of intercolumn arcs, Equation (3) +Erpm = []; % preallocation length could be computed from X,Y,Z,delta and wrap +for k = 1:K + erxp = displacement_to_edges(indices, [1 0 -delta_xy(k,1)], wrap); + erxm = displacement_to_edges(indices, [-1 0 -delta_xy(k,1)], wrap); + eryp = displacement_to_edges(indices, [0 1 -delta_xy(k,2)], wrap); + erym = displacement_to_edges(indices, [0 -1 -delta_xy(k,2)], wrap); + erpm = [erxp; erxm; eryp; erym] + layers(k); + Erpm = [Erpm;erpm]; +end +% assigning [inf 0] weight, slanted edges are in one direction +Erpm = [Erpm,ones(size(Erpm,1),1)*[inf,0]]; +Er = [Erpm; Erb]; % all inter edges, for all surfaces +E = [Ea;Er]; % all intracolumn and intercolumn edges, for all surfaces + +% EDGES WHICH DEPEND ON DISTANCE BETWEEN SURFACES: +% intersurface arc, Equation (4) +if K>1 % only if we have more than 1 surface + Es = []; % preallocation length could be computed + for k = 1:K-1 + esl = displacement_to_edges(indices, [0 0 delta_lu(k,1)], wrap); + esl = esl + ones(size(esl,1),1)*layers([k,k+1]); + esu = displacement_to_edges(indices, [0 0 -delta_lu(k,2)], wrap); + esu = esu + ones(size(esu,1),1)*layers([k+1,k]); + es = [esl;esu]; + Es = [Es;es]; + end + Es = [Es,ones(size(Es,1),1)*[inf,0]]; % assigning [inf 0] weight + + % intersurface base edges + esb = [layers(1:end-1)',layers(2:end)']+1; %first vertex in all surfaces + Esb = [esb,ones(K-1,1)*[inf,inf]]; % assigning [inf inf] + E = [E;Es;Esb]; % all intracolumn, intercolumn and intersurface edges, for all surfaces +end + +% EDGES WHICH DEPEND ON SURFACE LIKELIHOOD: +% up to here we do not use s_cost -- consider efficient algorithm if solving +% multiple problems of the same size +% vertex s_cost, Equation (1), done simulatniously for all surfaces +w_on = -1*ones([dimension,K]); % to prevent empty solution, see second half of section 4.1 +w_on(:,:,2:end,:) = double(s_cost(:,:,2:end,:))-double(s_cost(:,:,1:end-1,:)); +% In case of layered surfaces vertices which can't be realized should be removed, +% i.e. topmost vertices of lower surface and lowest vertices of higher surface. +% Instead of removing vertices, I assign inf weight to topmost vertices. +% And this only when delta_lu are both positive (both negative can be +% avoided by proper ordering of surfaces). +if K>1 % only if we have more than 1 surface + for k=1:K-1 % assigning inf on-surface weights instead of removing vertices + if delta_lu(k,1)>0 && delta_lu(k,1)<= delta_lu(k,2) % bit clumsy + w_on(:,:,end-delta_lu(k,1)+1:end,k) = inf; + end + end +end + +% In-region cost, converting to double to avoid problems when using images +w_in = double(r_cost(:,:,:,1:end-1))-double(r_cost(:,:,:,2:end)); +% There are issues concerning in-region cost e.g. a better way of preventing +% empty solutions or topmost solutions. +w_in(:,:,1,:) = -inf; % preventing empty solution + +w = w_on + w_in; + +Vp_ix = find(w(:)>=0); % positive vertices, to be connected to sink +Vm_ix = find(w(:)<0); % negative vertices, to be connected to source +Es = [Vm_ix, -w(Vm_ix), zeros(length(Vm_ix),1)]; % source edges +Et = [Vp_ix, zeros(length(Vp_ix),1), w(Vp_ix)]; % sink edges +Est = [Es;Et]; % all terminal edges + +% FINDING GRAPH CUT USING MAGIC +Scut = GraphCutMex(prod(dimension)*K,Est,E); + +% retreiving surfaces as the upper envelope of Scut +S = zeros(X,Y,Z,K); +S(Scut) = 1; +s = zeros(X,Y,K); +for ki = 1:K + for x = 1:X + for y = 1:Y + s(x,y,ki) = find(S(x,y,:,ki),1,'last'); + end + end +end +end + +% NOTE: when some of the intersurface edges point upwards, i.e. when +% delta_l is positive, the lowest delta_l rows of a graph for higher +% surface can not appear in any feasible solution and can be removed. +% This has NOT been implemented here. + +function edges = displacement_to_edges(indices, disp, wrap) +% indices -- 3D volume of indices +% disp -- length 3 vector of displacements, given as [x y,z] +% wrapping -- length 3 vector of boolean options, given as [wrapx wrapy wrapz] +% edges -- two columns of indices, each line is an edge. + +[x_from,x_into] = displace_1D_indices(size(indices,1),disp(1),wrap(1)); +[y_from,y_into] = displace_1D_indices(size(indices,2),disp(2),wrap(2)); +[z_from,z_into] = displace_1D_indices(size(indices,3),disp(3),wrap(3)); + +indices_from = indices(x_from,y_from,z_from); +indices_into = indices(x_into,y_into,z_into); + +edges = [indices_from(:),indices_into(:)]; +end + +function [from,into] = displace_1D_indices(dim,disp,wrap) +% dim -- length of the indices vector +% disp -- length of the displacement +% wrap -- boolean, indicating trimming or wrapping + +indices = 1:dim; +if wrap + from = indices([1-min(disp,0):end,1:-min(disp,0)]); + into = indices([1+max(disp,0):end,1:max(disp,0)]); +else + from = indices(1-min(disp,0):end-max(disp,0)); + into = indices(1+max(disp,0):end+min(disp,0)); +end +end + +function [s_cost, r_cost, delta_xy, wrap_xy, delta_lu] = assign_defaults... + (s_cost, r_cost, delta_xy, wrap_xy, delta_lu) +% either cost_s or cost_r need to be given (not empty and not all zeros) +if isempty(s_cost) + s_cost = zeros(size(r_cost)-[0,0,0,1]); +end +if isempty(r_cost) + r_cost = zeros([size(s_cost,1),size(s_cost,2),size(s_cost,3),... + size(s_cost,4)]+[0,0,0,1]); % to allow s_cost to be 3D + regional = false; +elseif all(r_cost(:)==0) + regional = false; +else + regional = true; +end + +[X,Y,Z,K] = size(s_cost); +[Xr,Yr,Zr,Krplus1] = size(r_cost); +if ~X==Xr || ~Y==Yr || ~Z==Zr || ~(K+1)==Krplus1 + error('Error using grid_cut. Dimensions of s_cost and r_cost must agree.') +end + +% smoothness constraint may be given once for all surfaces +if size(delta_xy,1)==1 + delta_xy = ones(K,1)*delta_xy; +end +% smoothness constraint may be given once for both directions +if size(delta_xy,2)==1 + delta_xy = delta_xy*ones(1,2); +end + +if isempty(wrap_xy) || (numel(wrap_xy)==1 && wrap_xy==0) + wrap_xy = [0 0]; +end + +% overlap constraint defaults to no overlap in region case +% and no constraint in surface case +if isempty(delta_lu) + if regional % no overlap + delta_lu = [1 Z]; + else % no constraint + delta_lu = [-Z Z]; + end +end + +% overlap constraint may be given once for all surface pairs +if all(size(delta_lu)==[1,2]) + delta_lu = ones(K-1,1)*delta_lu; +end +end \ No newline at end of file diff --git a/Functions/functions_mesh/do_mesh_example.m b/Functions/functions_mesh/do_mesh_example.m new file mode 100644 index 0000000..6166d1a --- /dev/null +++ b/Functions/functions_mesh/do_mesh_example.m @@ -0,0 +1,87 @@ +clear all + +Lx = 2; +Ly = 1.3; +Lz = 0.5; + +nx = 2;%10 +ny = 3;%7 +nz = 4;%5 + +cnt = 1; +for i=1:nx + for j=1:ny + for k=1:nz + nodes(cnt,:) = [cnt i*Lx/nx j*Ly/ny k*Lz/nz]; + cnt = cnt + 1; + end + end +end + +number_of_nodes = cnt-1; + +clf,plot3(nodes(:,2),nodes(:,3),nodes(:,4),'.') + +elements = []; +cnt = 1; +for i=1:nx-1 + for j=1:ny-1 + for k=1:nz-1 + x0 = i*Lx/nx; + y0 = j*Ly/ny; + z0 = k*Lz/nz; + x1 = (i+1)*Lx/nx; + y1 = (j+1)*Ly/ny; + z1 = (k+1)*Lz/nz; + + dist_to_nodes = ((nodes(:,2)-x0).^2+(nodes(:,3)-y0).^2+(nodes(:,4)-z0).^2); + [minval,minidx] = min(dist_to_nodes); + corner(1) = minidx; + dist_to_nodes = ((nodes(:,2)-x1).^2+(nodes(:,3)-y0).^2+(nodes(:,4)-z0).^2); + [minval,minidx] = min(dist_to_nodes); + corner(2) = minidx; + dist_to_nodes = ((nodes(:,2)-x1).^2+(nodes(:,3)-y1).^2+(nodes(:,4)-z0).^2); + [minval,minidx] = min(dist_to_nodes); + corner(3) = minidx; + dist_to_nodes = ((nodes(:,2)-x0).^2+(nodes(:,3)-y1).^2+(nodes(:,4)-z0).^2); + [minval,minidx] = min(dist_to_nodes); + corner(4) = minidx; + + dist_to_nodes = ((nodes(:,2)-x0).^2+(nodes(:,3)-y0).^2+(nodes(:,4)-z1).^2); + [minval,minidx] = min(dist_to_nodes); + corner(5) = minidx; + + dist_to_nodes = ((nodes(:,2)-x1).^2+(nodes(:,3)-y0).^2+(nodes(:,4)-z1).^2); + [minval,minidx] = min(dist_to_nodes); + corner(6) = minidx; + + dist_to_nodes = ((nodes(:,2)-x1).^2+(nodes(:,3)-y1).^2+(nodes(:,4)-z1).^2); + [minval,minidx] = min(dist_to_nodes); + corner(7) = minidx; + dist_to_nodes = ((nodes(:,2)-x0).^2+(nodes(:,3)-y1).^2+(nodes(:,4)-z1).^2); + [minval,minidx] = min(dist_to_nodes); + corner(8) = minidx; + + elements(cnt,:)=[cnt corner([1 2 3 4 5 6 7 8 ])]; + cnt=cnt+1; + + end + end +end + +figure,patch('Faces',elements(:,2:end),'Vertices',nodes(:,2:4)) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% fid = fopen('output_mesh_example.inp','w'); +% fprintf(fid,'*Part, name=my_mesh \n'); +% fprintf(fid,'*Node \n'); +% for i=1:size(nodes,1) +% fprintf(fid,'%d, %f, %f, %f \n',nodes(i,:)); +% end +% fprintf(fid,'*Element, type=C3D8R \n'); +% for i = 1:size(elements,1) +% fprintf(fid,'%d, %d, %d, %d, %d, %d, %d, %d, %d \n',elements(i,:)); +% end +% +% fprintf(fid,'*End Part \n'); \ No newline at end of file diff --git a/Functions/functions_mesh/elements_mesh.m b/Functions/functions_mesh/elements_mesh.m new file mode 100644 index 0000000..f62f26a --- /dev/null +++ b/Functions/functions_mesh/elements_mesh.m @@ -0,0 +1,19 @@ +function ele = elements_mesh(mesh) + +sz0 = size(mesh); +ny = sz0(1); +nz = sz0(2); +cnt = 1; +ele = zeros((nz-1)*(ny-1),9); +%h = waitbar(0,'1','Name',inputname(mesh)); +for j = 1:ny-1 + for k = 1:nz-1 + i = (j-1)*nz+k; + ele(cnt,:)=[cnt i ny*nz+i ny*nz+nz+i nz+i i+1 ny*nz+i+1 ny*nz+nz+i+1 nz+i+1]; + cnt=cnt+1; + end + %waitbar(j/(ny-1),h,sprintf('j: %d',j)) +end +%close(h) + +end \ No newline at end of file diff --git a/Functions/functions_mesh/write_mesh.m b/Functions/functions_mesh/write_mesh.m new file mode 100644 index 0000000..9495f45 --- /dev/null +++ b/Functions/functions_mesh/write_mesh.m @@ -0,0 +1,18 @@ +function write_mesh(nodes,elements,filename) + +fid = fopen([filename,'.inp'],'w'); +[~,name,~] = fileparts(filename); +fprintf(fid,'*Part, name=%s \n',name); +fprintf(fid,'*Node \n'); +for i=1:size(nodes,1) + fprintf(fid,'%d, %f, %f, %f \n',nodes(i,:)); +end + +fprintf(fid,'*Element, type=C3D8R \n'); +for i = 1:size(elements,1) + fprintf(fid,'%d, %d, %d, %d, %d, %d, %d, %d, %d \n',elements(i,:)); +end + +fprintf(fid,'*End Part \n'); +fclose(fid); +end \ No newline at end of file diff --git a/Functions/functions_visualization/show_matvol.m b/Functions/functions_visualization/show_matvol.m new file mode 100644 index 0000000..24992ce --- /dev/null +++ b/Functions/functions_visualization/show_matvol.m @@ -0,0 +1,48 @@ +function show_matvol(V,clim) +% SHOW_MATVOL Shows volumetric data +% show_matvol(V,clim) +% Inputs: volume, grayscale color limits (optional) +% Copyright 2018 Vedrana Andersen Dahl, vand@dtu.dk + +figure('Units','Normalized','Position',[0.1 0.3 0.5 0.6],... + 'KeyPressFcn',@key_press); +dim = size(V); +if nargin<2 || isempty(clim) + clim = [min(double(V(:))),max(double(V(:)))]; +end +z = round(0.5*(dim(3)+1)); +%update_drawing +i = imagesc(V(:,:,z),clim); +title(['slice ',num2str(z),'/',num2str(dim(3))]), axis image ij +colormap gray +drawnow + +%%%%%%%%%% CALLBACK FUNCTIONS %%%%%%%%%% + function key_press(~,object) + % keyboard commands + switch object.Key + case 'uparrow' + z = min(z+1,dim(3)); + case 'downarrow' + z = max(z-1,1); + case 'rightarrow' + z = min(z+10,dim(3)); + case 'leftarrow' + z = max(z-10,1); + case 'pagedown' + z = min(z+50,dim(3)); + case 'pageup' + z = max(z-50,1); + end + update_drawing + end + +%%%%%%%%%% HELPING FUNCTIONS %%%%%%%%%% + function update_drawing + set(i,'CData',V(:,:,z)) + title(['slice ',num2str(z),'/',num2str(dim(3))]) + drawnow + end + +end + diff --git a/Functions/functions_visualization/suptitle_modified.m b/Functions/functions_visualization/suptitle_modified.m new file mode 100644 index 0000000..3fafe38 --- /dev/null +++ b/Functions/functions_visualization/suptitle_modified.m @@ -0,0 +1,109 @@ +function hout=suptitle_modified(str,interpreter) +%SUPTITLE puts a title above all subplots. +% +% SUPTITLE('text') adds text to the top of the figure +% above all subplots (a "super title"). Use this function +% after all subplot commands. +% +% SUPTITLE is a helper function for yeastdemo. + +% Copyright 2003-2014 The MathWorks, Inc. + + +% Warning: If the figure or axis units are non-default, this +% function will temporarily change the units. + +% Parameters used to position the supertitle. + +% Amount of the figure window devoted to subplots +plotregion = .92; + +% Y position of title in normalized coordinates +titleypos = .95; + +% Fontsize for supertitle +fs = get(gcf,'defaultaxesfontsize')+4; + +% Fudge factor to adjust y spacing between subplots +fudge=1; + +haold = gca; +figunits = get(gcf,'units'); + +% Get the (approximate) difference between full height (plot + title +% + xlabel) and bounding rectangle. + +if ~strcmp(figunits,'pixels') + set(gcf,'units','pixels'); + pos = get(gcf,'position'); + set(gcf,'units',figunits); +else + pos = get(gcf,'position'); +end +ff = (fs-4)*1.27*5/pos(4)*fudge; + +% The 5 here reflects about 3 characters of height below +% an axis and 2 above. 1.27 is pixels per point. + +% Determine the bounding rectangle for all the plots + +h = findobj(gcf,'Type','axes'); + +oldUnits = get(h, {'Units'}); +if ~all(strcmp(oldUnits, 'normalized')) + % This code is based on normalized units, so we need to temporarily + % change the axes to normalized units. + set(h, 'Units', 'normalized'); + cleanup = onCleanup(@()resetUnits(h, oldUnits)); +end + +max_y=0; +min_y=1; +oldtitle = []; +numAxes = length(h); +thePositions = zeros(numAxes,4); +for i=1:numAxes + pos=get(h(i),'pos'); + thePositions(i,:) = pos; + if ~strcmp(get(h(i),'Tag'),'suptitle') + if pos(2) < min_y + min_y=pos(2)-ff/5*3; + end + if pos(4)+pos(2) > max_y + max_y=pos(4)+pos(2)+ff/5*2; + end + else + oldtitle = h(i); + end +end + +if max_y > plotregion + scale = (plotregion-min_y)/(max_y-min_y); + for i=1:numAxes + pos = thePositions(i,:); + pos(2) = (pos(2)-min_y)*scale+min_y; + pos(4) = pos(4)*scale-(1-scale)*ff/5*3; + set(h(i),'position',pos); + end +end + +np = get(gcf,'nextplot'); +set(gcf,'nextplot','add'); +if ~isempty(oldtitle) + delete(oldtitle); +end +axes('pos',[0 1 1 1],'visible','off','Tag','suptitle'); +ht=text(.5,titleypos-1,str,'Interpreter',interpreter);set(ht,'horizontalalignment','center','fontsize',fs); +set(gcf,'nextplot',np); +axes(haold); +if nargout + hout=ht; +end +end + +function resetUnits(h, oldUnits) + % Reset units on axes object. Note that one of these objects could have + % been an old supertitle that has since been deleted. + valid = isgraphics(h); + set(h(valid), {'Units'}, oldUnits(valid)); +end \ No newline at end of file diff --git a/LayerDetection.m b/LayerDetection.m index 6db4c49..81252ca 100644 --- a/LayerDetection.m +++ b/LayerDetection.m @@ -1,7 +1,4 @@ %% detecting layers -flag_save = 1; -flag_fig = 0; % if you want to check the results - % create result folder save_folder = 'Results\layer\'; if ~exist(save_folder,'dir') diff --git a/PointSelection.m b/PointSelection.m index 0d60119..7eb0e6f 100644 --- a/PointSelection.m +++ b/PointSelection.m @@ -1,189 +1,185 @@ %% move from pipeline to here to select the points -flag_run = 1; save_folder = 'Results\point\'; if ~exist(save_folder,'dir') mkdir(save_folder) end -if flag_run - %% contrast enhancement - ce = [.7 1.5]; - - points = []; - points.contrast_enhansed_range = ce;%contrast enhansed range - %% initail points layer - - %f = msgbox({'Suggestions:';'0 & 45 dg: first & last slice';'90 & 180 dg: first, mid & last or first, 1/3, 2/3 & last'},'Choose Slices','warn'); - fprintf('Suggestions:\n0 & 45 dg: first & last slice\n90 & 180 dg: first, middle & last slice or\n first, 1/3, 2/3 & last slice\n') - show_matvol(Vol) - % move to desire slice and run this line to get the points for that slice - fprintf('Controls\n--------\n up-arrow : Next slice in volume \n down-arrow : Previous slice in volume \n right-arrow : +10 slices \n left-arrow : -10 slices \n PgUp : -50 slices \n PgDown : +50 slices \n') - fprintf('Choose the slices by scrolling in the volume and press Enter \n DO NOT CLOSE THE FIGURE!') - input(''); - - answer = inputdlg('Enter space-separated slice numbers:','Slices',[1 50],{'100 2550'}); - points.slice_no = str2num(answer{1}); - - num_layers = length(points.slice_no); - - %% select points, measure the length and distribute points - for l = 1:2 - flag_layer = layer_name{l}; - fprintf('%s layer:\n',flag_layer) - switch length(points.slice_no) - case 2 - fprintf('Go to slice %d and select points on the %s layer\n',points.slice_no(1),flag_layer) - input(''); - [x1,y1] = click_points; - fprintf('Go to slice %d and select %d points on the %s layer\n',points.slice_no(2),length(x1),flag_layer) - input(''); - [x2,y2] = click_points; - - pts1 = round([x1',y1']); - pts2 = round([x2',y2']); - points.two_slice = cat(3,pts1,pts2); - - if l == 1 %compute the length of the layers. this gives us number of px per layers and we keep it same for inner and outer layer - dx = []; - dy = []; - len0 = []; - for s = 1:2 - dx = points.two_slice(1:end-1,1,s)-points.two_slice(2:end,1,s); - dy = points.two_slice(1:end-1,2,s)-points.two_slice(2:end,2,s); - len0(1,s) = sum(sqrt(dx.^2+dy.^2)); - end - m_l = round(mean(len0)); - end - - p_new1 = distribute_points(pts1,'number',m_l,1); - p_new2 = distribute_points(pts2,'number',m_l,1); - - points.all_slice = slice_points_interpolation(p_new2,p_new1,... - points.slice_no(2),points.slice_no(1),0); +%% initail points layer +points = []; +points.contrast_enhansed_range = ce;%contrast enhansed range + +fprintf('Suggestions:\n0 & 45 dg: first & last slice\n90 & 180 dg: first, middle & last slice or\n first, 1/3, 2/3 & last slice\n') +show_matvol(Vol) + +% move to desire slice and run this line to get the points for that slice +fprintf('Controls\n--------\n up-arrow : Next slice in volume \n down-arrow : Previous slice in volume \n right-arrow : +10 slices \n left-arrow : -10 slices \n PgUp : -50 slices \n PgDown : +50 slices \n') +fprintf('Choose the slices by scrolling in the volume and press Enter \n DO NOT CLOSE THE FIGURE!') +input(''); + +answer = inputdlg('Enter space-separated slice numbers:','Slices',[1 50],{'100 2550'}); +points.slice_no = str2num(answer{1}); + +num_layers = length(points.slice_no); + +%% select points, measure the length and distribute points +for l = 1:2 + flag_layer = layer_name{l}; + fprintf('%s layer:\n',flag_layer) + switch length(points.slice_no) + case 2 + fprintf('Go to slice %d and select points on the %s layer\n',points.slice_no(1),flag_layer) + input(''); + [x1,y1] = click_points; + fprintf('Go to slice %d and select %d points on the %s layer\n',points.slice_no(2),length(x1),flag_layer) + input(''); + [x2,y2] = click_points; + + pts1 = round([x1',y1']); + pts2 = round([x2',y2']); + points.two_slice = cat(3,pts1,pts2); + + if l == 1 %compute the length of the layers. this gives us number of px per layers and we keep it same for inner and outer layer dx = []; dy = []; - len1 = []; - for s = 1:size(points.all_slice,1) - dx = points.all_slice(s,1,1:end-1)-points.all_slice(s,1,2:end); - dy = points.all_slice(s,2,1:end-1)-points.all_slice(s,2,2:end); - len1(1,s) = sum(sqrt(dx.^2+dy.^2)); - end - fprintf('Approximated length ~ %d or %d \n',m_l,round(mean(len1))); - - case 3 - - fprintf('Go to slice %d and select points on the %s layer\n',points.slice_no(1),flag_layer) - input(''); - [x1,y1] = click_points; - fprintf('Go to slice %d and select %d points on the %s layer\n',points.slice_no(2),length(x1),flag_layer) - input(''); - [x2,y2] = click_points; - fprintf('Go to slice %d and select %d points on the %s layer\n',points.slice_no(3),length(x1),flag_layer) - input(''); - [x3,y3] = click_points; - - pts1 = round([x1',y1']); - pts2 = round([x2',y2']); - pts3 = round([x3',y3']); - - points.three_slice = cat(3,pts1,pts2,pts3); - - if l == 1 %compute the length of the layers. this gives us number of px per layers and we keep it same for inner and outer layer - dx = []; - dy = []; - len0 = []; - for s = 1:3 - dx = points.three_slice(1:end-1,1,s)-points.three_slice(2:end,1,s); - dy = points.three_slice(1:end-1,2,s)-points.three_slice(2:end,2,s); - len0(1,s) = sum(sqrt(dx.^2+dy.^2)); - end - m_l = round(mean(len0)); + len0 = []; + for s = 1:2 + dx = points.two_slice(1:end-1,1,s)-points.two_slice(2:end,1,s); + dy = points.two_slice(1:end-1,2,s)-points.two_slice(2:end,2,s); + len0(1,s) = sum(sqrt(dx.^2+dy.^2)); end - - p_new1 = distribute_points(pts1,'number',m_l,1); - p_new2 = distribute_points(pts2,'number',m_l,1); - p_new3 = distribute_points(pts3,'number',m_l,1); - - slice_23 = slice_points_interpolation(p_new3,p_new2,... - points.slice_no(3),points.slice_no(2),0); - slice_12 = slice_points_interpolation(p_new2,p_new1,... - points.slice_no(2)-1,points.slice_no(1),0); - points.all_slice = [slice_12;slice_23]; - + m_l = round(mean(len0)); + end + + p_new1 = distribute_points(pts1,'number',m_l,1); + p_new2 = distribute_points(pts2,'number',m_l,1); + + points.all_slice = slice_points_interpolation(p_new2,p_new1,... + points.slice_no(2),points.slice_no(1),0); + dx = []; + dy = []; + len1 = []; + for s = 1:size(points.all_slice,1) + dx = points.all_slice(s,1,1:end-1)-points.all_slice(s,1,2:end); + dy = points.all_slice(s,2,1:end-1)-points.all_slice(s,2,2:end); + len1(1,s) = sum(sqrt(dx.^2+dy.^2)); + end + fprintf('Approximated length ~ %d or %d \n',m_l,round(mean(len1))); + + case 3 + + fprintf('Go to slice %d and select points on the %s layer\n',points.slice_no(1),flag_layer) + input(''); + [x1,y1] = click_points; + fprintf('Go to slice %d and select %d points on the %s layer\n',points.slice_no(2),length(x1),flag_layer) + input(''); + [x2,y2] = click_points; + fprintf('Go to slice %d and select %d points on the %s layer\n',points.slice_no(3),length(x1),flag_layer) + input(''); + [x3,y3] = click_points; + + pts1 = round([x1',y1']); + pts2 = round([x2',y2']); + pts3 = round([x3',y3']); + + points.three_slice = cat(3,pts1,pts2,pts3); + + if l == 1 %compute the length of the layers. this gives us number of px per layers and we keep it same for inner and outer layer dx = []; dy = []; - len1 = []; - for s = 1:size(points.all_slice,1) - dx = points.all_slice(s,1,1:end-1)-points.all_slice(s,1,2:end); - dy = points.all_slice(s,2,1:end-1)-points.all_slice(s,2,2:end); - len1(1,s) = sum(sqrt(dx.^2+dy.^2)); + len0 = []; + for s = 1:3 + dx = points.three_slice(1:end-1,1,s)-points.three_slice(2:end,1,s); + dy = points.three_slice(1:end-1,2,s)-points.three_slice(2:end,2,s); + len0(1,s) = sum(sqrt(dx.^2+dy.^2)); end - fprintf('Approximated length ~ %d or %d \n',m_l,round(mean(len1))); - - case 4 - - fprintf('Go to slice %d and select points on the %s layer\n',points.slice_no(1),flag_layer) - input(''); - [x1,y1] = click_points; - fprintf('Go to slice %d and select %d points on the %s layer\n',points.slice_no(2),length(x1),flag_layer) - input(''); - [x2,y2] = click_points; - fprintf('Go to slice %d and select %d points on the %s layer\n',points.slice_no(3),length(x1),flag_layer) - input(''); - [x3,y3] = click_points; - fprintf('Go to slice %d and select %d points on the %s layer\n',points.slice_no(4),length(x1),flag_layer) - input(''); - [x4,y4] = click_points; - - pts1 = round([x1',y1']); - pts2 = round([x2',y2']); - pts3 = round([x3',y3']); - pts4 = round([x4',y4']); - - points.four_slice = cat(3,pts1,pts2,pts3,pts4); - - if l == 1 %compute the length of the layers. this gives us number of px per layers and we keep it same for inner and outer layer - dx = []; - dy = []; - len0 = []; - for s = 1:4 - dx = points.four_slice(1:end-1,1,s)-points.four_slice(2:end,1,s); - dy = points.four_slice(1:end-1,2,s)-points.four_slice(2:end,2,s); - len0(1,s) = sum(sqrt(dx.^2+dy.^2)); - end - m_l = round(mean(len0)); - end - - p_new1 = distribute_points(pts1,'number',m_l,1); - p_new2 = distribute_points(pts2,'number',m_l,1); - p_new3 = distribute_points(pts3,'number',m_l,1); - p_new4 = distribute_points(pts4,'number',m_l,1); - - slice_34 = slice_points_interpolation(p_new4,p_new3,... - points.slice_no(4),points.slice_no(3),0); - slice_23 = slice_points_interpolation(p_new3,p_new2,... - points.slice_no(3),points.slice_no(2),0); - slice_12 = slice_points_interpolation(p_new2,p_new1,... - points.slice_no(2)-1,points.slice_no(1),0); - points.all_slice = [slice_12;slice_23;slice_34]; - + m_l = round(mean(len0)); + end + + p_new1 = distribute_points(pts1,'number',m_l,1); + p_new2 = distribute_points(pts2,'number',m_l,1); + p_new3 = distribute_points(pts3,'number',m_l,1); + + slice_23 = slice_points_interpolation(p_new3,p_new2,... + points.slice_no(3),points.slice_no(2),0); + slice_12 = slice_points_interpolation(p_new2,p_new1,... + points.slice_no(2)-1,points.slice_no(1),0); + points.all_slice = [slice_12;slice_23]; + + dx = []; + dy = []; + len1 = []; + for s = 1:size(points.all_slice,1) + dx = points.all_slice(s,1,1:end-1)-points.all_slice(s,1,2:end); + dy = points.all_slice(s,2,1:end-1)-points.all_slice(s,2,2:end); + len1(1,s) = sum(sqrt(dx.^2+dy.^2)); + end + fprintf('Approximated length ~ %d or %d \n',m_l,round(mean(len1))); + + case 4 + + fprintf('Go to slice %d and select points on the %s layer\n',points.slice_no(1),flag_layer) + input(''); + [x1,y1] = click_points; + fprintf('Go to slice %d and select %d points on the %s layer\n',points.slice_no(2),length(x1),flag_layer) + input(''); + [x2,y2] = click_points; + fprintf('Go to slice %d and select %d points on the %s layer\n',points.slice_no(3),length(x1),flag_layer) + input(''); + [x3,y3] = click_points; + fprintf('Go to slice %d and select %d points on the %s layer\n',points.slice_no(4),length(x1),flag_layer) + input(''); + [x4,y4] = click_points; + + pts1 = round([x1',y1']); + pts2 = round([x2',y2']); + pts3 = round([x3',y3']); + pts4 = round([x4',y4']); + + points.four_slice = cat(3,pts1,pts2,pts3,pts4); + + if l == 1 %compute the length of the layers. this gives us number of px per layers and we keep it same for inner and outer layer dx = []; dy = []; - len1 = []; - for s = 1:size(points.all_slice,1) - dx = points.all_slice(s,1,1:end-1)-points.all_slice(s,1,2:end); - dy = points.all_slice(s,2,1:end-1)-points.all_slice(s,2,2:end); - len1(1,s) = sum(sqrt(dx.^2+dy.^2)); + len0 = []; + for s = 1:4 + dx = points.four_slice(1:end-1,1,s)-points.four_slice(2:end,1,s); + dy = points.four_slice(1:end-1,2,s)-points.four_slice(2:end,2,s); + len0(1,s) = sum(sqrt(dx.^2+dy.^2)); end - fprintf('Approximated length ~ %d or %d \n',m_l,round(mean(len1))); - end + m_l = round(mean(len0)); + end + + p_new1 = distribute_points(pts1,'number',m_l,1); + p_new2 = distribute_points(pts2,'number',m_l,1); + p_new3 = distribute_points(pts3,'number',m_l,1); + p_new4 = distribute_points(pts4,'number',m_l,1); + + slice_34 = slice_points_interpolation(p_new4,p_new3,... + points.slice_no(4),points.slice_no(3),0); + slice_23 = slice_points_interpolation(p_new3,p_new2,... + points.slice_no(3),points.slice_no(2),0); + slice_12 = slice_points_interpolation(p_new2,p_new1,... + points.slice_no(2)-1,points.slice_no(1),0); + points.all_slice = [slice_12;slice_23;slice_34]; + + dx = []; + dy = []; + len1 = []; + for s = 1:size(points.all_slice,1) + dx = points.all_slice(s,1,1:end-1)-points.all_slice(s,1,2:end); + dy = points.all_slice(s,2,1:end-1)-points.all_slice(s,2,2:end); + len1(1,s) = sum(sqrt(dx.^2+dy.^2)); + end + fprintf('Approximated length ~ %d or %d \n',m_l,round(mean(len1))); + end - %% save points + %% save points + if flag_save save([save_folder,flag_layer,'_points_',sample,'_',dg],'points') end - close all end +close all %% test the points by visualization % for s = 1:points.slice_no(2)-points.slice_no(1) diff --git a/PrepMeasure.m b/PrepMeasure.m index 1370eef..dbd7bad 100644 --- a/PrepMeasure.m +++ b/PrepMeasure.m @@ -1,7 +1,5 @@ %% measuring the distance betwee two sruface and length of each surface -addpath(genpath('Functions')) - -flag_save = 1; +addpath(genpath('.\Functions')) save_folder = 'Results\measure\'; if ~exist(save_folder,'dir') diff --git a/PrepRegistration.m b/PrepRegistration.m index 211d329..0ae1eeb 100644 --- a/PrepRegistration.m +++ b/PrepRegistration.m @@ -1,7 +1,5 @@ %% summing over 10 pixels along normal direction of the smoothed surface -addpath(genpath('Functions')) - -flag_save = 1; +addpath(genpath('.\Functions')) save_folder = 'Results\registration\'; if ~exist(save_folder,'dir') diff --git a/Registration.m b/Registration.m index 403980c..7460ebd 100644 --- a/Registration.m +++ b/Registration.m @@ -36,7 +36,9 @@ end Reg_dg45_outer = registerImages(dg45_outer,dg180_outer,30); Reg_dg90_outer = registerImages(dg90_outer,dg180_outer,30); - save([save_folder,'reg_tfrom_outer_',sample],'*_outer') + if flag_save + save([save_folder,'reg_tfrom_outer_',sample],'*_outer') + end %end @@ -86,8 +88,10 @@ end subplot(223) imshowpair(inner_90dg,inner.dg180_inner),title('90 to 180') suptitle_modified(['inner using inner T ',sample],'none') - saveas(gcf,[save_folder,'inner_using_inner_T_',sample,'.fig']) - saveas(gcf,[save_folder,'inner_using_inner_T_',sample,'.png']) + if flag_save + saveas(gcf,[save_folder,'inner_using_inner_T_',sample,'.fig']) + saveas(gcf,[save_folder,'inner_using_inner_T_',sample,'.png']) + end % check all outer agains 180 using inner transform T MOVING = outer.dg0_outer;%imrotate(layers(:,:,1),180); @@ -119,8 +123,10 @@ end subplot(223) imshowpair(outer_90dg,outer.dg180_outer),title('90 to 180') suptitle_modified(['outer using inner T ',sample],'none') - saveas(gcf,[save_folder,'outer_using_inner_T_',sample,'.fig']) - saveas(gcf,[save_folder,'outer_using_inner_T_',sample,'.png']) + if flag_save + saveas(gcf,[save_folder,'outer_using_inner_T_',sample,'.fig']) + saveas(gcf,[save_folder,'outer_using_inner_T_',sample,'.png']) + end %end close all @@ -238,34 +244,36 @@ end subplot(236) imshowpair(outer_90dg(:,:,s),outer.dg180_outer),title('90 to 180') suptitle_modified(sample,'none') - - saveas(gcf,sprintf('%sReg_s%d_%s.png',save_folder,s,sample)) + if flag_save + saveas(gcf,sprintf('%sReg_s%d_%s.png',save_folder,s,sample)) + end + end + if flag_save + disp('Save results ...') + layers = inner_0dg; + Ref = inner_0dg_Ref; + save([save_folder,'Reg_inner_layers_',sample,'_0'],'layers','Ref') + layers = inner_45dg; + Ref = inner_45dg_Ref; + save([save_folder,'Reg_inner_layers_',sample,'_45'],'layers','Ref') + layers = inner_90dg; + Ref = inner_90dg_Ref; + save([save_folder,'Reg_inner_layers_',sample,'_90'],'layers','Ref') + layers = inner_180dg; + save([save_folder,'Reg_inner_layers_',sample,'_180'],'layers') + + layers = outer_0dg; + Ref = outer_0dg_Ref; + save([save_folder,'Reg_outer_layers_',sample,'_0'],'layers','Ref') + layers = outer_45dg; + Ref = outer_45dg_Ref; + save([save_folder,'Reg_outer_layers_',sample,'_45'],'layers','Ref') + layers = outer_90dg; + Ref = outer_90dg_Ref; + save([save_folder,'Reg_outer_layers_',sample,'_90'],'layers','Ref') + layers = outer_180dg; + save([save_folder,'Reg_outer_layers_',sample,'_180'],'layers') end - disp('Save results ...') - layers = inner_0dg; - Ref = inner_0dg_Ref; - save([save_folder,'Reg_inner_layers_',sample,'_0'],'layers','Ref') - layers = inner_45dg; - Ref = inner_45dg_Ref; - save([save_folder,'Reg_inner_layers_',sample,'_45'],'layers','Ref') - layers = inner_90dg; - Ref = inner_90dg_Ref; - save([save_folder,'Reg_inner_layers_',sample,'_90'],'layers','Ref') - layers = inner_180dg; - save([save_folder,'Reg_inner_layers_',sample,'_180'],'layers') - - layers = outer_0dg; - Ref = outer_0dg_Ref; - save([save_folder,'Reg_outer_layers_',sample,'_0'],'layers','Ref') - layers = outer_45dg; - Ref = outer_45dg_Ref; - save([save_folder,'Reg_outer_layers_',sample,'_45'],'layers','Ref') - layers = outer_90dg; - Ref = outer_90dg_Ref; - save([save_folder,'Reg_outer_layers_',sample,'_90'],'layers','Ref') - layers = outer_180dg; - save([save_folder,'Reg_outer_layers_',sample,'_180'],'layers') - %end close all @@ -363,25 +371,26 @@ end clear tmp Reg end - disp('Save results ...') - points = inner_0dg; - save([save_folder,'Reg_inner_points_',sample,'_0'],'points') - points = inner_45dg; - save([save_folder,'Reg_inner_points_',sample,'_45'],'points') - points = inner_90dg; - save([save_folder,'Reg_inner_points_',sample,'_90'],'points') - points = inner_180dg; - save([save_folder,'Reg_inner_points_',sample,'_180'],'points') - - points = outer_0dg; - save([save_folder,'Reg_outer_points_',sample,'_0'],'points') - points = outer_45dg; - save([save_folder,'Reg_outer_points_',sample,'_45'],'points') - points = outer_90dg; - save([save_folder,'Reg_outer_points_',sample,'_90'],'points') - points = outer_180dg; - save([save_folder,'Reg_outer_points_',sample,'_180'],'points') - + if flag_save + disp('Save results ...') + points = inner_0dg; + save([save_folder,'Reg_inner_points_',sample,'_0'],'points') + points = inner_45dg; + save([save_folder,'Reg_inner_points_',sample,'_45'],'points') + points = inner_90dg; + save([save_folder,'Reg_inner_points_',sample,'_90'],'points') + points = inner_180dg; + save([save_folder,'Reg_inner_points_',sample,'_180'],'points') + + points = outer_0dg; + save([save_folder,'Reg_outer_points_',sample,'_0'],'points') + points = outer_45dg; + save([save_folder,'Reg_outer_points_',sample,'_45'],'points') + points = outer_90dg; + save([save_folder,'Reg_outer_points_',sample,'_90'],'points') + points = outer_180dg; + save([save_folder,'Reg_outer_points_',sample,'_180'],'points') + end %end close all diff --git a/Transformation.m b/Transformation.m index 351e9a2..0779d1c 100644 --- a/Transformation.m +++ b/Transformation.m @@ -1,4 +1,4 @@ -addpath(genpath('..\Functions')) +addpath(genpath('.\Functions')) samples = {'out_out_CD','out_out_MD','in_in_CD','in_in_MD'}; layer_name = {'outer','inner'}; @@ -17,9 +17,6 @@ if ~exist(save_folder,'dir') mkdir(save_folder) end -flag_save = 1; -flag_fig = 1; - % if you want to run the measure separately you can use the for loop %for i = 1:4 sample = samples{i}; @@ -119,9 +116,6 @@ if ~exist(save_folder,'dir') mkdir(save_folder) end -flag_save = 1; -flag_fig = 1; - % if you want to run the measure separately you can use the for loop %for i = 1:4 sample = samples{i}; @@ -193,9 +187,6 @@ flag_fig = 1; %% move all the bend to the concave part for inner -flag_save = 1; -flag_fig = 1; - load_folder_layers = 'Results\layer\transfer\0dg_rest\'; save_folder = 'Results\layer\transfer\align_0dg_rest\'; -- GitLab