본문 바로가기

전체 글153

[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차원 배열의 형태로 표현할 수 있습니다. $100\times100$ 크기의 이미지가 존재한다고 가정하면, 이 이미지에는 10,000개의 픽셀이 존재합니다. 이 각각의 픽셀은 디지털 이미지에서 사용되는 방식인 RGB 값을 가지고 있는데, R, G, B의 값은 그 범위가 0~255로 8비트로 이루어져 있습니다. 이 말인즉슨 $256\times256\times256$으로 총 16,777,216가지의 색상을 표현할 수 있다는 뜻입니다. 10,.. 2021. 5. 21.
[OpenCV/악보인식] 광학 음악 인식 기반 자동 편곡 시스템 - 2 개발환경 Client : Android Studio(Java) + NDK(C++) + OpenCV Server : Python 기본적으로 모바일 애플리케이션을 만들기로 했기 때문에, 클라이언트와 UI(User Interface)는 안드로이드 스튜디오로 개발하였습니다. 클라이언트는 크게 악보 인식 모듈, 뮤직 플레이어 모듈, 데이터 송수신 모듈로 구성돼 있습니다. 서버는 파이썬으로 개발되었고, 수신한 데이터를 기반으로 편곡 후 음악 파일을 생성하고 클라이언트 측으로 파일을 다시 송신합니다. 전처리 과정 1 - 악보 영상 그레이스케일 및 이진화 진행 악보를 인식하여 사운드로 재생하기 위해선 무슨 데이터들이 필요할까요? 음악에 대해 문외한이지만 기본적으로 무슨 장조/단조인지와 각 음의 높낮이와 박자 등이 필요.. 2021. 5. 21.