У меня есть серия brain CT images
.
Цель состоит в том, чтобы сегментировать мозг, а затем separating brain into left and right halves
для вычисления площади мозга и площади крови в каждой половине.
Я прилагаю zip-файл из 7 образцов сегментированных изображений мозга, выбранных из последовательности (not continuous slices just slices that may cover all types of slices
). Ссылка для образцов изображений
На этот вопрос I am trying to divide the brain into left and right compartments
.
Я использовал, чтобы найти левый и правый начальные индексы изображения, чтобы разделить их пополам. Но это не дало точных результатов для разделения на левую и правую половинки.
Мой подход пока:
img_dir = pwd;
fileList = dir(img_dir);
fileList = fileList(~ismember({fileList.name},{'.','..'}));
num_of_slices = length(fileList);
for idx = 1: num_of_slices
fileName = fileList(idx).name;
img_slice_path = fullfile(img_dir,fileName);
imgs{idx} = imread(img_slice_path);
figure(1), imshow(imgs{idx},[]);
pause(0.5);
end
%%
% seperate left and right based on midpoint of left_idx and right_idx
[nrow, ncol] = size(imgs{1});
[leftBrain_imgs,rightBrain_imgs] = deal(cell(1,length(imgs)));
for val = 1: length(imgs)
tempImg = imgs{val};
columnsWithAllZeros = all(tempImg == 0);
left_idx = find(~columnsWithAllZeros,1,'first');
right_idx = find(~columnsWithAllZeros,1,'last');
cent_idx = floor(mean([left_idx,right_idx]));
rightImg_idxs = 1:cent_idx; % right side is shown left
leftImg_idxs = cent_idx+1:ncol; % left side is shown right
[leftBrain_img,rightBrain_img] = deal(zeros(nrow, ncol));
rightBrain_img(:,rightImg_idxs) = tempImg(:,rightImg_idxs);
leftBrain_img(:,leftImg_idxs) = tempImg(:,leftImg_idxs);
leftBrain_imgs{val} = leftBrain_img;
rightBrain_imgs{val} = rightBrain_img;
figure(2),
subplot(121), imshow(rightBrain_imgs{val},[]), title('right brain');
subplot(122), imshow(leftBrain_imgs{val},[]), title('left brain');
pause(0.5)
end
Note: The brain may be slightly tilted slightly to the left or right
.
Есть идеи, как это сделать?
Спасибо, Гопи