Necessary software:
- Fiji https://imagej.net/Fiji + FFT bandpass filter https://imagej.nih.gov/ij/plugins/fft-filter.html
- OpenCV-3.1.0 and OpenCV_contrib-3.1.0: https://github.com/NIB-SI/circadian-lesion/blob/main/Installation_OpenCV3.1.0
bandpass adjustment of uneven illumination (all pictures are much brighter in the middle part)
- Fiji macro for FFT bandpass filter: filter_large=40, filter_small=3, suppress=None, tolerance=5, autoscale, saturate
- example:
-
create test-folder at your HOME directory and copy respective .cpp file
-
rename .cpp file e. g. Rywal 7-18 dpi each 6 hours (point zero 2017_09_01 at 07.00.00).cpp to Rywal7-18.cpp (remove spaces)
-
create folders results/filtered_lesions within the test-folder
-
copy input images to test-folder
-
create CMakeLists.txt
-
run cmake .
-
run make
-
./Rywal7-18 'input_folder'
-
example: https://github.com/NIB-SI/circadian-lesion/tree/main/example_leaves
Terminal:
- row file number
following rows: timepoint | Time after inoculation [min] | lesion area red marked timepoints indicate night images
paramters of last image (possibility to insert these paramters to a .cpp file with other settings e. g. Part1/Part2/Part3 to receive optimal results, it's also possible to insert artificial lesion parameters here) -lesion indices -lesion areas -mass points -radii -centers
int main()
extraction of experiment information
-
folder name
-
file names
-
extraction of timepoints + calculation of time after inoculation
vector measure_brightness(): measurement of brightness
- to discriminate day and night images
Mat normalization() and Mat adjusted_brightness(): adjustment of brightness
- to create even distribution of intensities
Mat findLesions1() and Mat findLesions2(): find potential lesions
- convert RGB images to HSV
- extract range of hue values (different range between day and night images)
- apply morphological operations (dilation, erosion) to remove noise
find contours
- apply contours (vector of points) to potential lesions
- exclude contours near to the image border
- set contour area size cut-off
- extract geometrical features for all contours: mass center, minimum enclosing circle, radius
processing of contours (to extract real lesions)
- compare all candidates with each other via area of intersecting circles (minimum enclosing circles) --> possibility to insert manual determined lesions (necessary parameters: mass point (x, y), lesions area)
- if candidate is inside of another, add area to bigger one
- calculate all distances between mass points to all given lesions from the previous picture
- find most suitable candidate via smallest distance: all lesions from the previous picture should have a follower evaluation of new candidates:
- if distance is too near to proofed lesions: add to proofed lesion
- if area size is too small: just ignore divide same candidates:
- for two or more lesion from the previous picture only one candidate was found (lesions grow together)
- adjust area size with the help of previous picture areas calculate growth of lesion areas at night pictures
- set area size of lesions from first night picture to areas of last day image
- add the difference between areas of night images to calculated one --> save parameters of last evaluated lesion (mass point (x, y), lesions area): → manual adjustment possible to continue with better results draw proofed lesions and areas
save results
- images with lesion numbers and areas
- timepoints, time after inoculation, lesion numbers and areas to text file