Это реализация этогоfractal image compression алгоритмопубликовано в IEEE в мои дни обучения в колледже
В этой программе используется библиотека < < Делаунай > > для постепенной триангуляции, которая также используется в системе < < Делаунай > >.Заявка на морфизацию
Алгоритм высокого уровня:
- Компрессия:
- Фрактальное сжатие фокусируется на сохранении связей между регионами изображения, а не на фактических пикселях, особенно между треугольниками в данном случае.
- Изображение разделено на треугольную сетку, состоящую из нескольких треугольников и образующую триангулированную область.
- Изображение подразделяется на новый набор триангуляций с более крупными треугольниками, предназначенными для кодовой книги.
- Триангуляции являются динамическими, и алгоритм разделения и слияния применяется на основе вариации пикселей треугольника.
- После определения триангуляции для кодового справочника наиболее репрезентативные 2°n треугольники выбираются для формирования кодового справочника. Значение n существенно влияет на время сжатия, оказывая при этом незначительное воздействие на коэффициент сжатия и достигнутое качество.
- Для каждого треугольника домена оптимальное картирование с треугольником из кодера запрашивается с использованием критерия минимальной средней квадратной погрешности (MSE)
- Оптимальное картирование между треугольниками можно найти путем создания комбинаций:
- Перемены вершин (6 вариантов)
- Определение размера компенсации в связи со средним уровнем
- Для предотвращения расхождений в ходе итеративного процесса декомпрессии этот коэффициент шкалы должен оставаться в пределах 0-1.
Кроме того, эти параметры следует категоризировать с использованием ограниченного числа битов для обеспечения того, чтобы как время сжатия, так и соотношение были разумными и соответствовали требуемому качеству.
- Записанная в сжатом файле информация по каждому каналу:
- Информация для воспроизведения двух триангуляций:
- Треугольники, разделенные в каждой итерации
- Вертики, которые были удалены в результате слияния (после завершения раздельных итераций)
- Выбор 2 хеновых треугольников в кодовом справочнике
- Оптимальное картирование каждого домена треугольника:
- Какой треугольник, который он использует для картирования (n бит)
- Оптимальная перестановка позвоночника (6 комбинаций, 3 бита)
- Компенсация (авторы указывают, что компенсация фактически представлена в 6 бит)
- Масштаб (авторы указывают, что шкала фактически представлена 6 битами)
- Декомпрессия (для каждого канала):
- Треугольники двух триангуляций получаются.
- Получены треугольники с кодировкой.
- Этот процесс повторяется до тех пор, пока не будет достигнуто сближение:
- Картирование всех доменных треугольников в их оптимальную корреляцию с треугольниками кодовой книги
После получения степени магистра искусственного интеллекта, я представляю, как извлечь наиболее значимые треугольники для кодового справочника, применяя K-медоиды.
Я не уверен, что новаторство улучшит алгоритм или помешает ему, но это спасает меня от необходимости программировать его сам, что первоначально казалось сложным.
Обработка изображений подразделяется на каналы, как правило, RGB.
Он использует многопроцессорную обработку, с одной нитью, выделенной для каждого канала.
С версией V1.1 был добавлен читатель, совместимый со стандартом IMOIO.
Таким образом, вы можете открыть сжатое изображение (.dfc) с приложением просто следующим образом:
BufferedImage image = ImageIO.read("image.dfc");