Задание №7
Финальное задание заключается в том, чтобы придумать и реализовать собственный алгоритм сжатия изображений с потерями и без потерь. Уровень потерь должен задаваться пользователем задание №5. Алгоритм должен работать лучше, чем zip сжатие. Можно делать алгоритм специально для определенных типов изображений (например: скриншоты, иконки, сканированные изображения, кадры мультфильма).
Условия на алгоритм:
- Входное (незакодированное) изображение в RGB и выходное (декодированное) в RGB (в формате bmp)
- Свой собственный бинарный формат хранения сжатых данных
- Преобразование RGB в YUV (возможно, битовые плоскости)
- Квантование для сжатия с потерями
- Предикторы в любых комбинациях и вариациях (например, пиксель можно предсказывать в контексте других пикселей)
- Использование кодирования полиномом задание №6
Для расширения кругозора можно почитать про форматы PNG и GIF.
Для тестирования рекомендуется использовать стандартные изображения.
К заданию обязательно должно быть приложено словесное описание алгоритма сжатия. Это описание можно прислать заранее для проверки.