Установка значений блоков в декомпозиции квадратного дерева
Создайте образец матрицы, представляющей небольшое изображение.
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(м, н). Структуру квадротрея можно получить с помощью qtdecomp функция.
Типы данных: double
dim - Размер блокаРазмер блока, заданный как положительное целое число.
vals - Значения блоковdimоколо-dimмассив -by-kЗначения блоков, указанные как dimоколо-dim-by-k массив, где k - число dimоколо-dim блоки в декомпозиции квадратного дерева.
Порядок блоков в vals должен соответствовать порядку блоков по столбцам в I. Например, если vals 4 на 4 на 2, тогда vals(:,:,1) содержит значения, используемые для замены первого блока 4 на 4 в I, и vals(:,:,2) содержит значения, используемые для замены второго блока 4 на 4.
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.