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 visualización (últimos 30 días)
plz help me with matlab code
  5 comentarios
Guillaume
Guillaume el 28 de Feb. de 2017
Editada: Guillaume el 28 de Feb. de 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 el 28 de Feb. de 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

Iniciar sesión para comentar.

Respuesta aceptada

Guillaume
Guillaume el 28 de Feb. de 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

Más respuestas (1)

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

Categorías

Más información sobre Logical en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by