Dividing a binary image into 8x8(64) blocks and storing no of black points in each block into an 8x8 matrix
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
I want to divide a binary image into 8x8(64) blocks. Then I need to count the no. of black points in each block and stored them into an 8x8 matrix. My image has the size of 120x120. Please help me to do this.
1 comentario
Matt J
el 11 de Jul. de 2015
If your image is 120x120, then the final result should be 15x15, not 8x8.
Respuestas (3)
Image Analyst
el 11 de Jul. de 2015
Simply define a function to count zeros:
ZeroCounterFunction = @(theBlockStructure) sum(theBlockStructure.data(:) == 0);
Then call blockproc():
blockSize = [8 8];
blockyImage8 = blockproc(grayImage, blockSize, ZeroCounterFunction);
Attached is a full demo that will create this image:

2 comentarios
bio lim
el 12 de Jul. de 2015
If the answers helped you, you should accept the answer that helped you the most.
Matt J
el 13 de Jul. de 2015
Editada: Matt J
el 13 de Jul. de 2015
For large arrays, I suspect that the following, which uses SEPBLOCKFUN ( Dowload ) will be the fastest method, since it essentially requires only reshaping to get at the blocks,
counts = 64-sepblockfun(yourImage,[8,8],@sum)
0 comentarios
Ver también
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!