rageworx / SRCNN_OpenCV_GCC

C++ Implementation of Image Super-Resolution with Convolutional Neural Network with OpenCV adn OpenMP [Discontinued]

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

SRCNN OpenCV GCC

This project was forked from https://github.com/shuwang127/SRCNN_Cpp, An Open source project of "C++ Implementation of Super-Resolution resizing with Convolutional Neural Network". And this project includes non-OpenCV library name called as ...

latest update

  • OpenCV4 compatibility updated.
  • Supporting macOS universal binary.

non-openCV model, libsrcnn

  • libsrcnn is a stand-alone library that no dependancy with OpenCV.
  • it is about 4 times more faster than OpenCV model, and currently it was moved to libsrcnn repository.
  • Notice: this project contains old version of libsrcnn. removed.

Bug Notice

Original source SRCNN has bug at final merge process, and this source code also got same bug, too. Recommend to use my another library based on this project, libsrcnn.

Discontinued Notice

This project is currently discontinued, please check new libsrcnn repository for more faster, and no need to link to OpenCV.

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.

What changed ?

  1. Code modified many things from original SRCNN.
  2. OpenMP parallel processing, improved performance.
  3. Supports almost of platform - POSIX compatibled.
    • MSYS2 and MinGW-W64 ( for Windows )
    • GCC of Linux ( armhf, aarch64, x86 )
    • CLANG (llvm) of macOS, suporting universal binary build
      • universal build only possible when using static openCV as built as same condition.

License

Follows original SRCNN_Cpp, and it is released under the GPL v2 License (refer to the LICENSE file for details).

Example

  • Origin:

    img_origin

  • Bicubic interplation x1.5

    img_rsbicubic

  • SRCNN x1.5

    img_rssrcnn

Requirements

  1. Windows may need MSYS2 and MinGW-W64.
  2. You need to install latest version (may 4) of OpenCV to your build environments, install opencv libraries into your system with one of these:
    • MSYS2: pacman -S /mingw-w64-x86_64-opencv
    • Debian: sudo apt-get install libopencv-dev
    • macOS
      1. Before install Brew :
      sudo xcode-select --install 
      sudo xcodebuild -license
      ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
      
      1. After installed Brew :
      brew update
      brew install opencv4
      

Static OpenCV

  1. If wanna make static binary with OpenCV, it's required manual build.
  2. It is difficult way and hard to handle, even static binary size is not much suitable for only srcnn.
  3. Here's way to build static openCV manually,
    • Clone or download OpenCV source to you base level directory of this sources.
    • Go to opencv, then make a 'build' directory.
    • Type like this ( in case of MSYS2+MinGW-W64 )
      cmake -G "MSYS Makefiles" -DBUILD_SHARED_LIBS=OFF -DENABLE_PRECOMPILED_HEADERS=OFF -DWITH_IPP=OFF -DWITH_TBB=OFF -DWITH_FFMPEG=OFF -DWITH_MSMF=OFF -DWITH_VFW=OFF -DWITH_OPENMP=ON ..
      
    • This project doesn't using video decoding, and there's too many erorrs occurs on Video processing source in OpenCV ( damn sucks cmake options, they're useless )
    • Then, install compiled openCV to local by make install, or edit current Makefile to link with static OpenCV.

How to build ?

  1. Make a symlink from Makfiles in makefiles directory.
  2. Most of POSIX should be used makefiles/Makefile.default.
    • Linux, MSYS2, MinGW-W64
    • macOS will be used makefiles/Makefile.macos
  3. eg.) ln -s makefiles/Makefile.default Makefile
  4. Then, just type make.

About

C++ Implementation of Image Super-Resolution with Convolutional Neural Network with OpenCV adn OpenMP [Discontinued]

License:GNU General Public License v2.0


Languages

Language:C 57.4%Language:C++ 42.6%