Clear Filters
Clear Filters

hi, i need to divide 64x64 binary image into 3x3 overlapping blocks, then in each block ,if center value is 0 leave that block as it is, else that block converted into decimal number ,

1 view (last 30 days)
plz help me with matlab code
  5 Comments
Guillaume
Guillaume on 28 Feb 2017
Edited: Guillaume on 28 Feb 2017
You haven't clarified anything about what form the output should be.
Given the image:
[1 1 1 1
1 1 0 1
1 1 1 1]
which would results in two overlapping blocks:
1 1 1 1 1 1
1 1 0 1 0 1
1 1 1 1 1 1
what's the result supposed to be?
out = {[1 1 1;1 1 0;1 1 1], 255}
according to your description, maybe?
kaavya subramani
kaavya subramani on 28 Feb 2017
no sir,each 3x3 block has either 0 or single decimal number as output,(i.e) 64x64 will be divided as 3x3 overlapping block,then check each block, if center value is 0, the whole 3x3 is changed to single 0 else it is converted into decimal number in the order of idx

Sign in to comment.

Accepted Answer

Guillaume
Guillaume on 28 Feb 2017
m = randi([0 1], 64, 64); %demo matrix
out = zeros(size(m) - 3);
for col = 1 : size(m, 2) - 3
for row = 1 : size(m, 1) - 3
block = m(row:row+2, col:col+2);
if block(2, 2)
out(row, col) = polyval(block([1 4 7 8 9 6 3 2]), 2);
end
end
end

More Answers (1)

Image Analyst
Image Analyst on 28 Feb 2017
Looks like you're describing the local binary pattern, and I'm attaching my demo for that.

Community Treasure Hunt

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

Start Hunting!