Denoiser C++ lib. Video noise cancellation using bilateral filter algorithm

€200.00

The Denoiser C++ library implements noise cancellation bilateral filter algorithm.

LICENSE: We sell source code of this library as is, without future updates and technical support according to perpetual non-exclusive royalty-free license. You pay once and can use this library in your software and hardware products without limits. Please read the license agreement before purchasing: LICENSE.

The Denoiser C++ library implements noise cancellation bilateral filter algorithm.

LICENSE: We sell source code of this library as is, without future updates and technical support according to perpetual non-exclusive royalty-free license. You pay once and can use this library in your software and hardware products without limits. Please read the license agreement before purchasing: LICENSE.

Overview

The Denoiser C++ library implements noise cancellation bilateral filter algorithm. This library is suitable for various types of camera (daylight, SWIR, MWIR and LWIR) and it provides simple programming interface. Each instance of the Denoiser C++ class object performs frame-by-frame processing of a video data stream, processing each video frame independently .Denoiser library at the moment supports only YUV24 and GRAY pixel formats. The library depends on VFilter library (provides interface for video filter, source code included, Apache 2.0 license). In additional the test application depends on OpenCV library (provides user interface, version >= 4.5, linked, Apache 2.0 license). The library (without test application) doesn’t have third-party dependencies to be installed in OS and compatible with Linux and Windows. The library utilizes C++17 standard.

Documentation

Documentation: GO TO DOCUMENTATION

Simple interface

class Denoiser : public VFilter
{
public:
    /// Get the version of the Denoiser class.
    static std::string getVersion();

    /// Initialize denoiser.
    bool initVFilter(VFilterParams& params) override;

    /// Set VFilter parameter.
    bool setParam(VFilterParam id, float value) override;

    /// Get the value of a specific VFilter parameter.
    float getParam(VFilterParam id) override;

    /// Get the structure containing all VFilter parameters.
    void getParams(VFilterParams& params) override;

    /// Execute a VFilter action command.
    bool executeCommand(VFilterCommand id) override;

    /// Process frame.
    bool processFrame(cr::video::Frame& frame) override;

    /// Set mask for filter.
    bool setMask(cr::video::Frame mask) override;

    /// Decode and execute command.
    bool decodeAndExecuteCommand(uint8_t* data, int size) override;
};

Simple example

#include <iostream>
#include <cstdint>
#include <string.h>
#include "Denoiser.h"

int main(void)
{
    std::cout << "Denoiser v" <<
    cr::video::Denoiser::getVersion() << std::endl;

    // Init filter.
    cr::video::Denoiser denoiser;
    cr::video::VFilterParams params;
    params.mode = 1; // enable filter.
    params.level = 80; // %80 filter strength.
    denoiser.initVFilter(params);

    // Process frame.
    cr::video::Frame frame(512, 512, cr::video::Fourcc::YUV24);

    while(true)
    {
        // Prepare YUV24 frame...

        // Apply filter.
        denoiser.processFrame(frame);
    }
    return 1;
}