How to process each non-overlapped block of an image after it's sub-division?
    6 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
    Mohsin Shah
 el 14 de Mzo. de 2018
  
    
    
    
    
    Comentada: Image Analyst
      
      
 el 14 de Mzo. de 2018
            My function sub-divides an image into non-overlapping blocks (each block is a cell matrix). I wonder how to process each block and then recombine them to make a processed image? Let's say I want to apply fast Walsh Hadamard transform (fwht2) on each block. Here is my function:
if true
  function Blocks = imageBlock(I)
[m,n] = size(I);
Blocks = cell(m/8,n/8);
counti = 0;
for i = 1:8:m-7
 counti = counti + 1;
 countj = 0;
 for j = 1:8:n-7
      countj = countj + 1;
      Blocks{counti,countj} = I(i:i+7,j:j+7);
 end
end
end
0 comentarios
Respuesta aceptada
  Walter Roberson
      
      
 el 14 de Mzo. de 2018
        cellfun() to process them. cell2mat() to recombine.
Have you considered using blockproc() instead of the steps you are taking now?
Más respuestas (1)
  Image Analyst
      
      
 el 14 de Mzo. de 2018
        Use blockproc() and give it your function. It can be whatever you want. See attached examples.
4 comentarios
  Image Analyst
      
      
 el 14 de Mzo. de 2018
				You can only accept one, but you can Vote for mine. Voting will also give the answerer reputation points. You can vote for as many as you want.
Ver también
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

