Установите значения блока в разложении дерева квадрантов
Создайте демонстрационную матрицу, представляющую маленькое изображение.
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);
Получите блоки размера, 4 на 4 от разложения дерева квадрантов.
vals = qtgetblk(I,S,4);
Вычислите режим каждого блока 4 на 4 и установите все значения, чтобы равняться режиму.
valmodes = zeros(size(vals)); for blknum = 1:size(vals,3) valmodes(:,:,blknum) = mode(vals(:,:,blknum),'all'); end
Установите блоки в изображении к новым значениям. Блоки 4 на 4 в изображении теперь однородны.
J = qtsetblk(I,S,4,valmodes)
J = 8×8
1 1 1 1 2 3 6 6
1 1 1 1 4 5 6 8
1 1 1 1 10 15 7 7
1 1 1 1 20 25 7 7
20 20 20 20 1 2 3 4
20 20 20 20 5 6 7 8
20 20 20 20 9 10 11 12
20 20 20 20 13 14 15 16
I
— Полутоновое изображениеПолутоновое изображение, заданное как числовая матрица.
Типы данных: single
| double
| int16
| uint8
| uint16
| logical
S
— Структура дерева квадрантовСтруктура дерева квадрантов, заданная как разреженная матрица. Если S
(m, n), является ненулевым, затем координата (m, n) является левым верхним углом блока в разложении, и размер блока дан S
m, n . Можно получить структуру дерева квадрантов при помощи qtdecomp
функция.
Типы данных: double
dim
— Размер блокаРазмер блока, заданный как положительное целое число.
vals
— Блокируйте значенияdim
- dim
- k массивБлокируйте значения, заданные как dim
- dim
- k массив, где k является количеством dim
- dim
блоки в разложении дерева квадрантов.
Упорядоченное расположение блоков в vals
должен совпадать с постолбцовым порядком блоков в I
. Например, если vals
4 4 2, затем vals(:,:,1)
содержит значения, используемые, чтобы заменить первый блок 4 на 4 в I
, и vals(:,:,2)
содержит значения, используемые, чтобы заменить второй блок 4 на 4.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.