0

I am using matlab for my project involving nodule detection in 3-D lung CT scans. I need to get the eigen values of the hessian matrix of 3-D lung CT scans to apply the selective dot enhancement filter. I have computed Fxx, Fxy etc using imgradientxyz function. As I understand it, I need to form the matrix :

Fxx Fxy Fxz
Fyx Fyy Fyz
Fzx Fzy Fzz

and run the eig function on it. But I got an out of memory error while constructing this matrix, because each of Fxx, Fxy etc are matrices of the same dimension as that of the original 3D image. Is there any other way to do it? Or did I miss something?

Appreciate any help I can get.

Edit: Added some details to the question about the out of memory part.

Ganesh Pg
  • 33
  • 6
  • Do you get the Out of Memory when constructing the matrix or when calling eig? How large are your matrices `Fij`? Are the gradients `sparse` maybe? – Florian Feb 03 '17 at 08:40
  • Fij have the same dimensions as the original 3D image, which is about 500*500*100. And they are sparse. But wouldn't modifying them alter the eigen value? Shouldn't the zeroes be kept as they are? – Ganesh Pg Feb 03 '17 at 11:22
  • It appears that I am supposed to compute the hessian matrix for individual points, as opposed to the image as a whole. I was misinformed about this. Thank you for your help. – Ganesh Pg Feb 03 '17 at 11:34
  • Okay, this changes the problem I guess. For completeness: My comment regarding sparsity was that Matlab supports `sparse` matrices which do not represent any modification but merely a more efficient way of storing (and computing with) such matrices. You can read about it here: https://de.mathworks.com/help/matlab/ref/sparse.html There is even a function to compute (a few) eigenvalues of sparse matrices called `eigs`. – Florian Feb 03 '17 at 11:57
  • I'm sure that will be of use to me in the future. Thanks again – Ganesh Pg Feb 04 '17 at 12:37

0 Answers0