AKA Math
Remove emojis and symbols from all files, update Dockerfile
d962d48
|
Raw
History Blame Contribute Delete
4.9 kB
# Sample Images Guide
The demo can work with any image, but here are some recommendations for educational purposes.
## Using Your Own Images
### Option 1: Upload at Runtime (Recommended for Users)
The simplest way is to use the **file uploader** in the sidebar. Users can upload their own images to experiment with.
**Supported formats:** PNG, JPG, JPEG
**Recommendations:**
- Images with gradients (to show posterization)
- Images with fine details (to show pixelation)
- Images with sharp edges (to show JPEG artifacts)
- Natural photos vs. graphics/screenshots
### Option 2: Use HuggingFace Dataset (Recommended for Deployment)
If you want a default image always available, use a HuggingFace dataset:
1. **Create a dataset on HuggingFace:**
- Go to https://huggingface.co/new-dataset
- Upload your images
- Make it public
2. **Update `app.py`:**
```python
image_path = hf_hub_download(
repo_id="your-username/your-dataset-name",
filename="your-image.jpg",
repo_type="dataset",
)
```
### Option 3: Bundle with Repository
For local development, you can include images in the repository:
1. **Create a directory:**
```bash
mkdir sample_images
```
2. **Add images to `.gitignore` if they're large:**
```
sample_images/*.jpg
sample_images/*.png
```
3. **Update `app.py`:**
```python
img = cv.imread('sample_images/your-image.jpg')
img = cv.cvtColor(img, cv.COLOR_BGR2RGB)
```
## Recommended Image Types
### For Demonstrating Sampling (Pixelation)
**Good choices:**
- **Text documents or signs** - shows when text becomes unreadable
- **Portraits** - shows loss of facial detail
- **Architectural photos** - shows loss of fine lines and edges
- **Natural scenes** - shows overall degradation
**Characteristics:**
- High resolution (512x512 or larger)
- Clear details at different scales
- Mix of fine and coarse features
### For Demonstrating Quantization (Bit Depth)
**Good choices:**
- **Sunset/sunrise photos** - smooth color gradients
- **Blue sky** - shows banding clearly
- **Gradients** - artificial gradients work great
- **Portraits** - shows posterization in skin tones
**Characteristics:**
- Smooth color transitions
- Wide tonal range
- Subtle color variations
### For Demonstrating JPEG Artifacts
**Good choices:**
- **Graphics with solid colors** - shows blocking clearly
- **Screenshots with text** - compression artifacts around text
- **High-contrast edges** - ringing artifacts
- **Patterns** - mosquito noise
**Characteristics:**
- Sharp edges
- Solid color areas
- High contrast regions
- Fine patterns or textures
## Sample Image Sources
### Free Stock Photos (Educational Use)
- **Unsplash**: https://unsplash.com/ (free license)
- **Pexels**: https://www.pexels.com/ (free license)
- **Pixabay**: https://pixabay.com/ (free license)
### Scientific Image Datasets
- **USC-SIPI Image Database**: http://sipi.usc.edu/database/
- Standard test images used in image processing research
- Includes "Lena", "Peppers", "Airplane", etc.
- **ImageNet**: https://image-net.org/
- Massive dataset, but you only need a few samples
### Creating Your Own Test Images
Use Python to generate test images with specific properties:
```python
import numpy as np
import cv2 as cv
# Gradient image (good for quantization demo)
gradient = np.zeros((512, 512, 3), dtype=np.uint8)
for i in range(512):
gradient[i, :, :] = int(255 * i / 512)
cv.imwrite('gradient.png', gradient)
# Pattern image (good for JPEG artifacts demo)
pattern = np.zeros((512, 512, 3), dtype=np.uint8)
pattern[::8, :] = 255 # Horizontal lines
pattern[:, ::8] = 255 # Vertical lines
cv.imwrite('pattern.png', pattern)
# Noise image (good for compression comparison)
noise = np.random.randint(0, 256, (512, 512, 3), dtype=np.uint8)
cv.imwrite('noise.png', noise)
```
## Image Guidelines
For best educational results:
1. **Size**: 512x512 or similar (not too large, loads faster)
2. **Format**: PNG for original (lossless)
3. **Content**: Clear subject matter, recognizable features
4. **Variety**: Have different types available for different concepts
5. **Rights**: Ensure you have permission to use/distribute
## Current Implementation
The app currently:
1. **Tries to download** from HuggingFace (if configured)
2. **Falls back** to a generated sample image with:
- Color gradients
- Geometric shapes
- Text
3. **Allows upload** via sidebar
This ensures the demo works even without internet access or external dependencies.
## Testing Your Images
Before using an image in production, test:
- Does it load quickly?
- Are effects visible at different sampling rates?
- Does quantization create noticeable banding?
- Are JPEG artifacts visible at low quality?
- Is the file size reasonable (<5MB)?
## Need Help?
For questions about image preparation or integration, open an issue on GitHub.