Сжатие изображения в дерево без указателей? - PullRequest
0 голосов
/ 16 марта 2020

Мне нужно разбить изображение на квадратное дерево. Я пытаюсь написать алгоритм, который бы делал это эффективно, преобразовывая изображение в сериализованную форму дерева квадрантов.

У меня трудности, потому что я стараюсь избегать использования указателей, чтобы я мог повторно использовать тот же алгоритм в вычислительном шейдере.

https://media.springernature.com/original/springer-static/image/prt%3A978-1-4614-8265-9%2F17/MediaObjects/978-1-4614-8265-9_17_Part_Fig2-286_HTML.png

В этом случае сериализованная форма дерева квадрантов представляет собой поток битов, где каждый 0 является ветвью, а 1 - листом. Таким образом, изображение 8x8, где верхний левый пиксель черный, а остальные белые, привело бы к двум двоичным числам:

tree: 0011101111111

values: 0000001000 (obv, если мне нужно больше, я могу просто значения должны быть длиной в несколько бит)

Основная цель этого преобразования - сжатие без потерь

значения отображаются 1: 1 для каждого истинного бита в данных дерева. И поэтому проблема, с которой я сталкиваюсь, - это написание рекурсивного алгоритма, который бы преобразовывал данные несжатого изображения в Z-упорядоченном виде в представление, подобное тому, которое я написал выше. Я не знаю, почему у меня так много трудностей с этим - я думаю, что основная часть, которая мешает мне, - это глубина и попытка помнить, где я могу пропустить чтение пикселей, потому что они уже сжаты

Заранее спасибо, у меня просто почему-то самое плохое время для этого.

...