Автор Тема: Dewarping от Рамиза Зейналова  (Прочитано 25147 раз)

monday2000

  • Администратор
  • *****
  • Сообщений: 985
    • AOL клиент - -
    • Yahoo клиент - -
    • Просмотр профиля
    • Создание книг в электронном виде из бумажных книг (в формате DjVu)
    • E-mail
Dewarping от Рамиза Зейналова
« : 07 ёоЫм 2010, 09:36:36 »
Я выпросил у Рамиза Зейналова исходные коды его алгоритма Dewarping.

Вот они:

http://www.djvu-soft.narod.ru/soft/ramiz_zeynalov_dewarping_src.rar  (447 КБ)

Рамиз поставил мне такое условие: при использовании этих исходников обязательно указывать их источник: http://graphics.cs.msu.ru/ .

Описание алгоритма здесь:

http://www.graphicon.ru/proceedings/2009/conference/se9/121/121_Paper.pdf 

(316 КБ, формат: PDF, язык: русский).

monday2000

  • Администратор
  • *****
  • Сообщений: 985
    • AOL клиент - -
    • Yahoo клиент - -
    • Просмотр профиля
    • Создание книг в электронном виде из бумажных книг (в формате DjVu)
    • E-mail
Re: Dewarping от Рамиза Зейналова
« Ответ #1 : 08 ёоЫм 2010, 13:12:00 »
Ещё ранее я спрашивал у Рамиза, не попадался ли ему ещё и алгоритм выравнивания освещённости (типа http://www.djvu-soft.narod.ru/scan/strange_lighted.htm). Вот что он мне ответил тогда (12.02.10 13:30):
Цитировать
Моя система справляется и с геометрическимими искажениями, и с неравномерным светом. Есть некоторые проблемы, связанные с user-friendly - много параметров, не совсем очевидных. По хорошему это надо дорабатывать.
Скоро моя система будет встроена в СканКромсатор.
Потом выяснилось, что Рамиз, видимо, оговорился - не "СканКромсатор", а, наверное, "Скан Тейлор". Но что именно он имел в виду - неясно.

monday2000

  • Администратор
  • *****
  • Сообщений: 985
    • AOL клиент - -
    • Yahoo клиент - -
    • Просмотр профиля
    • Создание книг в электронном виде из бумажных книг (в формате DjVu)
    • E-mail
Re: Dewarping от Рамиза Зейналова
« Ответ #2 : 10 ёоЫм 2010, 15:04:39 »
Я спросил у Рамиза, могу ли я использовать эти исходные коды под лицензией "GPL 2 and later". Вот что он мне ответил:
Цитировать
Вы можете использовать исходные тексты согласно нашей лицензии
И прислал мне такой текст лицензии:
Цитировать
LICENSE

MSU Graphics & Media Lab, Computer Vision Group.
vision((at))graphics.cs.msu.ru [change ((at)) to @ in order to get proper address - antispam]

Department of Computer Science,Moscow State University, Vorobievy gory 1, Moscow, Russia

LICENSING TERMS

MSU Graphics & Media Lab. Computer Vision Group software is granted free of charge for non-commercial use. However you must obtain a license from the author to use it for commercial purposes.

Scientific results produced using the software provided shall acknowledge the use of MSU software. The proper reference is:

MSU Graphics & Media Lab, Computer Vision Group, http://graphics.cs.msu.ru

Moreover shall the author of MSU Graphics & Media Lab. Computer Vision Group software be informed about the publication.

In case of integration with commercial software, prior author permission must be obtained.

The software must not be modified and distributed without prior permission of the author.

By using MSU Graphics & Media Lab. Computer Vision Group software you agree to the licensing terms.

MSU Graphics & Media Lab. Computer Vision Group reserves the right to change this license terms without notification.

NO WARRANTY

BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM A"S IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

Contacts

vision((at))graphics.cs.msu.ru [change ((at)) to @ in order to get proper address - antispam]

monday2000

  • Администратор
  • *****
  • Сообщений: 985
    • AOL клиент - -
    • Yahoo клиент - -
    • Просмотр профиля
    • Создание книг в электронном виде из бумажных книг (в формате DjVu)
    • E-mail
Re: Dewarping от Рамиза Зейналова
« Ответ #3 : 10 ёоЫм 2010, 15:16:20 »
Обратите внимание на пункт:
Цитировать
The software must not be modified and distributed without prior permission of the author.
Надо ли говорить, что с подобными условиями лучше бы он вообще не давал мне эти исходники. Я повторно запросил его по поводу GPL-лицензии. Посмотрим, что он мне ответит, и ответит ли вообще.

Разумеется, подобные "лицензии", что он мне прислал - ИМХО просто насмешка над здравым смыслом. :D Я воспринимаю это как признак загнивания МГУ (может, я и ошибаюсь - но впечатление такое возникло). К слову, МГУ давно уже не "ВУЗ №2" в мировой "табели о рангах" (касательно ВУЗов) - а "съехал" на тридесятые позиции.

В общем, ситуация зашла в тупик. Естественно, смешно и говорить, чтобы я запрашивал у Рамиза письменное разрешение на любое "чхи", которое я захотел бы сделать с его исходниками. Да если бы он ещё хотя бы стабильно отвечал на письма для начала. Мне проще будет тем или иным способом заиметь альтернативные исходники Dewarping (хоть это и непросто :) ).

Кроме того, непонятно - допускает ли подобная лицензия совместную компиляцию с GPL-кодом?

В общем, бред это всё первостатейный. Что делать дальше - не знаю. Весь мир давно работает по-цивилизованному - и один только МГУ остался в каменном веке. Противно и гадко.

Ничего - в крайнем случае, думается, обойдёмся и без Рамиза Зейналова и без его Dewarping. Либо сделаем свой Dewarping с нуля (под человеческой, а не людоедской лицензией), либо появится ещё какой-нибудь вариант (вот, к примеру, на OCRopus всё грозятся свой Dewarping сделать).
« Последнее редактирование: 10 ёоЫм 2010, 15:22:35 от monday2000 »

monday2000

  • Администратор
  • *****
  • Сообщений: 985
    • AOL клиент - -
    • Yahoo клиент - -
    • Просмотр профиля
    • Создание книг в электронном виде из бумажных книг (в формате DjVu)
    • E-mail
Re: Dewarping от Рамиза Зейналова
« Ответ #4 : 12 ёоЫм 2010, 09:29:27 »
На всякий случай:

Вот исходники алгоритма Dewarping от Rob:
http://diybookscanner.org/forum/viewtopic.php?f=3&t=110&p=1958&hilit=dewarp#p1958

Зеркало:  http://www.djvu-soft.narod.ru/soft/dewarping_rob.rar  (230 КБ)

Теоретическая часть по ним:
http://halfbakedmaker.org/2010/02/27/dewarping-pages/

А вот тестовая версия Scan Tailor, где реализован Dewarping от Rob:
http://forum.ru-board.com/topic.cgi?forum=5&topic=27424&start=1920#16

Зеркало:  http://djvu-soft0001.nxt.ru/scantailor_dewarping_rob.rar  (6,77 МБ)
« Последнее редактирование: 12 ёоЫм 2010, 10:00:00 от monday2000 »

monday2000

  • Администратор
  • *****
  • Сообщений: 985
    • AOL клиент - -
    • Yahoo клиент - -
    • Просмотр профиля
    • Создание книг в электронном виде из бумажных книг (в формате DjVu)
    • E-mail
Re: Dewarping от Рамиза Зейналова
« Ответ #5 : 12 ёоЫм 2010, 17:49:16 »
Помимо 2-х уже имеющихся вариантов исходников Dewarping (которые пока оба "шатки" по известным причинам) теоретически возможно ожидать появления третьего варианта исходников Dewarping - из проекта Decapod на базе OCRopus. То есть, сейчас там нет Dewarping - но они обещали его сделать.

Ссылки:

http://ru.wikipedia.org/wiki/OCRopus
http://code.google.com/p/ocropus/
http://sites.google.com/site/decapodproject/

В этом проекте у нас есть "свой человек" - это Илья Межиров, который лично знаком с профессором Thomas Breuel - основным разработчиком OCRopus и Decapod. Илья когда-то тоже занимался OCRopus (сейчас уже нет). Благодаря Илье, мне даже один раз удалось списаться по эл. почте с Thomas Breuel, и хорошенько попросить насчёт Dewarping (в феврале 2010). Вот что мне тогда ответил Thomas Breuel (насчёт Dewarping):
Цитировать
it's not yet available; we'll eventually release something as part of the DECAPOD project.
Цитировать
We're planning on having something useful sometime this year.  DECAPOD uses stereo capture in order to ensure reliable dewarping.
 
http://sites.google.com/site/decapodproject/
 
DECAPOD is split into a web-based GUI and a set of command line tools for doing the processing.
 
Capture will be based either on stereo image capture or on the Book Liberator hardware.
 
Yes, you could also incorporate DECAPOD code into Scantailor, or you could use Decapod itself. 
 
The dewarping code isn't ready for production use yet.  When it will be ready, it will largely be command line programs written in a mix of Python and C++.
 
Please sign up for the mailing list from the Decapod site.
http://groups.google.com/group/ocropus/tree/browse_frm/thread/8405aa760d56719a/63cff88fd34d0a3c?_done=%2Fgroup%2Focropus%2Fbrowse_frm%2Fthread%2F8405aa760d56719a%2F63cff88fd34d0a3c%3Ftvc%3D1%26&tvc=1
Цитировать
Dewarping of camera-captured images involves projective transforms and taking advantage of the fact that paper is physically constrained and can curl only in certain ways.  In addition, camera lenses may be distorting the image as well.  We're developing software for doing this as part of the DECAPOD project, but it's still going to take a while until that gets released.
« Последнее редактирование: 12 ёоЫм 2010, 17:50:57 от monday2000 »

monday2000

  • Администратор
  • *****
  • Сообщений: 985
    • AOL клиент - -
    • Yahoo клиент - -
    • Просмотр профиля
    • Создание книг в электронном виде из бумажных книг (в формате DjVu)
    • E-mail
Re: Dewarping от Рамиза Зейналова
« Ответ #6 : 14 ёоЫм 2010, 10:56:49 »
Рамиз Зейналов прислал мне новое письмо:
Цитировать
Добрый день!

Мы готовы дать вам разрешение на модификацию нашего кода.
Я ему ответил, что хотел бы "перебить" его исходники Dewarping под библиотеку FreeImage, на что мне нужно от него разрешение скомпилировать его код с кодом под GPL 2, а также мне нужно право на свободное распространение того, что получится.

Короче, как ни крути, а мне от него нужен или GPL, или ничего - никакой иной вариант меня не устроит.

У меня возникло такое впечатление, что Рамиз всякий раз, получив моё очередное письмо, советуется с остальными авторами Dewarping на тему, что же мне ответить (поскольку всякий раз проходит несколько дней, прежде чем Рамиз мне отвечает, а ещё Рамиз довольно немногословен).

По-видимому, сам Рамиз лично - это прогрессивный человек (раз уж он мне прислал исходники), но его соавторы (или их руководство) - чудовищные бюрократы, просто какие-то саботажники от науки, я бы сказал.

Очевидно, что материалы под подобной "лицензией", которую мне Рамиз прислал, не станет брать вообще никто - кто ж согласится на столь людоедские условия, естественно, все обратятся к конкурентам, и возьмут у них практически то же самое - но на гораздо более человеческих условиях.
Просто всё дело в том, что, видимо, начальство Рамиза ...  и не нуждается в том, чтобы кто-то брал и использовал их продукцию :D, а в действительности они там просто пилят бюджетные деньги - ни за что при этом не отвечая.

Так что, если с Dewarping от Рамиза ничего не выйдет - думаю, не беда, появится в дальнейшем рано или поздно некий альтернативный вариант - но уже на приемлемых для нас условиях.

monday2000

  • Администратор
  • *****
  • Сообщений: 985
    • AOL клиент - -
    • Yahoo клиент - -
    • Просмотр профиля
    • Создание книг в электронном виде из бумажных книг (в формате DjVu)
    • E-mail
Re: Dewarping от Рамиза Зейналова
« Ответ #7 : 15 ёоЫм 2010, 09:27:19 »
Мне случайно удалось выйти на контакт с соавтором Рамиза - который вместе с ним делал эти исходники Dewarping.

Его зовут Alexander Velizhev. Вот его данные из http://www.graphicon.ru/proceedings/2009/conference/se9/121/121_Paper.pdf :
Цитировать
Велижев Александр Брониславович – к. т. н., научный сотрудник Лаборатории Компьютерной Графики и Мультимедиа факультета вычислительной математики и
кибернетики Московского Государственного Университета им. М. В. Ломоносова. E-Mail: avelizhev@graphics.cs.msu.ru
Кстати, с этого E-Mail он мне и написал.

Сегодня утром мне пришло совместное письмо от Рамиза Зейналова и Александра Велижева с таким содержимым:
Цитировать
Здравствуйте!
 
Мы согласны предоставить вам права на использование исходных кодов
по лицензии "GPL 2 and later".
Я, конечно, поблагодарил, и попросил, чтобы они где-то на своём сайте опубликовали это разрешение - чтобы я имел возможность на него ссылаться (в случае каких-либо ко мне претензий).

Я рад, что здравый смысл восторжествовал. :D Однако мне пришлось приложить немалое красноречие и расписать им в подробнейших деталях свои аргументы в пользу такого решения. 8)

Основной момент, который их тревожил - это опасность коммерческого использования этого кода. Им, как я понял, этого крайне не хотелось бы.

Я им аргументированно объяснил, что "коммерсантам" их код Dewarping неинтересен. Ведь "коммерсанты" всегда идут проторенными дорогами - им эта "экзотика" (с непонятной коммерческой привлекательностью) не нужна.

monday2000

  • Администратор
  • *****
  • Сообщений: 985
    • AOL клиент - -
    • Yahoo клиент - -
    • Просмотр профиля
    • Создание книг в электронном виде из бумажных книг (в формате DjVu)
    • E-mail
Re: Dewarping от Рамиза Зейналова
« Ответ #8 : 30 ёоЫм 2010, 09:45:00 »
Я написал Илье Межирову о последних событиях. Вот его ответ:
Цитировать
> Ситуация с Dewarping разрешилась. Рамиз Зейналов разрешил мне его использование по лицензии "GPL 2 and later".
Замечательно!
Я рассказал об этом Сакибу, он пообещал свой релиз к концу года. Однако, у него программа на порядок медленнее. А еще он планирует связаться с Рамизом Зейналовым и попросить сравнить результаты (Сакиб опубликовал результаты своей программы на нашей базе).

> Теперь остаётся скомпилировать эти исходники в экзешники - но это уже дело техники.
Попробовал скомпилировать под линуксом. Там целая неделя потребуется, чтобы эту конюшню разгрести.
Под Windows, наверное, дело быстрее пойдет.

monday2000

  • Администратор
  • *****
  • Сообщений: 985
    • AOL клиент - -
    • Yahoo клиент - -
    • Просмотр профиля
    • Создание книг в электронном виде из бумажных книг (в формате DjVu)
    • E-mail
Re: Dewarping от Рамиза Зейналова
« Ответ #9 : 27 °ТУгбв 2010, 23:00:12 »
Мне удалось скомпилировать исходники Dewarping от Рамиза Зейналова.

Скачать готовую консольную утилиту по Dewarping:

http://www.djvu-soft.narod.ru/soft/ramiz_zeynalov_dewarping_bin.rar  (1,15 МБ)

Утилита называется "geom_corr.exe".

Учтите, что она в принципе может не запуститься  на чьём-нибудь компьютере. Если при запуске будет вылетать ошибка "Сбой инициализации приложения (0xc0150002). Нажмите кнопку ОК для завершения приложения.", то установите Microsoft Visual C++ 2005 SP1 Redistributable Package (x86) http://www.microsoft.com/downloads/details.aspx?familyid=200B2FD9-AE1A-4A14-984D-389C36F85647&displaylang=en .

А может, каких-то dll-библиотек у кого-то не хватит. Если что не так - сообщайте. Под WinXP программа должна запускаться без проблем.

Однако, мне пока не удалось сделать, собственно, dewarping хотя бы над одним сканом. :) Видимо, надо разбираться с опциями командной строки.

Синтаксис командной строки такой:
Цитировать
Использование:

geom_corr -v VARS_PATH -g GRAPH_PATH -f INPUT1 OUTPUT1 [INPUT2 OUTPUT2 ...]
VARS_PATH - путь к XML с переменными (опциями/параметрами)
GRAPH_PATH - путь к XML с графом
-f - Быстрый режим (игнорируется запись промежуточных результатов, полезных при отладке)

Прописывать путь надо к самому XML-нику.
 
Граф для обработки - graph.xml.
Переменные надо устанавливать в зависимости от данных. Там уже есть несколько настроек для разных наборов данных.

Пример:
 
geom_corr -v metadata\variables.xml -g metadata\graph.xml -f input.jpg output.jpg
 
С Уважением,
Зейналов Р. Ш.
Может, кто-нибудь окажется удачливей меня и сможет самостоятельно добиться толку от этой программы? Я просто ещё не успел разобраться с её использованием - вот только-только с великими трудами смог кое-как наконец-то её скомпилировать. :-\ Да и Рамиза сегодня уже неудобно мне больше терзать - я и так сегодня забросал его вопросами по компилированию.

Вот пример от woodyfon с Руборда (который и открыл для всех нас Dewarping от Рамиза Зейналова, а также смог наладить контакт с Рамизом):



Если кто-то хочет - попробуйте хоть с этим примером поэкспериментировать с программой, может что и получится.

monday2000

  • Администратор
  • *****
  • Сообщений: 985
    • AOL клиент - -
    • Yahoo клиент - -
    • Просмотр профиля
    • Создание книг в электронном виде из бумажных книг (в формате DjVu)
    • E-mail
Re: Dewarping от Рамиза Зейналова
« Ответ #10 : 27 °ТУгбв 2010, 23:23:52 »
Теперь расскажу, как я компилировал исходники Dewarping.

Сначала я скачал MS Visual C++ 2008 Express Edition и попробовал скомпилировать там. При открытии solution-проекта 2008 сказал, что это проект устаревшего типа, и проделал его автоматическое преобразование к своему формату. Я запустил компиляцию - и посыпались ошибки просто ворохом.

Оказалось, что Dewarping была скомпилирован Рамизом в MS Visual C++ 2005 - а не в 2008. И, как видим, это имеет критическое значение. :o :-\

Что ж, скачал я MS Visual C++ 2005 Express Edition. Мне удалось найти какую-то очень его компактную версию. Обычный дистрибутив весит 462 МБ в виде ISO-образа на сайте MS, а я нашёл вариант на 66 МБ! И он оказался полностью функциональным - ничем не хуже ISO-варианта (потому что я сначала скачал именно ISO-образ на 462 МБ). Вот я его у себя даже выложил:

Microsoft Visual C++ 2005 Express Edition - ENU.7z
65.86 Мб
http://ifolder.ru/19055908

Я там в архиве сделал одно изменение: скопировал файл "vcsetup.msi" и переименовал копию в "vs_setup.msi" - без этого процесс инсталляции не шёл.

Запустил я компиляцию в 2005. Выскочила ошибка: не найден файл "windows.h". Оказалось, что в Microsoft Visual C++ 2005 Express Edition по-умолчанию можно создавать только .NET-приложения. А если хочется ещё и простые Win32-приложения делать - то надо доустановить т.н. "Platform SDK". На сайте MS он есть в виде ISO-образа на 1,39 ГБ.
К счастью, там же, где я нашёл компактную версию Microsoft Visual C++ 2005 Express Edition - ENU.7z, я нашёл и компактную версию Platform SDK - как раз под Visual C++ 2005 Express Edition.

Вот у себя её выложил:

Microsoft Platform SDK for Windows Server 2003 R2 (include lib).7z
33.28 Мб
http://ifolder.ru/19059184

Кстати, в Microsoft Visual C++ 2008 Express Edition вроде бы этот Platform SDK уже включён в состав по умолчанию.

После установки Platform SDK я снова запустил компиляцию в 2005. И опять посыпались ошибки.

Продолжение следует...
« Последнее редактирование: 27 °ТУгбв 2010, 23:26:41 от monday2000 »

monday2000

  • Администратор
  • *****
  • Сообщений: 985
    • AOL клиент - -
    • Yahoo клиент - -
    • Просмотр профиля
    • Создание книг в электронном виде из бумажных книг (в формате DjVu)
    • E-mail
Re: Dewarping от Рамиза Зейналова
« Ответ #11 : 07 БХЭвпСам 2010, 23:50:44 »
Сначала я переключил вид сборки с Debug на Release:

Build - Configuration Manager... - Active solution configuration - поставил Release и там же в Active solution platform выбрал Win32.

В процессе разбора ошибок компиляции постепенно стали проясняться всё новые и новые подробности относительно этих исходников Dewarping.

Вообще эти исходники представляют из себя один большой проект (Solution), в который включены 5 подпроектов:

gclib, geom_corr, libgc, std_factory, test_factory.

Мне пришлось по-разному дополнительно конфигурировать каждый из этих 5-ти проектов (в зависимости от ошибок компиляции).

gclib:

Properties - Linker - Input - Ignore specific libraries. Там было значение: libc.lib. Я его исправил на libc.lib; libcmt.lib. Без этого исправления выдавалась ошибка:
Цитировать
LINK : warning LNK4098: defaultlib 'LIBCMT' conflicts with use of other libs; use /NODEFAULTLIB:library

Потом в разных проектах посыпались ошибки типа:
Цитировать
GCImage.obj : error LNK2019: unresolved external symbol __imp__GetObjectA@12 referenced in function "public: bool __thiscall GCImage::copyData(struct HBITMAP__ *)" (?copyData@GCImage@@QAE_NPAUHBITMAP__@@@Z)
Оказалось, что в некоторых из 5-ти подпроектов не подключены соответствующие стандартные Win32 lib-библиотеки. Их положено указывать в Properties - Linker - Input - Additional dependencies. Вот какие либы я подобавлял:

gclib: gdi32.lib.

После этого посыпались уже новые ошибки компиляции:

Цитировать
LINK : fatal error LNK1104: cannot open file 'tinyxml.lib'
...
LINK : fatal error LNK1181: cannot open input file 'cv.lib'
Из этих ошибок прояснилось, какие внешние зависимости имеет этот проект. Оказалось, что для компиляции этого Dewarping нужны ещё 4 lib-файла:

tinyxml.lib, cxcore.lib, cv.lib, highgui.lib.

tinyxml.lib я без особых проблем скомпилировал, скачав исходники TinyXML (в этом же компиляторе).

А вот с cxcore.lib, cv.lib, highgui.lib прищлось изрядно помучаться. Оказалось, что это зависимости от библиотеки OpenCV v1.1. Причём более поздние версии OpenCV не подходят - т.к. они уже несовместимы по API.

Не буду расписывать подробно все мои злоключения по компиляции cxcore.lib, cv.lib, highgui.lib, скажу только, что я скачал exe-инсталлер OpenCV v1.1, поставил его и скомпилировал в этом же компиляторе. Попутно пришлось там кое-где добавлять Properties - Linker - Input - Additional dependencies. К тому же выяснилось, что нельзя было взять с Интернета уже готовые чужие cxcore.lib, cv.lib, highgui.lib и использовать их для компиляции Dewarping - полученный в результате geom_corr.exe даже не запускался - вызывал ошибку:
Цитировать
Ошибка при инициализации приложения (0х000001d)
. Оказалось, что на моём старом компьютере не поддерживается набор инструкций SSE2 - а взятые с Интернета cxcore.lib, cv.lib, highgui.lib были скомпилированы, видимо, на современном компьютере - с поддержкой этих инструкций. (!) :o

Подключение tinyxml.lib, cxcore.lib, cv.lib, highgui.lib к компиляции Dewarping оказалось простым: при запуске компиляции Dewarping внутри него создаётся папка lib - куда нужно просто положить все эти 4 lib-файла и перезапустить компиляцию.
« Последнее редактирование: 08 БХЭвпСам 2010, 11:10:57 от monday2000 »

monday2000

  • Администратор
  • *****
  • Сообщений: 985
    • AOL клиент - -
    • Yahoo клиент - -
    • Просмотр профиля
    • Создание книг в электронном виде из бумажных книг (в формате DjVu)
    • E-mail
Re: Dewarping от Рамиза Зейналова
« Ответ #12 : 08 БХЭвпСам 2010, 00:21:16 »
В результате компиляции Dewarping внутри него создастся папка bin с файлом geom_corr.exe и в этой папке автоматически ещё создадутся необходимые для его работы geom_corr.exe файлы gclib.dll, libgc.dll, std_factory.dll, test_factory.dll . Также для работы geom_corr.exe нужны файлы cv110.dll, cxcore110.dll, highgui110.dll - полученные от компиляции Open CV 1.1 и ещё нужно (если geom_corr.exe при запуске выдаёт ошибку "Сбой инициализации приложения (0xc0150002). Нажмите кнопку ОК для завершения приложения.") установить Microsoft Visual C++ 2005 SP1 Redistributable Package (x86) http://www.microsoft.com/downloads/details.aspx?familyid=200B2FD9-AE1A-4A14-984D-389C36F85647&displaylang=en .

monday2000

  • Администратор
  • *****
  • Сообщений: 985
    • AOL клиент - -
    • Yahoo клиент - -
    • Просмотр профиля
    • Создание книг в электронном виде из бумажных книг (в формате DjVu)
    • E-mail
Re: Dewarping от Рамиза Зейналова
« Ответ #13 : 08 БХЭвпСам 2010, 00:25:10 »
Забыл упомянуть: MS Visual C++ 2005 Express Edition требует для своей работы установленного MS .NET FrameWork версии то ли 2.0, то ли 2.0 SP2.

monday2000

  • Администратор
  • *****
  • Сообщений: 985
    • AOL клиент - -
    • Yahoo клиент - -
    • Просмотр профиля
    • Создание книг в электронном виде из бумажных книг (в формате DjVu)
    • E-mail
Re: Dewarping от Рамиза Зейналова
« Ответ #14 : 08 БХЭвпСам 2010, 09:36:07 »
Приведу также и мою переписку с Рамизом Зейналовым.

1. Как подключить TinyXML http://www.grinninglizard.com/tinyxml/ к Dewarping:
Цитировать
Библиотеку tinyxml следует подключать как статическую библиотеку.

Для этого её надо собрать как Static Library. В результате получается файл tinyxml.lib. В структуре каталогов проекта есть каталог lib,  из которого должны подтягиваться все *.lib файлы. Если вы что-то  делали с файлом проекта, надо проверить, что у каждого проекта в опциях компилятора в списке Addittional Library Directories стоит ..\lib.
gclib.lib собирается в самом проекте, целевая директория должны быть ..\lib.

2. По поводу использования OpenCV http://ru.wikipedia.org/wiki/OpenCV :
Цитировать
С OpenCV могут быть проблемы - я использовал версию 1.1, совместимости версий там особой не наблюдается, поэтому вам следует брать именно эту версию.
Кроме того, opencv надо отдельно компилировать, для этого нужен CMake и, возможно, ещё что-то.
Я скачал отсюда https://sourceforge.net/projects/opencvlibrary/files/opencv-win/1.1pre1/ файл OpenCV_1.1pre1a.exe . Это инсталлятор исходников OpenCV. Он содержал уже готовые файлы cxcore.lib, cv.lib, highgui.lib - которые мне, впрочем, не подошли, и их потребовалось компилировать самостоятельно. Не подошли - то есть при компиляции с ними файла geom_corr.exe он при запуске вылетал с исключением.

Кстати, с этими новыми уловками Microsoft (когда один и тот же вроде бы lib-файл может быть на самом деле абсолютно разным) всё стало настолько замороченным, что я много ругался и мучался :), пока наконец-таки мне не удалось скомпилировать Dewarping. Раньше, когда был MS VC++ 6.0, жизнь с ним была на порядок проще.

Так вот, ранее (когда Рамиз делал свой Dewarping), как я думаю, исходники OpenCV шли со сборочным скриптом для CMake. CMake - это утилита с собственным кроссплатформенным макроязыком, CMake позволяет из своего скрипта сгенерировать компиляционый проект для любой платформы - Windows, Linux, Mac и т.п. В т.ч. для любого компилятора - например, MS VC++ 6.0, и более поздних версий.

Но, слава богу, файл OpenCV_1.1pre1a.exe уже содержал готовый компиляционый проект именно под MS VC++ 2005 Express Edition - так что мне и не потребовалось скачивать и запускать CMake :o , чтобы сгенерировать компиляционый проект под MS VC++ 2005 Express Edition (из скрипта для CMake).

Как я уже писал в прошлых постах, при компиляции OpenCV_1.1pre1a получилась следующая полезная продукция, необходимая для компиляции Dewarping:

cxcore.lib, cv.lib, highgui.lib - lib-файлы.
cv110.dll, cxcore110.dll, highgui110.dll - dll-файлы.

3. Я спросил у Рамиза - как мне отвязать его Dewarping от TinyXML и OpenCV, и "перебить" его под FreeImage/язык СИ? Рамиз ответил следующее:
Цитировать
От tinyxml можно отказаться, но тогда надо будет переписать классы, которые работают с конфигурациями в XML. Как минимум, это GCConfig.
С OpenCV всё гораздо сложнее, т. к. вся система на ней построена.
Если от неё отказываться нужно как минимум:

1. Чтение/сохранение графических файлов популярных форматов.
2. Фильтры для изображений, математическая морфология
3. Математика
В общем, я пока что представляю себе возможное упрощение исходников Dewarping так:
1. От TinyXML я, конечно, постараюсь точно избавиться. К чему плодить лишние сущности без крайней необходимости?
2. От OpenCV пока что не стоит уходить. Благо, что OpenCV без проблем можно скомпилировать и под MS VC++ 6.0 (для меня это крайне важно).
3. А вот сам код Dewarping нужно, конечно, вообще переписывать с С++ на С. Код там настолько навороченный - что понять там что-то сейчас крайне трудно. Всё построено на STL, шаблонах, и прочей мутной малонужной хрени. Как известно, все такие алгоритмы можно прекрасно изложить просто на языке СИ - что обычно и делается в таких больших коллективных проектах, как GIMP, FreeImage, minidjvu и т.д. Это и понятно - код на языке СИ в тысячу раз понятнее для всех сторонних программистов (кто будет разбираться в коде Dewarping), чем код на языке СИ++.