Best Method for Identifying Cells in noisy low contrast image

9 views (last 30 days)
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

Answers (1)

Image Analyst
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
Cameron
Cameron on 25 Jun 2015
So I took the average and it eliminated the vertical lines and made a fairly uniform background. Can I somehow apply this averaged image to the stack now to remove the background?
Image Analyst
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.

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!