# image-processing-from-scratch
**Repository Path**: zhangming8/image-processing-from-scratch
## Basic Information
- **Project Name**: image-processing-from-scratch
- **Description**: https://github.com/o0o0o0o0o0o0o/image-processing-from-scratch
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2022-12-30
- **Last Updated**: 2022-12-30
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# image processing from scratch
## what is this?
This repository contains many interesting image processing algorithms that are written from scratch. Read these codes will allow you to have a comprehensive understanding of the principles of these algorithms. I also have video tutorials for these algorithms [here](https://space.bilibili.com/14672002). Go check out if you know Chinese :-)
Implementation
All codes were wrote in _python3.7_ or _c++_
moudles you may need:
_python:_
- numpy for matix calculation
- matplotlib for reading and showing images
- opencv2 for some image operations
_c++:_
- opencv2
Usage
you can always run a python script just by
`python script.py`
for c++, you need to compile first
`cd build`
`cmake ..`
`make`
when it's done, you are ready to run the executable file by
`./program_name parameters`
Just make sure you have the images in the right path, and you might wanna modify the code a bit to process another image.
Have fun!
## Contents
* canny edge detection
It is an algorithm that extracts edges of an image.
* hough transform
It is an algorithm that can theoratically detects shapes that you can write formulas for it.
* harris corner detection
This algorithm detects corners.
* fast fourier transform
2-D fourier transform for images using fft.
* sift
Scale-invariant feature transform, a well-known technique to extract feature points for image matching. Now added c++ version along with SURF and ORB.
* KNN
Using balanced K-D tree to find k nearest neighbors of K-dimension points.
* PCA&SVD
Do PCA and SVD using jacobi rotation.(which is accurate but slow)
* Ransac
Stitch different images together after knowing the sift keypoint pairs.
* watershed
watershed segmentation algorithm.
* meanshift
meanshift segmentation algorithm.
* generalized hough transform
template match of images, detects a given template in an query image. The vote space is implemented with a sparse vector to support big images.
* closed-form image matting
a classic image matting algorithm proposed in ***A Closed-Form Solution to Natural Image Matting***
* haze removal
Using dark channel prior and fast guided filter proposed in ***Single Image Haze Removal Using Dark Channel Prior*** and ***Fast Guided Filter***
* a lot to be continued...