Hi, i need to divide all 5 images into 16x16 block, then perform "minus" operation (i.e 1st from 3rd image, then calculate "mean").Likewise for (3rd and 5th image) and (2nd and 4th image) using block process

2 views (last 30 days)
Thanks in advance

Accepted Answer

Walter Roberson
Walter Roberson on 29 Jun 2016
See mat2cell() and cellfun()

More Answers (1)

kaavya subramani
kaavya subramani on 29 Jun 2016
Edited: Walter Roberson on 29 Jun 2016
Thanks a lot sir, i have tried code using those 2 function, please check whether it is correct.
n=16*ones(1,16)
k=[img1 img2 img3 img4 img5]
for i=1:length(k)
blockres(i)=mat2cell(i,n,n)
end
for p=1:length(blockres)-2
for q=2+p:length(blockres)
minus(p)=cellfun(@minus,p,q,'uniform',0)
end
sum(p)=cellfun(@sum,minus,'uniform',0)
end
mean(p)=cellfun(@mean,sum,'uniform',0)
  5 Comments
kaavya subramani
kaavya subramani on 29 Jun 2016
Sorry sir,i noticed that from comment, but i not corrected in my code. n=16*ones(1,16) k={img1 img2 img3 img4 img5} for i=1:length(k) blockres(i)=mat2cell(k{i},n,n) end for p=1:length(blockres)-2 for q=2+p:length(blockres) minus(p)=cellfun(@minus,p{blockres},q{blockres},'uniform',0) end mean(p)=cellfun(@mean,sum,'uniform',0) end
kaavya subramani
kaavya subramani on 29 Jun 2016
k sir. n=16*ones(1,16) k={img1 img2 img3 img4 img5} for i=1:length(k) blockres(i)=mat2cell(k{i},n,n) end for p=1:length(blockres)-2 for q=2+p:length(blockres) res1(p)=cellfun(@minus,p{blockres},q{blockres},'uniform',0) end res2(p)=cellfun(@mean,sum,'uniform',0) end

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!