Mammogram feature extration

1 view (last 30 days)
ws
ws on 23 Oct 2011
Hi all, I have 2 questions for my feature extration part : 1. I have an image name "im1" and after I done fft2, my im1 value need to be in real part and absolute value before finding statistical features? e.g.
im1=real(im1)
im1=abs(im1)
2. If I want to find kurtosis and skewness, do I need to convert my im1 value into 1 row data before using them? e.g.
im1=im1( : );
k=kurtosis(im1);
s=skewness(im1);
Thank you.

Answers (2)

Image Analyst
Image Analyst on 23 Oct 2011
1. Number 1 is not a question. It's best if you don't overwrite your original spatial domain image (im1) with its spectrum. Call the fft something like fftOfim1 instead.
2. I don't have those functions in any of my toolboxes. You'd have to look at the help for them. If they require a 1D vector you should do it all in one shot, so you don't ruin im1's shape, by doing this
k = kurtosis(im1(:));
s = skewness(im1(:));
By the way, I think you wouldn't find nodules in mammograms by looking at the FFT. I could be wrong though if it's one of the methods listed in section 20.7.1 and deeper here: http://iris.usc.edu/Vision-Notes/bibliography/contentsmedical.html#Medical%20Applications,%20CAT,%20MRI,%20Ultrasound,%20Heart%20Models,%20Brain%20Models
  1 Comment
ws
ws on 24 Oct 2011
Thank for your reply.
For number 1 question was after I called fft2 function, do I need to perform real() and abs() before proceed to get the statistical features?
This is my example code:
function [dft]=Feature(im1)
imr=imresize(im1,[512 512]); % change my image size from 1024 to 512
im512=double(imr); % change the img type to double b4 fft2
imfft2=fft2(im512);
im=real(imfft2); % is this line required
im=abs(imfft2); % is this line required
% my statistical features here, e.g:
% m = mean(mean(im));
% s1 = std2(im);
% k = kurtosis(im); % my question 2
% s2 = skewness(im); % my question 2
dft=[m s s1 k];
end
Question2: I have look at the help for them, both can perform well in 2D vector, but the values for 1D and 2D are different, so I must use 1D or 2D vector?
From my code above, k and s2 will return 1x512 values and it cant save in dft, so I need to find those values by using :
k = mean(kurtosis(im);
s2 = mean(skewness(im));
or change it to 1D vector below?
k= kurtosis(im(:));
s2 = skewness(im(:));

Sign in to comment.


Image Analyst
Image Analyst on 24 Oct 2011
Question 1. Sure you can do that.
Question 2. Often for MATLAB functions (like sum, mean, etc.) if you pass it a 2D array you get the operations done on each column, not on the array as a whole. It looks like you're saying kurtosis and skewness do that. If that's not what you want, then use the (:) like I showed you.
I still doubt whether you'll find any abnormalities in the mammogram from this approach though.
  3 Comments
Image Analyst
Image Analyst on 24 Oct 2011
I think that approach will ultimately prove fruitless because I don't think that nodules and other abnormalities can be seen or identified from the Fourier transform. My suggestion was that link where you can find state of the art algorithms. For Q2, I'd use the 1D version, for what it's worth.
Walter Roberson
Walter Roberson on 24 Oct 2011
The fourier transform can potentially be valuable as part of calculating a phase image. When there are structures with different chemical makeup (such as tumors) then they may be highlighted by measuring differences in the phase changes.
On the other hand, such techniques are usually more suitable for radiogram or MRI than for x-rays: I suspect that probably it is not a common practice to used a coherent x-ray source ("x-ray laser") for mammograms at present.

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!