how to divide an image into 16x16 non overlapping blocks

9 views (last 30 days)
how to divide an image into 16x16 non overlapping blocks for finding the local binary pattern in the further steps
  1 Comment
Navya George
Navya George on 30 Jan 2017
we are first transforming the input image into YCbCr format and then dividing it into 16*16 blocks.So can we apply the above LBP algorithm to find the LBPcode of each block

Sign in to comment.

Accepted Answer

John Chilleri
John Chilleri on 28 Jan 2017
Edited: John Chilleri on 28 Jan 2017
Hello,
Assuming your image has size m x n where m and n are multiples of 16:
YourImage = im2double(YourImage);
[m,n] = size(YourImage);
Blocks = cell(m/16,n/16);
counti = 0;
for i = 1:16:m-15
counti = counti + 1;
countj = 0;
for j = 1:16:n-15
countj = countj + 1;
Blocks{counti,countj} = YourImage(i:i+15,j:j+15);
end
end
You can access the blocks by calling Blocks{i,j}.
Hope this helps!
  9 Comments
Hadeel
Hadeel on 16 Aug 2022
yes,please i want to display all the blocks of subplot in saperate axies
Walter Roberson
Walter Roberson on 16 Aug 2022
img = imresize(imread('flamingos.jpg'), [256 256]);
[rows, cols, panes] = size(img);
rb = rows/16; cb = cols/16;
tiledlayout(rb, cb, 'tilespacing', 'tight');
blockproc(img, [16 16], @dispblock);
function h = dispblock(block_struct)
nexttile();
image(block_struct.data);
axis off
%block_struct.location, hh
h = [];
end

Sign in to comment.

More Answers (1)

Image Analyst
Image Analyst on 28 Jan 2017
Edited: Image Analyst on 28 Jan 2017
This is a FAQ. See a couple of different ways to do this in the FAQ document: http://matlab.wikia.com/wiki/FAQ#How_do_I_split_an_image_into_non-overlapping_blocks.3F
See my attached demo for LBP.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!