NEUBIAS / training-resources

Resources for teaching/preparing to teach bioimage analysis
https://neubias.github.io/training-resources
Other
45 stars 21 forks source link

Shape measurements and diffraction limit #136

Open tischi opened 3 years ago

tischi commented 3 years ago

@manerotoni

I had now several users that wanted to measure shapes (e.g. volume) of objects that are at least in one dimension close to the diffraction limit.

I think it would be very important to have teaching material on this subject.

I was thinking of drawing ground truth images by hand and then blurring them to simulate the microscopy and then check which aspects of their shape can still be recovered.

In this regard deconvolution would also be very interesting.

Let me know if you have any material in this direction already.

manerotoni commented 3 years ago

Yes indeed very important. I had exactly one of those project and we moved to STED3D in order to perform those measurements. I may ask also if we can have some real data from this project, but this may be difficult as it is not yet published.

I think that simulated data is a better approach as it can really be used for ground truth checking. I remember that Kota @miura did once a lecture on nuclei volume measurement, this was ages ago.

Theoretically there must be a scaling law where your measurements falls apart depending on the PSF (2D and 3D). Would be nice to say that if your object is x*FWHM_PSF then you can't measure anymore volumes or area according to information theory. You can still measure intensities.

Antonio I will think about it on a teaching material. we can create an extra module that discuss the caveats of such measurements.

tischi commented 3 years ago

Do you know how much I would have to blur to create a realistic image (for a confocal)?

image
tischi commented 3 years ago

Some first ideas...

It is already interesting. If one adapts the brightness, a line with 50 nm appears very similar in sizeas a line with 200 nm width.

image image
run("Close All");
newImage("test", "8-bit black", 512, 512, 1);
run("Properties...", "pixel_width=5 pixel_height=5 voxel_depth=5");
run("Add...", "value=25"); // offset

pixelWidth = 5; // nm
Stack.setXUnit("nanometer");
Stack.setYUnit("nanometer");

setLineWidth( 50 / pixelWidth ); 
setForegroundColor(200, 200, 200);
drawLine(63, 70, 439, 70);

factor = 2;
setLineWidth( 50 * factor  / pixelWidth );
b = 200 / factor;
setForegroundColor( b, b, b);
drawLine(63, 200, 439, 200);

factor = 4;
setLineWidth( 50 * factor  / pixelWidth );
b = 200 / factor;
setForegroundColor( b, b, b);
drawLine(63, 350, 439, 350);

rename("truth");
run("Duplicate...", "title=image");

run("32-bit");
run("Gaussian Blur...", "sigma=100 scaled");
run("Enhance Contrast", "saturated=0.35");

// downsample to 50 nm pixel size
run("Scale...", "x=0.25 y=0.25 interpolation=Bilinear average create");
run("Add Specified Noise...", "standard=1");
tischi commented 3 years ago

with same fluorophore density:

image
tischi commented 3 years ago

width same width but varying fluorophore density:

image image image