Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Алгоритмы > Алгоритм кодирования изображения


Автор: Jamezzz 22.7.2011, 21:05
Здравствуйте. Существует ли такой алгоритм кодирования изображения, при котором каждый бит данных будет влиять на всё изображение в целом, а не на отдельный пиксель? Другими словами, чем больше бит, тем более детализированным будет изображение.

Автор: maxim1000 22.7.2011, 21:15
Не уверен, чтобы каждый бит добавлял каких-то деталей, но постепенная детализация возможна.

Например, JPEG кодирует спектр изображения на разных частотах. Если степень сжатия большая - обрезает высокие частоты, если нужно сохранить побольше информации - оставляет. Так что можно сначала передавать низкие частоты, а потом повыше. Сначала будет размазанное, потом - всё больше деталей.

Автор: Jamezzz 22.7.2011, 21:22
Да, кстати. Попробую применить этот алгоритм ко всему изображению, а не к блоку 8х8. Спасибо.

Автор: VictorTsaregorodtsev 22.7.2011, 21:47
Jamezzz, см. в сторону IFS (iterative function system).
Правда, там не только число кодирующих бит (вернее, число параметров системы уравнений) влияет, но и число итераций отрисовки=распаковки изображения.

Автор: Jamezzz 22.7.2011, 21:49
VictorTsaregorodtsev, спасибо, и про это почитаю.

Автор: Jamezzz 22.7.2011, 22:08
<удалено>

Автор: _Y_ 23.7.2011, 07:09
Скорее в порядке юмора, конечно:
Условию задачи соответствует обычное изменения разрешения:
  • Например, любую картинку можно закодировать одним битом. Но по такому "изображению" можно будет только сказать светлее или темнее все изображение некоего граничного значения.
  • Второй бит добавленый по горизонтали, например, уже позволит судить независимо от левой-правой сторонах изображения. К тому же, если граничное значение не устанавливать, а использовать среднее по картинке, то двухбитная "картинка" позволит донести до ценителя изобразительного искусства информацию о том, какая из сторон светлее/темнее.
  • В общем, каждый добавленный бит будет позволять различить все болльше и больше деталей.
 smile  smile  smile 

Автор: Jamezzz 23.7.2011, 08:11
_Y_, с самого начала тоже об этом думал, но это не подходит, т.к. это кончится тем, что биты будут сначала влиять лишь на отдельные блоки изображения, а далее и на конкретные пиксели. Условию задачи соответствует только первый бит smile

Автор: x128 23.7.2011, 09:29
Цитата(Jamezzz @  22.7.2011,  21:22 Найти цитируемый пост)
Да, кстати. Попробую применить этот алгоритм ко всему изображению, а не к блоку 8х8. Спасибо.

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

Автор: Jamezzz 23.7.2011, 09:34
x128, спасибо, почитаю в этом направлении тоже.

Автор: esperanto 23.7.2011, 12:53
Цитата(x128 @ 23.7.2011,  09:29)
 
DCT для всего изображения - очень медленно, думаю больше подойдет Wavelet преобразование.

Что значит ДСТ очень медлено? Что такое скорость трансформа фурье?

Автор: esperanto 23.7.2011, 13:14
Почти любое пространство линейное с не ортогональными векторами или иное функцинальное пространство удовлетворит вашим требованиеям.

(почти любое) - векторы базиса выбираются случайно.

Автор: VictorTsaregorodtsev 23.7.2011, 21:58
Цитата(x128 @  23.7.2011,  09:29 Найти цитируемый пост)
DCT для всего изображения - очень медленно


Дык, давно есть альтернативы (если это можно так назвать). Есть очень быстрый алгоритм сегментации изображения в малое число цветов (от 2 до 32). Можно будет сделать так - сначала режем исходную картинку на 2 цвета, кодируем двухцветный итог через RLE, потом режем "остаток" (между исходной и двухцветной картинкой) на 3 (или опять на 2) цвета, снова кодируем через RLE... Сколько надо сделать "итераций" сжатия - столько и делаем, число итераций "распаковки" изображения тоже может быть, при необходимости, меньшим. 

В общем, пусть ТС поделится способом использования нужного ему алгоритма - а там и ясно станет, нужна ли либо максимальная теоретическая эффективность, либо максимальное практическое быстродействие, либо допустимы те или иные неоптимальности для удовлетворения каких-то субъективных требований к алгоритму и/или сжатой картинке.

Автор: Jamezzz 24.7.2011, 11:45
Цитата(VictorTsaregorodtsev @ 23.7.2011,  21:58)
а там и ясно станет, нужна ли либо максимальная теоретическая эффективность, либо максимальное практическое быстродействие, либо допустимы те или иные неоптимальности для удовлетворения каких-то субъективных требований к алгоритму и/или сжатой картинке.

На данном этапе мне это не нужно. Сначала хочу получить первые результаты, а уж потом, буду оптимизировать. Да и к сжатию это не имеет отношения.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)