Extraindo coeficientes DCT de imagens e vídeos codificados

Existe uma maneira de extrair facilmente os coeficientes DCT (e parâmetros de quantização) de imagens e vídeos codificados? Qualquer software decodificador deve usá-los para decodificar imagens e vídeos codificados em bloco DCT. Então, eu tenho certeza que o decodificador sabe o que são. Existe uma maneira de expô-los a quem estiver usando o decodificador?

Estou implementando alguns algoritmos de avaliação de qualidade de vídeo que funcionam diretamente no domínio DCT. Atualmente, a maioria do meu código usa OpenCV, então seria ótimo se alguém souber de uma solução usando essa estrutura. Não me importo de usar outras bibliotecas (talvez libjpeg, mas isso parece ser apenas para imagens estáticas), mas minha principal preocupação é fazer o mínimo possível de trabalho específico de formato (não quero reinventar a roda e escrever meus próprios decodificadores). Quero poder abrir qualquer vídeo / imagem (H.264, MPEG, JPEG, etc) que o OpenCV possa abrir e, se estiver codificado em DCT, para obter os coeficientes de DCT.

Na pior das hipóteses, sei que posso escrever meu próprio código DCT de bloco, executar os quadros / imagens descompactados nele e depois voltarei ao domínio DCT. Essa dificilmente é uma solução elegante e espero poder fazer melhor.

Atualmente, eu uso o padrão comum do OpenCV para abrir imagens:

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

O código que estou usando para vídeo é igualmente trivial:

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

Nos dois casos, recebo um canal de 3 canaisIplImage no formato BGR. Existe alguma maneira de obter os coeficientes de DCT também?

questionAnswers(2)

yourAnswerToTheQuestion