signal intensity value in MRI dicom file

Can Anybody help me to extract matlab code to extract signal intensity value in MRI dicom file with the corresponding pixel coordination? here i have attached dicom file Brain http://www.osirix-viewer.com/datasets/DATA/BRAINIX.zip

 採用された回答

harjeet singh
harjeet singh 2015 年 12 月 28 日

0 投票

hello Ranga use this to exract signal intensity
X = uint8(dicomread('IM-0001-0001'));
figure(1)
imshow(X)
pixel_co=[256 200];
pixel_vale=X(pixel_co(1),pixel_co(2))

6 件のコメント

Walter Roberson
Walter Roberson 2015 年 12 月 28 日
Caution: in general, dicom files often have intensities outside the range 0 to 255. Depending on the modality, values up to about 1790 are common, and some modalities use negative values as well. Some of the modalities commonly use floating point values.
Ranga Tudugala
Ranga Tudugala 2015 年 12 月 29 日
Dear Harjeet Singh
Its gives 0 every time..
can you explain pixel_co=[256 200]; what does it do?
i need to get pixel coordination and its actual Signal Intensity ( pixel value i can get from directly from X variable know isnt it ?)
harjeet singh
harjeet singh 2015 年 12 月 29 日
pixe_co is the variable having position of which intensity you want from the image
Image Analyst
Image Analyst 2015 年 12 月 29 日
pixel_co is an array with the pixel location in the form [row, column], so 256 is the row and 200 is the column. But we need to know what "the corresponding pixel coordination" means. Coordination means like the opposite of clumsy, or a series of activities in harmony with someone or something else, like "harjeet and I are working in coordination to solve your question." Do you really mean "coordinates"?
Walter Roberson
Walter Roberson 2015 年 12 月 29 日
If you get 0 every time then your data might have been negative and you should probably not have converted to uint8... as I cautioned could be a problem. Remove the uint8() part and try again and see what the values are.
Image Analyst
Image Analyst 2015 年 12 月 29 日
If you remove uint8() and find that it is negative, you will probably have to use [] in imshow():
imshow(X, []);

サインインしてコメントする。

その他の回答 (3 件)

Image Analyst
Image Analyst 2015 年 12 月 29 日

0 投票

Try calling impixelinfo() to interactively view the value as you mouse around over the image.
grayImage = dicomread(fullFileName);
imshow(grayImage);
colorbar;
hp = impixelinfo();
Or you can call imtool().
Ranga Tudugala
Ranga Tudugala 2015 年 12 月 30 日

0 投票

Okay Thanks...Guys..
I have extracted pixel value which I needed but now im struggling. I need to select every pixel which having particular value (range) in the image. any body ?

7 件のコメント

Walter Roberson
Walter Roberson 2015 年 12 月 30 日
mask = YourArray >= low_value & YourArray <= high_value;
selected_pixels = YourArray(mask);
Ranga Tudugala
Ranga Tudugala 2015 年 12 月 31 日
Thanks Its works
But not in the way I need, it should be show in the Image.. not as vector Mx
Walter Roberson
Walter Roberson 2015 年 12 月 31 日
mask = YourArray >= low_value & YourArray <= high_value;
NewImage = YourArray .* mask;
imshow(NewImage);
Ranga Tudugala
Ranga Tudugala 2015 年 12 月 31 日
(Y) Great.... Your Array.* Int16(mask) ;
It WORKED
Well Im working on converting CT image to MR Image... did you try such stupid thing ?
Image Analyst
Image Analyst 2015 年 12 月 31 日
Of course you can't turn an x-ray image into a magnetic image (I assume you know that). So, do you mean aligning them -- or "multimodality registration"?
By the way, an alternate way of masking is this:
NewImage = YourArray; % Initialize
NewImage(~mask) = 0; % Set outside mask to 0
I use both at various times. I've never timed them to see which (multiplication or assignment) is faster because they're both really fast.
Ranga Tudugala
Ranga Tudugala 2015 年 12 月 31 日
Articulacy It CAN.. that the researchers Do... what they seems cnt.. I think you are genius than me. you can do it easily.. I think i have found the best resource person.. for that..
here I hv attached the paper "MRI-based treatment planning with pseudo CT generated through atlas registration." http://www.ncbi.nlm.nih.gov/pubmed/24784377
Image Analyst
Image Analyst 2015 年 12 月 31 日
Well Star could answer better than me, but I'm reading "A pseudo CT...[snip]...was generated by deforming atlas CT images...[snip]. The required deformation for atlas CT images was derived from a nonlinear registration of conjugated atlas MR images"
So it sounds like they're aligning/warping CT images with the formula for warping based on MRI images, or what I called multi-modality registration. Maybe that's what you meant. I was thinking that you wanted to take MRI images and convert them to have it look just as if you'd taken a CT of the patient instead of an MRI. I think you can align CT or MRI volumes in a variety of ways, but I don't think you can get one from the other. Otherwise hospitals would not have two separate multi-million dollar instruments when they could get by with one.
Star, what do you think?

サインインしてコメントする。

Ranga Tudugala
Ranga Tudugala 2015 年 12 月 31 日
編集済み: Walter Roberson 2015 年 12 月 31 日

0 投票

Im getting this error after this codes
movingRegisteredAffineWithIC = imregister(moving,fixed,'affine',optimizer,metric,...
'InitialTransformation',tformSimilarity);
This is the error
Error using imregtform>parseInputs (line 240)
Parameters must be a character.
Error in imregtform (line 119)
parsedInputs = parseInputs(varargin{:});
Error in imregister (line 115)
tform = imregtform(varargin{:});
can somebody tell what happened ?

1 件のコメント

Walter Roberson
Walter Roberson 2015 年 12 月 31 日
Please start a new Question for this.

サインインしてコメントする。

カテゴリ

ヘルプ センター および File ExchangeNeuroimaging についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by