BH
Бинаризации и очистки изображений. А именно белый фон и черные данные, под данными понимается текст, линии, печати, подписи.
Данные могут быть как цветные, так и черно-белые, в том числе плохо пропечатанные и/или бледные, в итоге все они должны стать черными.
Алгоритм должен максимально хорошо и точно, не портя данные(под порчей понимается частичное или полное исчезновение данных с изображения,
а также их видоизменение и/или ухудшение их качества\разрешения) обрабатывать как можно большее кол-во тестовых изображений.
Алгоритм не должен являться просто копией одного из известных алгоритмов, при написании предполагается проявить творческий подход.
Не обязательно создавать свой алгоритм, допускается также некая комбинация существующих алгоритмов, в том числе алгоритмов сегментации.
В случае, если написать эффективный алгоритм не удается допускается оптимизация существующего.
Необходимо скачать с сайта (https://github.com/DanBloomberg/leptonica) исходники алгоритма бинаризации Sauvola и оптимизировать скорость его выполнения.
Для выполнения задания предполагается распараллеливание алгоритма, а также написание в "узких" местах инструкций процессора - AVX/SSE.
Допускается изменение логики выполнения алгоритма, если это ведет к уменьшению времени выполнения и не ухудшает качество результата.
Результатом выполения задания является приложение(консольное или с графическим интерфейсом),
в которое можно загрузить изображение и выполнить его обработку 2 версиями алгоритма (исходной и оптимизированной).
В результате для каждой из версий на экран должно выводится исходное изображение и бинаризованное, а также время работы каждого из алгоритмов.
Также предусмотреть возможность сохранения бинарного изображения в файл.
Программа должна быть написана на языке C++/C.
Можно использовать любые библиотеки.
Алгоритм должен работать максимально быстро, для этого необходимо использовать многопоточность и\или векторизацию (SSE2, AVX инструкции), и\или ассемблерные вставки.
Предпочтительнее создавать проект для Windows с помощью стандартного компилятора Visual Studio, но возможно использование gcc и сборка с помощью cmake,
но программа все равно должна собираться для Windows и из под Windows. Все используемые дополнительные библиотеки должны быть включены в проект.