machine learning and image segmentation

5 views (last 30 days)
topolowa on 14 Dec 2016
Commented: Peyman Obeidy on 30 Mar 2017
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,
Peyman Obeidy
Peyman Obeidy on 30 Mar 2017
May I get your code, I would like to try it on my image

Sign in to comment.

Answers (2)

Alex Baucom
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.
  1 Comment
topolowa on 14 Dec 2016
thank you for your comment!
Regarding image features, it contains adherent cells, which have tendency to change shape and fuse together, causing that the boundaries between individual cells are hard to detect. I have attched example image and the mask.

Sign in to comment.

Ahmet Cecen
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.
  1 Comment
topolowa on 14 Dec 2016
Hi Ahmet,
thank you very much for your answer. Indeed, I am already applying more or less everything you mentioned for the segmentation process, where custom flavour of Active contours is the main one. Yet, the results have to be curated, by manual splitting of some fused cells.
I have already few thousands of the segmented images and was wandering, if it would be feasible to engage machine learning, without need of extensive post processing corrections.
Thanks a lot,

Sign in to comment.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by