Пользователь woodyfon с форума Руборд передал мне свой экземпляр экзешников Dewarping, который он когда-то получил от Рамиза Зейналова. С условием нераспространения - поскольку на таком условии сам Рамиз дал woodyfon этот пакет.
woodyfon попросил у Рамиза на днях разрешение на снятие ограничения по нераспространению данного пакета - но Рамиз ему не ответил.
Благодаря этому, мне удалось значительно продвинуться в проблеме понимания работы Dewarping от Рамиза Зейналова.
Во-первых, я на присланном пакете Dewarping сразу сумел запустить пробный Dewarping - и он наконец-то сработал как нужно - и я увидел результат своими глазами.
Во-вторых, изучение присланного материала дало мне определённые вехи в понимании того - что же я делал неправильно, почему же у меня не получается запустить Dewarping на скомпилированном мною экзешнике.
Выяснилось довольно немало.
1. Рамиз указал мне неправильный синтаксис запуска Dewarping. Оказалось, что запускать его нужно так:
geom_corr.exe img_1175_bin.png img_1175_bin_out.jpg
И всё - и никаких больше там наворотов малопонятных в командной строке.
2. При этом файл geom_corr.exe нуждается в 4-х XML-файлах, задающих параметры его работы (как бы "расширенная командная строка"). Эти XML-файлы должны лежать в той же папке, где находится geom_corr.exe, и они должны иметь такие имена:
datatypes.xml, graph.xml, variables.xml, varnames.xml.
3. Выяснилось, что Рамиз прислал мне неправильное содержимое этих XML-файлов. Точнее, не совсем правильное. А именно, с моими XML-файлами dewarping тоже работает - только в конце работы вылетает ошибка-исключение (а файл-картинка, подвергшийся операции dewarping, всё-таки успешно создаётся). Появление такой ошибки - тоже не мелочь.
4. Рамиз слишком неточно указал мне, с какой версией библиотеки OpenCV следует компилировать исходники его dewarping. Я компилировал с OpenCV версии 1.1pre - а надо было, наверное, с OpenCV версии 1.0. Я это заключил из того факта, что в пакете dewarping от woodyfon лежат в частности такие dll-файлы:
cv100.dll, cxcore100.dll, highgui100.dll (что указывает на версию OpenCV 1.0).
А у меня вместо этого получились такие файлы:
cv110.dll, cxcore110.dll, highgui110.dll (потому что я использовал версию OpenCV 1.1).
В общем, мне удалось запустить свой экзешник Dewarping - но только когда я подсунул ему XML и DLL-файлы из пакета от woodyfon. И он правильно сработал - даже перекомпилировать не потребовалось!
Получилась картинка с "выпрямленнными" строками.
Я подсунул своему geom_corr.exe такие DLL из пакета от woodyfon:
gclib.dll, std_factory.dll, test_factory.dll, и ещё стандартные cv100.dll, cxcore100.dll, highgui100.dll (их можно найти на сайте OpenCV). Плюс почему-то ещё потребовалась какая-то libguide40.dll - "Guide Runtime Library" (из пакета от woodyfon). Судя по тому, что её производитель тоже Intel, эта dll из OpenCV.
В пакете от woodyfon также ещё я взял оригинальную картинку с изогнутыми строками. Раньше я брал свою. Казалось бы, мелочь - а вот и нет. Ведь Рамиз-то мне не сказал сразу, какая должна быть битовая разрядность и формат файла картинки. Ведь даже из-за несоблюдения таких "мелочей" программа может не сработать. Так вот - формат картинки - PNG, а битовая разрядность - почему-то 32 бита (хотя картинка - чёрно-белая на вид, да и вообще - 32 бита - это редкая разрядность, это цветная картинка с прозрачностью, обычно цветной картинке нужно лишь 24 бита - т.к. прозрачность для dewaping не нужна).
В общем, я хочу выразить огромную благодарность woodyfon с форума Руборд. woodyfon оказал мне просто неоценимую помощь - даже не знаю, чтобы я без неё делал.
В условиях, когда из Рамиза нужно тянуть клещами крупицы разрозненной информации (а он отвечает со 2-3 письма) - которая к тому же ещё и не полностью достоверна - помощь от woodyfon оказалась просто бесценной.
Спасибо, дорогой woodyfon!
В пакете, присланном woodyfon, также ещё содержится GUI для консольного geom_corr.exe, и вордовский файл - описание дипломной работы. Ни то, ни другое я пока не смотрел - GUI у меня пока не запустился (наверное, хочет Redistributable, который я уже снёс, а Word у меня не стоит на компе, надо будет поставить и глянуть на диплом).
Наверное, dewarping был димпломной работой Рамиза Зейналова.
Кстати, я же, как известно, уже добился от Рамиза разрешения на использование его dewarping по лицензии GPL 2 and later. Так вот - мне этого удалось добиться, как я думаю, через другого человека - Александра Велижева - админа форума мехмата МГУ, где присутствует и Рамиз:
http://forum.graphicon.ru/viewtopic.php?f=8&t=4709 . Велижев - это некий соавтор dewarping (интересно - это преподаватель или одногрупник Рамиза). Сам Рамиз довольно туго вёл со мной переговоры насчёт лицензии.