Skip to content

Super-Resolution imaging with Convolutional Neural Network library for G++, Non-OpenCV model.

License

Notifications You must be signed in to change notification settings

rageworx/libsrcnn

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

63 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

libsrcnn

Super-Resolution imaging with Convolutional Neural Network

A stand-alone library for Super-Resolution, Non-OpenCV model related in these projects:

Introduction

This is an open source project from original of this: SRCNN_Cpp is a C++ Implementation of Image Super-Resolution using SRCNN which is proposed by Chao Dong in 2014.

  • If you want to find the details of SRCNN algorithm, please read the paper:

    Chao Dong, Chen Change Loy, Kaiming He, Xiaoou Tang. Learning a Deep Convolutional Network for Image Super-Resolution, in Proceedings of European Conference on Computer Vision (ECCV), 2014

  • If you want to download the training code(caffe) or test code(Matlab) for SRCNN, please open your browse and visit http://mmlab.ie.cuhk.edu.hk/projects/SRCNN.html for more details.

  • And thank you very much for Chao's work in SRCNN.

WIKI

  • See Wiki page.
  • Includes OpenMP support for macOS.

Additional references

Features

  • Faster about 400% or more than OpenCV GCC version of SRCNN, with OpenMP.
    • references :
    • commit/b340b885a58605f793aa000eebc7f96c19c8e9fe#commitcomment-103507343
    • commit/b340b885a58605f793aa000eebc7f96c19c8e9fe#commitcomment-103507802
  • None-OpenCV, no OpenCV required !
  • Compilation availed for almost of POSIX g++.
  • Simply optimized for basic OpenMP.
  • Works well even without OpenMP like macOS.
  • Not support M$VC, sorry MS guyz.

Sample images

  • Original 100%

    IMG_0

  • Bicubic 150%

    IMG_1

  • SRCNN 150%

    IMG_2

  • SRCNN (Convolution Y channel) 150%

    IMG_3

Supporting platforms

  • Windows 32, 64 with MSYS2 + MinGW-W64
  • Almost any Linux, x86_32, x86_64, arm, armhf, aarch64
  • macOS ( clang, llvm )

Latest Changes

Verison 0.1.10.40

  • Better speed, less memory usage by convolution I+II
  • Regards to zvezdochiot@github

Previous Changes

Verison 0.1.9.35

  • Fixed memory bug in float images from RGB case.
  • header version flag fixed.

Verison 0.1.9.34

  • Fixed don't use color space scaling with bicubic filter.
  • Now supporting alpha channel.

Verison 0.1.8.30

  • Precision step scaling bug fixed.

Verison 0.1.8.28

  • Precision step scaling option availed.
  • included option by reason of libsrcnn trained for maximum double multiply.

Verison 0.1.6.23

  • Fixed a small bug of wrong internal copying size.

Verison 0.1.6.22

  • Fixed bug of original source (ShuWang's SRCNN).
    • Use last layer (3) to Y channel at last construction.
  • Changed ProcessSRCNN() method to get optional convolutional result.

Verison 0.1.6.20

  • Fixed memory leak after convolution55.
  • Changed ProcessSRCNN() method to get convolutional gray.

Version 0.1.4.17

  • Bug fixed for color space conversion.

Verison 0.1.5.18

  • Supports variable filters for interpolation.
    1. Nearest
    2. Bilinear
    3. Bicubic
    4. Lanczos-3
    5. B-Spline

License

  • Follows original source GPLv2, but this project is LGPLv3.

Requirements

  • Your G++.

How to build ?

  • Make a symlink from Makefile.{your platform} in makefiles directory.
    • eg.) ln -s makefiles/Makefile.macos Makefile
  • Then build with make.
  • Testing applications may one of these,
    • make -f makefiles/Makefile.test
    • or
    • make -f makefiles/Makefiles.testmac

Dependency

  • Testing application by make -f makefiles/Makefile.test may requires FLTK and fl_imgtk libraries.
  • FLTK should be installed by anyway, but recommend to my below FLTK-custom with fl_imgtk.
  • FLTK-custom and fl_imgtk for build test program for read and write image files.