- Upload & Preview - Drag-and-drop with instant preview
- Format Support - PNG, JPG, GIF, BMP, TIFF
- Real-time histogram visualization
- Global histogram equalization
- CLAHE (Contrast Limited Adaptive Histogram Equalization)
- Contrast stretching
- Blur: Gaussian, Box, Median, Bilateral
- Edge Detection: Sobel, Laplacian, Canny
- Enhancement: Sharpen, Unsharp Mask, Emboss
- Custom Kernels: Create your own filters
- FFT magnitude and phase visualization
- Low-pass, High-pass, Band-pass filters
- Ideal, Gaussian, Butterworth filter types
- Notch filtering for periodic noise
- Add Noise: Gaussian, Salt & Pepper, Poisson, Speckle, Uniform
- Remove Noise: Gaussian blur, Median, Bilateral, Non-local means, Wiener
- Python 3.9+
- Node.js 18+
- npm or yarn
cd backend
# Create virtual environment
python -m venv venv
# Activate (Windows)
venv\Scripts\activate
# Activate (Mac/Linux)
source venv/bin/activate
# Install dependencies
pip install -r requirements.txt
# Run the server
python main.pycd frontend
# Install dependencies
npm install
# Start development server
npm run devcd docker
docker-compose up --buildimage_processing_gui/
βββ backend/ # Flask API
β βββ app/
β β βββ models/ # ImageProcessor class
β β βββ routes/ # API endpoints
β β βββ utils/ # Helper functions
β β βββ middleware/ # CORS, error handling
β βββ tests/ # Unit tests
β βββ main.py # Entry point
β βββ config.py # Configuration
β βββ requirements.txt
β
βββ frontend/ # React UI
β βββ src/
β β βββ components/ # React components
β β βββ pages/ # Page components
β β βββ services/ # API services
β β βββ store/ # State management
β β βββ index.css # Tailwind styles
β βββ package.json
β βββ vite.config.js
β
βββ docker/ # Docker configuration
βββ docker-compose.yml
βββ Dockerfile.backend
βββ Dockerfile.frontend
| Method | Endpoint | Description |
|---|---|---|
| POST | /api/images/upload |
Upload an image |
| GET | /api/images/<id> |
Get image by ID |
| DELETE | /api/images/<id> |
Delete image |
| GET | /api/histogram/<id> |
Get histogram data |
| POST | /api/histogram/equalize |
Equalize histogram |
| POST | /api/filters/apply |
Apply spatial filter |
| POST | /api/fourier/transform |
Compute FFT |
| POST | /api/fourier/filter |
Apply frequency filter |
| POST | /api/noise/add |
Add noise to image |
| POST | /api/noise/remove |
Remove noise from image |
Beautiful drag-and-drop upload with instant preview
Interactive histogram visualization with equalization options
Organized filter categories with real-time parameter adjustment
Visualize frequency domain with interactive filtering
Add and remove various types of noise
- React 18 - UI framework
- Vite - Build tool
- Tailwind CSS - Styling
- Framer Motion - Animations
- Recharts - Data visualization
- Zustand - State management
- Axios - HTTP client
- Flask - Web framework
- OpenCV - Image processing
- NumPy - Numerical computing
- SciPy - Scientific computing
- Pillow - Image I/O
- Gunicorn - Production server
- Upload your image
- Go to Histogram tab
- Select CLAHE equalization
- Adjust clip limit and tile size
- Click Apply
- Upload your image
- Go to Filters tab
- Expand Edge Detection
- Choose Canny Edge
- Adjust thresholds
- Click Apply
- Upload noisy image
- Go to Noise tab
- Switch to Remove Noise
- Select Non-Local Means
- Adjust parameters
- Click Apply
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- OpenCV team for the amazing image processing library
- React and Flask communities
- All contributors and users
Made with β€οΈ for image processing enthusiasts