How to change the pixel value int16 to new value?
1 view (last 30 days)
Show older comments
Dear All,
I have image dicom. as attached. dimension is 128x128, have 45 frame. the type is int16.
I want to convert all the pixel value with new value IMG_cps as code below (the last one).
Anyone can help me?
clc
clear all
close all
Image_name = 'SPECTCTLD_EM_IRNCRR001_DS.dcm'; % add your file name
%% read dicom image
IMG = dicomread(Image_name);
IMG = double(IMG); % chage data type double
%% read dicom information
INFO = dicominfo(Image_name);
% time per projection
Time_per_projection = double(INFO.RotationInformationSequence.Item_1.ActualFrameDuration); % in msec
Time_per_projection = Time_per_projection/1000; % convert to sec
% number of projection
Num_projection = double(INFO.RotationInformationSequence.Item_1.NumberOfFramesInRotation);
% calculate acquisition time
Acquistion_duration = Time_per_projection * Num_projection; % sec
%% calculate cps in each pixel
IMG_cps = IMG/Acquistion_duration;
0 Comments
Answers (1)
Image Analyst
on 7 Sep 2023
Not sure I understand this: "I want to convert all the pixel value with new value IMG_cps" but why can't you just say
IMG(:,:) = IMG_cps;
where IMG_cps is your desired new gray level.
0 Comments
See Also
Categories
Find more on Convert Image Type in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!