Самый быстрый настольный алгоритм? - PullRequest
0 голосов
/ 03 декабря 2010

Я немного ошеломлен своей задачей.У нас есть инструментарий, который мы используем для сканирования TWAIN.Некоторые из наших клиентов жалуются на более медленную скорость сканирования, когда установлена ​​опция выравнивания.Это связано с тем, что, если их сканер не поддерживает аппаратное выравнивание, это выполняется при последующей обработке на процессоре.Мне было интересно, если кто-нибудь знает хороший (то есть быстрый) алгоритм для достижения этой цели.Мне сложно сказать, какой алгоритм мы сейчас используем.Какие существуют алгоритмы для этого и как они оцениваются по скорости / точности?Если бы я знал названия алгоритмов, мне было бы проще выполнить поиск в Google.

Спасибо.-Т

Ответы [ 3 ]

3 голосов
/ 04 декабря 2010

Вы сканируете в цветном или ч / б?

Deskew интенсивно использует процессор. TIFF Group4 или JPEG должны быть распакованы, определены углы наклона, выровнены и затем сжаты.

Существует много алгоритмов обработки изображений, и я оценил их за многие годы. Существуют огромные различия в скорости обработки между различными библиотеками, и во многом это зависит от того, насколько хорошо они кодируются, а не от используемого алгоритма. В коммерческих библиотеках огромная разница только в чтении и написании изображений.

Самое быстрое коммюнике, которое я когда-либо использовал, пришло от Unisoft Imaging (www.unisoftimaging.com). Я предполагаю, что многое из этого написано на ассемблере. Unisoft существует уже много лет и работает очень быстро и эффективно. Он поддерживает множество различных вариантов выравнивания, включая удаление черной границы, цвет и черно-белое выравнивание. Процедуры Group4 очень надежные и очень быстрые. Библиотека поставляется со многими другими вариантами обработки изображений, а также с поддержкой TWAIN и родного сканера SCSI. Он также поддерживает Unix.

Если вам нужна бесплатная стойка регистрации, то вы можете взглянуть на Лептонику. Он не содержит слишком много документации, но очень стабилен и хорошо написан. http://www.leptonica.com/

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

Другим вариантом является обработка документа в отдельном процессе, чтобы сканирование могло выполняться со скоростью сканера. В настоящий момент вы, вероятно, обрабатываете все параллельно, одну задачу за другой, отсюда и замедление.

0 голосов
/ 04 декабря 2010

Правильно ли я понимаю, что вы уже реализовали такой алгоритм?Если так, вы уверены, что нет места для оптимизации?Я бы начал с профилирования существующего решения.

В любом случае, я полагаю, вам стоит поискать алгоритм быстрого цифрового преобразования Радона.

Взгляните на http://pagetools.sourceforge.net. У них есть реализация алгоритма до конца..

0 голосов
/ 03 декабря 2010

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

Deskew состоит из двух этапов: обнаружение перекоса и вращение. Обнаружение угла наклона обычно можно выполнить на черно-белом (1-битном) изображении быстрее. Скорость вращения зависит от качества интерполяции. Хорошее качество рабочего стола займет много времени, намного больше, чем сканирование страниц.

Хороший высокоскоростной сканер может выполнять 120 двусторонних страниц в минуту, если он имеет аппаратное сжатие JPEG или TIFF Group 4, и ваша библиотека TWAIN использует это преимущество (подсказка: не используйте собственный режим). У вас едва хватает времени, чтобы сохранить файл на жестком диске с такой скоростью, не говоря уже о распаковке, обнаружении перекоса, вращении, повторном сжатии. Качественное выравнивание занимает несколько секунд на страницу, если только вы не можете использовать аппаратный ускоритель видеокарты для вращения и сжатия.

...