Info

Testing and Issues

You can test this entry and submit issues during the testing period of the C++ Contest 2022 contest.

Entries with serious issues will not be able to win the contest, but even minor issues might be important for overall results.

Voting

2

Comments

A pretty simple solution that allows you to smooth the skin. No third-party libraries are used.
The idea is: let's find pixels that are contenders to be skin (in color). Formulas for identifying the probability of being skin are described in this article: https://www.researchgate.net/publication/272864000_Real_Time_Simple_Face-Tracking_Algorithm_based_on_Minimum_Facial_Features.

After that, we will find the areas of pixels - pixels that lie next to each other using BFS. From all such areas, we will choose the one that contains the largest number of pixels (this will be the face).
And then we can already apply filters on the face mask. This solution uses a simple Smart Blur: http://asserttrue.blogspot.com/2010/08/implementing-smart-blur-in-java.html
Several optimisation ideas are also applied:

* To avoid extra memory allocations, when painting the graph components in BFS, I use a RingBuffer with pre-allocated memory.

* To save CPU time, I use partial sums on prefix rectangles to implement blur: https://www.geeksforgeeks.org/prefix-sum-2d-array/

* Used fast approximating math functions (like cos, acos, inverse sqrt https://en.wikipedia.org/wiki/Fast_inverse_square_root) to optimise heavy mathematical operations
You have not added any comments yet...
by rating

Issues

Fair Mammoth Mar 17, 2022 at 17:54
В приложении реализован поиск области изображения с предположительным лицом на основании цвета кожи, после чего на область накладывается простое размытие. Работает на CPU без использования GPU.

Размер библиотеки < 200 KB.

Приложение позволяет в автоматическом режиме смягчить тон кожи и некоторые кожные дефекты. При активации фильтра производительность приложения критически опускается на всех устройствах, задействованных в тестировании. Таким образом, наложение эффекта в режиме реального времени невозможно. 

В ходе тестирования приложения и моделирования различных ситуаций реального мира были выявлены следующие недоработки:
– Качество видеопотока получается ниже ожидаемого.
– Накладываемый фильтр получается достаточно мыльным, неаккуратным.
– Телефон сильно нагревается при продолжительном использовании приложения.
iPhone 12 Pro (iOS 15.3); iPhone XS (iOS 15.3); iPhone 6S Plus (iOS 15.3).
10
Nobody added any issues yet...