Masking across image but keeping centre
Show older comments
Hi, I have multidimensional data that I want to mask. I can do this by using a mask of ones, and then selectively taking elements that I want to ignore and making those in the mask 0. I then multiply my data with this mask, like so:
% Masking - Factor 2
MASK_ODD_ECHOS = ones(size(kspace));
MASK_ODD_ECHOS(:,1:2:end,:,:,:,:,1:2:end,:) = 0;
MASK_EVEN_ECHOS = ones(size(kspace));
MASK_EVEN_ECHOS(:,2:2:end,:,:,:,:,2:2:end,:) = 0;
However, I also want to always take the central 10% of this array on the (2nd dimension), which extends from 1 to 320. Thus I want to take 32 data points (ie: 10 % of 320) from the centre of a length 320 array, which means taking 16 on points on the left of datapoint 160, and 16 points to the right, giving me a central region index of 144:176. But I can't easily set this to 1 as some would have already been zero'd out by then.
I have a hacky solution to this which is to have 2 sets of mask. Start from the beginning, mask until centre. Skip centre, then mask again after centre.
% Masking - Factor 2
MASK_ODD_ECHOS_1 = ones(size(kspace));
MASK_ODD_ECHOS_2 = ones(size(kspace));
MASK_ODD_ECHOS_1(:,1:2:143,:,:,:,:,1:2:end,:) = 0;
MASK_ODD_ECHOS_2(:,177:2:end,:,:,:,:,1:2:end,:) = 0;
% Undersample even echos (2:2:end), skip every 2nd PE line with shift of one (2:2:end)
MASK_EVEN_ECHOS_1 = ones(size(kspace));
MASK_EVEN_ECHOS_2 = ones(size(kspace));
MASK_EVEN_ECHOS_1(:,2:2:142,:,:,:,:,2:2:end,:) = 0;
MASK_EVEN_ECHOS_2(:,178:2:end,:,:,:,:,2:2:end,:) = 0;
% Applying Masks:
kspace_CAIPI = kspace .* MASK_ODD_ECHOS_1;
kspace_CAIPI = kspace_CAIPI .* MASK_ODD_ECHOS_2;
kspace_CAIPI = kspace_CAIPI .* MASK_EVEN_ECHOS_1;
kspace_CAIPI = kspace_CAIPI .* MASK_EVEN_ECHOS_2;
This is inelegant and I feel this could be done in the opposite way: Start with a mask of zero, and set to 1 all points.
MASK_ODD_ECHOS = zeros(size(kspace));
MASK_ODD_ECHOS(:,1:2:end,:,:,:,:,1:2:end,:) = 1;
But this would mean losing all other data points. Is there a way to access those points in a more elegant way without making everything 0?
Accepted Answer
More Answers (0)
Categories
Find more on Region and Image Properties 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!