2015-10-03 3 views
1

Я пытаюсь убедиться, что изображения METEOSAT, которые я получаю с их FTP-сервера, на самом деле являются действительными изображениями. Мое сомнение возникает из-за того, что все инструменты, которые я использовал до сих пор, жалуются на «определение таблицы Богуса Хаффмана» - но когда я просто прокомментирую это сообщение об ошибке, изображение выглядит вполне правдоподобным (сегмент серого на земле диска Земли).Почему «декодирование хафмана libjpeg» не разрешено?

От https://github.com/libjpeg-turbo/libjpeg-turbo/blob/jpeg-8d/jdhuff.c#L379:

while (huffsize[p]) { 
    while (((int) huffsize[p]) == si) { 
    huffcode[p++] = code; 
    code++; 
    } 
    /* code is now 1 more than the last code used for codelength si; but 
    * it must still fit in si bits, since no code is allowed to be all ones. 
    */ 
    if (((INT32) code) >= (((INT32) 1) << si)) 
    ERREXIT(cinfo, JERR_BAD_HUFF_TABLE); 
    code <<= 1; 
    si++; 
} 

Если я просто закомментируйте чек, или добавить проверку на huffsize[p] быть отличен от нуля (как в управляющее выражение объемлющего передачи контура в), затем djpeg удается преобразовать изображение к BMP, который я могу рассмотреть с небольшими проблемами.

Почему в комментарии утверждается, что коды с одним кодом не разрешены?

ответ

1

Он утверждает, что, поскольку они не допускаются. Это не означает, что там не могут быть изображения, которые не соответствуют стандарту.

Причина, они не имеют права это (от стандарта):

Создание энтропийных кодировкой сегментов целое число байтов, выполняется следующим образом: для кодирования Хаффмана, используют 1-бит, если необходимо, нанести конец сжатых данных, чтобы завершить окончательный байт сегмента .

Если код всего 1 был разрешен, тогда вы можете получить двусмысленность в последнем байте сжатых данных, где добавленные 1 могут быть другим закодированным символом.

+0

Вау, спасибо, и я даже не ожидал ответа, чтобы когда-либо появляться, не говоря уже о ничтожестве! Теперь мне просто нужно сказать космическому агентству, что их изображения плохие. –

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