Perfectly Clear SDK Documentation
Perfectly Clear SDK

Welcome to the Perfectly Clear SDK!. This guide will explain how to use the Perfectly Clear SDK to enable fully-automatic or interactive image corrections in your applications. In the Table of Contents on the left, the first several pages provide an overview of the SDK. Next you'll find several examples for various platforms, and finally a full reference section.

Quick Introduction

Applying the Perfectly Clear corrections will require the following steps:

  1. Loading image data into a PFCIMAGE (either directly from existing memory raster data, or using PFCImageFile)
  2. Setting the corrections you want to apply in a PFCPARAM (detailed here)
  3. Apply the corrections with PFC_AutoCorrect(), or separately call PFC_Calc() and then PFC_Apply() functions
  4. Reading the corrected data out of the PFCIMAGE, or again using PFCImageFile to write the results to a JPEG file

There are three main functional reference sections - one for the standard C library (PerfectlyClearPro.h), one for .NET development platform (PerfectlyClearAdapter.cs), and one for Android ( The function names are very similar, and the calling patterns are nearly identical. They are easy to confuse when looking back and forth through examples and this document. The correction parameter structures are also slightly different across the three platforms. Our Workbench application allows exporting these parameters into code ready to copy/paste into your projects.

There are sample projects (Linux & OSX Sample Code, Windows Sample Code, C# Sample Code) that show this in all platforms we support. Our sample applications also read and write from JPEG image files, and can read .preset files, as exported from our Desktop Applications, to make setting the correction parameters as easy as possible.

AVX Instruction Set Optimization

This SDK has been optimized for the "AVX" instruction set. This is supported on the majority of desktop computers made since about 2012. Our sample code in all desktop platforms defaults to using the NON-OPTIMIZED DLL's, in order to ensure the broadest hardware support. If you are certain your usage will only be on newer computers that include AVX support, then you can safely use the libraries with the "AVX" label in thier filename. This can provide up to a 50% performance increase.

This was build from 17b16a19beb2d4cb361e0f97d0ddeffbecbef779 on Mon Mar 4 22:32:00 UTC 2019