본문 바로가기

인공지능18

[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차원 배열의 형태로 표현할 수 있습니다. $100\times100$ 크기의 이미지가 존재한다고 가정하면, 이 이미지에는 10,000개의 픽셀이 존재합니다. 이 각각의 픽셀은 디지털 이미지에서 사용되는 방식인 RGB 값을 가지고 있는데, R, G, B의 값은 그 범위가 0~255로 8비트로 이루어져 있습니다. 이 말인즉슨 $256\times256\times256$으로 총 16,777,216가지의 색상을 표현할 수 있다는 뜻입니다. 10,.. 2021. 5. 21.