# 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...