Changelog for my modules
2023-11
Updated Channel_Network_To_Lines module to add length data. Also removed local angle data, deemed not useful. Also removing it allows to simplify internal measurements methods.
Added documentation to Channel_Network_Extract.
Created module Channel_Network_Filter.
Simplified internal code.
Fixed bug in Envelope module, in which the Refinement options did not use the largest connected component, thus adding back in all the little things outside the main object.
2023-10
Fixed bug in Threshold_Global, in IsoData method for finding the threshold, which looped indefinitely. It's like I didn't even test it beforehand... Removed the IsoData parameter because no longer used, and updated the documentation.
2023-09
Got a working version of Skeletonise2. Not exactly the algorithm from the reference, but close enough to get good compromise between quality of skeletons and computation time (and dev time).
2023-08
Fixed bug in Load_reconstruction, and added file formats to type other, basically to just load any image stack.
Updated documentation of Channel_Network_To_Lines to include aspect ratio, which is now length-to-diameter ratio, no longer length-to-radius.
2023-07
Added Translation and Direction ports to Keep_Tube, and removed corresponding commands since no longer necessary.
2023-06
Created new module Measure_Elements in Geometry package, which is a refactoring of module Pore_Statistics. Allows to select which columns are needed. Not all measures from Pore_Statistics are computed, but I will add them and more if needed. Eventually phase out Pore_Statistics.
Added new extraction method in Extract_Elements.
Additional minor changes.
2023-01
Fixed bug in Draw_Vectors. It worked before but now scene generation is 24 times faster.
Some housekeeping.
Distance_Map and related modules (e.g. Partition_to_Graph, Reverse_Distance_Map) moved to Geometry package. Don't know what they were doing in Morphology...
2022-12
Fixed bug in Skeleton_Image_To_Graph where values for nodes, edges, and branch points were not transfered to graph data structure.
2022-11
Added unsigned integer datatype support for all modules.
Fixed bug with floating point datatype in Watershed module.
2022-07
Minor cosmetic change in Connected_Component
Fixed bug in Threshold_Global with images with more than 2^32 voxels.
2022-06
Removed Gauss_Transform module.
Fixed a little bug in bin computation for the histograms.
Added a few more icons.
v0.92
2022-06
Fixed small bug in Threshold_Global. The last one, hopefully.
Added Convert_To_Byte module, using the same greylevel cropping method as the one implemented in the histogram computation
2022-05
Added F4F file format option in EP_Load_Reconstructions script object for NRecon reconstructions (raw 32-bit float data).
Complete refactoring of histogram computation. Was found in Binarise module, now its own subclass, used in all places with need for histogram. New things are:
- Cropping option added to histogram computation.
- Now histogram contains at least two columns, greylevel of center of bin, and number of pixels, with '< x' and '>= x' bins at the start and end, if needed. Optional columns are Mean and Variance for greylevels in each bin.
- Can use mask and/or Region of Interest (ROI) to constrain histogram (and histogram bin) computation.
New Histogram_ module. Name appended with underscore so as to not get confused with Avizo's Histogram module.
Refactoring of Binarise, with a name changed to Threshold_Global. New things are:
- Can use mask and/or Region of Interest (ROI).
- In Peaks method, now uses padding for the cumulative density function (cdf) average computation, which helps a little in case of peaks detected at the histogram boundary.
- Can give a histogram as input if histogram-based threshold selection method is asked for.
Module Correct_Intensity_Deviation was removed. Don't remember when I ever used it...
2022-02
Upgraded Count_Pixels to use same algorithm as Distance_Histogram.
v0.91
2022-01
Corrected critical bug in Distance_Histogram, updated algorithm (better one-pass), changed columns.
Added default initialisation to internal EP_Module values.
Added a couple icons.
Added options to Convert_Scene_To_PovRay and updated doc. Also corrected bug in LineSet callback.
2021-12
Fixed bounding box bug in Create_Sphere_Pack_Image. I tried to modify a constant.
2021-11
Fixed connected components problem in Partition script. The biggest connected component is calculated before the topological artifact removal operation (a pre-processing for the skeletonisation), but the latter can remove some 1-pixels bridges, thus disconnecting some portions, and effectively ending up in the end with several connected components in the resulting partition. Inverted the two operations in the script object.
v0.90
2021-04
Fixed bug in histogram computation in Binarise.
Hid bug in Median module.
Upgraded topological numbers calculation, use of caching. 7.7x speed gain in e.g. Skeletonise.
More internal upgrades on neighbourhoods.
Upgraded user interface update during computation. Ideally it should never seem like the program is freezed...
Added periodic boundary condition to Skeletonise_Surfaces, reduced memory usage, and simplified code.
Complete overhaul of neighbourhood extraction (generic structure for all boundary conditions), and improved code for topological number calculation (one function to rule them all: T6, T6+, T18, T26).
Fixed fundamental bug in all things skeleton for T18, which previously was C_18[N^1_18(x,X)] and not C_18[N^2_18(x,X)]. See:
Bertrand, G. Simple points, topological numbers and geodesic neighborhoods in cubic grids. Pattern Recognition Letters, 1994, 15, 1003-1011.
Upgraded many aspects of internal procedures, removed many redundancies (namely in the interface portion of the modules).
2021-03
Fixed several bugs in Classify_Points, among which voxel classification codes did not correspond to what was in the documentation.
Fixed threshold min-max bug in Binarise.
2021-02
Fixed a minor bug in Count_Pixels: standard deviation would give NaN if no object pixels found (2D and 3D).
2020-11
Fixed a crash bug that crept up in Kuwahara.
2020-10
Minor internal code upgrades.
Upgraded Draw_Cubes to allow the use of masks and regions of interest.
v0.89
2020-10
Upgraded Local_Thresholding_Niblack to allow the use of masks, updated the documentation accordingly. Note that now, without a mask, the algorithm will be noticeably slower: whereas before I optimised for the fact that all the pixels were processed (held a running computation with partial refresh of the spherical window, and a lace scanning of the image), now I just redo independently the whole computation for each pixel.
2020-06
Fixed a bug in Pixels_in_Closed_Surface in rare case where projected ray passes through edges of the triangle.
Fixed a bug in Kuwahara filter that ignored octants on one side.
Updated Snakes to take into account image bounding box size and position, and both inputs transformation matrices.
2020-05
Fixed a bug in Skeleton_Graph_To_Channel_Network on improper handling of loops. Now a message is shown when one is detected (in verbose mode). Still ignored in the network generation.
v0.88
2019-10
Fixed Create_Projections. Avizo takes shortcuts when recomputing results...
Fixed bug in script objects (e.g. Partition) when module instance name had a space in it (like "Partition 2").
2019-09
Updated EP_Load_Reconstructions with Skyscan data to have same reference axes as in their software (x: detector left-to-right, y: horizontal towards X-ray source, z: up). Updated documentation.
v0.87
2019-09
Added angle options to Channel_Network_To_Lines.
Removed an erroneous warning in Skeleton_Graph_To_Channel_Network when a loop is detected.
Added Plug_Holes module.
Added more icons.
2019-07
Fixed Topological_Numbers so as to have verbose mode actually turn on.
v0.86
2019-07
Updated Topological_Numbers so as to retrieve resulting numbers automatically.
2019-06
Fixed bug in Channel_Network_Process in which merging did not remove point repeat at which merging took place.
Fixed bug in Channel_Network_Measure in which connection for all endpoint were offset by +1.
2019-05
Fixed bug in Watershed_Segmentation with handling of spaces in names of modules called.
2019-01
Homogenised initial threshold value in relevant modules. Now init comp/threshold pair should be != 0.
Added "type" port in Extract_Elements.
Removed Load_Sphere_Pack entry (module was removed long ago).
Fixed small bug in Create_Sphere_Packing.
v0.855
2018-11
Rewrote geodesic dilation module. Uses queue-type algorithm. Decided to have geodesic reconstruction in a separate module (not yet written), since the algorithm is completely different.
2018-10
Finally finished Process_CameraPath module. Now called Smooth_Camera_Path.
2018-08
Fixed bug in Conditional_Diffusion. Actually rewrote the whole algorithm because the code was unreadable, I wrote some very elegant, simple code in half the number of lines and ... it took ten times more time to compute! Not just 10% or 20% more, no. TEN TIMES! Reverted back to the old code. :(
In Rose_Diagram removed outdated custom data structures, now uses STL.
In Connected_Component, fixed bug in filtering components, used updated internal data structure, migrated to standard container.
In all modules, homogenized internal functions (parse() and saveUpdate()).
2018-07
Created Kuwahara module.
Fixed a bug in Skeleton_Image_To_Graph for periodic boundary conditions.
2018-06
Homogenised some port names.
Created Bottlenecks module.
Found bug in Invade module. Rewrote algorithm. Now goes at least an order of magnitude faster.
Fixed an output creation problem when a different type output is created over another existing type output (eg. in Deriche_Filter).
Fixed a crash bug in Invade.
v0.83
2018-05
Added support in Convert_Scene_To_PovRay for use of SoVertexProperty node when having lines in the scene.
2018-03
Fixed bug in Topological_Numbers.
Added per_vertex coloring for indexed face sets in convert_Scene_To_PovRay.
2018-02
Added option in Keep_Tube to set all values inside tube to a constant.
Added color to converted SoTriSurface object in convert_Scene_To_PovRay.
Added a mask port in Count_Pixels, and the computation of standard deviation.
Fixed bug in EP_Load_Reconstructions when files contain the + character.
2017-12
Minor bug in Skeleton_Image_To_Graph fixed.
New Extract_Elements module added.
New ROI port in Count-Pixels added.
2017-11
Minimised text file size in output of Convert_Scene_To_PovRay, up to 60% when mesh2 objects involved.
Debugged Partition script object, updated to include a mask input and pore merging option, updated documentation.
Fixed bounding box setting in Skeleton_Process and passing of transform to output, as well as in Skeleton_Graph_To_Channel_Network, and Skeleton_Graph_To_Points.
Extended Channel_Network_Measure to include width minimum, maximum, and median.
Created common progress info display for script objects.
2017-10
Fixed bug in Invert where it was the input that was inverted, not the output...
Fixed crash in Draw_Skeleton, where curves is asked on periodic skeleton.
In Partition script object, commented out skeleton graph drawing part. When processing big images, took waaay too long. Fixed orthoslice color adjustment.
Also, in Partition, save feature now uses newer EP_SkeletonGraph format to save skeleton graphs.
Fixed bug in Watershed (and in extension, Watershed_Segmentation) where a crash occurs at the end, upon output registration.
Fixed bug in Deriche_Filter from the update to 4GB+ image compatibility.
Fixed bugs in Partition script object, didn't update call to rewritten Skeletonise module.
Speaking of which, forgot to mention I added a mirror boundary condition to Skeletonise, as I realised it was different from object boundary condition. It's described in the documentation.
v0.82
2017-10
In all modules, if enabling verbose mode in console, console prints that it's in verbose mode.
Passed to double precision Fourier Transforms in Autocorrelation and FFT.
2017-09
Added Channel_Network_Measure module.
In Convert_Scene_To_PovRay, added conversion of indexed facesets, with the wireframe display option.
2017-08
Fixed bug in Skeleton_Image_To_Graph.
Removed Channel_Network_To_Surfaces module.
Fixed placement bug in Skeleton_Graph_To_Points.
Fixed bugs crash in Skeleton_Image_To_Graph.
Fixed bug in Pore_Merge for big images.
2017-07
Created HxChannelNetwork data structure, Skeleton_Graph_To_Channel_Network module, Channel_Network_To_Lines module, and Channel_Network_To_Surfaces module and documentation.
Updated Snakes, simplified mesh initialisation.
Due to a conflict with libfftw library already in Avizo, renamed the dll I used to EP_libfftw3f-3.dll.
Enveloppe, 8-bit output for refinement procedure.
Removed redundant error-checking in a dozen modules.
Fixed bug in Connected-components with "Raw as external data" input.
v0.8
2017-06
Removed Geodesy module. If necessary, will update and reincorporate it.
Fixed bug in Relabel_Pixels, in which more than one label can be relabeled the same value.
Complete overhaul of memory and error-handling. Should be more robust and uniform.
Fixed Draw_Cubes crash when not enough memory.
Completely rewrote Skeletonise module. Slightly different result when no priority (still homotopic). But runs twice as fast, uses less memory, and is 4GB+ image-compatible.
2017-05
Updated Draw_Cubes documentation.
Reworked Watershed module. Removed the greylevel inversion (regions grow up from basins, no longer down from peaks), homogenized the growth when the map shows flat regions, and smoothed the thin separation. Updated Watershed_Segmentation script object accordingly.
Added Output port to Load_Reconstruction module, can choose to directly load reconstruction in Avizo.
Fixed crash in Draw_Element, when displaying captions of adjacent pores, due to use of deprecated binary search tree structure.
Renamed PixStats, Pore_Stats, Label_CCs, to resp. Pixel_Statistics, Pore_Statistics, Label_Connected_Components.
Simplified code in Pixel_Statistics, also 4GB-compat.
Simplified code in Relabel_Pixels.
Fixed memory problems in Snakes.
Fixed image centering option in Autocorrelation.
2017-03
Clarified code in Edge_Response.
2017-02
Removed periodicity boundary condition from Topological_Numbers. If it's ever useful, I'll consider putting it back.
2016-12
Internal morphological function greatly simplified and 4GB+ image-compatible.
Dilate and Erode now one module, named ... Dilate_Erode. Avoids confusion with Avizo's Dilate and Erode modules.
Open and Close now one module, a script module that calls Dilate_Erode.
Connected_Components fixed detail in doc.
Fixed bug in Invade when number is too high.
2016-09
Pore_Merge now 4GB+ image-compatible.
In Label_CCs: lowered memory footprint, dynamic output type function of number of input points, local coordinate systems of point set and image taken into account, now 4GB+ image-compatible.
Fixed a possible border issue in Close and Open.
2016-08
Fixed a critical bug in the loading of EP_Skeleton_Graph data from a file.
Simplified compute function code in all modules.
Simplified progress info updating in all modules.
Classify_Points, Connected_Components now 4GB+ image-compatible.
2016-07
Added Bayesian method in Binarise.
2016-06
Added isodata method in Binarise.
Added Otsu's threshold method in Binarise.
Upgraded internal thresholding function to use doubles instead of floats. Affects dozens of modules...
2016-05
Started coding Logarithmic Image Processing (LIP) functions, notably added the LIP Contrast Estimator option in the Gradient module.
2016-02
Minor change in Watershed_Segmentation script module: option to remove the intermediate data.
2016-01
More icons (Medial Axis, Partition_To_Graph).
v0.6
2015-11
Verbosity of modules (and other custom tcl commands that change the state, e.g. expertMode in Draw_Cubes, or setting the random number seed in create Colormap) now saved in network.
Added visualisation of tube in Keep_Tube, and moved it to Geometry category.
2015-10
Modified Points_to_Image to propose that the output greylevel are the data in a specified data column of the input points.
v0.5
2015-09
More cosmetic changes.
In Outer_Edge, rewrote 3D algorithm: slightly more CPU time but instead of using around 9n bytes in memory (n being the number of pixels) excluding input and output, now it uses (in all practical cases) around 0.25n bytes. Also a few more code updates and 4GB+ image compatibility.
Modified Encircle documentation.
Modified Fit_Cylinder so no output is defined, but data column in input point set to show which points are kept for the regression. Improved documentation.
Modified Project_on_Cylinder, by adding data columns on the input point set to define the cylindrical coordinates. Improved documentation.
v0.4
2015-08
In Binarise, first automatic threshold value selection method completed. Extensive documentation attached.
In Skeleton_Process, completely changed the organisation of the ports for more coherence. Fixed option absorb small pores, with a new algorithm. Rewrote and completed documentation.
2015-07
Some cosmetic changes.
Improved Enveloppe script module: better refinement methodology using geodesic distance, added cut sample option, better documentation
Corrected some stuff in the documentation (e.g. algorithm description for geodesic distance).
Really completely fixed Pixels_in_Closed_Surface.
2015-06
Improved Gradient and Draw_Vectors.
Added option in Watershed_Segmentation to NOT use Deriche Filter but just gradient (i.e. no blurring).
2015-05
Finished first operational version of the SubSample module.
v0.3
2015-05-27
Fixed crash in Connected_Components for >65535 components and labels asked for.
Added reference image in points_to_image.
Completely fixed Pixels_in_Closed_Surface.
v0.2
2015-03-27
Fixed crash in verbose mode in Fill_Holes module.
2015-03-26
Corrected a bug in Count-Pixels, in the 2D option. The spreadsheet has nan values in mean intensity when 0 pixels found on a plane. Also the columns indexing was improved in the code.
Before that
Unrecorded...