All Projects → DasudaRunner → Deltacv

DasudaRunner / Deltacv

Licence: mit
An open-source high performance library for image processing

Projects that are alternatives of or similar to Deltacv

Lesrcnn
Lightweight Image Super-Resolution with Enhanced CNN (Knowledge-Based Systems,2020)
Stars: ✭ 101 (-8.18%)
Mutual labels:  image-processing
Supper Resolution
Super-resolution (SR) is a method of creating images with higher resolution from a set of low resolution images.
Stars: ✭ 105 (-4.55%)
Mutual labels:  image-processing
Gift
Go Image Filtering Toolkit
Stars: ✭ 1,473 (+1239.09%)
Mutual labels:  image-processing
Wb srgb
White balance camera-rendered sRGB images (CVPR 2019) [Matlab & Python]
Stars: ✭ 101 (-8.18%)
Mutual labels:  image-processing
Is Now Illegal
🚫 A NERD protest against Trump's Immigration ban
Stars: ✭ 1,392 (+1165.45%)
Mutual labels:  image-processing
Tomo
Tomo is a collection of fast image processing effects for Android
Stars: ✭ 105 (-4.55%)
Mutual labels:  image-processing
Nider
Python package to add text to images, textures and different backgrounds
Stars: ✭ 100 (-9.09%)
Mutual labels:  image-processing
Handwriter
A smart program to convert digital document to hand-written document
Stars: ✭ 108 (-1.82%)
Mutual labels:  image-processing
Blind image quality toolbox
Collection of Blind Image Quality Metrics in Matlab
Stars: ✭ 105 (-4.55%)
Mutual labels:  image-processing
Serverless Image Processor
AWS Lambda image processor
Stars: ✭ 106 (-3.64%)
Mutual labels:  image-processing
Imagegonord
A tool that can convert your rgb images to nordtheme palette
Stars: ✭ 105 (-4.55%)
Mutual labels:  image-processing
Computational Graphics Thu 2018
Computational Graphics - THU Spring 2018
Stars: ✭ 104 (-5.45%)
Mutual labels:  image-processing
Uav Mapper
UAV-Mapper is a lightweight UAV Image Processing System, Visual SFM reconstruction or Aerial Triangulation, Fast Ortho-Mosaic, Plannar Mosaic, Fast Digital Surface Map (DSM) and 3d reconstruction for UAVs.
Stars: ✭ 106 (-3.64%)
Mutual labels:  image-processing
Distort Grid
distort and warp images in the browser
Stars: ✭ 101 (-8.18%)
Mutual labels:  image-processing
Sod
An Embedded Computer Vision & Machine Learning Library (CPU Optimized & IoT Capable)
Stars: ✭ 1,460 (+1227.27%)
Mutual labels:  image-processing
Pgmagick
pgmagick is a yet another boost.python based wrapper for GraphicsMagick/ImageMagick.
Stars: ✭ 100 (-9.09%)
Mutual labels:  image-processing
Photomosaic Generator
photomosaic generator (image to image, video to video)
Stars: ✭ 106 (-3.64%)
Mutual labels:  image-processing
Nvidia Gpu Tensor Core Accelerator Pytorch Opencv
A complete machine vision container that includes Jupyter notebooks with built-in code hinting, Anaconda, CUDA-X, TensorRT inference accelerator for Tensor cores, CuPy (GPU drop in replacement for Numpy), PyTorch, TF2, Tensorboard, and OpenCV for accelerated workloads on NVIDIA Tensor cores and GPUs.
Stars: ✭ 110 (+0%)
Mutual labels:  image-processing
Neural Doodle
Turn your two-bit doodles into fine artworks with deep neural networks, generate seamless textures from photos, transfer style from one image to another, perform example-based upscaling, but wait... there's more! (An implementation of Semantic Style Transfer.)
Stars: ✭ 9,680 (+8700%)
Mutual labels:  image-processing
Self Driving Car
A End to End CNN Model which predicts the steering wheel angle based on the video/image
Stars: ✭ 106 (-3.64%)
Mutual labels:  image-processing

DeltaCV

An open-source high performance library for image processing. including CPU optimization and GPU optimization. PRs are welcome.

For more details on DeltaCV ,please go to https://dasuda.top/category/#/DeltaCV.

 author Haibo     contributions welcome


1. Shared Memory

Dependencies

  • Boost

Location

cpu/include/deltaCV/cpu/shm.hpp

Include

#include "deltaCV/cpu/shm.hpp"

For more details, see my blog;


2. SIMD

Dependencies

  • OpenCV(This library dose not depend on OpenCV, but the input of the function is often type-cv::Mat)
  • SSE
  • AVX

Compile options

You need put these compile options in your CMakeLists.txt.

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mavx2")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=haswell")

Samples

All samples are in cpu/examples/.

  • [x] inRange
  • [x] ycrcbWithSeg
  • [x] weightedGrayWithSeg
  • [x] grayBRWithSeg
  • [x] grayBRWithSegStandard

Performance Table

Image Size: 1024 x 1280(H x W)

Function OpenCV/ms DeltaCV/ms Speed-up
inRange 1.06 - 1.18 0.29 - 0.30 3.5 - 4.0
ycrcbWithSeg 6.68 - 6.75 0.88 - 0.90 7.4 - 7.6
weightedGrayWithSeg 1.56 - 1.69 0.39 - 0.46 3.39 - 4.33
grayBRWithSeg 3.28 - 3.35 0.69 - 0.71 4.6 - 4.8
grayBRWithSegStandard 1.19 - 1.22 0.23 - 0.25 4.76 - 5.30

3. CUDA

Dependencies

  • CUDA
  • OpenCV

Samples

All samples are in gpu/examples/.

  • [x] binarization
  • [ ] colorSpace
  • [ ] edgeDetection
  • [ ] erode_dilate
  • [ ] getHist
  • [ ] equalizeHist
  • [ ] blur

Performance Table

Image Size: 480 x 640(H x W)

Function GPU/ms (NVIDIA GTX 1070 8G) CPU/ms (OpenCV on i5 7500) Speed-up
RGB2GRAY 0.008 - 0.010 0.340 - 0.360 3.4 - 45
RGB2HSV 0.150 - 0.200 3.900 - 4.400 19.5 - 29.3
thresholdBinarization 0.005 - 0.008 0.035 - 0.045 4.4 - 9.0
ostu 0.16-0.17 1.280-1.432 8.0-8.9
sobel / scharr 0.032 - 0.038 - -
erode / dilate (3*3 rect) 0.045 - 0.049 - -
getHist (bin:256) 0.145 - 0.149 - -
equalizeHist(bin:256) 0.16-0.17 0.31-0.32 1.8-2.0
blur(3*3 guassian kernel) 0.036-0.040 - -

Function List

Color space transformation

  • RGB2GRAY(uchar3* dataIn,unsigned char* dataOut,int imgRows,int imgCols): in gpu/src/colorSpace.cu. Converting RGB images to gray-scale images.

  • RGB2HSV(uchar3* dataIn,uchar3* dataOut,int imgRows,int imgCols,uchar3 minVal,uchar3 maxVal): in gpu/src/colorSpace.cu. Converting RGB images to HSV images, and using threshold segmentation to RGB images based on minVal and maxVal.

Binarization

  • thresholdBinarization(unsigned char* dataIn,unsigned char* dataOut,short int imgRows,short int imgCols,unsigned char thresholdMin,unsigned char thresholdMax,unsigned char valMin,unsigned char valMax): in gpu/src/binarization.cu. Similar to OpenCV function threshold(), I designed 5 modes: THRESH_BINARY, THRESH_BINARY_INV, THRESH_TRUNC, THRESH_TOZERO, THRESH_TOZERO_INV.
/*
 * Compare 'threshold()' funciton in OpenCV
 * When:
 *      thresholdMin = thresholdMax and valMin = 0  ==> THRESH_BINARY
 *      thresholdMin = thresholdMax and valMax = 0  ==> THRESH_BINARY_INV
 *      thresholdMax = valMax and thresholdMin = 0  ==> THRESH_TRUNC
 *      thresholdMax = 255 and valMin = 0  ==> THRESH_TOZERO
 *      thresholdMin = 0 and valMax = 0  ==> THRESH_TOZERO_INV
 */
  • ostu_gpu(unsigned char* dataIn,unsigned char* dataOut,unsigned int* hist,float* sum_Pi,float* sum_i_Pi,float* u_0,float* varance,int* thres,short int imgRows,short int imgCols): in gpu/src/binarization.cu. Binarization using ostu.

Edge Detection

  • sobel(unsigned char* dataIn,unsigned char* dataOut,short int imgRows,short int imgCols): in gpu/src/edgeDetection.cu. Edge detection using sobel operator.

  • scharr(unsigned char* dataIn,unsigned char* dataOut,short int imgRows,short int imgCols): in gpu/src/edgeDetection.cu. Edge detection using scharr operator.

Erode and Dilate

  • erode(unsigned char* dataIn,unsigned char* dataOut,short int imgRows,short int imgCols,short int erodeElementRows,short int erodeElementCols): in gpu/src/erode_dilate.cu.

  • dilate(unsigned char* dataIn,unsigned char* dataOut,short int imgRows,short int imgCols,short int dilateElementRows,short int dilateElementCols): in gpu/src/erode_dilate.cu.

Histogram

  • getHist(unsigned char* dataIn, unsigned int* hist): in gpu/src/getHist.cu.
  • [wrapper]equalizeHist_gpu(unsigned char* dataIn,unsigned int* hist,unsigned int* sum_ni,unsigned char* dataOut,short int imgRows,short int imgCols,dim3 tPerBlock,dim3 bPerGrid): in gpu/src/getHist.cu.(Unfinished)

Guassian Blur

  • guassianBlur3_gpu(unsigned char* dataIn,unsigned char* dataOut,short int imgRows,short int imgCols,dim3 tPerBlock,dim3 bPerGrid): in gpu/src/blur.cu. Guassian blur with 3*3 kernel
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].