finding maximum abs value of four images

1 view (last 30 days)
I have four 16x16 images.I want to form another image by taking the maximum abs value of all four values of a particular pixel e.g. by comparing I1(3,3),I2(3,3),I3(3,3) and I4(3,3),I will be getting I5(3,3).
my piece of code is:
for k:4
.......
figure,imshow(B);
s=size(B)
eval(sprintf('im_%d=B;',k));
end
  1 Comment
Jan
Jan on 16 Mar 2013
Avoid using EVAL to hide an index in the name of a variable. It is much easier, nicer and more efficient to use an index as index:
im = cell(1, 4);
for k = 1:4
...
im{k} = B;
end

Sign in to comment.

Accepted Answer

Matt Kindig
Matt Kindig on 16 Mar 2013
No loops necessary:
CombinedImages = cat(3, I1, I2, I3, I4)
I5 = max(abs(CombinedImages),[],3)

More Answers (1)

Azzi Abdelmalek
Azzi Abdelmalek on 16 Mar 2013
[n,m]=size(im1);
for k=1:n
for p=1:m
v=[im1(k,p) im2(k,p) im3(k,p) im4(k,p)];
[~,idx]=max(abs(v));
im(k,p)=v(idx);
end
end

Categories

Find more on Images in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!