Image Processing Toolbox | ![]() ![]() |
Implement distinct block processing for an image
Syntax
B = blkproc(A,[m n],fun
) B = blkproc(A,[m n],fun
,P1,P2,...) B = blkproc(A,[m n],[mborder nborder],fun
,...) B = blkproc(A,'indexed',...)
Description
B = blkproc(A,[m n],fun)
processes the image A
by applying the function fun
to each distinct m
-by-n
block of A
, padding A
with zeros if necessary. fun
is a function that accepts an m
-by-n
matrix, x
, and returns a matrix, vector, or scalar y
.
blkproc
does not require that y
be the same size as x
. However, B
is the same size as A
only if y
is the same size as x
.
B = blkproc(A,[m n],fun,P1,P2,...)
passes the additional parameters P1,P2,...,
to fun
.
B = blkproc(A,[m n],[mborder nborder],fun,...)
defines an overlapping border around the blocks. blkproc
extends the original m
-by-n
blocks by mborder
on the top and bottom, and nborder
on the left and right, resulting in blocks of size (m+2*mborder)
-by-(n+2*nborder)
. The blkproc
function pads the border with zeros, if necessary, on the edges of A
. The function fun
should operate on the extended block.
The line below processes an image matrix as 4-by-6 blocks, each having a row border of 2 and a column border of 3. Because each 4-by-6 block has this 2-by-3 border, fun
actually operates on blocks of size 8-by-12.
B = blkproc(A,'indexed',...)
processes A
as an indexed image, padding with zeros if the class of A
is uint8
or uint16
, or ones if the class of A
is double
.
Class Support
The input image A
can be of any class supported by fun
. The class of B
depends on the class of the output from fun
.
Example
fun
can be a function_handle
created using @
. This example uses blkproc
to compute the 2-D DCT of each 8-by-8 block to the standard deviation of the elements in that block.
fun
can also be an inline object. This example uses blkproc
to set the pixels in each 8-by-8 block to the standard deviation of the elements in that block.
I = imread('alumgrns.tif'); fun = inline('std2(s)*ones(size(x))'); I2 = blkproc(I,[8 8],'std2(x)*ones(size(x))'); imshow(I) figure, imshow(I2,[]);
See Also
![]() | bestblk | brighten | ![]() |