# Segmenting brain images (Dicom format) using region-growing algorithm

I have a list of images in a folder where num denotes the index of image and I used num to run the iterations in a "for loop". The code is supposed to segment brain part from the brain CT images. Here is the link for region growing algorithm.

How do I increase the performance of my region-growing algorithm?

% CORD_XY(1),CORD_XY(2) is the seed point
% LEN Denotes the number of images in a folder
% num is used to iterate in "for loop"
% "img" here is single image from the folder in DICOM format

for num= 1:LEN
[row, col] = size(img);
th = 20;
diff = 10;

J = regiongrowing(img, CORD_XY(1), CORD_XY(2), th);
value1 = sum(sum(J > 0));

if num > 10)
th = 55;
elseif num <= 10
while diff < 0.2 * value1 && diff ~= 0 && th < 60
value1 = sum(sum(J > 0));
th = th + 10;
J = regiongrowing(double(img), CORD_XY(1), CORD_XY(2), th);
value2 = sum(sum(J > 0));
diff = value2 - value1;
end
end
end

J = regiongrowing(img, CORD_XY(1), CORD_XY(2), th-10);

• @Santosh how many iterations does this typically take until your convergence criteria are met? Mar 7, 2016 at 19:42
• It takes 4 to 5 iterations which i feel is very less. I am not using the above technique anymore and looking for alternatives. Thanks. Mar 21, 2016 at 19:13

Never do diff = 10; diff is a useful builtin function in Matlab, so using it as a variable name will cause the function to be useless. The same goes with max, sum, size and so on.
value1 = sum(sum(J > 0)); is a bit faster than value1 = sum(J(:)>0);, so with regards to performance you did the right thing. In my opinion however, sum(J(:)>0) is a bit cleaner, and it can also be scaled to more dimensions.
Instead of elseif N <= 10 you can simply do else, as they mean the same thing in this context.
If it takes 4-5 iterations pretty consistently, then maybe you can increase the initial value of th to e.g. th = 40. It will result in fewer iterations for most images, so a faster algorithm. You might benefit from guessing a good value, run the algorithm, if you don't hit convergence, jump to a lower value. This will perform better for most of the images, but will be slower for some. In total, it's likely faster.