Hamming filter for MRI K-Space data
12 次查看(过去 30 天)
显示 更早的评论
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 个评论
回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Biomedical Imaging 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!