Есть ли способ легко извлечь 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?