How to speed this up?

1 次查看(过去 30 天)
Mario
Mario 2018-8-18
评论: Mario 2018-8-18
Hello,
I am trying to optimize (speed up) my code and I was wondering if someone can help me with this.
In my code I got used to using for loops (even though I know they are not computationally efficient), and a small part of my code is below which I want to address first:
subplot(1,3,2),imshow(CT (:,:,bri), []); % show image # 20 from CT dataset
hFH = imfreehand(); % Create a binary image ("mask") from the ROI object
%%code starts from here
binaryImage = hFH.createMask;
close ();
close all force
[sizex, sizey, sizez]= size(binaryImage);
for ir=1:Br_snimaka
blank = zeros(sizex,sizey,sizez);
for i=1:sizex
for j=1:sizey
for d=1:ir
blank(i,j,d)=binaryImage(i,j,1);
end
end
end
end
CT(~blank) = 0;
The input (CT) is a dataset of CT images which are passing through this code. And the idea is to draw one mask and then pass that mask (ROI area) to all other images.
Any suggestions on how to speed this up?
Thanks in advance!

采纳的回答

Image Analyst
Image Analyst 2018-8-18
Try this instead of the for loop to do your masking:
binaryImage = hFH.createMask;
% Mask the image using bsxfun() function to multiply the mask by each channel individually.
CT = bsxfun(@times, CT, cast(binaryImage , 'like', CT));
  1 个评论
Mario
Mario 2018-8-18
This is awesome. Extremely fast, just what I was looking for. Thanks a lot Image Analyst.
I have more optimization issues that I will post in new posts. Thanks once again.

请先登录,再进行评论。

更多回答(0 个)

Community Treasure Hunt

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

Start Hunting!

Translated by