ImageProcessing-ElectronicPublications / scantailor-experimental

Scan Tailor Experimental is an interactive post-processing tool for scanned pages.
https://github.com/Tulon/scantailor/tree/experimental
GNU General Public License v3.0
30 stars 0 forks source link

dispute: Mean VS Gauss blur #39

Closed zvezdochiot closed 2 weeks ago

zvezdochiot commented 4 weeks ago

Hi @noobie-iv & @trufanov-nok .

Обращаюсь к вам, потому что вы вполне причастны к обработке сканов. Суть "спора" следующая:

На текущий момент в STEX во многих фильтрах используется среднее значение по некому окну. Эти значения получаются при помощи интегральных изображений. Я их "экранировал" слегка, но сделал это достаточно грамотно и удобно для использования.

И всё бы хорошо, но у среднего по окну наблюдается, и наблюдается очень даже чётко, граничный эффект этого самого окна!

При этом в STEX изначально присутствует Gauss blur от автора (@Tulon). Он имеет и частотную характеристику более щадащую, и граничный эффект не просматривается.

Так вот, в качестве "эксперимента" в некоторых фильтрах произвёл замену вида:

#include "GaussBlur.h"
...
    //GrayImage gmean = grayMapMean(gray, window_size);
    int rx = window_size.width() >> 1;
    int ry = window_size.height() >> 1;
    GrayImage gmean = gaussBlur(gray, rx, ry);

К каким то значительным изменениям это естественно не привело. Но как оказалось, у меня нет на руках сейчас материала, на котором можно было бы досконально изучить этот вопрос и дать предпочтение первому либо второму. И вот я оказался в недоумении: в теории Gauss blur предпочтительней, но на практике то я ничего и не проверил. Не на чем особо то проверять. Такие вот дела. ;(

zvezdochiot commented 3 weeks ago

@plzombie , ты можешь сделать сборку ZIP на Qt5 для ветки https://github.com/ImageProcessing-ElectronicPublications/scantailor-experimental/tree/gaussblur и выложить сюда? Мне нужно проверить время выполнения на винде при переходе на Gauss blur. Это единственное сомнение которое останавливает меня от слияния.

plzombie commented 3 weeks ago

@zvezdochiot могу. Часов через 6

plzombie commented 3 weeks ago

scantailor-experimental-0.2024.06.29-Win32-X86-64.zip Лови

zvezdochiot commented 3 weeks ago

@plzombie say:

Лови

Спасибки. С понедельника приступлю к тестированию.

trufanov-nok commented 3 weeks ago

Hi @noobie-iv & @trufanov-nok .

Обращаюсь к вам, потому что вы вполне причастны к обработке сканов. Суть "спора" следующая:

С т.з. STU я бы реализовал оба метода и засунул переключалку в настройки.

zvezdochiot commented 3 weeks ago

@trufanov-nok say:

С т.з. STU я бы реализовал оба метода и засунул переключалку в настройки.

Только это должна быть глобальная переключалка, ибо пороги используются во всех этапах, а в порогах как раз используется фильтр Mean VS Gauss blur.

Но особого смысла в такой опции не вижу, ибо ежели сборка @plzombie покажет схожую с релизом производительность, то я без тени сомнения произведу слияние и избавлюсь от ну очёнь жёсткой частотной характеристики Mean (оконного среднего), а интегральные изображения будут пользоваться только для определения оконного стандартного отклонения.

noobie-iv commented 3 weeks ago

Не могу сказать ничего умного. Основной объем моих "сканов" - это минстроевские документы, а они все - исходно электронные, но специально порченные сильным сжатием в JPG с низким разрешением и водяными знаками поверх; STA такое терпимо обрабатывает; так что тестировать мне не на чем. У меня есть несколько скачанных по случаю книг по цифровой обработке изображений (все эти гауссы, дилатации и т.п.), но, видимо, так никогда и не дойдут руки их почитать.

По скорости под Win10x64 гаусс слегка медленнее. Если запускать пачкой этапы 1-5 (ориентация-поля), проигрыш несколько секунд на минуту (5-10%), до десяти секунд со включенным ускорением (до 15%). На этапе вывода разницы в скорости практически нет.

zvezdochiot commented 2 weeks ago

@noobie-iv say:

По скорости под Win10x64 гаусс слегка медленнее.

Нашёл специально "древнюю" машину:

Название ОС:                      Майкрософт Windows 10 Корпоративная LTSC
Версия ОС:                        10.0.17763 Н/Д построение 17763
Параметры ОС:                     Изолированная рабочая станция
Сборка ОС:                        Multiprocessor Free
Изготовитель системы:             ECS
Модель системы:                   G41T-M7
Тип системы:                      x64-based PC
Процессор(ы):                     Число процессоров - 1.
                                  [01]: Intel64 Family 6 Model 23 Stepping 10 GenuineIntel ~2670 МГц
Версия BIOS:                      American Megatrends Inc. 080015 , 12.01.2011
Полный объем физической памяти:   4 095 МБ

В качестве теста выбрал среднего размера книгу (208 стр.). Отработал все этапы на релизной сборке, сохранил проект, после чего очистил out и запустил "6. Вывод" по новой в релизном и по данной ветке вариантах:

branch: main: 1:15:00
branch: gaussblur: 1:15:00

Сейчас произвожу визуальное сравнение результата.

zvezdochiot commented 2 weeks ago

Визуальное сравнение показало снижение "щербатости" буков и контуров при применении GaussBlur вместо оконного среднего. В отдельных местах удалось чётко отследить отсутствие краевого эффекта окна, что очень положительно повлияло на разультат (отсутствие "ложных" белых пикселей по границе закрашенных областей).

Произвозу слияние.