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!