Извлечение коэффициентов DCT из закодированных изображений и видео

Есть ли способ легко извлечь DCT-коэффициенты (и параметры квантования) из закодированных изображений и видео? Любое программное обеспечение декодера должно использовать их для декодирования изображений и видео с блочной DCT-кодировкой. Так что я' Я почти уверен, что декодер знает, что это такое. Есть ли способ показать их тому, кто использует декодер?

Я реализую несколько алгоритмов оценки качества видео, которые работают непосредственно в области DCT. В настоящее время большая часть моего кода использует OpenCV, поэтому было бы здорово, если бы кто-нибудь знал о решении, использующем эту структуру. Я не против использования других библиотек (возможно, libjpeg, но это, похоже, только для неподвижных изображений), но моя основная задача - сделать как можно меньше работы с конкретным форматом (я не хочу изобретать колесо и писать мои собственные декодеры). Я хочу иметь возможность открывать любое видео / изображение (H.264, MPEG, JPEG и т. Д.), Которое OpenCV может открывать, и, если оно закодировано в блоке DCT, чтобы получить коэффициенты DCT.

В худшем случае я знаю, что могу написать свой собственный блочный DCT-код, прогонял через него распакованные кадры / изображения, и тогда я возвращался в домен DCT. Это вряд ли изящное решение, и я надеюсь, что смогу добиться большего.

В настоящее время я использую довольно распространенный шаблон OpenCV для открытия изображений:

IplImage *image = cvLoadImage(filename);
// Run quality assessment metric

Код, который я использую для видео, одинаково прост:

CvCapture *capture = cvCaptureFromAVI(filename);    
while (cvGrabFrame(capture))
{
    IplImage *frame = cvRetrieveFrame(capture);
    // Run quality assessment metric on frame
}
cvReleaseCapture(&capture);

В обоих случаях случаях получаю 3-х канальный IplImage в формате BGR. Есть ли способ получить и коэффициенты DCT?

17
задан mpenkov 17 December 2010 в 11:42
поделиться