An intelligent image enhancement tool inspired by Renaissance techniques
Project description
Chiaroscuro Forge
An intelligent image enhancement tool inspired by Renaissance techniques. Features automatic parameter detection, advanced color preservation, quality metrics, parallel batch processing, GPU acceleration, REST API, and distributed processing. Perfect for photographers and developers seeking to transform ordinary images with artistic precision.
Features
Core Processing
- Intelligent Enhancement: Automatically analyzes image characteristics and applies optimal processing parameters
- Advanced Color Preservation: Maintains color fidelity while enhancing contrast and details
- Multiple Enhancement Methods: LAB, RGB, and ratio-based color processing modes
- Quality Metrics: Calculates SSIM, PSNR, MS-SSIM, and other perceptual quality scores
- Preset System: Save and reuse customized enhancement settings
- Application Types: Specialized processing for photography, documents, medical images, and art
Advanced Features (Phase 4)
- GPU Acceleration: CUDA (NVIDIA), OpenCL (cross-platform), and Metal (Apple Silicon) support for compute-intensive operations
- REST API: FastAPI-based HTTP API with authentication, rate limiting, and async job processing
- Distributed Processing: Task queue system with Redis and Celery backend support (local queue included)
- Property-Based Testing: Hypothesis framework integration for comprehensive edge case validation
- Batch Processing: Process multiple images in parallel with detailed reporting
Installation
Requirements
- Python 3.8+
- NumPy
- SciPy
- scikit-image
Optional Dependencies
- GPU Acceleration:
pyopencl(OpenCL),cupy(NVIDIA CUDA) - REST API:
fastapi,uvicorn,httpx,python-multipart - Distributed Processing:
redis,celery(for production deployments) - Property-Based Testing:
hypothesis(for advanced testing)
Install from PyPI
pip install chiaroscuro-forge
After installing, the CLI entrypoint is available as:
chiaroscuro-forge --help
Install from source
git clone https://github.com/MichailSemoglou/chiaroscuro-forge.git
cd chiaroscuro-forge
pip install -e .
Quick Start
Process a single image
chiaroscuro-forge input.jpg --output enhanced.jpg
Analyze an image and suggest parameters
chiaroscuro-forge input.jpg --analyze
Process multiple images in batch mode
chiaroscuro-forge "images/*.jpg" --output processed/ --batch
Create and use presets
# Save parameters as preset
chiaroscuro-forge input.jpg --analyze --save-preset my_preset
# Use preset to process images
chiaroscuro-forge input.jpg --output enhanced.jpg --preset my_preset
Command-Line Options
Input/Output
image_path: Path to input image or glob pattern for batch processing--output, -o: Path for output image or directory for batch processing--batch, -b: Enable batch processing mode
Processing Parameters
--application, -a: Application type (general, photography, medical, document, art)--preset: Name of a preset to use
Analysis Options
--analyze: Analyze image and suggest parameters--analyze-batch: Analyze multiple images and suggest optimal parameters--compare: Compare different processing methods--compare-dir: Output directory for comparison results
Preset Management
--save-preset: Save parameters as a preset--list-presets: List all available presets--preset-description: Description for the preset
Batch Processing Options
--workers, -w: Number of parallel workers (default: 4)--skip-existing: Skip files that have already been processed--report: Generate a JSON report with processing results--log-file: Path to log file for batch processing
Examples
Basic Enhancement
chiaroscuro-forge photo.jpg --output enhanced.jpg
Custom Application Type
chiaroscuro-forge document.jpg --output enhanced.jpg --application document
Analyze and Process
chiaroscuro-forge photo.jpg --analyze --output enhanced.jpg
Compare Processing Methods
chiaroscuro-forge photo.jpg --compare
Batch Processing with Report
chiaroscuro-forge "photos/*.jpg" --output enhanced/ --batch --workers 8 --report
Python API
You can use Chiaroscuro Forge directly in your Python code:
Basic Image Processing
from chiaroscuro_forge import process_image
processed, metrics = process_image(
"input.jpg",
output_path="enhanced.jpg",
application_type="photography"
)
print(f"SSIM: {metrics['ssim']:.4f}")
print(f"PSNR: {metrics['psnr']:.2f} dB")
Get Image Statistics
from chiaroscuro_forge import get_image_statistics
stats = get_image_statistics("photo.jpg")
print(f"Dimensions: {stats['dimensions']}")
print(f"Brightness: {stats['brightness']:.2f}")
print(f"Dynamic range: {stats['dynamic_range']:.2f}")
print(f"Contrast ratio: {stats['contrast_ratio']:.2f}")
Analyze Image Characteristics
from chiaroscuro_forge import analyze_image_characteristics
analysis = analyze_image_characteristics("photo.jpg")
print(f"Suggested parameters: {analysis['suggested_params']}")
GPU Acceleration
from chiaroscuro_forge.gpu import GPUContext, gpu_available
if gpu_available():
with GPUContext() as gpu:
result = gpu.gaussian_blur(image, sigma=2.0)
edges = gpu.sobel_filter(image)
REST API Usage
Start the API server:
uvicorn chiaroscuro_forge.api:app --reload
Then use it from Python:
import requests
# Create API key
response = requests.post(
"http://localhost:8000/api/v1/keys",
json={"name": "my-app", "rate_limit": 100}
)
api_key = response.json()["key"]
# Process an image
with open("image.jpg", "rb") as f:
response = requests.post(
"http://localhost:8000/api/v1/process",
headers={"X-API-Key": api_key},
files={"image": f},
data={"gamma": 1.5, "application_type": "photography"}
)
job_id = response.json()["job_id"]
Visit http://localhost:8000/docs for interactive API documentation.
Development
The project is structured around core image processing functions with a focus on quality and customizability:
Core Modules
processing.py: Main image processing pipeline with customizable parametersanalysis.py: Image analysis and automatic parameter detectionmetrics.py: Quality metrics (SSIM, PSNR, MS-SSIM) calculationbatch.py: Parallel batch processing with progress trackingpipeline.py: Clean pipeline pattern for stage-based processing
Advanced Modules (Phase 4)
gpu.py: GPU acceleration with CUDA, OpenCL, and Metal supportapi.py: REST API with FastAPI, authentication, and rate limitingdistributed.py: Distributed task queue system with multiple backend supportcache.py: Intelligent caching system for performance optimizationdi.py: Dependency injection container for flexible architecture
Testing
- 415+ passing tests with 80%+ coverage
- Property-based testing with Hypothesis
- GPU and API integration tests
- Comprehensive unit and integration test suites
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
This project is licensed under the MIT License - see the LICENSE file for details.
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 chiaroscuro_forge-1.0.1.tar.gz.
File metadata
- Download URL: chiaroscuro_forge-1.0.1.tar.gz
- Upload date:
- Size: 93.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
91bdd820bf6ccf79304925cc11e609575b3e64145e308471d2776f401fdf715b
|
|
| MD5 |
1b9fa4744ba2b4fc79471691d9f124c5
|
|
| BLAKE2b-256 |
4d3867836c8440cac2cbe79cb08f046d5c89932a4f1ce2cc7c46577e4d4c1906
|
File details
Details for the file chiaroscuro_forge-1.0.1-py3-none-any.whl.
File metadata
- Download URL: chiaroscuro_forge-1.0.1-py3-none-any.whl
- Upload date:
- Size: 57.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7f4372315645ffb839aaf8dd4e5dcacccdeaf9077f248d9f15c821b268a59131
|
|
| MD5 |
f6424d25ba77d07b241c5f0f34b5dece
|
|
| BLAKE2b-256 |
2bea2113e5c0e1498757bba13a6f9d102581ee1139907a939d5c56fe4042f490
|