Load DICOM image, binarize, and save a new DICOM image
3 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
georgina company
el 1 de Mayo de 2024
Comentada: georgina company
el 2 de Mayo de 2024
I load a DICOM Image and binarize it.
Then I save a new dicom image. However, the saved image is only black, and not black and white.
Here is the code:
for i = 1:length(d)
na=d(i).name;
TF = startsWith(na,'Tumour');
if TF == 1
info = dicominfo(na);
greyImage = dicomread(info);
BW=imbinarize(greyImage);
fname1 = strcat('bin_',na)
dicomwrite(BW, fname1,info);
else
if TF == 0
fprintf('File do not match')
end
end
end
4 comentarios
Walter Roberson
el 1 de Mayo de 2024
dicomwrite(BW, fname1,info);
That asks to write a dicom image using the attributes of the original image. But the attributes of the original image are potentially unsuitable for writing an image of type logical.
Respuesta aceptada
Karl
el 2 de Mayo de 2024
Two things that might help are:
- Convert the binarized image to type double.
- Redefine the minimum and maximum greyscale values in the DICOM info.
I give an example below, based on your code.
% Read and display example DICOM image.
dicom1 = 'CT-MONO2-16-ankle.dcm';
info1 = dicominfo(dicom1);
image1 = dicomread(info1);
imshow(image1, [min(image1(:)),max(image1(:))])
% Binarize image, and write to DICOM.
dicom2 = 'binarized.dcm';
bw = double(imbinarize(image1));
info1.SmallestImagePixelValue = min(bw(:));
info1.LargestImagePixelValue = max(bw(:));
dicomwrite(bw,dicom2,info1);
% Read and display binarized image.
info2 = dicominfo(dicom2);
image2 = dicomread(info2);
imshow(image2)
9 comentarios
Más respuestas (0)
Ver también
Categorías
Más información sobre DICOM Format en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!