우선 목표는 여러 영상에 대해 DTW를 수행하고 N개의 video, 각 video의 frame을 N(M)이라고 하였을 때,
Mediapipe로 관절을 추출 ( N*N(M)*33개 ) --> 33개는 Mediapipe에서 한 frame당 사람을 33개의 관절 data로 추출
이 data를 기반으로 dtw를 수행 --> 이는, 서로 다른 영상에 대해 비슷한 동작끼리 time sequence를 최대한 맞춘다는 의미
여기서 그럼 문제는 무엇이 있는가 ?
우선 dtw는 기본적인 algorithm에서 2개의 time serise에 대해 수행을 하며, data 또한 1d, 1d에 대해 처리를 한다.
이 말은 A=[1,2,3,4] B=[0,0,0,1,2,3,4]라는 data가 있을 경우 A의 0:3번 index B의 3:6 index를 최대한 맞춰준다는 의미이다.
하지만, 나의 경우에서는 data또한 1frame당 33개의 data이므로 2d data가 되고,
2개의 time serise간의 dtw가 아닌 N개 video에 대해 DTW를 수행해야된다는 것이다,
또한 DTW를 수행할 때 Mediapipe에서 추출한 33개의 좌표 data를 할 경우 서로 다른 영상에서 같은 동작을 했지만,
기준이 되는 사람이 다른 곳에 서있으며 동작을 취했다면? 이 해결이 안된다.
-> 이 문제에서는 좌표 data가 아닌 이를 후처리하여 사용함으로써 해결하였다.
N개의 time serise간의 DTW에 대한 내용은 어떤 논문에서도 찾을 수 없었다. 그래서 직접 개발하였다.
(나중에 방법에 대해 작성하도록 하겠다.)
추가로 DTW를 N개의 영상에서 수행하고 그 Matching된 각 frame에 대해 time sequence별로 저장을 한다.
그렇게 time sequence를 맞춘 후 영상의 흐름이 맞았다는 의미이기에 영상들의 data를 다시 평균을 구하고 가장 평균에
근접한 영상을 찾는다.
가장 근접한 영상을 찾는 방법은 아래의 방법으로 수행하였다.
'Project > DTW' 카테고리의 다른 글
using dynamic time warping in 3d data (0) | 2022.10.30 |
---|---|
여러 비디오를 dtw를 통해 타임시퀀스 맞추기 (0) | 2022.10.13 |
Dynamic Time Warping(DTW) study (0) | 2022.10.13 |