Сжатие JPEG с использованием OpenCVC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Гость
 Сжатие JPEG с использованием OpenCV

Сообщение Гость »


Я пытаюсь выполнить базовое сжатие JPEG (DCT + квантование + IDCT) с использованием OpenCV без использования энтропийного кодирования/кодирования Хаффмана. Проблема в том, что после распаковки сжатого изображения оно даже близко не похоже на исходное.

Я следую этим руководствам:

Базовое моделирование сжатия/распаковки JPEG

Базовое сжатие JPEG с использованием OpenCV

Ниже приведены три изображения (исходное, сжатое и распакованное):
Изображение



Изображение



Изображение


Я использую следующую матрицу для яркости и цветности:

double dataLuminance[8][8] = { {16, 11, 10, 16, 24, 40, 51, 61}, {12, 12, 14, 19, 26, 58, 60, 55}, {14, 13, 16, 24, 40, 57, 69, 56}, {14, 17, 22, 29, 51, 87, 80, 62}, {18, 22, 37, 56, 68, 109, 103, 77}, {24, 35, 55, 64, 81, 104, 113, 92}, {49, 64, 78, 87, 103, 121, 120, 101}, {72, 92, 95, 98, 112, 100, 103, 99} }; двойной dataChrominance[8][8] = { {17, 18, 24, 27, 99, 99, 99, 99}, {18, 21, 26, 66, 99, 99, 99, 99}, {24, 26, 56, 99, 99, 99, 99, 99}, {47, 66, 99, 99, 99, 99, 99, 99}, {99, 99, 99, 99, 99, 99, 99, 99}, {99, 99, 99, 99, 99, 99, 99, 99}, {99, 99, 99, 99, 99, 99, 99, 99}, {99, 99, 99, 99, 99, 99, 99, 99} }; // РЕДАКТИРОВАТЬ 1: @Micka рассказала о проблеме использования imread/imwrite, поэтому я отредактировал свой код, чтобы использовать сжатое изображение непосредственно из моей программы.

Метод сжатия:

void ImageCompression::compression(){ // Получаем исходный размер изображения int height = imgOriginal.size().height; int width = imgOriginal.size().width; // Преобразование цвета изображения Мат imgColorConverted; cvtColor (imgOriginal, imgColorConverted, CV_BGR2YCrCb); // Преобразование 2D-массива в матрицу изображений Яркость мата = Mat(8,8, CV_64FC1, &dataLuminance); Матовая цветность = Mat(8,8, CV_64FC1, &dataChrominance); cout
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Сжатие JPEG с использованием OpenCV
    Anonymous » » в форуме C++
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous
  • Сжатие JPEG с использованием OpenCV
    Anonymous » » в форуме C++
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Сжатие JPEG с использованием openCV
    Anonymous » » в форуме C++
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Сжатие JPEG с использованием openCV
    Anonymous » » в форуме C++
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous
  • Генерируйте JPEG-в-TIFF без повторного сжатия источника JPEG в Java
    Anonymous » » в форуме JAVA
    0 Ответы
    31 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»