Как обнаружить ориентацию изображения (текст)

Моя программа работает с документами факса, хранившими как отдельные битовые массивы
Интересно, существует ли способ обнаружить автоматически ориентацию страницы (вертикальный, или горизонтальный) для показа просмотра изображения для пользователя в правильном порядке (предназначенный вращаются если neccesary),

Любые советы очень ценятся!

Править: Разъяснение:
Когда Faxmachine получает многостраничный документ, он сохраняет каждую страницу как отдельный файл TIFF.
Мое приложение имеет встроенное средство просмотра, отображающее те файлы. Все файлы масштабируются к формату A4 и сохранены в TIFF (таким образом, нет никакого изменения для обнаружения ориентации параметрами высоты/ширины),
Мое средство просмотра отображает изображения в режиме портрета по умолчанию

То, что я хотел бы сделать, автоволшебно обнаруживают ситуацию, когда org документ был распечатан в альбомном режиме (например, широкие таблицы Excel) затем, я хотел бы показать повернутый предварительный просмотр для конечного пользователя для ускорения процесса предварительного просмотра

Очевидно, существует 4 возможных портрета ориентации факса / среда x 2 вида вращений.

Я даже заинтересован упрощенное решение, обнаруживающее, когда org документ был средой или портретом (я заметил, что большинство альбомных документов должно быть повернуто по часовой стрелке),

EDIT2: идея
Я думаю, что это могла бы быть некоторая идея:
Если я мог бы провести горизонтальные и вертикальные линии и проверить, не сокращает ли строка (черной) точки. Затем мы можем сравнить то, что является большим количеством типа строк (горизонтальный или вертикальный), и его решает об ориентации страницы.
Что Вы думаете?

7
задан Matt Warren 6 April 2010 в 14:37
поделиться

3 ответа

Для этого вам понадобится OCR. Свернуть собственное OCR было бы немного сложно, но может быть, есть библиотека или что-то еще, на что стоит обратить внимание? Кроме того, даже при хорошем оптическом распознавании текста это решение не является на 100% надежным.

2
ответ дан 7 December 2019 в 03:13
поделиться

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

Например, с первого взгляда видно, что в тексте гораздо больше вертикальных линий (l, j, k, m, n и т. Д.), Чем горизонтальных, так что, возможно, вы могли бы начать с этого.

Но даже обнаружить их непросто, вам нужно будет использовать какой-то фильтр, например Sobel или Prewitt . У них обоих есть горизонтальная и вертикальная версии, см. Здесь для получения дополнительной информации.

Конечно, вертикальные / горизонтальные линии таблицы Excel будут самыми сильными краями, поэтому вам придется игнорировать их и смотреть только на текст.

Альтернатива: Не могли бы вы просто дать пользователю простой способ поворачивать изображения, например стрелки в программе просмотра изображений Windows, или просто показать 4 миниатюрных изображения, на которые они могут щелкнуть. Возможно, вам придется кэшировать 4 версии (если вы меняете), чтобы это было быстро, но только если скорость окажется проблемой?

2
ответ дан 7 December 2019 в 03:13
поделиться

Вы можете выполнить быстрое преобразование Фурье (БПФ ), чтобы преобразовать пространственное изображение в представление частоты / угла. Затем найдите угол с наиболее заметной частотой. Звучит сложно, но это не так сложно, это довольно эффективно и, по сути, проверяет все возможные углы одновременно, вместо того, чтобы быть жестко запрограммированным хаком, который работает только для определенных углов. Найдите образец реализации с такими условиями поиска, как числовые рецепты и БПФ.

3
ответ дан 7 December 2019 в 03:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: