machine learning and image segmentation
3 次查看(过去 30 天)
显示 更早的评论
Hi,
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,
Ina
2 个评论
回答(2 个)
Alex Baucom
2016-12-14
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
2016-12-14
编辑:Ahmet Cecen
2016-12-14
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.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Image Segmentation and Analysis 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!