machine learning and image segmentation
5 views (last 30 days)
I would like to apply machine learning for image segmentation of the cells. Images are difficult to segment and need supervision, but we get nearly 1K of images in one set. I already have several thousands of images and segmented masks for the training.
Would you have any comments/suggestions on which algorithms/ functions within any of Matlab products to use. I am going through Matlab Vision, Machine learning and Neuronal networks toolboxes to get an idea of existing tools.
Thank you for any help,
Alex Baucom on 14 Dec 2016
If you want the sledgehammer of algorithms, use a convolutional neural network.
If you want more control over the algorithm, you can use some sort of pre-processing or feature extraction (something like Gabor filters or SIFT features) and run that through an SVM.
Without know much more about the data or use case those two route would be the best bets to try.
Ahmet Cecen on 14 Dec 2016
Edited: Ahmet Cecen on 14 Dec 2016
I will give you a very rough suggestion with many assumptions, but this is the best I can do with the given information. It should at least expand your horizons on how to deal with the data, if nothing else. My suggestions for images like these would be:
1) Start with simple intensity-based thresholding.
2) Erode the thresholded mask with smallish element, like a 3 pixel radius disk, to get rid of irregularities.
3) Feed this image as the initial guess to an active contours or watershed algorithm to refine the segmenteation.
Lets call the result Mask1.
4) Go back to the original image, make everything that is not in Mask1 0, losing some potential cells but that has to be ok.
5) Adjust the contrast to highlight edges, like imadjust, or simple histogram stretching.
6) Find edges, either via a manually tailored filter or standard ones like "LoG" or "canny".
7) Try to find cell nuclei from the edges. This might take some playing to get right, but there seems to be some inherent order to cell centers in the form of a sudden drop in intensity. You can try to filter the edges with circular elements, or use hough transform etc. Can't really get specific without seeing this stage myself and experimenting.
8) Using cell centers, use some clustering technique or distance transform to estimate cell boundaries. You can also use something like a voronoi tesselation.
9) Use Mask1 and step (8) above together to find individual cells.
I am fairly certain (feel free to prove me wrong) that convolutional nets will not work for this purpose, at least not out of the box. Neither will SIFT. These methods solve segmentation problems of a different sense (identify scene, find people, detect irregularity), and prove mostly useless in segmentation of experimental(Microscope, CT, SEM, TEM etc.) images like these in my experience.