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 次查看(过去 30 天)
Thanks in advance

采纳的回答

Walter Roberson
Walter Roberson 2016-6-29
See mat2cell() and cellfun()

更多回答(1 个)

kaavya subramani
kaavya subramani 2016-6-29
编辑:Walter Roberson 2016-6-29
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 个评论
kaavya subramani
kaavya subramani 2016-6-29
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 2016-6-29
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

请先登录,再进行评论。

Community Treasure Hunt

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

Start Hunting!

Translated by