Giter VIP home page Giter VIP logo

guidedfilter's Introduction

GuidedFilter

GuidedFilter is an implementation of the Guided Image Filtering algorithm in OpenCL. The Guided Filter is an image filter with many applications, one of which is edge-preserving smoothing. It has a non-approximate algorithm which is O(1) in the filter window size. It has excellent performance characteristics which make it a great alternative to the popular Bilateral Filter.

hdwallpaperscool-com

You can watch how the algorithm performs as a smoothing operator in the following two videos:

In the latter video, a point cloud is built from the Kinect streams. The Guided Image Filtering algorithm is applied to the Depth frame and each of the 3 channels of the RGB frame, separately. The frames are transfered to the GPU, processed with OpenCL, and then delivered directly to OpenGL. On my machine, I was able to get a mean running time of 5.2 ms.

Note

The code was developed and tested on Ubuntu 14.04.2, on a system with an AMD R9 270X GPU.

The complete documentation is available here.

For more details on the implemented algorithms, take a look at the project's wiki.

Dependencies

The project has a dependency on CLUtils (which is automatically downloaded by cmake). If you'd like to remove this dependency, you should be able to modify the kernel interface classes with minimal effort.

Currently, there are 3 example applications. For guided_filter_image, you'll need OpenCV. For guided_filter_kinect_rgb and guided_filter_kinect_point_cloud, you'll need a Kinect and libfreenect.

Compilation

git clone https://github.com/nlamprian/GuidedFilter.git
cd GuidedFilter

mkdir build
cd build

cmake -DBUILD_EXAMPLES=ON ..
# or to build the tests too
cmake -DBUILD_EXAMPLES=ON -DBUILD_TESTS=ON ..

make

# to run the examples (from the build directory!)
./bin/guided_filter_image
./bin/guided_filter_kinect_rgb
./bin/guided_filter_kinect_point_cloud

# to run the tests (e.g.)
./bin/guided_filter_tests_box
# or with profiling information
./bin/guided_filter_tests_box --profiling

# to install the libraries
sudo make install
# you'll need to copy manually the kernel
# files into your own projects

# to build the docs
make doxygen
firefox docs/html/index.html

guidedfilter's People

Contributors

nlamprian avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

guidedfilter's Issues

compilation problem

hello
I'm trying to compile your project on Ubuntu 18.04 and I have this compilation error:

Scanning dependencies of target guided_filter_image
[ 93%] Building CXX object examples/CMakeFiles/guided_filter_image.dir/guidedFilter_image.cpp.o
/shared/foss-18/GuidedFilter/examples/guidedFilter_image.cpp: In function ‘int main(int, char**)’:
/shared/foss-18/GuidedFilter/examples/guidedFilter_image.cpp:114:70: error: invalid conversion from ‘const void*’ to ‘void*’ [-fpermissive]
rgb.write (cl_algo::GF::SeparateRGB::Memory::D_IN, image.datastart);
~~~~~~^~~~~~~~~
In file included from /shared/foss-18/GuidedFilter/examples/guidedFilter_image.cpp:46:0:
/shared/foss-18/GuidedFilter/include/GuidedFilter/algorithms.hpp:227:14: note: initializing argument 2 of ‘void cl_algo::GF::SeparateRGB<(cl_algo::GF::SeparateRGBConfig)1>::write(cl_algo::GF::SeparateRGB<(cl_algo::GF::SeparateRGBConfig)1>::Memory, void*, bool, const std::vectorcl::Event, cl::Event)’
void write (SeparateRGB::Memory mem = SeparateRGB::Memory::D_IN, void *ptr = nullptr, bool block = CL_FALSE,
^~~~~

I'm using opencv 3.2
any hints welcomed
luc

INVALID KERNEL TYPE

Hi, and thank you for making this code available. i have it building, (windows, visual studio 2015) but when I run the image demo, the console flashes an error, and closes.

It looks like the error is:

INVALID KERNEL TYPE.

I have copied the kernel folder into my application dir. What am I missing?

thanks again.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.