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

monday2000

  • Администратор
  • *****
  • Сообщений: 985
    • AOL клиент - -
    • Yahoo клиент - -
    • Просмотр профиля
    • Создание книг в электронном виде из бумажных книг (в формате DjVu)
    • E-mail
Re: Dewarping от Рамиза Зейналова
« Ответ #30 : 11 ѕЪвпСам 2010, 10:38:27 »
don555
Цитировать
К тому же без ваших стараний, усилий, вашего креатива, не было бы, даже того, что имеем.
Спасибо на добром слове! :D И ещё спасибо woodyfon с Руборда - ведь это именно он открыл для общественности само существование этой программы - я лишь продолжил его начинание.
Цитировать
Я вообще думаю, что если бы программка правильно заработала, то это была бы бомба.
Это лучше, чем графические обработки  - цветность, освещённость, тени – шмени.
Думаю, что у этой программы хороший потенциал - как-никак, она сделана на мехмате МГУ - со всем теоретическим обоснованием (а не просто любителем на коленке по наитию). Я не сомневаюсь, что со временем коллективными усилиями мы все разберёмся в этой программе.

Кстати, она умеет делать не только Dewarping - но также и (по словам Рамиза) выравнивание освещённости.

monday2000

  • Администратор
  • *****
  • Сообщений: 985
    • AOL клиент - -
    • Yahoo клиент - -
    • Просмотр профиля
    • Создание книг в электронном виде из бумажных книг (в формате DjVu)
    • E-mail
Re: Dewarping от Рамиза Зейналова
« Ответ #31 : 30 °ЯаХЫм 2012, 09:56:06 »
Залил заново все материалы от Рамиза Зейналова:

http://minus.com/mBtR1lJC7/6  (40 МБ)

Это объединённый пакет - там всё вместе собрано - исходный код, он же скомпилированный Рамизом, база тестовых изображений и диплом в формате DOC.

monday2000

  • Администратор
  • *****
  • Сообщений: 985
    • AOL клиент - -
    • Yahoo клиент - -
    • Просмотр профиля
    • Создание книг в электронном виде из бумажных книг (в формате DjVu)
    • E-mail
Re: Dewarping от Рамиза Зейналова
« Ответ #32 : 23 ґХЪРСам 2012, 15:21:43 »
Я подправил полную версию исходников Dewarping от Рамиза Зейналова. Она лежала тут:

http://www.djvu-soft.narod.ru/soft/ramiz_zeynalov_dewarping_src_full.7z - этот файл я удалил, а залил вместо него другой:

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

Исправление выразилось в том, что я заменил в этом наборе файлы из OpenCV версии 1.1 на такие же, но из версии OpenCV 1.0. Без этой меры скомпилированный экзешник деварпинга вылетал с ошибкой при запуске. Видно, OpenCV слишком уж сильно разнится от версии к версии.

Получается, что исходники Dewarping от Рамиза Зейналова надо компилировать строго в Microsoft Visual C++ 2005 Express Edition (не 2008, не 2010) и строго с OpenCV 1.0 (даже OpenCV 1.1 уже не подходит).

Попробовал скомпилировать экзешник деворпинга. Всё получилось. Подсунул ему те же XML-файлы, что были в наборе экзешника, скомпилированным самим Рамизом. И подсунул тестовый искривленный скан. Запустил. И всё получилось - искривленный скан выпрямился, и получился точно таким же, как и после работы оригинального экзешника от Рамиза.

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

monday2000

  • Администратор
  • *****
  • Сообщений: 985
    • AOL клиент - -
    • Yahoo клиент - -
    • Просмотр профиля
    • Создание книг в электронном виде из бумажных книг (в формате DjVu)
    • E-mail
Re: Dewarping от Рамиза Зейналова
« Ответ #33 : 07 ПЭТРам 2013, 19:51:26 »
Я попробовал на зимних каникулах поразбираться с исходниками dewarping от Рамиза. Я хотел во-первых, убрать все сторонние зависимости - TinyXML, OpenCV, а во-вторых - переписать всё с С++ на СИ и FreeImage.

Посидев над этим занятием несколько дней подряд, я осознал, что это, увы, того совершенно не стоит. Ознакомившись немного "изнутри" с dewarping от Рамиза Зейналова, я понял, что это совершеннейшее барахло - не стоящее ни нашего времени, ни нашего внимания. Это оказалась просто легкомысленная поделка 23-летнего студента, сделанная лишь с целью защиты диплома - но вовсе не для реальной практической работы. Кто не знает - dewarping был дипломной работой Рамиза.

Если бы кто видел - что там внутри, в исходниках! Какое-то сумасшедшее, безумное нагромождение бог знает чего! :o Такое впечатление, что Рамиз решил в этой дипломной работе показать "всё что знает" из области программирования С++ - тут Вам и шаблоны (в изобилии), и наследование, и STL (но это ещё ладно), объявления const-mutable, виртуальные функции. :o А зачем, спрашивается, он применяет собственные DLL? Это что - желание выпендриться, что ли, и показать, "какой я умный"? Зачем загружать параметры из XML-файла - (добавляя только из-за этого TinyXML)- ведь параметры вполне можно было бы загрузить просто из текстового файла.

А эта нелепая манера - везде и всюду - где надо и где не надо - городить классы, классы, классы... Это чтобы комиссия, принимающая диплом, не заподозрила его в незнании, что такое "класс" в С++?  :-\

Короче, преобразовать это безумие из С++ в СИ - практически нереально. Точнее можно (убив месяц работы) - только смысла нет. А без этого там не разобраться. И, самое главное - а чего ради вообще разбираться в работе Рамиза? Результат действия его Dewarping (на моих тестовых сканах, а не на его) оказался весьма слабеньким. И потом - всё это работает ЧУДОВИЩНО медленно. Просто ни в какие рамки - по скорости. А всё потому, что там делаются какие-то никому не нужные вычисления неизвестно чего - которые никак положительно не влияют на КАЧЕСТВО результата. Зато всё это, безусловно, продемонстрировало дипломной комиссии - какой перед ними продвинутый студент, сколько он всяких математических алгоритмов знает...  :-\

В общем, итог такой: Dewarping от Рамиза Зейналова можно смело выкидывать на свалку, где ему самое и место.  >:( Ничего полезного там для нас нет - ну разве что кроме каких-то общих идей (в пояснительной записке) и, может быть, отдельных каких-то функций оттуда (хотя этого добра полно и в других местах).

Dewarping от Рамиза Зейналова был создан для одной-единственной цели - пустить пыль в глаза дипломной комиссии, и показать ей эрудированность автора. А с точки зрения реального дела - это творение оказалось ниже плинтуса.

Чем пытаться что-то выжать из Dewarping от Рамиза Зейналова, уж лучше просто с нуля написать свой Dewarping - (как поступил Tulon, автор Скан Тейлора, к примеру) - толку будет гораздо больше.

Жаль только напрасно потраченных времени и сил.  >:( Ну что ж - отрицательный результат - тоже результат.

yuree

  • Постоялец
  • ***
  • Сообщений: 172
    • Просмотр профиля
    • E-mail
Re: Dewarping от Рамиза Зейналова
« Ответ #34 : 08 ПЭТРам 2013, 01:16:51 »
Неужели деварпингом только гражданин Зейналов и занимается?)
Вам попадались в сети какие либо другие работы, хоть дипломные хоть в виде готовых экзешников на данную тематику?

monday2000

  • Администратор
  • *****
  • Сообщений: 985
    • AOL клиент - -
    • Yahoo клиент - -
    • Просмотр профиля
    • Создание книг в электронном виде из бумажных книг (в формате DjVu)
    • E-mail
Re: Dewarping от Рамиза Зейналова
« Ответ #35 : 08 ПЭТРам 2013, 18:31:08 »
Ещё есть Leptonica. Попробую её посмотреть. Dewarping есть и в Scan Tailor. И ещё в проекте Decapod - но там трёхмерный Dewarping - слишком сложно.

Сущность Dewarping изложена тут: http://www.bluevoid.com/opengl/sig99/advanced99/notes/node82.html

Строится две математические кривые - сверху и снизу страницы, отображающие модель искривления. Построить эти кривые - это и есть суть Dewarping. По-моему, в Scan Tailor это - сплайны. Эти кривые описываются (обязательно) математическими уравнениями - что даёт возможность, во-первых, найти координату любой точки этой кривой, а во-вторых, для любой точки изображения можно построить простейшую линейную интерполяцию разности одноимённых координат этой точки и ближайшей кривой (т.е. величина сдвига-искривления).

Далее просто в цикле проходим по всем точкам изображения, и сдвигаем каждую точку на величину её персонального сдвига методом интерполяции - точно такой же, которая применяется при масштабировании, повороте. Называется это (насколько я понял) гомоморфное преобразование http://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B8%D0%B2%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%B5%D0%BE%D0%B1%D1%80%D0%B0%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5 .