This project implements a GPU-accelerated adaptive thresholding technique for real-time image processing using CUDA. The goal is to optimize per-pixel binary thresholding using shared memory and parallelism on NVIDIA GPUs. This method is well-suited for applications in low-latency surveillance and vision systems.
- CUDA Toolkit: 12.6
- Python (for pre/post-processing scripts): >=3.8
numpyPillow(PIL)
Tested on ASAX GPU servers.
GPGPU_Project/
├── src/
│ ├── checkpoint2/
│ ├── metrices/
│ ├── output_images/
│ ├── host_side_implementation.py
│ ├── main.cu
│ └── Makefile
│ ├── checkpoint3/
│ ├── main.cu
│ ├── Makefile
│ ├── run_me.sh
│ ├── submission.pbs
│ ├── output_images/
│ ├── optimization/
│ ├── main.cu
│ ├── Makefile
│ ├── run_me.sh
│ └── submission.pbs
│ ├── metrices/
├── scripts/
│ ├── jpg_to_raw.py
│ ├── raw_to_jpg.py
├── input_images/
│ └── sample_image.jpg
├── research/
├── requirements.txt
└── README.md Navigate to the final optimized checkpoint3:
cd src/checkpoint3/To generate JPG to RAW (Optional, already saved into the input_images directory)
python ../scripts/jpg_to_raw.py image_path --outputBuild and run the code using the provided shell file:
./run_me.sh img.raw img.raw.metaMetrics will be saved in the metrics directory.
Build and run the code using the provided shell file:
./run_me.sh img.raw img.raw.metaMetrics will be saved in the metrics directory.
To generate RAW to JPG
python ../scripts/raw_to_jpg.py raw_image_path meta_path