Closed zvezdochiot closed 1 year ago
Привет, Я найду время на неделе и портану механизм выбора методов Threshold для этапа Output из STA, в том объеме в каком он там есть, а там посмотрим... А пока у меня голова пухнет от эфемерид, нутаций, TLE, траекторий и углов рыскания - похоже, я скоро сам Звездочетом стану. Свободного времени очень мало.
@trufanov-nok say:
портану механизм выбора методов Threshold для этапа Output из STA
Только не делай той глупости, что сделана в STA: Не разделяй виджеты, а сделай единный для всех порогов и параметры сооветственно единные. Говоря проще добавить Box выбора метода над полостой delta-регулирования и два Box-а под ней для BlurWindowSize и BlurSensitivity. Хотя меня это не очень беспокоит, это всегда можно довести. Беспокоит только сохранение/чтение этих параметров: ThresholdMethod, BlurWindowSize и BlurSensitivity - в/из XML (было бы даже неплохо, ежели бы ты под операцию "сохранение/чтение" специально отдельный коммит сделал).
Но, судя по тому что я вижу в STA, настройки для разных методов сильно отличаются...
Я могу сделать один виджет, где под комбобоксом будет QTabWidget без tab bar'a, который будет комбобоксом листатся, если хочется работать с одним виджетом на все методы.
было бы даже неплохо, ежели бы ты под операцию "сохранение/чтение" специально отдельный коммит сделал
ok
@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
.
Hi @trufanov-nok .
По поводу единства параметров порогов:
В STA я добавил 3 новых "порога": STA: feature #47: binarizeEdgePlus #48: EdgePlus, BlurDiv, EdgeDiv. Но присмотревшиь легко увидеть, что это не новые пороги, а 2 префильтра к порогу Otsu: префильтр EdgePlus, BlurDiv и их комбинация. По уму я бы сделал один сдвоенный префильтр EdgeDiv, а не плодил бы их как пороги. Это было бы возможно, ежели бы в STA не был разделён виджет параметров порогов. И тогда бы я использовал ThresholdWindowSize
и ThresholdSensitivity
как параметры префильтра в пороге Otsu. Но увы. Приходится городить кучу "порогов".
Hi @trufanov-nok .
Смотри scantailor-experimental: 0.2023.07.27: threshold method. А то будем по 10 раз одну и ту же работу работать.
Hi @trufanov-nok .
"Имею желание, но не имею возможностей..."
В STU уже присутствуют 2 порога, помимо Otsu: Sauvola и Wolf (aka Chistian). И можно ещё добавить: см. STA: feature #47: binarizeEdgePlus #48 .
Как изменить GUI и адаптировать функции прогов под пользовательские параметры? Не вопрос. Вопрос в том, как сохранять эти самые парамеры в проекте STU (XML)? Нужно как минимум 3 новых параметра для каждой страницы:
unsigned int ThresholdMethod = {OTSU=0, NIBLACK=1, SAUVOLA=2, WOLF=3};
илиchar* ThresholdMethod = {"otsu", "niblack", "sauvola", "wolf"};
unsigned int BlurWindowSize = 200;
- в порогах используется для формированияQSize const window_size;
float BlurSensitivity = 0.34f;
- в порогахlong double const k = 0.34;
Есть идеи по сохранению этих параметров? Как только этот вопрос будет решён, вопрос модификации 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