본문 바로가기

c++104

[OpenCV/악보인식] 광학 음악 인식 기반 자동 편곡 시스템 - 4 인식 과정 1 - 객체 검출 오선까지 제거되고 나면 본 인식 과정이 남아있습니다. 먼저 findContours 함수로 영상 내 모든 객체를 검출할 수 있습니다. // 악보 영상 내 모든 객체를 찾음 vector contours; findContours(sheetMusic, contours, RETR_LIST, CHAIN_APPROX_NONE); vector objectInfo; RectInfo rectInfo; cvtColor(sheetMusic, sheetMusic, COLOR_GRAY2RGB); for (int i = 0; i < contours.size(); i++) { Rect rect = boundingRect(contours[i]); // j는 몇 번째 오선 영역인지를 나타냄 for (int .. 2021. 5. 27.
[OpenCV/악보인식] 광학 음악 인식 기반 자동 편곡 시스템 - 3 전처리 과정 3 - 수평 히스토그램을 사용해 오선을 제거 그레이스케일 및 영상 이진화를 끝내고 오선 영역 밖의 데이터를 모두 제거한 후 마지막 하나의 전처리 과정을 더 수행해야 합니다. 바로 오선을 제거하는 것인데, 오선 제거는 악보를 인식하는데 있어 상당히 중요한 과제입니다. 악보 영상의 구성요소(박자, 음표, 쉼표 등)들을 수월하기 인식하기 위해서 오선을 제거합니다. 오선을 제거하는데는 수평 히스토그램을 사용합니다. 악보 영상에서 오선을 제거할 때 오선 영역 위에 존재하는 객체들이 변형되지 않게 오선의 위아래로 픽셀이 존재하지 않을 때만 제거합니다. // ==================================================================================.. 2021. 5. 24.
[OpenCV/악보인식] 광학 음악 인식 기반 자동 편곡 시스템 - 2 개발환경 Client : Android Studio(Java) + NDK(C++) + OpenCV Server : Python 기본적으로 모바일 애플리케이션을 만들기로 했기 때문에, 클라이언트와 UI(User Interface)는 안드로이드 스튜디오로 개발하였습니다. 클라이언트는 크게 악보 인식 모듈, 뮤직 플레이어 모듈, 데이터 송수신 모듈로 구성돼 있습니다. 서버는 파이썬으로 개발되었고, 수신한 데이터를 기반으로 편곡 후 음악 파일을 생성하고 클라이언트 측으로 파일을 다시 송신합니다. 전처리 과정 1 - 악보 영상 그레이스케일 및 이진화 진행 악보를 인식하여 사운드로 재생하기 위해선 무슨 데이터들이 필요할까요? 음악에 대해 문외한이지만 기본적으로 무슨 장조/단조인지와 각 음의 높낮이와 박자 등이 필요.. 2021. 5. 21.
[OpenCV/악보인식] 광학 음악 인식 기반 자동 편곡 시스템 - 1 개요 광학 음악 인식 기반 자동 편곡 시스템은 제가 학부 4학년 때, 친구 한 명(총 2명)과 같이 캡스톤디자인(졸업작품)으로 진행했던 프로젝트입니다. 해당 프로젝트를 하게 된 배경과 프로젝트의 목표에 대해 간단히 설명해보겠습니다. 기본적으로 '편곡'이라 함은 기존 곡의 멜로디를 가지고 음역을 바꾸거나, 악기의 구성을 변경하거나, 새로운 화음을 도입하는 등의 작업으로 음악을 편집하는 것을 의미합니다. 다만 편곡 작업은 진입장벽이 높아, 전공자가 아닌 일반인들이 시도하기에는 어려움이 있습니다. 이러한 배경에 저희 팀은 음악을 입력받아 자동으로 편곡해주는 시스템을 만들고자 하였고 프로젝트에 필요한 지식이나 연구를 조사하였습니다. 하지만 아직 저희의 역량으로 소리를 데이터로 변환하기엔 무리가 있다고 판단하여 .. 2021. 5. 21.