## Crystal Image## Quantitative Image Analysis |

However, I have used this software in class and for my own image processing needs over the last five years, and I found that it suits my needs very well. Thus, I do no longer consider it "beta".

New features (combined with major bug fixes into one list):

- RGB-to-HSV conversion now available in macro function
*convert_image*function. - Massive overhaul of the Fourier filter GUI and implementation. Some specific items:
- "Order" slider is now integer.
- The confusing "Gain" slider was removed, the gain is fixed to unity.
- Modified the computation of the data logarithm (used for homomorphic filtering). The log computation uses a suitable offset to avoid large, negative numbers. Homomorphic filtering now has considerably improved quality.
- Modified the windowing functions (this is more of a bug fix).
- Added a Wiener filter function with variable denominator offset
- Added the Oppenheim highpass that is suggested by Erik Reinhard et al. for high dynamic range tone mapping (see: Reinhard E, Ward G, Pattanaik S, Debevec P. High Dynamic Rainge Imaging, Morgan Kaufmann, 2006)
- Added a first-derivative filter with variable high-frequency rolloff similar to the Shepp-Logan kernel for the filtered backprojection in CT.
- Unified the GUI for the "generator" module with the Fourier filter module.

- Massive overhaul of the discrete wavelet transform and wavelet filter functions.
Some specific items:
- Removed dyadic decomposition of the L/H and H/L regions
- Filter functions are now continuously using double-precision data instead of truncating back to single-precision. This results in a major improvement of the quality of coefficient shrinking algorithms.
- Fixed some problems with threshold finding for SUREshrink and GCV (Note that BayesShrink is still unreliable and depends on the image value range)
- Added the explicit DWT and IDWT to the Process menu. Also added the DWT macro function to the main codebase. Therefore, the wavelet DSO module is now obsolete and has been removed.
- Improved wavelet-based background removal (try it, seems to deliver really good results!)
- Added two experimental wavelet-based highpass/sharpening formulations

- Improved the action of the AMMSE (adaptive minimum mean-squared error) filter. The AMMSE filter has dramatically strengthened action and now also features an adjustable strength parameter.
- Circular ROI now features a size-adaptive number of vertices, which reduces the polygonal appearance for large diamters
- Generator module: Unfied the GUI for creation of Fourier filter functions with the FFT filter module. Now, all available filter functions can be generated and visualized.
- In the same function: Added option to visualize the windowing functions as well.
- Watershed: Added function to generate the SKIZ (SKeleton inf Influence Zone)
- Fractal dimension estimators: Significant overhaul of the GUI with improved instructions, dyadic size selections (depends on estimator notion). Fixed some problems with the Manhattan dimension.

Bug fixes:

- Fixed some inconsistency in the log and log-abs contrast modes in the colormap window.
- Also, fixed inconsistent treatment of log and log-abs between colormap view and the "created" secondary window.
- Bug or feature? Propagated syntax highlighting for the kate editor to 16.04, which changed the location of the syntax files *again*
- The GL-based image viewer is now available in the settings by default

- Fixed a problem with rescaling of the discrete Hartley transform
- Added numerous tooltips
- Minor improvements to the snake funcions
- Added a range filter rescaling option to the adaptive bilateral filter, which makes the range filter independent of the image value range

Bug fixes:

- Ensured that cimage compiles and runs on 15.04
- Fixed a bug which caused the operands of subtractions and divisions to be swapped
- Fixed a bug in image math that caused a crash when main and secondary images were exchanged

- Optional pixel rulers above and to the left of the main image
- Function to display intensity in logarithmic scale now includes a log-abs function for FFT and similar
- New Image Math function to display the joint histogram of two equal-size images (presently limited to 256 bins)
- New Image Math function to compute ln(A/B) specifically for absorbance in x-ray projection images
- Improved the adaptive thresholding function:
- Slightly improved speed of adaptive ISODATA
- Now using circular instead of rectangular local neighborhoods for ISODATA and moving window
- Added a fast FFT-based unsharp masking computation for the threshold map
- Added local adaptive version of Otsu's method. Moderately fast, surprisingly.
- Added optional Gaussian smoothing of the threshold map
- Fixed a bug with RGB handling
- Connected the adaptive threshold to the macro interpreter

- Removed the "Release Notes" menu item. Did anybody really read this anyway?
- Connected the 2D graph display to Gnuplot for better publication-quality plots
- Also, the 2D plot function can now plot log scale or log-log scale
- Overhaul of the fractal dimension GUI with tooltips and explanations
- Fractal dimension plots are now in log-log scale where appropriate
- Crystal Image now has a rudimentary read function for the Compix SimplePCI format (.cxd files).
In the process, the Astrophysics .wim format has been removed from the core and moved into
a module.

The new .cxd import function is still highly experimental.

- Fixed minor issues with the NetPBM read and write functions
- Fixed some minor inconsistencies between image/image operations in image math and the macro interpreter
- Fixed generation of images with fractional Brownian surfaces (now true 2D generation)
- Fixed nasty little bug that made a ROI with ctrl-a always square
- Fixed bug in the inverse line Hough transform
- Revised some sections of the Snake algorithm. Most importantly,
- Fixed problem with circuiar ROI
- Improved convergence with GVF
- Improved GVF-related parts of the GUI

- Fixed a minor bug that caused some macro-generated images to have incorrect min/max values and thus bad contrast.
- Updated the syntax highlighting file that can be used with KDE's
*kate*editor. Note: This file needs to be installed manually. - Fixed dependendcy on libfftw3-double3 of the .deb package. The binaries should now install on 14.04 and 14.10 machines.
- Can somebody tell me why the TIFF library, version 4.0.x is now called 'libtiff5'? (fixed this dependency, too.)

- Added a function to remove features from binary images that touch the image boundary
- Added logarithmic histogram scaling, tooltips for histogram functions, and better bin selection
- Added visualization/colormap function to display intensity in logarithmic scale
- Major reorgainzation of the wavelet functions:
- Moved the wavelet transform functions into the core of the codebase
- Moved wavelet shrinking functions into the core of the codebase
- Corrected some mistakes in the threshold finding algorithm
- Added a 1D denoising function as internal utility function
- Added wavelet-based image denoising as one-step process (now under process/filter)
- Added a WVDENOISE macro function

- Fixed segfault in the save function of the secondary image when the image format (such as png) was not specified
- Fixed font issue in histogram caused by deprecated gdk_draw_string in the GTK library
- Fixed a few more Pango-related minor issues
- Fixed something (I don't recall what) in the cluster labeling algorithm
- Fixed default settings for 3D viewer. The 3D viewer now defaults to the GL version
(
*cimage_sv*) as it should.

- Included the
*meshextract*module as published in Madison A and Haidekker MA, A Completely Open-Source Finite Element Modeling Chain for Tubular Tissue-Engineered Constructs, Int.J.Comp.Syst.Appl. 2012; 1(2): 44--55. (open access publication) - Image math now can merge image slices with stacks
- A cleanup function in binary images removes all features that touch the boundary
- Histogram now has an ImageJ-style graytone bar
- For builders: Created an "includeall.h" for the modules so that individual header files from the base system no longer need to be included.
- Tested on Ubuntu 13.04

- Fixed segmentation fault issue with the -m command line option
- Fixed incorrect calculation of the standard deviation in several parts of the program
- Fixed occasional weird crashes at the end of a macro run

- Hill-climbing segmentation as proposed by Bankmann et al, IEEE Trans Inform Techn Biomed 1997; 1: 141-9.

Bug fixes:

- Fixed the command entry line in macro "immediate execution" mode
- Fixed some mysterious crashes when image windows were repeatedly opened and closed

- In the macro interpreter, the cluster labeling functions now return the number of clusters in user[0].
- Cluster labeling now has a new feature that allows labeling by size (in addition to labeling
by size rank). This new feature affects the
*labelopts*parameter of the cluster2d function in the macro interpreter (see Advanced Biomedical Image Analysis, pg. 489):- 0: Label by size rank
- 1: Pure binary image output
- 2: Label by size
- 3: Label by compactness
- 4: Label by aspect ratio
- 5: Label by irregularity

- Added a rudimentary distance measurement function
- Updated the file selection dialog. Cimage now "remembers" the directory it last used and selects this directory as default for all subsequent file dialogs. A major element of inconvenience finally removed!

Bug fixes:

- Fixed a bug that caused cimage to crash in the macro interpreter when the "foreach" statement was used with all three parameters, but the third parameter pointed to a non-existent working directory
- Fixed a bug that caused undefined shadow images to appear if the substack function was used on a single-slice image, or if the substack went beyond the stack bounds.
- Fixed a bug that caused cimage to crash in the skeletonization function whenever a tabular description was requested
- Now using Pango for axis labels in graph function (compatible with Ubuntu 11.10)

- Fixed bug in the parameter entry window for skeletonization
- Some background removal functions "hang" when a zero window was accidentally selected. A zero window size is no longer allowed (and doesn't make sense, anyway)
- Fixed a crash that occurred when using
*undo*in memory. - Cluster counting now reacts properly to changes in the parameter window
- Crashes in Open Multiple have been fixed.
- Some helper functions have been removed, and Crystal Image now relies on GSL.
- Fixed segfault in the CWM filter when debuglevel > 1
- Fixed issue with phantom windows when new images are opened before the old ones were closed (mainly with DICOM)
- Fixed ambiguous pixel selection in sign-symmetric threshold functions
- Fixed Fourier filter preview function
- Fixed minor issues with RGB interpolation
- Fixed crash issues in timecourse dso

- Added saturation functions to threshold
- Added main window zoom function
- Added a fast lacunarity function to the fractal measurements