AbdallahHemdan / Orchestra

Orchestra is a sheet music reader (optical music recognition (OMR) system) that converts sheet music to a machine-readable version.
MIT License
102 stars 22 forks source link
binarization cv2 detection hemdan image-processing machine-learning machine-readable noise-removal omr omr-sheet optical-character-recognition optical-music-recognition orchestra segmentation staff-line-removal
![Component 16](https://user-images.githubusercontent.com/40190772/104846822-22d3e800-58e5-11eb-9c6c-b7de610bd483.png)

Orchestra

[![GitHub contributors](https://img.shields.io/github/contributors/AbdallahHemdan/Orchestra)](https://github.com/AbdallahHemdan/Orchestra/contributors) [![GitHub issues](https://img.shields.io/github/issues/AbdallahHemdan/Orchestra)](https://github.com/AbdallahHemdan/Orchestra/issues) [![GitHub forks](https://img.shields.io/github/forks/AbdallahHemdan/Orchestra)](https://github.com/AbdallahHemdan/Orchestra/network) [![GitHub stars](https://img.shields.io/github/stars/AbdallahHemdan/Orchestra)](https://github.com/AbdallahHemdan/Orchestra/stargazers) [![GitHub license](https://img.shields.io/github/license/AbdallahHemdan/Orchestra)](https://github.com/AbdallahHemdan/Orchestra/blob/master/LICENSE)

About

Orchestra is a sheet music reader (optical music recognition (OMR) system) that converts sheet music to a machine-readable version.

![image](https://user-images.githubusercontent.com/40190772/104846946-e81e7f80-58e5-11eb-8652-e54b86b46fe1.png)

How it works

List of steps we take to process the input sheet and get our results

1. Noise Removal

![1 noise_removed](https://user-images.githubusercontent.com/40190772/104847172-397b3e80-58e7-11eb-821f-33a83ee60416.png)

2. Binarization

![2 binarized](https://user-images.githubusercontent.com/40190772/104847174-3aac6b80-58e7-11eb-8c85-eb9747a7c786.png)

3. Staff line removal

![3 cleaned](https://user-images.githubusercontent.com/40190772/104847175-3b450200-58e7-11eb-8f47-1485b142e434.png)

4. Cutted buckets


![4 cutted-1](https://user-images.githubusercontent.com/40190772/104847181-3f711f80-58e7-11eb-83b4-435373642c8d.png)

![4 cutted-2](https://user-images.githubusercontent.com/40190772/104847179-3ed88900-58e7-11eb-8fbe-25a484c63092.png)

![4 cutted-3](https://user-images.githubusercontent.com/40190772/104847180-3ed88900-58e7-11eb-959f-817388bade77.png)

5. Segmentation and detection

![colored_0_1](https://user-images.githubusercontent.com/40190772/104849087-97f8ea80-58f0-11eb-9b4d-49172eb9d9a5.png)
![colored_0_2](https://user-images.githubusercontent.com/40190772/104849089-992a1780-58f0-11eb-9fb6-0c0cc6e6dac0.png)
![colored_0_3](https://user-images.githubusercontent.com/40190772/104849090-99c2ae00-58f0-11eb-9876-4eea7f322e83.png)

6. Recognition

  1. Cutted 1

    [ \meter<"4/4"> d1/4 e1/32 e2/2 e1/8 e1/16 e1/32 {e1/4,g1/4} e1/4 e1/8 c1/8 g1/32 c1/16 e1/32 ]

  2. Cutted 2

    [ \meter<"4/4"> {e1/4,g1/4,b1/4} a1/8 d1/8 c1/16 g1/16 d1/16 e1/16 c2/16 g2/16 d2/16 e2/16 {f1/4,g1/4,b1/4} c1/4 a1/4. a1/8 a1/32.. ]

  3. Cutted 3

    [ \meter<"4/4"> e1/16 e1/16 e1/16 e1/16 e1/4 e#1/4 g1/4 g&&1/4 g1/4 e#2/4 ]

Installation

  1. Clone the repository
$ git clone https://github.com/AbdallahHemdan/Orchestra.git
  1. Navigate to repository directory
    $ cd Orchestra
  2. Install dependencies
    $ pip install -r requirements.txt

Running

  1. Put you input files inside input folder

  2. Put you output files inside output folder

  3. Running

    python main.py $path_of_input_folder $path_of_output_folder

Contributing

Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are greatly appreciated.

Check out our contributing guidelines for ways to contribute.

Contributors


Abdallah Hemdan


Adel Mohamed


Kareem Mohamed^3


Ahmed Mahboub

Licence

MIT Licence