이번에는 많이 발전시켜서 가지고 왔다. 연속적인 이미지에 대해서 분리 하는 기능이다. 일단 동영상을 1프레임씩 팟플레이어에서 쪼개주었고 이를 바탕으로 했다.
바뀐 것이 몇가지 있는데 먼저, 공백을 세는 방법의 변화이다.
보통 영상의 첫부분에는 아무것도 없는 피아노만 나오기 때문에 이 깨끗한(?) 이미지로 건반의 경계의 좌표를 얻은 후 이를 저장시켜 후에 이를 이용하는 것이다. 혹시나 모를 미연의 사고를 방지하자는 측면에서..
그리고 두번째로는 백건이든 흑건이든 어떤 색을 감지했으면 5px 뒤의 색도 검사하는 루틴이다. 건반의 경계가 색과 겹처서 진해지는 현상이 발생해 이상하게 인식하는 경우가 있어서 이런 코드를 추가했다.
마지막으로는 노드를 만들어서 저장하는 기능(?) 이라고 할까.
노드는 Key Position, Black/White, startFrame, endFrame이라는 정보를 가지고 있다.
이를 바탕으로 노드를 작성해서 초기에 입력한 fps를 이용해 비프음으로 연주(!)를 해주는 기능을 짜보았는데, 비프로는 동시재생이 되지 않아서 많이 어색하다.
일단 96초에 15s 정도 걸렸는데 생각보다 많이 걸린 이유를 대자면 bitmap을 불러오는데 시간이 상당히 걸려서 일 것이다. 그래서 수행시간을 줄이기 위에 멀티스레드로 비트맵을 불러오는 방법도 사용해 보았는데, bitmap을 사용안하고(즉 Dispose도 없이) 계속 리스트에 쌓아두기만 하면 메모리를 11GB나 먹는 참사가 일어났다 ㅋㅋㅋ(확실히 속도는 보장됨)
원래라면 방금처럼 2895프레임 분석시에 12~13mb 정도 먹는 것이..
어쨌든 많은 시행착오를 거쳐 일일이 직접 몇천 프레임을 확인하며 오류 데이터를 집계했고 거의 수정해 지금의 인식률은 99%이상 되지 않을까 싶다. 텐서플로우 쓰는 법 알았다면 그냥 처음부터 써서 저 인식을 편하게 했을텐데..
자 그래서 한번 연주를 들어보자. 아래는 원곡이다.
그리고 아래는 인식한 초반부분 beep 연주이다. 왼손 오른손 동시재생이 안되서 오른손만 실행시켰다.
이제 midi로 만들어 볼 일만 남았다!!
'개인 프로젝트 > 악보영상 midi 변환기' 카테고리의 다른 글
[도전 프로젝트] 악보영상으로 midi파일 만들기 #끝 (1) | 2020.06.09 |
---|---|
midi 파일 분석하기 #2 핵심부분만 (0) | 2020.06.09 |
midi 파일의 구조와 분석기 #1 기본적인 청크 구조 (0) | 2020.06.08 |
[도전 프로젝트] 악보 동영상으로 midi 만들기 #2 (0) | 2020.06.07 |
[도전 프로젝트] 악보동영상으로 midi 만들기 #1 (0) | 2020.06.05 |