Best Method for Identifying Cells in noisy low contrast image
9 views (last 30 days)
Show older comments
Hello,
I am currently working on a project whose goals are to identify cells in an image stack and keep track of their location in between images in the stack. However, I am currently struggling with finding a robust method of segmenting the cells. Often times a cell in the first image of the stack wont appear in the next image in the stack (which creates a problem for the data collection we are doing). An example of an image I am working with is attached below. What I am currently doing calculating for the background using imopen and subtracting the background from the image to correct for anisotropic lighting. I then apply a fourier filter to remove vertical lines. Finally, I use imadjust to enhance contrast and use canny edge detection (from the edge function).
The problem is that this edge detection rarely 'closes the tear drop loop' and thus goes away when i erode stray edges. Is there a more consistent method of segmentation in this type of image? Any suggestions would be appreciated!
I am working with tiff stacks, but Matlab Answers won't let me attach in that format.
Thanks, Cameron
0 Comments
Answers (1)
Image Analyst
on 24 Jun 2015
Does the background move from frame to frame? Can you just average all the images in the stack together to get the background?
You should not be subtracting the background anyway - you're not doing x-ray or fluorescence I don't think. So you'd do background division. The lines are in the background so you may not need to do Fourier filter afterwards. Background division may take care of lens shading, lighting non-uniformity, and your noisy sawtooth ramp structure all in one shot.
I don't understand why you're doing an opening. I don't see how that would give you a background.
Using imadjust doesn't help at all - no sense in even doing that at all. None.
You can use active contour to close the blobs on whatever blobs you do get on your first pass. I've attached a demo.
5 Comments
Image Analyst
on 26 Jun 2015
No. If the lines move, then of course the lines will go away if you average a bunch of them. That will be good enough to undo the lens shading, but not enough to get rid of the lines that are present in any one particular image. I tried summing vertically and dividing by it and it was better but not totally gone. I think you might have to do a Fourier filter but I haven't had time to program that up. I can attach a demo though.
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!