trufanov-nok / scantailor-universal

ScanTailor Universal - a fork based on Enhanced+Featured+Master versions of ST
http://scantailor.org
Other
181 stars 16 forks source link

Select Threshold method? #132

Closed zvezdochiot closed 1 year ago

zvezdochiot commented 1 year ago

Hi @trufanov-nok .

"Имею желание, но не имею возможностей..."

В STU уже присутствуют 2 порога, помимо Otsu: Sauvola и Wolf (aka Chistian). И можно ещё добавить: см. STA: feature #47: binarizeEdgePlus #48 .

Как изменить GUI и адаптировать функции прогов под пользовательские параметры? Не вопрос. Вопрос в том, как сохранять эти самые парамеры в проекте STU (XML)? Нужно как минимум 3 новых параметра для каждой страницы:

Есть идеи по сохранению этих параметров? Как только этот вопрос будет решён, вопрос модификации GUI и внедрения других порогов уже не будет вопросом.

PS: И, естественно, при решении данного вопроса сразу возникает вопрос совместимости проектов STU как минимум вверх, а хотелось бы ещё и вниз.

PS2: Так же можно рассмотреть альтернативу BinaryImage binarizeOtsu(QImage const& src): BinaryImage binarizeBiMod(QImage const& src, float partBlack = BlurSensitivity), в котором размер частей белого (White) и черного (Black) регулируется {0.0..1.0}. При 0.5 он аналогичен Otsu. Такое регулирование зачастую эффективненее существующего delta-регулирования. Подробности BiMod: https://github.com/ImageProcessing-ElectronicPublications/stb-image-djvul/blob/5703991bef332156ed4a2fb5055d0a3ed45e2c43/src/threshold.h#L62-L109

trufanov-nok commented 1 year ago

Привет, Я найду время на неделе и портану механизм выбора методов Threshold для этапа Output из STA, в том объеме в каком он там есть, а там посмотрим... А пока у меня голова пухнет от эфемерид, нутаций, TLE, траекторий и углов рыскания - похоже, я скоро сам Звездочетом стану. Свободного времени очень мало.

zvezdochiot commented 1 year ago

@trufanov-nok say:

портану механизм выбора методов Threshold для этапа Output из STA

Только не делай той глупости, что сделана в STA: Не разделяй виджеты, а сделай единный для всех порогов и параметры сооветственно единные. Говоря проще добавить Box выбора метода над полостой delta-регулирования и два Box-а под ней для BlurWindowSize и BlurSensitivity. Хотя меня это не очень беспокоит, это всегда можно довести. Беспокоит только сохранение/чтение этих параметров: ThresholdMethod, BlurWindowSize и BlurSensitivity - в/из XML (было бы даже неплохо, ежели бы ты под операцию "сохранение/чтение" специально отдельный коммит сделал).

trufanov-nok commented 1 year ago

Но, судя по тому что я вижу в STA, настройки для разных методов сильно отличаются... image image image

Я могу сделать один виджет, где под комбобоксом будет QTabWidget без tab bar'a, который будет комбобоксом листатся, если хочется работать с одним виджетом на все методы.

было бы даже неплохо, ежели бы ты под операцию "сохранение/чтение" специально отдельный коммит сделал

ok

zvezdochiot commented 1 year ago

@trufanov-nok say:

судя по тому что я вижу в STA

Только "это" убогая "картина", так как delta-регулирование необходимо другим порогам ничуть не меньше чем Otsu. И опции "Lower bound" и "Upper bound" было бы неплохо пользовать и на Sauvola и пр. См. thresholdAdjustment in other threshold. и вытекающие из него 1.0.18: feature https://github.com/ScanTailor-Advanced/scantailor-advanced/issues/59: thresholdAdjustment и 1.0.18: feature https://github.com/ScanTailor-Advanced/scantailor-advanced/issues/59: thresholdAdjustment for Wolf. Такие вот дела.

И как я уже упоминал, можно пользовать BiMod, а в нём пользовать BlurSensitivity как весовую долю чёрного для регулирования. И что же теперь? Для каждого порога свои параметры сохранять?

PS: И наверное стоит пользовать ThresholdSensitivity вместо BlurSensitivity и ThresholdWindowSize вместо BlurWindowSize.

zvezdochiot commented 1 year ago

Hi @trufanov-nok .

По поводу единства параметров порогов:

В STA я добавил 3 новых "порога": STA: feature #47: binarizeEdgePlus #48: EdgePlus, BlurDiv, EdgeDiv. Но присмотревшиь легко увидеть, что это не новые пороги, а 2 префильтра к порогу Otsu: префильтр EdgePlus, BlurDiv и их комбинация. По уму я бы сделал один сдвоенный префильтр EdgeDiv, а не плодил бы их как пороги. Это было бы возможно, ежели бы в STA не был разделён виджет параметров порогов. И тогда бы я использовал ThresholdWindowSize и ThresholdSensitivity как параметры префильтра в пороге Otsu. Но увы. Приходится городить кучу "порогов".

zvezdochiot commented 1 year ago

Hi @trufanov-nok .

Смотри scantailor-experimental: 0.2023.07.27: threshold method. А то будем по 10 раз одну и ту же работу работать.