Loading, Processing and Analysing 3-D Images

5 Ansichten (letzte 30 Tage)
Anne-Lene
Anne-Lene am 7 Apr. 2014
Kommentiert: Image Analyst am 9 Jan. 2016
Hello,
I have a volumetric 3-D binary Image (only one file in '.tiff') and would like to upload, display and process it in Matlab.
The Image solely contains black (0) and white (1) values - black is background and white pixels grouped together are some objects.
The main goal is to count all of the objects. I tried this using bwconncomp(), which apparently does not work. According to matlab, the total number of objects is 4. However, only the first slice of my 3-D image contains 4 objects and the whole 3-D image contains over a 100.
I loaded the 3-D image using imread(). How do I have to upload the image correctly so that I can see and count all objects in the 3-D space.
I would be very happy to receive a reply.
Thank you,
Anne

Akzeptierte Antwort

Image Analyst
Image Analyst am 7 Apr. 2014
You say you have 4 objects in just the first slice and that there's at least 96 more in the remaining slices. Are you considering each slice to be one separate image? What if you have 20 slices and every single slice has those same blobs as the first slice. Do you have 4 objects, or 80 objects? bwconncomp() will say you have 4 because the objects in adjacent slices are connected to each other. What do you say?
  8 Kommentare
Anne-Lene
Anne-Lene am 8 Apr. 2014
sorry, should be attached now.
Anne-Lene
Anne-Lene am 8 Apr. 2014
OK, solved. The problem was how I used imread( .tif); reading all 2D images separately into a 4D matrix works. Thanks for the support.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

S C.Carl
S C.Carl am 8 Jan. 2016
Hi,
I have a similar problem but could not solve it. I used the following codes to reconstruct a 3D image that includes 2D slices
for slice = 1 : numberOfSlices filename = sprintf('image #%d', slice); fullFileName = fullfile(folder, filename); if exist(fullFileName, 'file) thisSlice = imread(fullFileName); array3d(:,:,slice) = thisSlice; end end
Then, I use imwrite and to obtain a tiff file that includes all 2D slices.
Now, I want to find connected components in the 3D tiff file. But, if I use
imread() function gives only the first slice in the tiff image.
Can you help me to solve this problem ?
  1 Kommentar
Image Analyst
Image Analyst am 9 Jan. 2016
You need to use the TIFF class if you want multi-page Tiff files. Otherwise you'll have to built up your 3D images slice by slice in 3D with a for loop
array3d = zeros(rows, columns, numSlices);
for slice = 1 : numSlices
thisImage = imread(......... % Read in this image file.
array3d(:,:,slice) = thisImage;
end

Melden Sie sich an, um zu kommentieren.

Community Treasure Hunt

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

Start Hunting!

Translated by