1 view (last 30 days)

Show older comments

I've written the following piece of code. But it's not running and giving an error which I'm unable to figure out.

z = rgb2gray(imread('gantrycrane.png')); figure, imshow(z)

for i = 2:263

N = 0;

for j = 2:399

for k = (i-1)+N:(i+1)+N

for l = j-1:j+1

if(z(k,l)>z(i,j))

z(i,j)=z(k,l);

end

end

end

N = N+1;

end

end

Simon Chan
on 21 Aug 2021

The value of N will be very large in the loop and gives an error.

Try the following to replace each element of the matrix by by the minimum value of its neighborhood (including the element itself).

for r = 2:263

for c = 2:399

region = z(r-1:r+1,c-1:c+1); % Extract the neighborhood for each element

z(r,c) = min(min(region));

end

end

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

Start Hunting!