Последние записи
- Преобразовать массив байт в вещественное число (single)
- TChromium (CEF3), сохранение изображений
- Как в Delphi XE обнулить таймер?
- Изменить цвет шрифта TextBox на форме
- Ресайз PNG без потери прозрачности
- Вывод на печать графического файла
- Взаимодействие через командную строку
- Перенести программу из Delphi в Lazarus
- Определить текущую ОС
- Автоматическая смена языка (раскладки клавиатуры)
Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки?
Slurm подготовили для вас особенный продукт! Оставить заявку по ссылке - https://slurm.club/3MeqNEk
Online-курс Java с оплатой после трудоустройства. Каждый выпускник получает предложение о работе
И зарплату на 30% выше ожидаемой, подробнее на сайте академии, ссылка - ttps://clck.ru/fCrQw
22nd
Ноя
Фрактальное сжатие изображений.
Posted by bullvinkle under Топик-обзор
Хочется последовательно обсудить реализацию фрактального алгоритма кодирования ЦВЕТНЫХ изображений.
Пункт 1. Перевод изображения из RGB в YUV.
Y = 0.299 * R + 0.587 * G + 0.114 * B;
U = -0.14713 * R — 0.28886 * G + 0.436 * B;
V = 0.615 * R — 0.51499 * G — 0.10001 * B;
С формулами все ясно. А вот насчет той груды груды информации (Y, U, V для каждого пиксела) которую надо будет жранить для последующей обработки возникают вопросы.
Первое, что пришло на ум:
1. Изображение загружаем в БитМан bm;
2. Для хранения Y,U,V создаем
Type
colorYUV = Record
Y, U ,V : real;
end;
3. Создаем список для хранения указателей на colorYUV:
ListYUV:=TList.Create;
4. Объявляем R: ^colorYUV и далее для каждого пиксела:
New(R);
R^.Y:=0.299*getRValue(bm.Canvas.Pixels[i,j])+
0.587*getGValue(bm.Canvas.Pixels[i,j])+
0.114*getBValue(bm.Canvas.Pixels[i,j]);
R^.U:=-0.14713*getRValue(bm.Canvas.Pixels[i,j])-
0.28886*getGValue(bm.Canvas.Pixels[i,j])+
0.43600*getBValue(bm.Canvas.Pixels[i,j]);
R^.V:=0.61500*getRValue(bm.Canvas.Pixels[i,j])-
0.51499*getGValue(bm.Canvas.Pixels[i,j])-
0.10001*getBValue(bm.Canvas.Pixels[i,j]);
ListYUV.Add(R);
Как на Ваш взгляд все это дело упростить и сделать более грамотно?
Если же все так и оставить, то как грамотнее реализовать следующий шаг разбиение изображения в YUV сеткой 8 на 8, с условием что каждый квадрат легко можно было бы подвергнуть аффинным преобразованиям?
Похожие статьи
Купить рекламу на сайте за 1000 руб
пишите сюда - alarforum@yandex.ru
Да и по любым другим вопросам пишите на почту
пеллетные котлы
Пеллетный котел Emtas
Наши форумы по программированию:
- Форум Web программирование (веб)
- Delphi форумы
- Форумы C (Си)
- Форум .NET Frameworks (точка нет фреймворки)
- Форум Java (джава)
- Форум низкоуровневое программирование
- Форум VBA (вба)
- Форум OpenGL
- Форум DirectX
- Форум CAD проектирование
- Форум по операционным системам
- Форум Software (Софт)
- Форум Hardware (Компьютерное железо)