Hamming filter for MRI K-Space data

10 次查看(过去 30 天)
Roshtha
Roshtha 2018-11-5
Hello all, I have a 320 x 272 x 1 x 5 (Readout x PhaseEncode1 x PhaseEncode2 x Channels) k-space data from a Siemens MR machine. I apply hamming filter on raw data for ringing artefact removal. After applying the filter, the image reconstructed from filtered raw data appears blurred and loses resolution. The code and images reconstructed with and without hamming filter applied is shown below: My questions are: 1. Is a ringing filter always required for pre-processing MR K-Space data? 2. Whether the filter to be applied in both Readout and Phase Encoding dimensions?
kspacefilename = strcat(pwd,'\hamfilter_data_1.mat');
kspacefile = load(fullfile(kspacefilename));
kspacedata = kspacefile.kspace_data;
%Reconstruction and channel combine
img_data = ifftshift(fft(kspacedata,[],1),1);
img_data = ifftshift(fft(img_data,[],2),2);
img_data = sqrt(sum(abs(img_data).^2,4));
figure(1); imshow(abs(img_data),[]);
% Ringing artefact removal
Ndim = ndims(kspacedata);
prec = class( kspacedata );
filter = cast( 1, prec );
sz = size( kspacedata );
for d = 1:Ndim-1 % Excluding channel dimension
reshRule = ones(1,Ndim); % how the filter will be reshaped
filt_1Dime = hamming( sz(d), 'periodic');
reshRule(d) = sz(d);
filt_1Dime = reshape( filt_1Dime, reshRule );
filter = bsxfun( @times, filter, filt_1Dime ); % Build up mutli dimensional fiter
end
kspFiltered = bsxfun( @times, filter, kspacedata); % Apply fiter on kspace data
%Reconstruction and channel combine - After ringing artefact removal
img_data = ifftshift(fft(kspFiltered,[],1),1);
img_data = ifftshift(fft(img_data,[],2),2);
img_data = sqrt(sum(abs(img_data).^2,4));
figure(2); imshow(abs(img_data),[]);
Thanks.

回答(0 个)

类别

Help CenterFile Exchange 中查找有关 MRI 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by