how to develop 2D images into 3D viewing.

2 Ansichten (letzte 30 Tage)
mohd akmal masud
mohd akmal masud am 8 Okt. 2021
Kommentiert: yanqi liu am 10 Okt. 2021
hi all, I have code below. Anyone know how to develop it into viewing as 3D, let say I want add thickness of that images 2.332mm. So that I can develop it into 3D images viewing.
Because if still 2D images, it cannot develop as 3D viewing.
% For binary images (png format, each pixel just have value 1 and 0.)
clc
clear all
dataSetDir = fullfile('C:\Users\Akmal\Desktop\I-131 256 28.02.2020\I-131 SPECT NEMA VALIDATION 01112019 256X256 26.09.2021 petang');
imageDir = fullfile(dataSetDir,'bnwaftersegmentation');
imds = imageDatastore(imageDir);
for i = 1:41
% subplot(6,7,i)
I = readimage(imds,i);
end
% For origional images 2D (png format, each pixel have pixel count.)
dataSetDir = fullfile('C:\Users\Akmal\Desktop\I-131 256 28.02.2020\I-131 SPECT NEMA VALIDATION 01112019 256X256 26.09.2021 petang');
imageDir = fullfile(dataSetDir,'Image');
imds = imageDatastore(imageDir);
for k = 1:41
% subplot(6,7,i)
J = readimage(imds,k);
end
%for viewing as 3D images
p = patch(isosurface(J, I==1));
axis equal
set(p,'FaceColor','c','EdgeColor','none');
alpha(p,1)
hold
but have error
Error using isosurface (line 72)
Isovalue must be a scalar.
sorry I ask many times, because I'm newer in Matlab Language.

Akzeptierte Antwort

yanqi liu
yanqi liu am 9 Okt. 2021
Bearbeitet: yanqi liu am 9 Okt. 2021
sir,please check the follow code to get some information
% For binary images (png format, each pixel just have value 1 and 0.)
clc
clear all
dataSetDir = fullfile('C:\Users\Akmal\Desktop\I-131 256 28.02.2020\I-131 SPECT NEMA VALIDATION 01112019 256X256 26.09.2021 petang');
imageDir = fullfile(dataSetDir,'bnwaftersegmentation');
imds = imageDatastore(imageDir);
for i = 1:41
% subplot(6,7,i)
I = readimage(imds,i);
% binary
Is{i} = logical(I);
end
% For origional images 2D (png format, each pixel have pixel count.)
dataSetDir = fullfile('C:\Users\Akmal\Desktop\I-131 256 28.02.2020\I-131 SPECT NEMA VALIDATION 01112019 256X256 26.09.2021 petang');
imageDir = fullfile(dataSetDir,'Image');
imds = imageDatastore(imageDir);
Js = [];
for k = 1:41
% subplot(6,7,i)
J = readimage(imds,k);
if ndims(J) == 3
J = rgb2gray(J);
end
% gray image
Js(:,:,k) = double(uint8(J).*uint8(Is{k}));
end
%for viewing as 3D images
Ds = smooth3(Js);
figure
hiso = patch(isosurface(Ds,5),...
'FaceColor',[1,.75,.65],...
'EdgeColor','none');
hcap = patch(isocaps(Js,5),...
'FaceColor','interp',...
'EdgeColor','none');
colormap copper
view(45,30)
axis tight
daspect([1,1,.8])
lightangle(45,30);
set(gcf,'Renderer','zbuffer'); lighting phong
isonormals(Ds,hiso)
set(hcap,'AmbientStrength',.6)
set(hiso,'SpecularColorReflectance',0,'SpecularExponent',50)
  4 Kommentare
mohd akmal masud
mohd akmal masud am 10 Okt. 2021
Hi sir, this is last once. I promise this is last. If I used 3D images , is it correct my coding?
% For binary images (png format, each pixel just have value 1 and 0.)
clc
clear all
dataSetDir = fullfile('C:\Users\Akmal\Desktop\I-131 256 28.02.2020\I-131 SPECT NEMA VALIDATION 01112019 256X256 26.09.2021 petang');
imageDir = fullfile(dataSetDir,'bnwaftersegmentation');
imds = imageDatastore(imageDir);
for i = 1:40
% subplot(6,7,i)
I = readimage(imds,i);
% binary
Is{i} = logical(I);
end
% For 3D images spect
myFolder = ('C:\Users\Akmal\Desktop\I-131 256 28.02.2020\I-131 SPECT NEMA VALIDATION 01112019 256X256 26.09.2021 petang\dcmoriextract');
filePattern = fullfile(myFolder, '*.dcm'); % Change to whatever pattern you need.
theFiles = dir(filePattern);
for K = 1 : length(theFiles)
baseFileName = theFiles(K).name;
fullFileName = fullfile(theFiles(K).folder, baseFileName);
fprintf(1, 'Now reading %s\n', fullFileName);
% Now do whatever you want with this file name,
% such as reading it in as an image array with imread()
P(:,:,K) = dicomread(fullFileName);
end
P = (Is{K});
yanqi liu
yanqi liu am 10 Okt. 2021
I think should use isosurface to get 3D structure

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

yanqi liu
yanqi liu am 9 Okt. 2021
Bearbeitet: yanqi liu am 9 Okt. 2021
use matrix to smooth data
  3 Kommentare
mohd akmal masud
mohd akmal masud am 10 Okt. 2021
Hi liu,
If i change my 2D images to 3D images, how to write the coordinate binary into 3D?
% For binary images (png format, each pixel just have value 1 and 0.)
clc
clear all
dataSetDir = fullfile('C:\Users\Akmal\Desktop\I-131 256 28.02.2020\I-131 SPECT NEMA VALIDATION 01112019 256X256 26.09.2021 petang');
imageDir = fullfile(dataSetDir,'bnwaftersegmentation');
imds = imageDatastore(imageDir);
for i = 1:41
% subplot(6,7,i)
I = readimage(imds,i);
% binary
Is{i} = logical(I);
end
% For 3D images spect
myFolder = ('C:\Users\Akmal\Desktop\I-131 256 28.02.2020\I-131 SPECT NEMA VALIDATION 01112019 256X256 26.09.2021 petang\dcmoriextract');
filePattern = fullfile(myFolder, '*.dcm'); % Change to whatever pattern you need.
theFiles = dir(filePattern);
for K = 1 : length(theFiles)
baseFileName = theFiles(K).name;
fullFileName = fullfile(theFiles(K).folder, baseFileName);
fprintf(1, 'Now reading %s\n', fullFileName);
% Now do whatever you want with this file name,
% such as reading it in as an image array with imread()
P(:,:,K) = dicomread(fullFileName);
end
Is it like this?
Js(:,:,k) = double(uint8(P).*uint8(Is{K}));
end
%for viewing as 3D images
Ds = smooth3(Js);
yanqi liu
yanqi liu am 10 Okt. 2021
yes,use logical image to filter target

Melden Sie sich an, um zu kommentieren.

Produkte


Version

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by