How to process each non-overlapped block of an image after it's sub-division?
이전 댓글 표시
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
채택된 답변
추가 답변 (1개)
Image Analyst
2018년 3월 14일
2 개 추천
Use blockproc() and give it your function. It can be whatever you want. See attached examples.
댓글 수: 4
Mohsin Shah
2018년 3월 14일
편집: Walter Roberson
2018년 3월 14일
Walter Roberson
2018년 3월 14일
fh = @(block_struct) fwht2d(block_struct.data);
Mohsin Shah
2018년 3월 14일
편집: Mohsin Shah
2018년 3월 14일
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.
카테고리
도움말 센터 및 File Exchange에서 Convert Image Type에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!