Calculate the sharpness of an image with the CPBD metric (Python 3.12+ compatible)
Project description
cpbd-py312
A Python 3.12+ compatible fork of the Cumulative Probability of Blur Detection (CPBD) image sharpness metric. This fork modernizes the original python-cpbd package with updated dependencies and removes deprecated functionality.
About
cpbd-py312 is a modernized fork of the original python-cpbd package, specifically updated to work with Python 3.12 and newer versions. This package implements the Cumulative Probability of Blur Detection (CPBD) metric for no-reference image sharpness assessment.
CPBD is a perceptual-based metric that quantifies image sharpness without requiring a reference image. It estimates the probability of blur detection at each edge in an image and computes the cumulative probability to provide an overall sharpness score.
Key Updates in This Fork
- Python 3.12 Compatibility: Full support for Python 3.12
- Modern Dependencies: Updated to use
imageioinstead of deprecatedscipy.ndimage.imread - Streamlined Codebase: Removed Python 2 compatibility code and legacy imports
- Modern Packaging: Uses
pyproject.tomlfor PEP 517/518 compliant packaging
Installation
pip install cpbd-py312
Quick Start
from cpbd import compute
from imageio.v2 import imread
from skimage.color import rgb2gray
# Load image
image = imread('path/to/image.png')
# Convert to grayscale if needed
if len(image.shape) == 3:
image = rgb2gray(image)
# Calculate CPBD
cpbd_value = compute(image)
print(f'CPBD sharpness: {cpbd_value:.6f}')
Higher values indicate sharper images. The CPBD value ranges from 0 (very blurry) to 1 (very sharp).
Command Line Usage
You can also run CPBD from the command line:
python -m cpbd.compute path/to/image.png
Recent Updates (v1.0.0)
Python 3.12 Support
- Confirmed support for Python 3.12
- Dropped support for Python 2.7, 3.5, and 3.6
- Replaced deprecated
scipy.ndimage.imreadwithimageio.v2.imread - Removed
__future__imports and Python 2 compatibility code - Added modern
pyproject.tomlfor PEP 517/518 compliance
Updated Dependencies
- matplotlib >= 3.5.0
- numpy >= 1.21.0
- scikit-image >= 0.19.0
- scipy >= 1.7.0
- imageio >= 2.9.0
Development
Setup
git clone https://github.com/nawta/python-cpbd-py312.git
cd python-cpbd-py312
pip install -e '.[dev]'
Testing
# Run tests with current Python version
python setup.py test
# Test with Python 3.12
pytest
Performance
The following graph shows the accuracy of this implementation compared to the reference MATLAB implementation when tested on the LIVE Image Quality Assessment Database:
The implementation maintains compatibility with the original MATLAB reference implementation, providing consistent results for image sharpness assessment.
References
If you use this code in your research, please cite:
- N. D. Narvekar and L. J. Karam, "A No-Reference Image Blur Metric Based on the Cumulative Probability of Blur Detection (CPBD)," IEEE Transactions on Image Processing, vol. 20, no. 9, pp. 2678-2683, Sept. 2011.
- N. D. Narvekar and L. J. Karam, "An Improved No-Reference Sharpness Metric Based on the Probability of Blur Detection," International Workshop on Video Processing and Quality Metrics for Consumer Electronics (VPQM), January 2010.
License
See LICENSE.txt for details. Please note the copyright statement of the original MATLAB implementation.
Project details
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 cpbd_py312-1.0.3.tar.gz.
File metadata
- Download URL: cpbd_py312-1.0.3.tar.gz
- Upload date:
- Size: 371.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c26600405ce92225ec34c92fa68c97c606490a13c208c18ceda2828e8bfbeb66
|
|
| MD5 |
e20c7884f1c3bfe5f0913437ec1c1bc4
|
|
| BLAKE2b-256 |
bdc5b1b7d52ed76566086d0945106c239dc515146b28df95a8c8b1e9ee32f65f
|
File details
Details for the file cpbd_py312-1.0.3-py3-none-any.whl.
File metadata
- Download URL: cpbd_py312-1.0.3-py3-none-any.whl
- Upload date:
- Size: 7.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
014d423e1bd37e3743e69b6b3374192ae310daf5cb910841d5d6c37f47180f2c
|
|
| MD5 |
7a5625fbb44ba0cd68e2fac68030e376
|
|
| BLAKE2b-256 |
9b0fb2ac2c88511cc5d7e070de98853cc9a0b5eb561065eb0b2b48f9249dabc3
|