Skip to main content

cpbd-py312

PyPI version Python License

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 imageio instead of deprecated scipy.ndimage.imread
  • Streamlined Codebase: Removed Python 2 compatibility code and legacy imports
  • Modern Packaging: Uses pyproject.toml for 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.imread with imageio.v2.imread
  • Removed __future__ imports and Python 2 compatibility code
  • Added modern pyproject.toml for 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.

Metadata

Release files for cpbd-py312 1.0.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for cpbd-py312 1.0.3
File Size Uploaded
cpbd_py312-1.0.3.tar.gz 371.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for cpbd-py312 1.0.3
File Interpreter ABI Platform
cpbd_py312-1.0.3-py3-none-any.whl Python 3 none any Details

Total release size: 378.7 kB

Release files / cpbd_py312-1.0.3.tar.gz

Download URL cpbd_py312-1.0.3.tar.gz
Size 371.0 kB
Tags Source
SHA-256 checksum
How to use checksums
c26600405ce92225ec34c92fa68c97c606490a13c208c18ceda2828e8bfbeb66
BLAKE2b-256 checksum
How to use checksums
bdc5b1b7d52ed76566086d0945106c239dc515146b28df95a8c8b1e9ee32f65f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.8

Release files / cpbd_py312-1.0.3-py3-none-any.whl

Download URL cpbd_py312-1.0.3-py3-none-any.whl
Size 7.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
014d423e1bd37e3743e69b6b3374192ae310daf5cb910841d5d6c37f47180f2c
BLAKE2b-256 checksum
How to use checksums
9b0fb2ac2c88511cc5d7e070de98853cc9a0b5eb561065eb0b2b48f9249dabc3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.8

Release history Release notifications | RSS feed

This release

1.0.3 This release

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page