Кто-нибудь знает, как извлечь координаты изображения из набора данных Marmot? - PullRequest
0 голосов
/ 15 октября 2018

Marmot - это набор данных изображения документа (http://www.icst.pku.edu.cn/cpdp/data/marmot_data.htm), где обозначаются несколько вещей, таких как тело документа, область изображения, область таблицы, заголовок таблицы и т. Д. Этот набор данных специально используется для исследовательских целей анализа изображений документа. Они упомянуливсе координаты в шестнадцатеричном шестнадцатеричном формате с прямым порядком байтов. Кто-нибудь работал с этим набором данных и как преобразовать эту шестнадцатеричную координату XY в понятный человеку формат?

Ответы [ 2 ]

0 голосов
/ 19 ноября 2018

Если кто-то пытается сделать это в Python 3, как я, вам нужно всего лишь изменить шаг 2 другого ответа следующим образом:

conv_pound = [struct.unpack('!d', bytes.fromhex(t))[0] for t in BBox]
0 голосов
/ 16 октября 2018

Наконец я получил подсказку после анализа и публикации здесь, если кому-то нужно исследовать этот набор данных.Тем не менее, они упомянули значение единицы измерения, каким образом они преобразуют данную координату в значение в пикселях, но это было трудно отследить, потому что они не упомянули это в своем руководстве / руководстве.Они упомянули другое место в качестве аннотации.

  1. Сначала вам нужно преобразовать их шестнадцатеричное значение из 16 символов, используя формат IEEE 754 с прямым порядком байтов.Например, заданные координаты для метки:

    BBox = ['4074145c00000005', '4074dd95999999a9', '4080921e74bc6a80', '406fb9999999999a']

  2. Преобразовать с помощьюpython,

    conv_pound = struct.unpack ('! d', str (t) .decode ('hex')) [0]) для t в BBox]

  3. Вы получите значение в фунтах, которое составляет 1/72 дюйма.Мы обычно используем координаты в пиксельных единицах, и мы знаем, что 1 дюйм равен 96 пикселям.Итак,

    conv_pound = [321.2724609375003, 333.8490234375009, 530.2648710937501, 253.8]

Затем разделите каждое значение на 72 и умножьте на 96, чтобы в итоге получить соответствующее значение пикселя, которое равно,

in_pixel = [428.36328, 445.13203, 707.01983, 338.40000]

Они начали отсчитывать позицию пикселя в левом нижнем углу изображения документа.Если вы рассматриваете из верхнего левого угла (обычно мы учитываем таким образом), вы должны вычесть 2-е и 4-е значение из высоты изображения.Если мы считаем, что image [height, width] равно [1123, 793], то мы можем представить вышеуказанные координаты в целочисленном значении как

label_boundary = [428, 678, 707, 785]

...