How can I convert a DICOM image to a jpeg image or bmp image?

조회 수: 9 (최근 30일)
Said BOUREZG
Said BOUREZG 2015년 2월 27일
편집: Rance Tino 2018년 1월 26일
In my project, I need an medical images in bmp form, but the problem they didn't exist with that form, so I must convert a DICOM image format to bmp, I have write the code but a problem stop when I want to save X,MAP obtained, X is int16, than what should I do?.
  댓글 수: 3
Walter Roberson
Walter Roberson 2017년 1월 26일
If the returned MAP is non-empty then you need to
X = ind2rgb(X, MAP);
If you are certain that the returned MAP will be empty then you should not return it as an output from DICOMREAD.

댓글을 달려면 로그인하십시오.

채택된 답변

Image Analyst
Image Analyst 2015년 2월 27일
Why do you need them in that form? You can read the DICOM images in to your m-file with dicomread() so why do you need to read them in from a BMP with imread()?
  댓글 수: 11
Image Analyst
Image Analyst 2015년 3월 1일
Regarding your "Answer", if you want it to be uint8(), use mat2gray():
image8 = uint8(255 * mat2gray(X));
imshow(image8, []);
Said BOUREZG
Said BOUREZG 2015년 3월 1일
편집: Said BOUREZG 2015년 3월 1일
Yes, it works, thank u very much sir.. I hope that you will find the Eternal happiness source Sorry I was not here to see your last answer.

댓글을 달려면 로그인하십시오.

추가 답변 (2개)

Image Analyst
Image Analyst 2015년 3월 1일
Said, try this:
[filename, pathname] = uigetfile('*.dcm', 'Open DICOM Image');
if isequal(filename, 0) || isequal(pathname, 0)
uiwait(helpdlg('Image reading canceled.'));
else
[X,MAP]=dicomread(fullfile(pathname, filename));
subplot(1,2,1);
imshow(X, []);
title('16 bit image.', 'FontSize', 30);
% Convert to 8 bit.
image8 = uint8(255 * mat2gray(X));
subplot(1,2,2);
imshow(image8, []);
title('8 bit image.', 'FontSize', 30);
imwrite(image8,'myfile.bmp');
end
  댓글 수: 2
david martinez
david martinez 2017년 7월 1일
I get this error
Error using images.internal.imageDisplayValidateParams>validateCData (line 115) Multi-plane image inputs must be RGB images of size MxNx3.
Error in images.internal.imageDisplayValidateParams (line 27) common_args.CData = validateCData(common_args.CData,image_type);
Error in images.internal.imageDisplayParseInputs (line 78) common_args = images.internal.imageDisplayValidateParams(common_args);
Error in imshow (line 240) images.internal.imageDisplayParseInputs({'Parent','Border','Reduce'},preparsed_varargin{:});
Error in untitled111 (line 7) imshow(X, []);
the image is multiplanar, some idea
Walter Roberson
Walter Roberson 2017년 7월 1일
You cannot use imshow() to display more than 3 planes of a multiplanar image.
You need to use a volume viewer such as volumeViewer (R2017a or later), or you need to treat the planes as slices to be displayed, such as getting imdisp() or its follow-on SC from the File Exchange and using
imdisp(reshape(X, size(X,1), size(X,2), 1, size(X,3)))

댓글을 달려면 로그인하십시오.


Said BOUREZG
Said BOUREZG 2015년 3월 1일
yes, imwrite() work, but the image (.bmp) can't appear, X matrix before imwrite values are int16 so the range is not 0 to 255, so here when I save it as bmp I see only black and white. the dicom image is attached, run it and tell me

카테고리

Help CenterFile Exchange에서 Explore and Edit Images with Image Viewer App에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by