This project is an unofficial implementation of FabSoften: face beautification via dynamic skin smoothing, guided feathering, and texture restoration. This paper is from Samsung R&D Institute Bangalore, India, and is very likely patented. This implementation is mainly for educational purposes, so the performance is not optimized.
This project uses some C++20 features(e.g. The One Ranges Proposal), so you need a relatively new C++ compiler.
As for the ranges
feature, you need GCC 10+, Clang++ 13+, Microsoft Visual Studio 2019 16.10+. For other features, please check https://en.cppreference.com/w/cpp/compiler_support.
Before you begin, you'll install the following softwares on your system:
- CMake 3.21+: An open-source, cross-platform family of tools designed to build, test and package software
- OpenCV 4+: Open Source Computer Vision Library
- doxygen(optional): The de facto standard tool for generating documentation from annotated C++ sources
- 7zip(optional): A file archiver with a high compression ratio
7zip is used for extracting bzip2 files(e.g. shape_predictor_68_face_landmarks.dat.bz2
). If you'd like to manually provide those models without auto-downloading through CMake, there is no need to use 7zip. If not, make sure 7z -h
works on the command line, for example:
C:\Users\Gnimuc>7z -h
7-Zip 19.00 (x64) : Copyright (c) 1999-2018 Igor Pavlov : 2019-02-21
Usage: 7z <command> [<switches>...] <archive_name> [<file_names>...] [@listfile]
<Commands>
a : Add files to archive
b : Benchmark
...
On Windows, it's highly recommended to use Powershell
or Windows Terminal to build this project:
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=~/your_install_prefix_dir
cmake --build . --config Release
ctest --Release
This library provides a thin C89 API over the C++ API, please check this example for details.
The C++ API and other examples can also be found in the examples
folder.
- Preprocessing
- Landmark Detection
- Binary Skin Mask
- Blemish Detection and Concealment
- Skin Mask Generation and Refinement
- GMM Clustering (#6)
- Segmentation?
- Guided Feathering (pending)
- Skin Imperfection Smoothing
- Dynamic Mean Filter
- Attribute-aware Dynamic Guided Filter
- Skin Texture Restoration (Wavelet-based STR)
FabSoften is primarily distributed under the terms of the MIT license.
All code in this repository is released under the terms of the MIT license.
Those assets, models, and external dependencies are released under their licenses, respectively.