dividing image into blocks and access them seperately
    3 次查看(过去 30 天)
  
       显示 更早的评论
    
I am diving image into 8x8 blocks
1) using loop
    kk=0;
    for i=1:(r/bs)
    for j=1:(c/bs)
    Block(:,:,kk+j)=Si((bs*(i-1)+1:bs*(i-1)+bs),(bs*(j-1)+1:bs*(j-1)+bs));
    end
    kk=kk+(r/bs)
    end
2)using mat2cell
blocks = mat2cell(Si, 8 * ones(1,r/8), 8 * ones(1,c/8));
I want to read and access each block individually.how to do it.i am doing like this
blocks = mat2cell(Si, 8 * ones(1,r/8), 8 * ones(1,c/8)); 
a1=blocks{1,1};
a2=blocks{1,1};
 :
 :
aend=blocks{end,end};
But I want it in loop so that to reduce no of lines of code but how to do it then.kindly help me.
0 个评论
采纳的回答
  Jan
      
      
 2014-2-23
        
      编辑:Jan
      
      
 2014-2-23
  
      You have blocks{1,1}, blocks{1,2}, ... already. There is no better, nicer, more convenient or faster method. Hiding an index in the name of the variables is a bad idea and belongs to teh programming anti-patterns.
If you have a large number of blocks, keeping them in one numerical array might be more efficient:
blocks = respahe(Si, 8, r/8, 8, c/8);
blocks = permute(blocks, [1,3,2,4]);
0 个评论
更多回答(1 个)
  Tushar Das
 2021-5-3
        
      编辑:Tushar Das
 2021-5-3
  
      In the above metioned about block dividing in 8x8 . Can anyone suggest how to perform for 2x2 ? .
0 个评论
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


