2012-05-18 2 views
0

C 프로그래밍에서 GOP (그림 그룹 - 기본적으로 비디오)를 따라 1 차원 DFT를 계산하려고합니다. gop을 시간 영역으로 변환하기 위해서는 시간 방향을 따라 1 차원 DFT를 적용해야합니다. 이 도메인에서 공간 정보와 시간 주파수 정보는 동일한 프레임에 있습니다.1D OpenCV를 사용하여 C에서 3D 함수 [비디오]의 DFT

크기 M (N, T)의 비디오 f (x, y, t)의 1D DFT에서 M x N은 각 프레임의 크기이고 T는

formula equation

사람이 내가이 OpenCV의 또는 유사한 것을 사용하여 처리 할 수있는 방법을 알고 있습니까 : GOP는 다음 식으로 계산된다?

추가 정보가 필요하면 알려주세요.

답변

1

질문을 올바르게 이해하면 시간 좌표와 관련하여 푸리에 변환을 계산할 수 있습니다.

이렇게하려면 3D 큐브를 2D 매트릭스로 재구성해야한다고 생각합니다. 수직 좌표는 픽셀 인덱스 ([0, MN-1] 범위)이고 수평 좌표는 시간 (범위 [0, T-1]), 즉 각 행은 시퀀스의 한 픽셀 값을 포함합니다. 그런 다음 cv::dft() 함수와 플래그 CV_DFT_ROWS을 사용하여 각 행을 따라 DFT 루틴을 적용 할 수 있습니다.

행렬 생성

(비디오 프레임은 M 행 및 N 열을 갖는 가정) 다음과 같이 진행할 것이다 행렬 생성하려면 :

  1. cv::Mat와 NM 행 할당을 T 열입니다. 여기서 T는 시간 창의 너비입니다 (몇 프레임 또는 while 시퀀스 길이 일 수 있음). 이 행렬을 W (창용)이라고합시다.

  2. 윈도우의 각 프레임 I (.,., t)에 대해, 0, M의 [0, N-1]의 각 픽셀 I (x, y, -1])를 W의 해당 위치, 즉 W (y * M + x, t)에 매핑합니다.

이 프로세스의 끝에서, W는 각 행에 시간적으로 변하는 1 픽셀의 값을 포함합니다. 그런 다음, CV_DFT_ROWS 플래그로 W의 cv::dft을 호출하여 2D 푸리에 변환을 수평 방향으로 제한하십시오. 여기가 시간입니다.

+0

나는 당신 생각을 생각합니다. 그러나 "3D 입방체를 2D 매트릭스로 재구성하라"고 말하면 어떻게 할 수 있습니까? 나는 입력으로 cvCaptureFromAVI를 사용하여 캡처하는 .mpeg 비디오를 가지고 있습니다. 어떻게해야합니까? 답변 해 주셔서 감사합니다 ... – user1404102

관련 문제