본문 바로가기

java5

[OpenCV/악보인식] 광학 음악 인식 기반 자동 편곡 시스템 - 5 인식 과정 3 - 객체 인식 객체에 대한 인식 과정은 앞서 말했듯 완전 주먹구구식으로 객체가 가진 구조적 특징을 하나 하나 분석해 알고리즘을 짜 맞추었습니다. 예를 들면, 4분음표는 하나의 기둥을 가지고 있고 머리가 검은색으로 채워져 있다는 특징이 있습니다. 객체에서 기둥, 머리, 꼬리, 점에 해당하는 요소를 탐색한 후 4가지 요소를 조합하면 모든 음표를 구분할 수 있습니다. 기둥 머리 꼬리 점 온음표 X X X X 점온음표 X X X O 2분음표 O X X X 점2분음표 O X X O 4분음표 O O X X 점4분음표 O O X O 8분음표 O O 1 X 점8분음표 O O 1 O 16분음표 O O 2 X 점16분음표 O O 2 O 해당 객체가 무슨 음표인지 구분하는 것으로 박자에 대한 정보를 알 수 있.. 2021. 5. 27.
[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.