Hamming filter for MRI K-Space data

11 views (last 30 days)
Roshtha
Roshtha on 5 Nov 2018
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.

Answers (0)

Categories

Find more on Neuroimaging in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!