Декомпозиция Квадтри

Декомпозиция Квадтри является методом анализа, который включает разделение изображения на блоки, которые более однородны, чем само изображение. Этот метод раскрывает информацию о структуре изображения. Это также полезно в качестве первого шага в алгоритмах адаптивного сжатия.

Вы можете выполнить декомпозиция quadtree, используя qtdecomp функция. Эта функция работает путем деления квадратного изображения на четыре одинаковых квадратных блока, а затем проверки каждого блока, чтобы увидеть, соответствует ли он некоторому критерию однородности (для примера, если все пиксели в блоке находятся в пределах определенной динамической области значений). Если блок соответствует критерию, он не разделяется дальше. Если он не соответствует критерию, он снова подразделяется на четыре блока, и критерий тестирования применяется к этим блокам. Этот процесс повторяется итерационно, пока каждый блок не удовлетворяет критерию. Результат может иметь блоки нескольких различных размеров. Блоки могут быть такими маленькими, как 1 на 1, если вы не задаете обратное.

qtdecomp возвращает квадратурное декомпозиция как разреженную матрицу, того же размера, что и I. Ненулевые элементы представляют верхние левые углы блоков. Значение каждого ненулевого элемента указывает на размер блока.

Выполните декомпозицию Quadtree на изображении

В этом примере показано, как выполнить декомпозицию квадратичным цветом на полутоновом изображении 512 на 512.

Считайте полутоновое изображение в рабочую область.

I = imread('liftingbody.png');

Выполните декомпозицию quadtree путем вызова qtdecomp функция, задающая в качестве аргументов изображение и критерии тестирования, используемые для определения однородности каждого блока в разложении. Например, критерием может быть вычисление порога, такое как max(block(:)) - min(block(:)) >= 0.27. Можно также поставить qtdecomp с функцией (а не порог значением) для принятия решения о разделении блоков. Для примера можно основать решение на отклонении блока.

S = qtdecomp(I,0.27);

Просмотрите представление блока квадратурного декомпозиции. Каждый черный квадрат представляет однородный блок, а белые линии - контуры между блоками. Заметьте, что блоки меньше в областях, соответствующих большим изменениям интенсивности в изображении.

blocks = repmat(uint8(0),size(S));

for dim = [512 256 128 64 32 16 8 4 2 1];    
  numblocks = length(find(S==dim));    
  if (numblocks > 0)        
    values = repmat(uint8(1),[dim dim numblocks]);
    values(2:dim,2:dim,:) = 0;
    blocks = qtsetblk(blocks,S,dim,values);
  end
end

blocks(end,1:end) = 1;
blocks(1:end,end) = 1;

imshow(I), figure, imshow(blocks,[])

Figure contains an axes. The axes contains an object of type image.

Figure contains an axes. The axes contains an object of type image.

Для просмотра документации необходимо авторизоваться на сайте