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