mri-nufft icon indicating copy to clipboard operation
mri-nufft copied to clipboard

Normalize the `pipe` density.

Open chaithyagr opened this issue 11 months ago • 7 comments

Currently the pipe density needs normalization. The best I feel is to take a template data, do FH ( D * F (x)) and normalize based on difference in means This can help have consistent lipschitz constants and also a good consitent candidate lamda/mu values for normalization

chaithyagr avatar Mar 06 '24 11:03 chaithyagr

a simple normalization like ensure sum of weight = 1 is not enough ?

paquiteau avatar Mar 06 '24 12:03 paquiteau

I find all nufft packages have similar problem. When considering data consistency, y - F(x) remains at a level (when x = FH(y) for initialization) that depends on the density compensation factor. I tried different normalization methods (involving the method you mentioned here), most failed in consistency and some rendered gridding failure. FDFH(y) should be nearly equal to y, but always has 1e2 or more data level difference.

PepperXZC avatar Apr 08 '24 06:04 PepperXZC

I find all nufft packages have similar problem. When considering data consistency, y - F(x) remains at a level (when x = FH(y) for initialization) that depends on the density compensation factor. I tried different normalization methods (involving the method you mentioned here), most failed in consistency and some rendered gridding failure. F_D_FH(y) should be nearly equal to y, but always has 1e2 or more data level difference.

As an example: subplot(232) is the true kspace signal, (233) is the F(x) in iterations, (236) is their difference. Can always see that F(x) under density compensation is greatly smaller and never reaches loss convergence.

image

PepperXZC avatar Apr 08 '24 06:04 PepperXZC

This is based on what sort of normalization? Could you not just normalize the 233 with 232 using multiplication on density compensation..?

chaithyagr avatar Apr 08 '24 06:04 chaithyagr

This is based on what sort of normalization? Could you not just normalize the 233 with 232 using multiplication on density compensation..?

(233) = F(FH(Dy)) so it has already been multiplied by density compensation :) (236) loss = y - F(FH(D*y))

PepperXZC avatar Apr 08 '24 06:04 PepperXZC

Thats good, but I mean D is not normalized in any form? Ideally try to just get:

w = mean(y)/mean(F(FH(D*y))

Then update D <- D*w

This is what we are trying to sorta propose in this issue. However, the proposal isnt really dependent on the k-space data but just the k-space locations.

chaithyagr avatar Apr 08 '24 06:04 chaithyagr

Thanks for your attention. I have tested your advice and this also failed when repeatedly using dcf in adjoint nufft and nufft back to the k-space domain. A little attempt here can show the inconsistency, not the image quality, but the value domain (colorbar).

image

PepperXZC avatar Apr 08 '24 12:04 PepperXZC

Some changes to density compensation were added in # 90 (https://github.com/mind-inria/mri-nufft/pull/90/commits/c0aa0c5f725b21c64f09603b250c1b965135e38b)

The main idea is to ensure the PSF is energy preserving.

paquiteau avatar May 26 '24 13:05 paquiteau

Thanks for your patience :)

PepperXZC avatar Jun 15 '24 17:06 PepperXZC