qtgetblk

Блокируйте значения в разложении дерева квадрантов

Описание

пример

[vals,r,c] = qtgetblk(I,S,dim) возвращает блоки размера dim- dim от изображения I с разложением дерева квадрантов S. Функция возвращает значения блока в vals и координаты строки и столбца левого верхнего угла блоков в r и c.

[vals,idx] = qtgetblk(I,S,dim) возвращает значения блока в vals и линейные индексы левых верхних углов блоков в idx.

Примеры

свернуть все

Создайте демонстрационную матрицу, представляющую маленькое изображение.

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];

Выполните разложение дерева квадрантов изображения, задав порог 5. qtdecomp разделяет блок, если максимальное значение элементов блока минус минимальное значение элементов блока больше порога.

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

Получите блоки размера, 4 на 4 от разложения дерева квадрантов. qtgetblk находит два блока этого размера.

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

Выберите второй возвращенный блок. Отобразите значения и (строка, столбец) координата левого верхнего угла блока.

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)'

Входные параметры

свернуть все

Полутоновое изображение, заданное как числовая матрица.

Типы данных: single | double | int16 | uint8 | uint16 | logical

Структура дерева квадрантов, заданная как разреженная матрица. Если S(m, n), является ненулевым, затем координата (m, n) является левым верхним углом блока в разложении, и размер блока дан Sm, n . Можно получить структуру дерева квадрантов при помощи qtdecomp функция.

Типы данных: double

Размер блока, заданный как положительное целое число.

Выходные аргументы

свернуть все

Блокируйте значения, возвращенные как dim- dim- k массив, где k является количеством dim- dim блоки в разложении дерева квадрантов. Если разложение дерева квадрантов не содержит блоков заданного размера, то vals возвращен как пустая матрица.

Упорядоченное расположение блоков в vals совпадает с постолбцовым порядком блоков в I. Например, если vals 4 4 2, затем vals(:,:,1) содержит значения от первого блока 4 на 4 в I, и vals(:,:,2) содержит значения от второго блока 4 на 4.

Координаты строки левых верхних углов блоков, возвращенных как k - вектор-столбец элемента положительных целых чисел, где k является количеством dim- dim блоки в разложении дерева квадрантов. Если разложение дерева квадрантов не содержит блоков заданного размера, то r возвращен как пустая матрица.

Координаты столбца левых верхних углов блоков, возвращенных как k - вектор-столбец элемента положительных целых чисел, где k является количеством dim- dim блоки в разложении дерева квадрантов. Если разложение дерева квадрантов не содержит блоков заданного размера, то c возвращен как пустая матрица.

Линейные индексы левых верхних углов блоков, возвращенных как k - вектор-столбец элемента положительных целых чисел, где k является количеством dim- dim блоки в разложении дерева квадрантов. Если разложение дерева квадрантов не содержит блоков заданного размера, то idx возвращен как пустая матрица.

Представлено до R2006a