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
37 stars 1 forks source link

Feature: Palette zones? #5

Closed zvezdochiot closed 9 months ago

zvezdochiot commented 12 months ago

Hi @noobie-iv .

It is required to create a hybrid of Picture and Fill zones: "Palette zones" tab, to manually assign a color for painting a black mask (as k-means does). From Picture zones you only need a substrate (color), from Fill zones you need a choice of color (black by default) and everything else. How can this be combined with k-means? I will resolve this issue.

PS: It is desirable to have a mechanism for counting unique colors in Palette zones (in the simplest case - 1 non-black color, in the most complex - the number of non-black colors is equal to the number of zones).

PS2: To display zones, it is advisable to do mixing: ({color image}+{zone color})/2. The simplest way is to generate a raster with only zones from the palette zones (mask), and then average it with the substrate. This mask will also be used when coloring black outlines.

stex-palette_zones

zvezdochiot commented 10 months ago

Hi @noobie-iv .

Сколько не всматриваюсь в FillZones, но так до сих пор понять не могу, как приспособить к нему дополнительный переключатель "Fill/Mask/BG"? Как внести "это" в Properties? Как пользовать знаю: в первом случае оставлю исходное поведение, в остальных буду использовать основную маску для отсечения заливки. Казалось бы простая фишка, но мозг клином встаёт. Это бы решало все "проблемы" с к-средних, я бы просто заливал бы больщую часть текста одним цветом, вместо того, чтобы лазить в "Mixed->PictureZones->Substract from k-means".

noobie-iv commented 10 months ago

Не надо задавать мне такие большие и сложные вопросы, а то я буду плакать, и у меня будет истерика 🥲 Я все еще не прочитал не одной строчки кода. На сегодняшний день завершена техническая работа по копипасте Dewarp/Deskew кода в STD, с минимальной правкой параметров функций, где они были слишком уж разными. Итог: есть программа, которая компилируется, но не работает; причина - несовпадение интерфейсов вызова в STU/STEX. Теперь либо поможет случайный тык в несколько попыток, либо придется расчехлять отладчик, и пошагово сверять вызовы в STD/STEX. Короче, передница пройдена, началась задница.

Добавить зоны к деварпу, чтобы обводить только строки, которые надо учесть - следующая очевидная относительно простая задача, перед глобальной переделкой интерфейса. Там уже понадобится разбираться в коде зон. Если я туда вообще доберусь, то, возможно, смогу и в STEX что-то аналогичное сделать.

zvezdochiot commented 10 months ago

Hi @noobie-iv .

А саму функцию process в src/filers/output/OutputGenerator.cpp ты к новому функционалу привёл? В STEX эта функция одна и нацинается с геометрических преобразований, в то время как во всех остальных она расщепляется на две: processWithDewarp и processWithoutDewarp.

noobie-iv commented 10 months ago

Метод processWithDewarping вычищен на стадии удаления деварпа. Остался только processWithoutDewarping. Если это та проблема, которая мешала работать с STU вместо STEX, то теперь ее нет, можно пробовать переезжать в STU. В коммите 2d575822 "Remove STU dewarp code" - версия, в которой деварп уже удален.

Взамен есть другая проблема: деварп, пришитый к новому месту, не работает. Это то место, где я предполагал застрять, и где застрял по плану. В STEX и STU используются разные классы преобразований, и где-то в процессе копипасты с заменой я неправильно преобразую одно в другое. Как разберусь, что там как должно быть в deskew/Task.cpp и deskew/CacheDrivenTask.cpp - процесс переноса закончится. А на сегодня в ветке dewarp_from_STEX лежит компилирующийся, но не работающий код: деварп не пашет сам, и неправильно передает геометрию дальше.

zvezdochiot commented 10 months ago

@noobie-iv say:

деварп, пришитый к новому месту, не работает.

Так надо бы наверное исходное изображение на деварпнутое подменить? В межэтапном перескоке (3->4)? Не? Больше по этому поводу никаких мыслей в голову не приходит.

PS: Ежели ты оставил только processWithoutDewarping, то тем самым удалил трансформации. Разве не? В STEX process начинается именно с геометрических трансформаций.

noobie-iv commented 10 months ago

Там даже режим "без трансформаций" не работает, неправильно передает дальше размеры страницы. Потому что исходный STU deskew-код удален, а взамен вставлен код из STEX. А в них разная обработка этих картинок, из-за чего, собственно, и глюки. Вот превьюшки правильные, а главная картинка-нет, хотя вроде бы все копипащенное. Какое-то время я потеряю на выяснение, что надо поправить, чтобы все заработало. Надеюсь, что не год. 😄

zvezdochiot commented 9 months ago

Не актуально. См. #18 .