How to process each non-overlapped block of an image after it's sub-division?
1 回表示 (過去 30 日間)
古いコメントを表示
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 件のコメント
採用された回答
Walter Roberson
2018 年 3 月 14 日
cellfun() to process them. cell2mat() to recombine.
Have you considered using blockproc() instead of the steps you are taking now?
その他の回答 (1 件)
Image Analyst
2018 年 3 月 14 日
Use blockproc() and give it your function. It can be whatever you want. See attached examples.
4 件のコメント
Image Analyst
2018 年 3 月 14 日
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.
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!