Sheet Music Dewarping - Binarization and rectification of sheet music images
Project description
Smude - Sheet Music Dewarping
Smude is a library dedicated to binarization and dewarping/rectification of sheet music images taken with smartphones:
Requirements
- Python 3.10+
- ~348 MB disk space for the Deep Learning model (downloaded on first run)
Installation
Using pip (recommended)
pip install smude
Using uv
uv is a fast Python package manager:
uv pip install smude
From source
git clone https://github.com/sonovice/smude.git
cd smude
pip install .
Usage
Command Line
Installing the package adds a command-line interface called smude:
smude input.jpg -o output.png
Options:
usage: smude [-h] [-o OUTFILE] [--no-binarization] [--use-gpu] infile
Dewarp and binarize sheet music images.
positional arguments:
infile Specify the input image
options:
-h, --help show this help message and exit
-o OUTFILE, --outfile OUTFILE
Specify the output image (default: result.png)
--no-binarization Deactivate binarization
--use-gpu Use GPU for inference
Python Library
from skimage.io import imread, imsave
from smude import Smude
image = imread("images/input_fullsize.jpg")
smude = Smude(use_gpu=False, binarize_output=True)
result = smude.process(image)
imsave("result.png", result)
Note: Smude will download a ~348 MB Deep Learning model on the first run.
How It Works
Rectification of sheet music pages is divided into several steps:
- ROI Extraction - Extract the sheet music page from the smartphone image
- Adaptive Binarization - Convert to binary image using Sauvola algorithm
- U-Net Segmentation - Pixelwise segmentation into "upper staff line", "lower staff line", and "bar line" classes
- Vanishing Point Estimation - Estimate the perspective vanishing point
- Spline Interpolation - Fit splines to detected staff lines
- Dewarping - Rectify the curved page geometry
The Deep Learning model was trained on thousands of public domain scores from musescore.com, augmented and rendered with Verovio, and artificially warped using code from NVlabs/ocrodeg.
The dewarping algorithm is based on:
Meng, G. et al. (2012): Metric Rectification of Curved Document Images. IEEE Transactions on Pattern Analysis and Machine Intelligence, 34(4), p. 707-722. DOI: 10.1109/TPAMI.2011.151
Tips for Best Results
- Full page coverage - Include the entire page plus some extra margins
- Even lighting - Ensure the sheet music is evenly lit without shadows
- Sharp focus - Blurry or defocused images will likely fail
- Book curvature - Works best with pages that have a cylindrical surface curve (typical for bound books)
License
This repository is under the "Commons Clause" License Condition v1.0 on top of GNU AGPLv3.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file smude-0.2.1.tar.gz.
File metadata
- Download URL: smude-0.2.1.tar.gz
- Upload date:
- Size: 333.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4631e2fd914d971964f8ee421c3e61b9a8c0c70785cc4120baef7a8d9b4404dd
|
|
| MD5 |
b16db31f624ab9d33ad9e6c0ede9f107
|
|
| BLAKE2b-256 |
0e25771b38f25408943887f01d551c86384629c215bd02334782b3aaa4404c3a
|
File details
Details for the file smude-0.2.1-py3-none-any.whl.
File metadata
- Download URL: smude-0.2.1-py3-none-any.whl
- Upload date:
- Size: 23.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a1f5f50674f7a0a1fb59e485719f662fed0a4e87eb3c04fb07380b86cb38e7bd
|
|
| MD5 |
ac0d17ffa11bb05e8f984c1afa757d4b
|
|
| BLAKE2b-256 |
8db383764c08ad43050eea91da197051463c8c3592f2bd86e875d7f06b6fd53d
|