# qtgetblk

## Syntax

``[vals,r,c] = qtgetblk(I,S,dim)``
``[vals,idx] = qtgetblk(I,S,dim)``

## Description

example

````[vals,r,c] = qtgetblk(I,S,dim)` returns blocks of size `dim`-by-`dim` from image `I` with quadtree decomposition `S`. The function returns the block values in `vals` and the row and column coordinates of the upper left corner of the blocks in `r` and `c`.```
````[vals,idx] = qtgetblk(I,S,dim)` returns the block values in `vals` and the linear indices of the upper left corners of the blocks in `idx`.```

## Examples

collapse all

Create a sample matrix representing a small image.

```I = [1 1 1 1 2 3 6 6 1 1 2 1 4 5 6 8 1 1 1 1 10 15 7 7 1 1 1 1 20 25 7 7 20 22 20 22 1 2 3 4 20 22 22 20 5 6 7 8 20 22 20 20 9 10 11 12 22 22 20 20 13 14 15 16];```

Perform a quadtree decomposition of the image, specifying a threshold of 5. `qtdecomp` splits a block if the maximum value of the block elements minus the minimum value of the block elements is greater than the threshold.

`S = qtdecomp(I,5)`
```S = (1,1) 4 (5,1) 4 (1,5) 2 (3,5) 1 (4,5) 1 (5,5) 2 (7,5) 2 (3,6) 1 (4,6) 1 (1,7) 2 (3,7) 2 (5,7) 2 (7,7) 2 ```

Get the blocks of size 4-by-4 from the quadtree decomposition. `qtgetblk` finds two blocks of this size.

`[vals,r,c] = qtgetblk(I,S,4);`

Select the second returned block. Display the values and the (row,column) coordinates of the upper left corner of the block.

```blknum = 2; blockValues = vals(:,:,blknum)```
```blockValues = 4×4 20 22 20 22 20 22 22 20 20 22 20 20 22 22 20 20 ```
`blockCoordinates = ['(',num2str(r(blknum)),',',num2str(c(blknum)),')']`
```blockCoordinates = '(5,1)' ```

## Input Arguments

collapse all

Grayscale image, specified as a numeric matrix.

Data Types: `single` | `double` | `int16` | `uint8` | `uint16` | `logical`

Quadtree structure, specified as a sparse matrix. If `S`(m,n) is nonzero, then the coordinate (m,n) is the upper left corner of a block in the decomposition, and the size of the block is given by `S`(m,n). You can get a quadtree structure by using the `qtdecomp` function.

Data Types: `double`

Block size, specified as a positive integer.

## Output Arguments

collapse all

Block values, returned as a `dim`-by-`dim`-by-k array, where k is the number of `dim`-by-`dim` blocks in the quadtree decomposition. If the quadtree decomposition contains no blocks of the specified size, then `vals` is returned as an empty matrix.

The ordering of the blocks in `vals` matches the column-wise order of the blocks in `I`. For example, if `vals` is 4-by-4-by-2, then `vals(:,:,1)` contains the values from the first 4-by-4 block in `I`, and `vals(:,:,2)` contains the values from the second 4-by-4 block.

Row coordinates of the upper left corners of blocks, returned as a k-element column vector of positive integers, where k is the number of `dim`-by-`dim` blocks in the quadtree decomposition. If the quadtree decomposition contains no blocks of the specified size, then `r` is returned as an empty matrix.

Column coordinates of the upper left corners of blocks, returned as a k-element column vector of positive integers, where k is the number of `dim`-by-`dim` blocks in the quadtree decomposition. If the quadtree decomposition contains no blocks of the specified size, then `c` is returned as an empty matrix.

Linear indices of upper left corners of blocks, returned as a k-element column vector of positive integers, where k is the number of `dim`-by-`dim` blocks in the quadtree decomposition. If the quadtree decomposition contains no blocks of the specified size, then `idx` is returned as an empty matrix.

## Version History

Introduced before R2006a