How do I divide an image into blocks for processing?
이전 댓글 표시
I am new to MATLAB.
I am trying to write code which will divide the image in nonoverlaping blocks of size 3*3. I am supposed to do operations on specific blocks like getting the value of the center pixel of block and do some operations.
I don't know where to start. Using command like blockproc wont help. Can anyone suggest a start point?
댓글 수: 5
Jiro Doke
2011년 2월 14일
Why won't using "blockproc" help? That's exactly for doing what you proposed.
Brett Shoelson
2011년 2월 14일
What Jiro said.
David Young
2011년 2월 14일
Agreed - blockproc should be the business.
Aparna RAJAWAT
2016년 8월 5일
I want to divide an image into different block size.and image size is 16x16.block size are 4x4,5x5 and so on.please help me how to do coding in matlab
Image Analyst
2016년 8월 5일
답변 (2개)
Yaw
2011년 2월 17일
1 개 추천
The best way to do this is to use the "mat2cell" command. It's very simple.
- a=3; b=3; %window size
- x=size(f,1)/a; y=size(f,2)/b; %f is the original image
- m=a*ones(1,x); n=b*ones(1,y);
- I=mat2cell(f,m,n);
댓글 수: 1
Walter Roberson
2011년 2월 17일
blockproc() is able to handle situations where the original matrix does not happen to have dimensions that are multiples of 3. Your code will crash on those cases.
Vieniava
2011년 2월 14일
Suppose I is your image matrix. Trivial way is shown below:
s=size(I);
wing=1; % ;)
bs=2*wing+1; % block size
for i=wing: bs : (s(1)-wing)
for j=wing : bs : (s(2)-wing)
BLOCK=I( (i-wing):(i+wing) , (j-wing):(j+wing) );
%
% paste your function/code which processes the BLOCK
%
end
end
카테고리
도움말 센터 및 File Exchange에서 Neighborhood and Block Processing에 대해 자세히 알아보기
제품
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!