Drawing a single ROI and then using it on multiple images in 3D matrix
3 ビュー (過去 30 日間)
古いコメントを表示
Hello everyone,
I am relatively new to matlab, and I am currently working on a medical image segmentation of a multiple images stored in a 3D matrix. I was trying to draw a ROI on a first slice and then use that ROI for all other slices to implement segmentation algorithm on them. But, after multiple tries I did not come up with a solution. The best what I was able to do is to draw ROI on EVERY single slice but that is taking to much time. Is there any easier way I could do this? Perhaps there's a way to automate or semi-automate this process so I don't have to draw ROI at each slice? Somehow I think that there is a simple solution to this, but I just can not find it.
CT is my 3D matrix that contains images. My code for drawing ROI is:
for i = 1:size(CT,3)
figure; imshow(CT (:,:,i), []);
hFH = imfreehand();
binaryImage(:,:,i) = hFH.createMask;
xy = hFH.getPosition();
blackMaskedImage =CT;
blackMaskedImage(~binaryImage) = 1;
setPositionConstraintFcn(hFH,xy);
close ();
end
Thanks in advance.
0 件のコメント
回答 (2 件)
Image Analyst
2014 年 10 月 7 日
Maybe something like this (untested):
hFig = figure; % Bring up a new figure.
for k = 1 : size(CT, 3)
subplot(1, 3, 1);
cla;
imshow(CT(:,:,i), []);
drawnow;
if k == 1
hFH = imfreehand();
binaryImage = hFH.createMask;
subplot(1, 3, 2);
cla;
imshow(binaryImage);
% Enlarge figure to full screen.
set(gcf, 'Units', 'Normalized', 'OuterPosition', [0 0 1 1]);
drawnow;
% xy = hFH.getPosition(); % Unused
end
blackMaskedImage = CT(:,:,i) .* uint8(binaryImage);
subplot(1, 3, 3);
cla;
imshow(blackMaskedImage);
drawnow;
end
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で Computer Vision with Simulink についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!