2013-08-10 2 views
2

Шаги сжатия JPEG заключаются в следующем:код для шаг за шагом сжатия JPEG

Необработанные данные изображения -> вперед ДКП -> Квантование -> энтропийного кодирования ->JPEG изображение

Там это числа конвертеров и API-интерфейсов, а процесс конвертации - это один вызов API. Мне не удалось найти пошаговый код. Мой вопрос: где я могу найти код для каждого отдельного шага, или я могу выполнить эти отдельные шаги один за другим и создать стандартный образ JPEG? Я использую EmguCV для моего проекта стеганографии изображений.

ответ

3

, где я могу найти код для каждого отдельного шага

Если библиотека C может быть кандидатом для вас, вы должны взглянуть на jpec легкий кодер JPEG написан на C - обратите внимание, что он поддерживает только оттенки серого.

Основная функция кодирования (jpec_enc_run) легко читать и обеспечивает каждый шаг выше через внутренние функции:

/* open = write JPEG headers */ 
jpec_enc_open(e); 

while (jpec_enc_next_block(e)) { 
    /* compute the DCT for the current 8x8 block */ 
    jpec_enc_block_dct(e); 

    /* quantize the DCT coefficients for the current block */ 
    jpec_enc_block_quant(e); 

    /* re-order the quantized coefficients with the zig-zag pattern */ 
    jpec_enc_block_zz(e); 

    /* perform entropy coding of the current block and write to the global buffer*/ 
    e->hskel->encode_block(e->hskel->opq, &e->block, e->buf); 
} 

/* close = write JPEG end of image marker */ 
jpec_enc_close(e); 

можно выполнить эти отдельные шаги по одному и производить стандартный JPEG изображение

Это не доступно из коробки с jpec, но вы должны иметь возможность модифицировать ее для этой цели довольно легко (путем разоблачения и/или адаптации внутренних функций низкого уровня).

Смежные вопросы