Creating a 5*5 window around the initial seed point in a region growing algorithm?

1 view (last 30 days)
Hi,
I am trying to implement a region growing algorithm to segment tumor in gastric. I would select the initial seed point manually. Then a 5*5 window would be created around the initial seed point. The minimum value inside the window would be selected as the first seed point of the region growing algorithm. Another new 5*5 window would be created around the the first seed point and the algorithm would be applied within that window. My problem is that I am unable to create the window around the initial seed point. I tried the code below but I don't get the correct result. The original image is attached as Original_Image.png and the tumor region would supposedly look as shown in Tumor.png. Any suggestions would be helpful. Thank you.
i=rgb2gray(imread('Original_Image.png'));
figure, imshow(i,[])
% gg = uint8(255 * mat2gray(i));
[x,y]=getpts;x=round(x);y=round(y);
a=imgaussfilt(i,2);
% a=rgb2gray(a);
b=adapthisteq(a);
m=regMLT(b,x,y,12);
m=imfill(m,'holes');
bw=imbinarize(m);
bw=bwareafilt(bw,1);
seg = region_seg(m, bw, 30);
seg=double(Y).*double(seg);
figure, imshow(seg,[])

Answers (1)

Maneet Kaur Bagga
Maneet Kaur Bagga on 16 Nov 2023
Hi Warid,
As per my understanding, the code provided is using a gaussian filter which can result in extending the window beyond the boundaries of the image, leading to errors.
Please refer to the modified code below, it will create a circular window around the initial seed point with a radius of 2 pixels. Also it checks if the window lies within the image boundaries, it uses new minimum value as the seed point for the region growing algorithm for gaining more accuracy.
% Initialize the minimum value and its corresponding coordinates
min_value = inf;
min_x = 0;
min_y = 0;
% Create a circular window around the initial seed point
radius = 2;
for i = x-radius:x+radius
for j = y-radius:y+radius
if i >= 1 && i <= size(i, 1) && j >= 1 && j <= size(i, 2)
% Calculate the distance from the pixel to the seed point
distance = sqrt((i - x)^2 + (j - y)^2);
% Update the minimum value and its coordinates if necessary
if distance <= radius && i ~= x || j ~= y
if i < min_value
min_value = i;
min_x = i;
min_y = j;
end
end
end
end
end
% Use the new minimum value as the seed point for the region growing algorithm
a=imgaussfilt(i,2);
b=adapthisteq(a);
m=regMLT(b,min_x,min_y,12);
m=imfill(m,'holes');
Hope this helps!

Categories

Find more on Read, Write, and Modify Image in Help Center and File Exchange

Products


Release

R2022a

Community Treasure Hunt

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

Start Hunting!