Action shot function with multiple images

조회 수: 2 (최근 30일)
Sara Foster
Sara Foster 2019년 9월 9일
댓글: Peter Bier 2019년 9월 11일
My function uses multiple RGB images as a 1xn 1D cell array and the output creates an action shot.
For example, this will consist of 6 different images containing one moon, but when combined it creates one image (an action shot).
So far I'm using a nested for loop for the rows, columns and number of images but is there any other way to approach this?
  댓글 수: 1
Sara Foster
Sara Foster 2019년 9월 10일
I asked what the process is for the code, I’m writing my own code but I was unsure how to approach it. (:

댓글을 달려면 로그인하십시오.

채택된 답변

Matt J
Matt J 2019년 9월 9일
편집: Matt J 2019년 9월 9일
Yes, here is an approach that uses no loops,
Image4D=double(cat(4,ImageCell{:}));
MedianImage = median(Image4D,4);
[~,idx]= max(vecnorm(Image4D-MedianImage,2,3),[],4);
mask=idx==reshape(1:numel(ImageCell),1,1,1,[]);
result=uint8( sum(Image4D.*mask,4) );
  댓글 수: 4
Matt J
Matt J 2019년 9월 9일
편집: Matt J 2019년 9월 9일
Here's another way with a double for-loop. This one might even be more efficient than the original because it allocates no memory for a mask.
Image4D=double(cat(4,ImageCell{:}));
MedianImage = median(Image4D,4);
[~,idx]= max(vecnorm(Image4D-MedianImage,2,3),[],4);
result=num2cell(zeros(size(MedianImage),'uint8'),[1,2]);
for i=1:numel(ImageCell)%images
loc=(idx==i);
for j=1:3 %color channels
tmp=Image4D(:,:,j,i);
result{j}(loc)=tmp(loc);
end
end
result=cell2mat(result);
Peter Bier
Peter Bier 2019년 9월 11일
Interesting approach, although well beyond the scope of what we've taught our students.
This is a reminder to all 131 students that as mentioned in class you need to write your own code for the project that is due shortly (rather than getting code written by one of the kind folks who answer questions on the mathworks forum). Copying any of the supplied code from above and submitting it as your own will be detected by our plagiarism detection software when we come to mark the project.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

Community Treasure Hunt

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

Start Hunting!

Translated by