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