Привет всем ...Давненько я сюда не заходил — , а причина тому — мое решение разобраться с взаимодействием объектов в ОС Windows :) И все бы ничего , да вот столкнулся я (чисто по интересу) — с паковкой графических файлов — а именно , с алгоритмом JPEG :)
Значит, описываю в чем его суть и в чем суть моей проблемы :
Имеется изображение , а точнее матрица пикселей этого изображения , где элементы матрицы описывают цвета R,G,B ...На первом этапе мы преобразуем наше изображение в формат YCrCb, делая все это дело вот так (Для каждого пикселя нашего изображения):
После этого , мы разбиваем наше изображение на матрицу -8*8 пикселей...Т.е имеем как бы 8 * 8 пикселей и в три раза больше компонент цвета ...Тут же у меня возникает первый вопрос — а если изображение исходное формата 15*7 пикселей , как же нам его тогда разбить на матрицы по 8 пикселей :?(этого я нигде не нашел)...Ну да ладно — , тут еще можно двигаться дальше...А дальше у нас идет...Ммм в общем процитирую учебник , в том числе и предыдущий этап :
"Разбиваем исходное изображение на матрицы 8х8. Формируем из каждой три рабочие матрицы ДКП по 8 бит отдельно для каждой компоненты."
ДКП — дискретно косинусное преобразование ...)
Окей — первое предложение понятно , а вот как понимать второе :?В моем осознании , это как то так :
Берем наши компоненты , и составляем для каждой матрицу 8*8 , и таким образом будем иметь матрицу 8*8 компоненты Y,еще одну 8*8 компоненты Cr и еще одну 8*8 для Cb :?
На этом сам алгоритм не заканчивается ...Однако дальше , думаю стоит говорить разобравшись с предыдущим :)
Надеюсь всем тема покажется интересной , ибо тут , на сколько я знаю сидят люди , кому интересна именно эта часть программирования ,)
Буду рад любому дельному словцу :)
Мы разбиваем исходное изображение на блоки 8*8. Для каждого блока получаем три матрицы: Y, Cb и Cr компоненты соответствующих пикселей.
И дальше работаем уже с компонентами отдельно.
А вообще — алгоритм JPEG — интереснейшая вещь, знаю не понаслышке:)
И я так считаю :)А если глядеть дальше , то можно уже и на PNG наткнуться и на TIFF (хотя на сколько знаю — он проще чем JPEG — и не столь является пакером)...Ну а там гляди и до фотошопа не далеко :)))))))Думаю здесь ключевую роль играет тот факт , что мы можем видеть наглядное использование обычных алгоритмов (которые кстати как вариант вполне могут использоваться и тут в задачах) — в нашей , так скажем повседневной (ну у кого как) виртуальной жизни :)
Т.е это наверное и есть то для чего все эти алгоритмы нужны (как пример)...Сейчас , просто вспоминаю задачу , на доб капе — где надо было из текстовика убрать помехи , и посчитать количество кругов и квадратов ...Вот , если знать как представлено изображение , то можно всегда такой файлик получить , а потом уже делать что угодно , хоть помехи , хоть что )
Если же высота и ширина исходного изображения не делятся на 8, то просто дополняем их некоторыми — лучше не случайными, а более-менее похожими на цвет по краям — пикселями. Всё равно информация о настоящих размерах картинки заносится в файл, и любой декодер раскодирует размеры правильно.
И , кстати — спасибо огромное , за ответ :)