Как обнаружить пустой столбец на странице, используя ImageMagick для различения guish двух столбцов - PullRequest
0 голосов
/ 06 апреля 2020

Я пытаюсь различить guish документы pdf scientifi с двумя столбцами c, используя ImageMagick, и определяю точку, где эти два столбца разделяются, используя скрипт bash.

Моя идея - использовать скользящее окно в центре страницы, чтобы найти окно, которое полностью белое. Что-то вроде:

  for i in {0..$page_width..$step} do 
     # get the color of a box 100x100+"$i"+50%
     # if the box is completely blank or 90% blank, then return ($i + 50)
  done

Однако я не знаю, чтобы код для отметки поля на картинке был полностью пустым.

Пример изображения:

enter image description here

1 Ответ

2 голосов
/ 07 апреля 2020

Один из способов сделать это - вычислить «проекцию» (т.е. среднее значение) всех пикселей вниз по вертикальным столбцам путем изменения размера изображения до 1 пикселя в высоту. Я перевернул / отменил изображение, чтобы вы могли лучше видеть цвета, и растянул изображение высотой 1 пиксель до высоты 20 пикселов, чтобы вы могли видеть его внизу:

magick paper.png -alpha off -negate -scale x1\! -auto-level -scale x20\! result.png

enter image description here

Итак, если вы сделаете это немного дальше и сделаете вывод одной строкой из 100 пикселей и посмотрите на нее как на текст, вы можете надеяться на некоторые особенно низкие значения около 50% позиции в центре страница:

magick paper.png -alpha off -colorspace gray -negate -scale x1\! -scale 100x\! -auto-level txt:

Пример вывода

# ImageMagick pixel enumeration: 100,1,65535,gray
0,0: (0)  #000000  gray(0)
1,0: (0)  #000000  gray(0)
2,0: (0)  #000000  gray(0)
3,0: (56.1923)  #383838  gray(22.0362%)
4,0: (209.168)  #D1D1D1  gray(82.0267%)
5,0: (187.374)  #BBBBBB  gray(73.4801%)
6,0: (180.066)  #B4B4B4  gray(70.6143%)
7,0: (188.581)  #BDBDBD  gray(73.9534%)
8,0: (197.288)  #C5C5C5  gray(77.368%)
9,0: (230.555)  #E7E7E7  gray(90.4138%)
...
...
45,0: (221.296)  #DDDDDD  gray(86.7826%)
46,0: (234.086)  #EAEAEA  gray(91.7985%)
47,0: (239.522)  #F0F0F0  gray(93.93%)
48,0: (191.323)  #BFBFBF  gray(75.0288%)
49,0: (44.6977)  #2D2D2D  gray(17.5285%)    <--- HERE IS THE CENTRAL GUTTER
50,0: (27.1557)  #1B1B1B  gray(10.6493%)    <--- AND HERE - AROUND 50% ACROSS
51,0: (145.663)  #929292  gray(57.1227%)
52,0: (154.567)  #9B9B9B  gray(60.6144%)
53,0: (184.97)  #B9B9B9  gray(72.5372%)
...
...
91,0: (156.178)  #9C9C9C  gray(61.2462%)
92,0: (151.242)  #979797  gray(59.3107%)
93,0: (146.532)  #939393  gray(57.4635%)
94,0: (149.511)  #969696  gray(58.6319%)
95,0: (185.506)  #BABABA  gray(72.7475%)
96,0: (21.7851)  #161616  gray(8.54316%)
97,0: (0)  #000000  gray(0)
98,0: (0)  #000000  gray(0)
99,0: (0)  #000000  gray(0)

Другие идеи:

  • Вы можете разрешить ImageMagick сделайте для вас порог с помощью чего-то подобного и посмотрите вокруг строки 572:

    magick paper.png -alpha off -colorspace gray -negate -scale x1\! -threshold 2% txt:

  • Вы можете сбрить 10% от левого и правого краев во-первых, чтобы избавиться от краевых эффектов:

    magick paper.png -shave 10%x ... result.png

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...