I want to fuse image PET-CT

11 views (last 30 days)
Hi every one,
I have 135 slice Image PET(dicom format,size 256x256), and 135 slices images CT(dicom format, size 512x512). My PET image start with name PET001.dcm until PET135.dcm, then my CT image start with name CT001.dcm until CT135.dcm.
First i resize CT image into 256x256. Example:
>>P1=dicomread('PET001,dcm'); >>C1=dicomread('CT001.dcm'); >>C1R=imresize(C1, [256x256]);
then i fuse both image like this:
>>subplot(1,1,1); imshow(P1+C1R);
Any one can help me how to combine all the 135 slice image CT and 135 slice image PET in one subplot??

Accepted Answer

Bjorn Gustavsson
Bjorn Gustavsson on 20 Nov 2017
When you look at CT-slices you have to decide how to visualize them. In case all your slices are from different time-steps in a time-series (of for example a beating heart, lungs inhaling-exhaling) then a movie seems to be thenatural direction to go. In case they are different slices shifted in the direction perpendicular to the slices the first step is just to stack the slices together into a 3-D array and use matlb's slice functions. Then there are a number of contributions on the file exchange you should try Slicer, Vierer3D, Medical-image-reader-vierer, Volumetric-3.
HTH
  2 Comments
mohd akmal masud
mohd akmal masud on 20 Nov 2017
Edited: Walter Roberson on 24 Mar 2019
Dear All,
I just try only 6 slice image CT and 6 slice image PET. My name PET image starting with PET65.dcm until PET70.dcm. And my name CT image starting with CT65.dcm until CT70.dcm. I write the script like this:
P1=dicomread('PET65.dcm');
P2=dicomread('PET66.dcm');
P3=dicomread('PET67.dcm');
P4=dicomread('PET68.dcm');
P5=dicomread('PET69.dcm');
P6=dicomread('PET70.dcm');
C1=dicomread('CT65.dcm');
C2=dicomread('CT66.dcm');
C3=dicomread('CT67.dcm');
C4=dicomread('CT68.dcm');
C5=dicomread('CT69.dcm');
C6=dicomread('CT70.dcm');
C1R=imresize(C1, [256 256]);
C2R=imresize(C2, [256 256]);
C3R=imresize(C3, [256 256]);
C4R=imresize(C4, [256 256]);
C5R=imresize(C5, [256 256]);
C6R=imresize(C6, [256 256]);
subplot(1,1,1);
imshow(P1+C1R);
imshow(P2+C2R)
imshow(P3+C3R);
imshow(P4+C4R);
imshow(P5+C5R);
imshow(P6+C6R);
The image fused. But how to me to go back at the first slice. Because the image show from the first slice till end. But cannot scroll back.
mohd akmal masud
mohd akmal masud on 24 Mar 2019
Sorry all, another question i have but i wrote at this space. please help me
Dear all,
this is my code to view CT image by slice
P = zeros(256, 256, 72);
for K = 1 : 72
petname = sprintf('I4%03d.dcm', K);
P(:,:,K) = dicomread(petname);
end
imshow3D(P)
then, this is my code for view SPECT image by slice,
Noted: all my 42 slice SPECT image stored in one file.
[spect map]=dicomread('128x128');
info = dicominfo('128x128');
gp=info.SliceThickness;
spect=(squeeze(spect));%smooth3
aa=size(spect);aa=aa(3);
imshow3D(spect);
Anybody can help me to fuse both SPECT and CT images for all slice?

Sign in to comment.

More Answers (0)

Tags

No tags entered yet.

Community Treasure Hunt

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

Start Hunting!