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 件)


Translated by