Блог пользователя z1p0

Автор z1p0, 12 лет назад, По-русски

Привет всем ...Давненько я сюда не заходил — , а причина тому — мое решение разобраться с взаимодействием объектов в ОС 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 :?

На этом сам алгоритм не заканчивается ...Однако дальше , думаю стоит говорить разобравшись с предыдущим :)

Надеюсь всем тема покажется интересной , ибо тут , на сколько я знаю сидят люди , кому интересна именно эта часть программирования ,)

Буду рад любому дельному словцу :)

  • Проголосовать: нравится
  • +12
  • Проголосовать: не нравится

»
12 лет назад, # |
  Проголосовать: нравится +9 Проголосовать: не нравится

Мы разбиваем исходное изображение на блоки 8*8. Для каждого блока получаем три матрицы: Y, Cb и Cr компоненты соответствующих пикселей.

И дальше работаем уже с компонентами отдельно.

А вообще — алгоритм JPEG — интереснейшая вещь, знаю не понаслышке:)

  • »
    »
    12 лет назад, # ^ |
      Проголосовать: нравится +11 Проголосовать: не нравится

    И я так считаю :)А если глядеть дальше , то можно уже и на PNG наткнуться и на TIFF (хотя на сколько знаю — он проще чем JPEG — и не столь является пакером)...Ну а там гляди и до фотошопа не далеко :)))))))Думаю здесь ключевую роль играет тот факт , что мы можем видеть наглядное использование обычных алгоритмов (которые кстати как вариант вполне могут использоваться и тут в задачах) — в нашей , так скажем повседневной (ну у кого как) виртуальной жизни :)

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

»
12 лет назад, # |
  Проголосовать: нравится +13 Проголосовать: не нравится

Если же высота и ширина исходного изображения не делятся на 8, то просто дополняем их некоторыми — лучше не случайными, а более-менее похожими на цвет по краям — пикселями. Всё равно информация о настоящих размерах картинки заносится в файл, и любой декодер раскодирует размеры правильно.

  • »
    »
    12 лет назад, # ^ |
      Проголосовать: нравится +11 Проголосовать: не нравится

    И , кстати — спасибо огромное , за ответ :)