СОХРАНЕНИЕ И ИЗВЛЕЧЕНИЕ ПРОСТРАНСТВЕННЫХ ДАННЫХ В/ИЗ БАЗЫ ДАННЫХ
SAVING AND EXTRACTING SPATIAL DATA TO/FROM DATABASE

ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
Данное изобретение относится к системе и способу сохранения пространственных данных в базе данных. Данное изобретение дополнительно относится к системе и способу извлечения пространственных данных из базы данных. Данное изобретение дополнительно относится к рабочей станции или устройству визуализации, содержащему одну из двух или обе системы, к компьютерно-читаемому носителю, содержащему инструкции для предписания процессорной системе выполнять один из двух или оба способа, и к базе данных.
УРОВЕНЬ ТЕХНИКИ ИЗОБРЕТЕНИЯ
Цифровые изображения за последние годы увеличились в размере и продолжают увеличиваться в размере, например, из-за увеличения в пространственном разрешении, глубины в битах и/или динамического диапазона датчиков изображения, из-за того, что устройства визуализации в медицинской области сканируют больше срезов, и т.д. Еще одним конкретным не ограничивающим примером является то, что изображения слайдов из сканеров для цифровой патологии могут иметь размеры в диапазоне гигабайтов. Также существуют другие примеры. В этой связи, растут требования к хранению для сохранения таких изображений. По этой и другим причинам, может быть желательно хранить изображения в базах данных, которые имеют возможность соответствия требованиям к хранению. Обычно, такие базы данных размещаются в распределенных и масштабируемых системах хранения. Такие системы хранения могут, но не должны, быть облачными системами хранения, включающими в себя, но не ограничивающимися этим, Amazon S3, облачное хранилище Google и Openstack SWIFT, которые обеспечивают возможность сохранения и извлечения объектов, таких как файлы или другие типы структур данных.
Не считая данных изображения, могут быть другие формы пространственных данных, которые имеют значительный размер. Здесь, термин "пространственные данные" относится к многомерным данным, имеющим по меньшей мере две пространственных размерности. Известно, что такие пространственные данные, являющиеся в нижеследующих примерах данными изображения для изображения, хранятся в базе данных в виде одиночного объекта, например, как одиночный файл.
Например, документ США 8582849 B2 описывает виртуальный слайд, который содержится в одиночном файле изображения на компьютерной системе. Формат файла для одиночного файла содержит заголовок, который как сообщается содержит информацию файла и ссылку на исходное изображение, которое содержит изображение виртуального слайда в его родном разрешении, как принято из устройства линейного сканера. Исходное изображение организовано как последовательность блоков, чтобы способствовать произвольному доступу. Отдельные блоки могут быть сжаты, например, согласно стандарту JPEG2000.
Изобретатели учли, что для очень больших пространственных данных заголовок, содержащий информацию индексирования, например, для обеспечения возможности сопоставления идентификатора блока с положением в файле, может быть также очень большим. Например, для пространственных данных в несколько гигабайт, заголовок может составлять сотни мегабайт в размере. Так как к заголовку может быть нужно осуществить доступ и проанализировать, это представляет значительные издержки, например, в том, что касается полосы пропускания, что может быть особенно неблагоприятным, когда к базе данных осуществляется доступ по сети с ограниченной полосой пропускания, такой как сеть доступа с ограниченной полосой пропускания в Интернет.
Документ США 6021406 раскрывает способ сохранения картографических данных в базе данных и способ поиска по базе данных для нахождения объектов в заданной области и нахождения объектов, ближайших к местоположению. Чтобы сгенерировать картографические данные, плоскость карты делится на некоторое число квадратов, и квадраты нумеруются пространственными ключевыми номерами согласно кривой заполнения пространства. Места, идентифицирующие объекты, такие как рестораны или отели, размещаются в главной таблице базы данных вместе с одним из пространственных ключей (ключей объектов), пересекающихся с областью карты, занимаемой объектом. Вторичная таблица базы данных затем создается с одним столбцом, включающим в себя ключи объектов, соответствующие главной таблице, и другие столбцы, идентифицирующие диапазоны пространственных ключей для объектов, идентифицированных посредством ключей объектов. Для поиска по базе данных, чтобы найти объекты в заданной области, для заданной области вычисляются диапазоны пространственных ключей и сравниваются с диапазонами во вторичной таблице, чтобы идентифицировать ключи объектов. Идентифицированные ключи объектов затем используются для получения желаемых объектов из главной таблицы.
Документ США 6633688 раскрывает клиентскую/серверную систему, которая обслуживает формирование изображения для пользователей быстро, эффективно и с желаемой функциональностью. Клиентам выделяются средства для определения данных изображения, необходимых для генерирования видов на изображении. Клиенты посылают запросы для таких необходимых данных изображения серверам, которые обслуживают запросы, и отправляют запрошенные данные изображения клиентам, которые затем генерируют виды. Система быстро отвечает на изменения видов, возникающих в результате действий пользователя, таких как панорамирование или масштабирование, посредством обеспечения клиентам возможности определения, какие требуются данные изображения, которые еще не были обслужены, и запрашивания обслуживания только этих данных. Клиентам также обеспечивается возможность посылать запросы для отмены обслуживания данных, запрошенных ранее, но не обслуженных и более не нужных.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
Было бы предпочтительно получить систему и способ сохранения пространственных данных в базе данных, которая обеспечивает возможность извлечения частей пространственных данных с меньшими издержками.
Нижеследующие аспекты данного изобретения предусматривают сохранение пространственных данных в базе данных на основе пары "ключ-значение", которая выполнена с возможностью сохранения данных значения в привязке к данным ключа и возможностью обеспечения извлечения данных значения на основе данных ключа. Пространственные данные хранятся так, что каждые сохраненные данные значения представляют собой кластер, который генерируется посредством разбиения пространственных данных на блоки и группировки блоков в кластеры. Данные ключа каждых сохраненных данных значения содержат по меньшей мере основанный на координатах идентификатор соответствующего кластера, который задается относительно системы координат, ассоциированной с пространственными данными. Это обеспечивает возможность извлечения (части) данных значения конкретного кластера посредством вычисления основанного на координатах идентификатора кластера. Таким образом нет необходимости, чтобы заголовок содержал информацию индексирования.
Первый аспект данного изобретения предусматривает систему, выполненную с возможностью сохранения пространственных данных в базе данных, содержащую:
- интерфейс базы данных, выполненный с возможностью осуществления доступа к базе данных, при этом база данных является базой данных на основе пары "ключ-значение", выполненной с возможностью сохранения данных значения в привязке к данным ключа и возможностью обеспечения извлечения данных значения на основе данных ключа;
- память, содержащую данные инструкций, представляющие собой набор инструкций;
- процессор, выполненный с возможностью осуществления связи с интерфейсом базы данных и памятью и выполнения набора инструкций, при этом набор инструкций, при выполнении процессором, предписывает процессору:
- разбить пространственные данные на блоки;
- сгруппировать блоки в кластеры; и
- сохранить каждый кластер в базе данных посредством предписания процессору:
- сохранить соответствующий кластер как данные значения в базе данных;
- сгенерировать идентификатор кластера на основе координаты соответствующего кластера, при этом координата задана относительно системы координат, ассоциированной с пространственными данными;
- сгенерировать данные ключа для данных значения кластера, при этом данные ключа содержат по меньшей мере идентификатор кластера; и
- сохранить данные ключа в привязке к данным значения в базе данных.
Дополнительный аспект данного изобретения предусматривает систему, выполненную с возможностью извлечения пространственных данных из базы данных, содержащую:
- интерфейс базы данных, выполненный с возможностью осуществления доступа к базе данных, при этом база данных является базой данных на основе пары "ключ-значение", выполненной с возможностью сохранения данных значения в привязке к данным ключа и возможностью обеспечения извлечения данных значения на основе данных ключа, при этом база данных содержит:
- сохраненные данные значения, каждые представляющие соответствующий кластер, сгенерированный посредством разбиения пространственных данных на блоки и группировки блоков в кластеры;
- сохраненные данные ключа для каждых сохраненных данных значения, содержащих по меньшей мере идентификатор соответствующего кластера, при этом идентификатор кластера генерируется на основе координаты соответствующего кластера, при этом координата задана относительно системы координат, ассоциированной с пространственными данными;
- память, содержащую данные инструкций, представляющие собой набор инструкций;
- процессор, выполненный с возможностью осуществления связи с интерфейсом базы данных и памятью и выполнения набора инструкций, при этом набор инструкций, при выполнении процессором, предписывает процессору:
- извлечь один или более блоков кластера пространственных данных из базы данных посредством предписания процессору:
- сгенерировать по меньшей мере часть идентификатора кластера на основе координаты кластера в системе координат, ассоциированной с пространственными данными;
- запросить данные ключа у базы данных, содержащие по меньшей мере часть идентификатора, тем самым получая одни или более данных ключа;
- выбрать данные ключа из одних или более данных ключа; и
- извлечь по меньшей мере часть данных значения из базы данных, которые хранятся в базе данных в привязке к данным ключа.
Дополнительный аспект данного изобретения предусматривает рабочую станцию или устройство визуализации, содержащее одну из двух или обе системы.
Дополнительный аспект данного изобретения предусматривает способ сохранения пространственных данных в базе данных, при этом база данных является базой данных на основе пары "ключ-значение", выполненной с возможностью сохранения данных значения в привязке к данным ключа и возможностью обеспечения извлечения данных значения на основе данных ключа, при этом способ содержит:
- разбиение пространственных данных на блоки;
- группирование блоков в кластеры; и
- сохранение каждого кластера в базе данных посредством:
- сохранения соответствующего кластера как данных значения в базе данных;
- генерирования идентификатора кластера на основе координаты соответствующего кластера, при этом координата задана относительно системы координат, ассоциированной с пространственными данными;
- генерирования данных ключа для данных значения кластера, при этом данные ключа содержат по меньшей мере идентификатор кластера; и
- сохранения данных ключа в привязке к данным значения в базе данных.
Дополнительный аспект данного изобретения предусматривает способ извлечения пространственных данных из базы данных, при этом база данных является базой данных на основе пары "ключ-значение", выполненной с возможностью сохранения данных значения в привязке к данным ключа и возможностью обеспечения извлечения данных значения на основе данных ключа, при этом база данных содержит:
- сохраненные данные значения, каждые представляющие соответствующий кластер, сгенерированный посредством разбиения пространственных данных на блоки и группировки блоков в кластеры;
- сохраненные данные ключа для каждых сохраненных данных значения, содержащих по меньшей мере идентификатор соответствующего кластера, при этом идентификатор кластера генерируется на основе координаты соответствующего кластера, при этом координата задана относительно системы координат, ассоциированной с пространственными данными;
при этом способ содержит извлечение одного или более блоков кластера пространственных данных из базы данных посредством:
- генерирования по меньшей мере части идентификатора кластера на основе координаты кластера в системе координат, ассоциированной с пространственными данными;
- запроса данных ключа у базы данных, содержащих по меньшей мере часть идентификатора, тем самым получая одни или более данных ключа;
- выбора данных ключа из одних или более данных ключа; и
- извлечения по меньшей мере части данных значения из базы данных, которые хранятся в базе данных в привязке к данным ключа.
Дополнительный аспект данного изобретения предусматривает компьютерно-читаемый носитель, содержащий кратковременные или некратковременные данные, представляющие инструкции, приспособленные для предписания процессорной системе выполнить один из двух или оба способа.
Дополнительный аспект данного изобретения предусматривает компьютерно-читаемый носитель, содержащий кратковременные или некратковременные данные, представляющие базу данных, при этом база данных является базой данных на основе пары "ключ-значение", выполненной с возможностью сохранения данных значения в привязке к данным ключа и возможностью обеспечения извлечения данных значения на основе данных ключа, при этом база данных содержит:
- сохраненные данные значения, каждые представляющие соответствующий кластер, сгенерированный посредством разбиения пространственных данных на блоки и группировки блоков в кластеры;
- сохраненные данные ключа для каждых сохраненных данных значения, содержащих по меньшей мере идентификатор соответствующего кластера, при этом идентификатор кластера генерируется на основе координаты соответствующего кластера, при этом координата задана относительно системы координат, ассоциированной с пространственными данными.
Вышеуказанные меры при предоставлении в качестве базы данных так называемой базы данных на основе пары "ключ-значение", которая выполнена с возможностью сохранения значения, в виде данных значения, в привязке к ключу, в виде данных ключа. Это обеспечивает возможность извлечения значения на основе ключа. Следует отметить, что такие базы данных на основе пары "ключ-значение" известны сами по себе в области баз данных.
Для того, чтобы хранить пространственные данные в базе данных, пространственные данные разбиваются на блоки, где каждый блок содержит разный участок пространственных данных. Здесь термин "блок" относится к некоторому числу элементов пространственных данных, таких как, в не ограничивающем примере пространственные данные являются данными изображения, пиксели или воксели или вейвлет-коэффициенты, с которыми система обращается как элементарной единицей. Например, блок может быть составлен из области или мозаики пикселей или вокселей из изображения. Будет понятно, что такая область может, но не должна, иметь прямоугольную форму; другие формы возможны в равной степени. Более того, блоки могут не перекрываться, равно как и взаимно перекрываться.
Разбив пространственные данные на блоки, блоки группируются в кластеры. В этой связи, каждый кластер может содержать разный набор блоков. Кластер затем сохраняется в базе данных как объект "ключ-значение", в том смысле, что данные кластера сохраняются как данные значения в базе данных, и соответствующий ключ генерируется и сохраняется как данные ключа. Следует отметить, что и данные ключа, и данные значения обычно сохраняются одновременно в базе данных, например, во время одной операции сохранения объекта "ключ-значение", даже если описано как отдельные операции.
Ключ генерируется на основе идентификатора, именно основанного на координатах идентификатора, который может описывать или представлять кодирование координаты соответствующего кластера, при этом координата задается относительно системы координат, ассоциированной с пространственными данными. Дополнительно или в качестве альтернативы, может быть сгенерирован идентификатор, чтобы описать или представить кодирование с интервалом, который включает в себя координату. В общем, в случае, когда ключ представлен строкой, строка может включать в себя идентификатор. В общем, содержимое ключа, например, данные ключа, может в дальнейшем также называться просто "именем ключа", указывая на ключ, представляемый строкой, например, линейной последовательностью символов, такой как числовые или буквенно-числовые символы, или имеющей аналогичный формат. Кластер может таким образом может быть сохранен под именем ключа, которое описывает или представляет координату кластера в системе координат пространственных данных, или интервал, который включает в себя координату.
Вышеуказанные меры имеют такой эффект, что пространственные данные хранятся в базе данных таким образом, что к кластеру блоков можно осуществить доступ на основе имени ключа, которое может быть по меньшей мере частично вычислено из координаты кластера. В этой связи, если известно, какой(ие) блок(и) должен(ны) быть извлечен(ны), и если координата(ы) кластера, содержащего блок(и), известна(ы) в системе координат пространственных данных, идентификатор координаты может быть вычислен напрямую, и таким образом по меньшей мере часть имени ключа. База данных может быть затем опрошена на предмет идентификатора координаты. Если идентификатор координаты представляет точную координату кластера, запрос может вернуть только один результат, например, одно имя ключа, данные значения которого могут быть впоследствии извлечены. Будет понятно, что такое осуществление запроса может все еще требоваться, так как другие части имени ключа могут быть неизвестны, например, если имя ключа содержит сдвиги данных для блоков в данных значения. Более того, если координата кластера известна только приблизительно, например, известен пространственный диапазон, а не точная координата, база данных может быть опрошена на предмет ключей, которые размещаются в пределах этого пространственного диапазона, например, посредством предоставления части идентификатора, которая представляет этот пространственный диапазон, и (обычно ограниченное) некоторое число ключей может быть возвращено посредством запроса. Таким образом нет необходимости, чтобы заголовок содержал информацию индексирования. Предпочтительно, может быть не нужно извлекать такую информацию индексирования, которая может иметь возможность задания размера в случае, когда пространственные данные имеют возможность задания размера. В этой связи, части пространственных данных могут быть извлечены с меньшими издержками. Это может быть особенно предпочтительным, если система соединена с базой данных посредством сети доступа с ограниченной полосой пропускания, например, сеть доступа в Интернет. Не ограничивающий пример состоит в том, что база данных может содержаться в облачной системе хранения, тогда как система может содержаться на клиенте, или способ может выполняться посредством него, соединенном с облачной системой хранения.
Опционально, набор инструкций, при выполнении процессором, предписывает процессору дополнительно включить в данные ключа сдвиги данных, которые представляют соответствующие положения каждого блока, или по меньшей мере поднабора, из набора блоков кластера в данных значения. Зная сдвиги данных каждого блока в данных значения, блоки кластера могут быть извлечены индивидуально, тем самым обеспечивая по меньшей мере некоторую степень произвольного доступа к блокам кластера. Включая сдвиги данных в имя ключа, может быть достаточно получить доступ к имени ключа, чтобы узнать эти сдвиги данных. Такой доступ к имени ключа может быть получен посредством поиска ключа на основе его примерной координаты, например, на основе основанного на координатах идентификатора. Базы данных на основе пары "ключ-значение", которые обеспечивают возможность поиска ключей, например, на основе имени ключа, сами по себе известны. Поэтому, имя ключа, или в общем смысле данные ключа, может быть возвращено как результаты поиска, и может быть использовано для последовательного произвольного доступа к блокам данных значения, которые хранятся под данным именем ключа.
Опционально, система координат, ассоциированная с пространственными данными, содержит по меньшей мере одно из:
- пространственной оси, указывающей пространственную координату каждого кластера;
- оси цвета, указывающей какая цветовая компонента представляет пространственные данные, содержащиеся в кластере; и
- оси длины волны, указывающей какую длину волны, или диапазон длин волн, представляют пространственные данные, содержащиеся в кластере.
Может быть одна или более систем координат, ассоциированных с пространственными данными. Обычным примером является система пространственных координат, имеющая несколько размерностей, таких как ширина, высота, глубина и т.д., и таким образом имеющая соответствующую пространственную ось. Другим примером является то, что пространственные данные могут содержать цветовые компоненты, например, если пространственные данные являются данными изображения. В этом примере, цветовые компоненты могут рассматриваться как координаты на оси, например, имеющей координату "1" для красного, "2" для зеленого, "3" для синего и т.д. Различные другие аспекты пространственных данных могут быть представлены системой координат. Вместе комбинация систем координат может снова образовать систему координат, например, имеющую пространственную ось и ось цветовых компонент. Любая из этих систем координат может быть использована как основа для вычисления идентификатора кластера. Поэтому блоки могут извлекаться на основе соответствующей системы координат.
Опционально, набор инструкций, при выполнении процессором, предписывают процессору сгенерировать идентификатор кластера посредством кодирования координаты с использованием функции кривой заполнения пространства, при этом функция кривой заполнения пространства представляется данными первой функции в памяти. Поэтому данные первой функции могут содержать инструкции для процессора выполнить данную функцию. Посредством использования функции кривой заполнения пространства, координаты могут быть кодированы в идентификаторе структурированным образом. Здесь, термин "кодирование" относится к общей концепции преобразования информации в код, которое может включать в себя использование конкретного формата данных для координат. В частности, если имя ключа содержит кодированные координаты в начале, первые символы имени ключа могут представлять координаты кластера, который хранится. Это обеспечивает возможность быстрого и эффективного поиска объектов "ключ-значение" в базе данных. В частности, ключи нескольких кластеров в пространственной области могут быть эффективно извлечены с использованием одиночного запроса, который использует в качестве идентификатора первоначальные символы, например, наиболее значительную часть, координаты кластера. Эти первоначальные символы могут, в результате кодирования посредством функции кривой заполнения пространства, представлять пространственный диапазон в системе координат, который ассоциирован с пространственными данными. Посредством запроса имен ключей у базы данных, имеющих идентификатор координаты, который начинается с этих первоначальных символов, кластеры, содержащиеся в пространственном диапазоне, могут быть идентифицированы и (по меньшей мере частично) извлечены из базы данных. Следует отметить, что такой запрос может также происходить, если известна точная координата кластера, так как другие части имени ключа могут быть неизвестны, например, сдвиги блоков, кодированные в имени ключа. В этом случае, запрос может вернуть только одиночный результат, который затем может быть использован для извлечения кластера.
Опционально, функция кривой заполнения пространства является функцией упорядочивания по оси Z. Такое упорядочивание по оси Z отображает многомерные данные в одномерные, в то же время предотвращая локальность точек данных, и само по себе известно из областей математического анализа и компьютерной науки, где оно также известно как порядок Мортона или код Мортона.
Опционально, набор инструкций, при выполнении процессором, предписывает процессору разбить пространственные данные на блоки на основе разделов коэффициентов вейвлет-преобразования пространственных данных. Посредством получения блоков из вейвлет-преобразования пространственных данных, может быть получен набор иерархических данных, который разбит в соответствии с частотой и положением. Например, один или более кластеров могут представлять низкочастотные компоненты пространственных данных, тогда как один или более других кластеров могут представлять его высокочастотные компоненты. Пространственные данные могут таким образом сохраняться и извлекаться иерархическим образом, например, сохраняться и извлекаться согласно шкале частот. Будет понятно, что вейвлет-преобразование может быть рекурсивным вейвлет-преобразованием.
Опционально, набор инструкций, при выполнении процессором, предписывает процессору включить в каждый кластер избыточный блок с низкочастотным коэффициентом вейвлет-преобразования пространственных данных. Посредством включения избыточного блока с низкочастотным коэффициентом вейвлет-преобразования пространственных данных в каждый кластер, может быть возможна реконструкция каждой шкалы кластера, даже если кластер не содержит всех шкал вейвлет-иерархии. Это может быть особенно предпочтительным при реконструкции пространственных данных из кластера потоковым образом, так как хранение низкочастотных коэффициентов в каждом кластере обеспечивает возможность реконструкции, например, обратного вейвлет-преобразования, первоначальных пространственных данных только из коэффициентов в этом кластере. В частности, для рекурсивных вейвлет-преобразований очень больших изображений (например, слайды патологий могут иметь 9 или более рекурсивных преобразований, также называемых уровни или шкалы), реконструирование части изображения будет обычно требовать данные из всех блоков/кластеров, покрывающих все рекурсивные шкалы для этой области/объема. Это может быть особенно не предпочтительно для потоковой реконструкции данных изображения, так как область верхних рекурсивных уровней может быть создана позже в процессе рекурсивного преобразования, и таким образом обнаруживаются ниже по потоку. Обеспечивая каждому кластеру возможность реконструкции до (под) изображения, потребители потока могут реконструировать изображение (его части), так что в отношении изображения может быть выполнена обработка. Вследствие этого можно избежать вышеуказанной проблемы.
Опционально, набор инструкций, при выполнении процессором, предписывает процессору, до сохранения соответствующего кластера как данных значения в базе данных, упорядочить данные каждого блока кластера с использованием функции упорядочивания в порядке значимости, при этом функция упорядочивания в порядке значимости представлена данными второй функции в памяти. Поэтому данные второй функции могут содержать инструкции для процессора выполнить данную функцию. Низкокачественная реконструкция пространственных данных может быть возможна посредством отбрасывания, например, не сохранения и/или не извлечения из базы данных, данных с низкой значимостью для каждого блока. Дополнительно или в качестве альтернативы, сжатые данные внутри блока могут быть упорядочены от наиболее значительных к менее значительным, при этом относительное положение битовых плоскостей хранится в отдельном поле метаданных. Упорядочивание данных может быть частью сжатия данных для данных соответствующего кластера.
Опционально, набор инструкций, при выполнении процессором, предписывает процессору сохранить заголовок пространственных данных как данные значения в базе данных, и опционально, сохранить заголовок до сохранения кластеров в базе данных. Заголовок может содержать информацию, описывающую пространственные данные, например, размерности пространственных данных, диапазоны данных и т.д., при этом не содержащую информацию индексирования. Поэтому заголовок может быть меньше по размеру, чем обыкновенный заголовок, который содержит такую информацию индексирования. Заголовок может сохраняться и извлекаться как отдельный объект "ключ-значение" в базе данных. Посредством сохранения заголовка до пространственных данных в базе данных, это может обеспечить возможность обоснования и/или маршрутизации последовательно генерируемых объектов при сохранении вышеуказанных объектов в базе данных. А именно, перехватывая запросы на сохранение на интерфейсе базы данных, маршрутизация или обработка пары "ключ-значение" может быть осуществлена на основе информации в ключе, объединенной с информацией в уже сохраненном (или переданном) заголовке. Не ограничивающим примером такого перехвата является перехват команд HTTP PUT в случае, когда база данных является облачной базой данных с поддержкой Restful.
Специалистам в данной области техники будет понятно, варианты осуществления, реализации и/или опциональные аспекты данного изобретения могут быть объединены любым считающимся полезным образом. Модификации и вариации способа(ов) и/или компьютерно-читаемые носители, которые соответствуют описанным модификациям и вариациям систем(ы), могут осуществляться специалистом в данной области техники на основе настоящего описания.
Будет понятно, что система и способ могут быть применены к данным многомерных изображений, например, двухмерных (2D), трехмерных (3D) или четырехмерных (4D) изображений, полученных различными методами получения, такими как, но не ограничено этим, стандартное формирование рентгеновских изображений, компьютерная томография (CT), магнитно-резонансная томография (MRI), ультразвуковое исследование (US), позитрон-эмиссионная томография (PET), однофотонная эмиссионная компьютерная томография (SPECT), ядерная медицина (NM), цифровая патология (полнослайдовые изображения) и в светлопольной, флуоресцентной или сканирующей масс-спектроскопии.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
Эти и другие аспекты данного изобретения будут понятны из вариантов осуществления и объяснены дополнительно со ссылкой на них, описанных в качестве примера в ниже следующем описании и со ссылкой на прилагаемые чертежи, на которых
Фиг. 1 показывает систему, выполненную с возможностью сохранения данных изображения в базе данных на основе пары "ключ-значение", и/или извлечения данных изображения из базы данных на основе пары "ключ-значение";
Фиг. 2 иллюстрирует хранилище данных изображения в базе данных на основе пары "ключ-значение" как объектов "ключ-значение", каждый из которых содержит данные ключа и соответствующие данные значения;
Фиг. 3 иллюстрирует пространственное разбиение изображения на блоки, и группирование групп смежных блоков в кластеры;
Фиг. 4 показывает способ сохранения данных изображений в базе данных на основе пары "ключ-значение";
Фиг. 5 показывает способ извлечения данных изображения из базы данных на основе пары "ключ-значение";
Фиг. 6 показывает компьютерно-читаемый носитель, содержащий инструкции для предписания процессорной системе выполнить способ.
Следует отметить, что Фигуры являются лишь схематичными и начерчены не в масштабе. На фигурах, элементы, которые соответствуют ранее описанным элементам, имеют те же ссылочные номера.
Список ссылочных номеров
Нижеследующий список ссылочных номеров предоставлен для способствования интерпретации чертежей и не должен толковаться как ограничивающий формулу изобретения.
020 база данных
022 осуществление связи с базой данных
030 данные ключа
031-036 отдельные данные ключа
040 данные значения
041-046 отдельные данные значения
050 объект "ключ-значение"
060 изображение
070 кластер
080 блок
100 система для сохранения и/или извлечения данных изображения
120 интерфейс базы данных
122 внутренний обмен данными
140 процессор
142 внутренний обмен данными
160 память
200 способ сохранения данных изображения в базе данных
210 разбиение данных изображения на блоки
220 группирование блоков в кластеры
230 сохранение каждого кластера
240 сохранение кластера как данных значения в базе данных
250 генерирование идентификатора кластера
260 генерирование данных ключа, содержащих идентификатор
270 сохранение данных ключа в базе данных
300 способ извлечения данных изображения из базы данных
310 извлечение блока(ов) кластера
320 генерирование по меньшей мере части идентификатора кластера
330 запрос данных ключа у базы данных
340 выбор данных ключа
350 извлечение соответствующих данных значения из базы данных
400 компьютерно-читаемый носитель
410 некратковременные данные, представляющие инструкции
ПОДРОБНОЕ ОПИСАНИЕ ВАРИАНТОВ ОСУЩЕСТВЛЕНИЯ
Нижеследующее описание относится к пространственным данным, являющимся данными изображения. Однако, это не ограничение, так как вместо данных изображения, пространственные данные любого другого типа могут быть сохранены и извлечены из базы данных описанным образом. Примеры пространственных данных другого типа включают в себя, например, необработанные MRI-данные, которые дискретизируются в так называемом k-пространстве. В этой связи, нижеследующие ссылки на "данные изображения" могут пониматься как относящиеся в равной степени к "пространственным данным".
Фиг. 1 показывает систему 100, которая может быть выполнена с возможностью сохранения данных изображения в базе данных на основе пары "ключ-значение", и/или извлечения данных изображения из базы данных на основе пары "ключ-значение". В этой связи, система 100 может быть выполнена с возможностью выполнения одной из этих функций, например, сохранения или извлечения, или обеих функций. Фиг. 1 дополнительно показывает базу данных 020. База данных может быть базой данных на основе пары "ключ-значение", также называемой хранилищем на основе пары "ключ-значение", которая выполнена с возможностью сохранения данных значения в привязке к данным ключа и возможностью обеспечения извлечения данных значения на основе данных ключа. Не ограничивающим примером является то, что база данных 020 может быть облачной базой данных, включающей в себя, но не ограниченной этим, Amazon S3, облачное хранилище Google и Openstack SWIFT.
Система 100 дополнительно показана как содержащая интерфейс 120 базы данных, выполненный с возможностью осуществления доступа к базе данных 020. Интерфейс 120 данных может принимать различные формы, такие как сетевой интерфейс для локальной или глобальной сети, например, Интернет, интерфейс хранилища для внешнего или внутреннего хранилища данных, и т.д. В частности, интерфейс 120 базы данных может быть такого типа, который соответствует доступу к базе данных 020. Например, если к базе данных 020 доступ осуществляется по сети, интерфейс 120 базы данных может быть образован сетевым интерфейсом, если база данных 020 содержится во внешнем хранилище данных системы 100, интерфейс 120 базы данных может быть образован интерфейсом внешнего хранилища, и т.д.
Система 100 дополнительно показана как содержащая процессор 140, выполненный с возможностью осуществления связи внутренним образом с интерфейсом 120 базы данных посредством обмена 122 данными и памятью 160, к которой имеет доступ процессор 140 посредством обмена 142 данными. Память 160 может содержать данные инструкций, представляющие собой набор инструкций, который конфигурирует система 100 для сохранения данных изображения в базе данных 020, для извлечения данных изображения из базы данных 020 или выполнения обеих функций, например, сохранения и извлечения данных изображения.
Когда выполнен с возможностью сохранения данных изображения, набор инструкций, при выполнении процессором 140, может предписывать процессору 140 разбить данные изображения на блоки, сгруппировать блоки в кластеры и сохранить каждый кластер в базе данных 020 посредством предписания процессору: сохранить соответствующий кластер как данные значения в базе данных 020, сгенерировать идентификатор кластера на основе координаты соответствующего кластера, при этом координата задана относительно системы координат, ассоциированной с данными изображения, сгенерировать данные ключа для данных значения кластера, при этом данные ключа содержат по меньшей мере идентификатор кластера, и сохранить данные ключа в привязке к данным значения в базе данных.
Когда выполнен с возможностью извлечения данных изображения, набор инструкций, при выполнении процессором 140, может предписывать процессору 140 извлечь один или более блоков кластера данных изображения из базы данных 020 посредством предписания процессору 140 сгенерировать по меньшей мере часть идентификатора кластера на основе координаты кластера в системе координат, ассоциированной с данными изображения, запросить данные ключа у базы данных, содержащие по меньшей мере часть идентификатора, тем самым получая одни или более данных ключа, выбрать данные ключа из одних или более данных ключа и извлечь по меньшей мере часть данных значения из базы данных, которая хранится в базе данных в привязке к данным ключа.
Обе конфигурации будут дополнительно разъяснены со ссылкой на Фиг. 2 и 3.
Следует отметить, что здесь, и во всем описании, указание на термин "изображения" можно понимать как указание на представление данных для изображения, например, данные изображения. Следует дополнительно отметить, что хотя не показано на Фигуре 1, система 100, когда выполнена с возможностью сохранения данных изображения в базе данных 020, может первоначально осуществить доступ к данным изображения в другом формате, например, как к одиночному файлу, в хранилище данных. Хранилище данных может быть внешним или внутренним репозиторием изображений, включающим в себя, но не ограниченным этим, систему хранения и обмена изображениями (PACS) информационной системы госпиталя (HIS). Для осуществления доступа к репозиторию изображений, система 100 может содержать интерфейс изображений (не показан на Фиг. 1), который может быть любого подходящего типа, например, сетевым интерфейсом для локальной или глобальной сети, интерфейсом хранилища для внешнего или внутреннего хранилища данных, и т.д. В частности, интерфейс изображений может быть любого типа, который соответствует доступу к репозиторию изображений. Например, если к репозиторию изображений доступ осуществляется по сети, интерфейс изображений может быть образован сетевым интерфейсом, если репозиторий изображений содержится во внешнем хранилище данных системы 100, интерфейс изображений может быть образован интерфейсом внешнего хранилища, и т.д.
В общем, система 100 по Фиг. 1 может быть как устройство, или в устройстве, такое как рабочая станция или устройство визуализации. Устройство может содержать одно или более (микро)процессоров, которые выполняют соответствующее программное обеспечение. Процессор 140 системы может быть осуществлен посредством одного или более этих (микро)процессоров. Программное обеспечение, реализующее, например, сохранение данных изображения, извлечение данных изображения и/или другую функциональность системы, может быть загружено и/или сохранено в соответствующей памяти 160 или запоминающих устройствах, например, в энергозависимой памяти, такой как RAM, или в энергонезависимой памяти, такой как Flash. В качестве альтернативы, процессор системы может быть реализован в устройстве в виде программируемой логики, например, такой как программируемая пользователем вентильная матрица (FPGA). Интерфейс базы данных и опциональный интерфейс изображений может быть реализован посредством соответствующих интерфейсов устройства. В общем, каждый блок системы может быть реализован в виде микросхемы. Следует отметить, что система может также быть реализована распределенным образом, например, задействуя разные устройства. Например, распределение системы может быть в соответствии с моделью клиент-сервер.
Фиг. 2 иллюстрирует хранилище данных изображения в базе данных на основе пары "ключ-значение" как объектов "ключ-значение", каждый из которых содержит данные ключа и соответствующие данные значения. А именно, показано множество объектов 050 "ключ-значение", каждый из которых содержит данные 030-036 ключа и ассоциированные данные 040-046 значения. Данные изображения могут храниться в этих объектах 050 "ключ-значение" как следует ниже. Продолжая с Фиг. 2, в то же время обращаясь к Фиг. 3, данные 060 изображения могут быть разбиты на блоки 080. В примере по Фиг. 3, данные изображения 060 показаны как данные двухмерного изображения, но это не является ограничением. Такое разбиение может быть в соответствии с регулярной сеткой, давая блоки, например, 8×8 или 16×16 пикселей, вокселей или других элементов изображения. Однако, блоки могут также иметь любую другую подходящую форму, лежать на нерегулярной сетке, и/или даже могут не иметь необходимости содержать смежные элементы изображения. Разбив данные 060 изображения на блоки 080, блоки 080 могут быть сгруппированы в кластеры 070, каждый из которых содержит один или более этих блоков 080. Еще один конкретный не ограничивающий пример может состоять в том, что кластер может содержать блоки 4×4 или 8×8. Каждый кластер 070 может быть затем сохранен в базе данных 020 как объект "ключ-значение", как следует ниже. Данные изображения кластера 070 могут быть сохранены как данные 041-046 значения в базе данных 020. Более того, идентификатор кластера 070 может быть вычислен на основе координаты из набора блоков 080 соответствующего кластера, при этом координата задана относительно системы координат, ассоциированной с данными 060 изображения. Более того, данные 031-036 ключа могут быть сгенерированы для данных значения, при этом данные ключа содержат по меньшей мере идентификатор кластера. Данные 031-036 ключа могут быть затем сохранены в привязке к данным 041-046 значения в базе данных.
Конкретным примером является то, что координаты верхнего левого блока в каждом кластере могут быть использованы как идентификатор кластера. В общем, такие координаты могут быть со ссылкой на сетку блоков, на сетку, ассоциированную с элементами изображения, и т.д. Система координат, ассоциированная с данными изображения, может содержать по меньшей мере одно из: одного или более пространственных осей, указывающих пространственную координату каждого блока, ось цвета, указывающую какая цветовая компонента представляет пространственные данные, содержащиеся в каждом блоке, и ось длины волны, указывающую какую длину волны, или диапазон длин волн, представляют данные изображения, содержащиеся в каждом блоке. В равной степени возможны другие различные оси системы координат.
Данные 031-036 ключа могут быть сгенерированы, в дополнение к идентификатору, чтобы дополнительно содержать сдвиги данных, которые представляют соответствующие положения каждого блока 080, или по меньшей мере поднабора, из набора блоков кластера 070 в данных 041-046 значения. Такие сдвиги данных могут быть, например, байтовыми сдвигами к положениям отдельных блоков в данных значения кластера, и могут быть кодированы в формате base64 в таблице сдвигов. При генерировании идентификатора кластера, координата может быть кодирована с использованием кривой заполнения пространства, например, с использованием функции упорядочивания по оси Z. Конкретный пример данных ключа кластера, в нижеследующем также называемого ключом кластера, может быть нижеследующее:
Cluster key [max 1024 chars]:
[UUID][delimiter][clustercoordinate][delimiter][clustertemplateID][blockoffsets]
Здесь, "UUID" может быть универсальным уникальным идентификатором (UUID) изображения. "delimiter" может быть любой подходящий разграничитель. "clustercoordinate" может быть кодированием координаты кластера с упорядочиванием по оси Z. "clustertemplateID" может опционально описывать тип кластера, который может не быть уникальным для каждого кластера, а скорее может совместно использоваться между всеми кластерами, которые имеют одинаковое значение для свойств, описанных в шаблоне. Например, обычное 2D изображение может иметь 10 шаблонов кластера, описывающих разные типы кластеров, причем каждый тип имеет разный "clustertemplateID". Примером может быть, например, цвет. Если кластеры содержат все блоки для определенной области во всех возможных цветах, например, RGB, то шаблон кластера может содержать описание цветового пространства. Дополнительным описанием может быть используемый способ сжатия данных, и глубина в битах для данных изображения в кластере, и т.д. Аналогично "clustertemplateID", каждый блок может иметь "blocktemplateID". "blockoffsets" могут быть опциональными сдвигами данных для блоков в данных значения.
Хотя не показано на Фиг. 3, данные изображения могут быть разбиты на блоки на основе разделов коэффициентов (рекурсивного) вейвлет-преобразования данных изображения. Например, каждый блок внутри кластера может представлять разную часть изображения, тогда как каждый кластер может представлять разную шкалу частот изображения. В частности, каждый кластер может содержать блоки с разными шкалами (например, пространственных частот), и каждый кластер может охватывать разные шкалы, то также разные положения на изображении. Чтобы обеспечить возможность декодирования шкал частот, в данные значения каждого кластера может быть включен избыточный блок с низкочастотным коэффициентом вейвлет-преобразования данных изображения.
В общем, перед сохранением соответствующего кластера как данных значения в базе данных, данные каждого блока кластера могут быть упорядочены с использованием функции упорядочивания в порядке значимости. Например, если данные блока представлены вейвлет-коэффициентами, вейвлет-коэффициенты могут быть упорядочены в том, что касается значимости. Поэтому низкокачественная реконструкция изображения может быть возможна посредством отбрасывания менее значимой информации. Может быть использована любая известная функция упорядочивания в порядке значимости, которая сама по себе известна из области компьютерной науки. Функция упорядочивания в порядке значимости может быть выбрана на основе типа данных блока. В общем, заголовок данных изображения может быть сохранен как данные значения в базе данных, например, как отдельный объект "ключ-значения". Хотя заголовок может опускать обыкновенную информацию индексирования для извлечения блоков из базы данных, заголовок может содержать, например, размерности сохраняемого набора данных, например, изображения, список упорядоченных по оси Z размерностей, например, который используется при кодировании с упорядочиванием по оси Z для координат кластера, список размерностей кластера, список размерностей блока и т.д., заголовок может быть кодирован как XML. Заголовок может быть сохранен системой в базе данных до сохранения кластеров в базе данных.
В общем, для осуществления доступа к базе данных и сохранения и извлечения из нее данных изображения может быть использован прикладной программный интерфейс (API). Например, если база данных предоставляется или представляется базой данных Amazon Web Services (AWS) Simple Storage Service (S3), например, "облачной базой данных", API может быть S3 API.
Фиг. 4 показывает способ 200 сохранения данных изображения в базе данных. База данных может быть такого типа, который описан со ссылкой на Фиг. 1, например, базой данных на основе пары "ключ-значение". Способ 200 может соответствовать операции системы 100 по Фиг. 1, хотя это не является ограничением, так как способ может также быть выполнен другой системой или устройством.
Способ 200 может содержать, в операции, озаглавленной "Разбиение данных изображения на блоки", разбиение 210 данных изображения на блоки. Способ 200 может дополнительно содержать, в операции, озаглавленной "Группирование блоков в кластеры", группирование 220 блоков в кластеры. Способ 200 может дополнительно содержать, в операции, озаглавленной "Сохранение каждого кластера", сохранение 230 каждого кластера в базе данных посредством, в операции, озаглавленной "Сохранение кластера как данных значения в базе данных", сохранения 240 соответствующего кластера как данных значения в базе данных, в операции, озаглавленной "Генерирование идентификатора кластера", генерирование 250 идентификатора кластера на основе координаты соответствующего кластера, при этом координата задана относительно системы координат, ассоциированной с данными изображения, в операции, озаглавленной "Генерирование данных ключа, содержащих идентификатор", генерирование 260 данных ключа для данных значения кластера, при этом данные ключа содержит по меньшей мере идентификатор кластера, и в операции, озаглавленной "Сохранение данных ключа в базе данных", сохранение 270 данных ключа в привязке к данным значения в базе данных.
Фиг. 5 показывает способ 300 извлечения данных изображения из базы данных. База данных может быть того типа, который описан со ссылкой на Фиг. 1, например, базой данных на основе пары "ключ-значение", и может содержать данные изображения, сохраненные посредством системы 100 по Фиг. 1 или способа 200 по Фиг. 4. Способ 300 может соответствовать операции системы 100 по Фиг. 1, хотя это не является ограничением, так как способ может также быть выполнен другой системой или устройством.
Способ 300 может содержать, в операции, озаглавленной "Извлечение блока(ов) кластера", извлечение 310 одного или более блоков кластера данных изображения из базы данных посредством, в операции, озаглавленной "Генерирование по меньшей мере части идентификатора кластера", генерирования 320 по меньшей мере части идентификатора кластера на основе координаты кластера в системе координат, ассоциированной с данными изображения, в операции, озаглавленной "Запрос данных ключа у базы данных", запрос 330 данных ключа у базы данных, содержащих по меньшей мере часть идентификатора, тем самым получая одни или более данных ключа, в операции, озаглавленной "Выбор данных ключа", выбор 340 данных ключа из одних или более данных ключа, и в операции, озаглавленной "Извлечение соответствующих данных значения из базы данных", извлечение 350 по меньшей мере части данных значения из базы данных, которая хранится в базе данных в привязке к данным ключа.
Каждый из способа 200 по Фиг. 4 и способа 300 по Фиг. 5 может быть реализован на компьютере как реализованный на компьютере способ, как выделенные аппаратные средства, или как их комбинация. Также как проиллюстрировано на Фиг. 6, инструкции для компьютера, например, исполняемый код, могут храниться на компьютерно-читаемом носителе 400, например, в виде последовательности 410 машиночитаемых физических отметок и/или как последовательность элементов, имеющих разные электрические, например, магнитные, или оптические свойства или значения. Исполняемый код может храниться кратковременным или некратковременным образом. Примеры компьютерно-читаемых носителей включают в себя запоминающие устройства, оптические запоминающие устройства, интегральные схемы, серверы, программное обеспечение, работающее в сети, и т.д. Фиг. 6 показывает оптический диск 400. Продолжая с Фиг. 6, компьютерно-читаемый носитель 400 может в качестве альтернативы или дополнительно содержать кратковременные или некратковременные данные 410, представляющие базу данных в конфигурации, которая описана в этом описании, при этом база данных содержит сохраненные данные ключа и сохраненные данные значения, которые описаны в этом описании.
Примеры, варианты осуществления или опциональные признаки, указаны ли как не ограничивающие или нет, не должны пониматься как ограничивающие данное изобретение, которое заявлено.
Будет понятно, что данное изобретение также применяется к компьютерным программам, в частности к компьютерным программам на или в носителе, адаптированным для осуществления данного изобретения на практике. Программа может быть в форме исходного кода, объектного кода, кода, промежуточного между исходным и объектным кодом, как например, в частично скомпилированной форме, или в любой другой форме, подходящей для использования при реализации способа согласно данному изобретению. Также будет понятно, что такая программа может иметь много разных архитектурных конструкций. Например, программный код, реализующий функциональность способа или системы согласно данному изобретению, может быть подразделен на одну или более стандартных подпрограмм. Специалистам в данной области техники будут очевидны многие разные пути распределения функциональности среди этих стандартных подпрограмм. Стандартные подпрограммы могут храниться вместе в одном исполняемом файле для образования самодостаточной программы. Такой исполняемый файл может содержать исполняемые компьютером инструкции, например, инструкции процессора и/или инструкции интерпретатора (например, инструкции Java-интерпретатора). В качестве альтернативы, одна или более или все стандартные подпрограммы могут храниться в по меньшей мере одном файле внешней библиотеки и сопрягаемой с главной программой либо статически, либо динамически, например, во время выполнения. Главная программа содержит по меньшей мере один вызов по меньшей мере одной из стандартных подпрограмм. Стандартные подпрограммы могут также содержать вызовы функций друг друга. Вариант осуществления, относящийся к компьютерному программному продукту, содержит исполняемые компьютером инструкции, соответствующие каждой стадии обработки по меньшей мере одного из способов, изложенных в настоящем документе. Эти инструкции могут подразделяться на стандартные подпрограммы и/или храниться в одном или более файлах, которые могут сопрягаться статически или динамически. Другой вариант осуществления, относящийся к компьютерному программному продукту, содержит исполняемые компьютером инструкции, соответствующие каждому средству по меньшей мере одной из систем и/или продуктов, изложенных в настоящем документе. Эти инструкции могут подразделяться на стандартные подпрограммы и/или храниться в одном или более файлах, которые могут сопрягаться статически или динамически.
Носитель компьютерной программы может быть любым объектом или устройством, способным нести программу. Например, носитель может включать в себя хранилище данных, такое как ROM, например, CD-ROM или полупроводниковую ROM, или магнитный записывающий носитель, например, жесткий диск. К тому же, носитель может быть передаваемым носителем, таким как электрический или оптический сигнал, который может быть передан по электрическому или оптическому кабелю, или посредством радио или другого средства. Когда программа реализована в таком сигнале, носитель может быть образован посредством такого кабеля или другого устройства или средства. В качестве альтернативы, носитель может быть интегральной схемой, в которую встроена программа, интегральной схемой, являющейся адаптированной для выполнения, или используемой при выполнении релевантного способа.
Следует отметить, что вышеупомянутые варианты осуществления скорее иллюстрируют, чем ограничивают данное изобретение, и что специалисты в данной области техники будут способны спроектировать много альтернативных вариантов осуществления без отступления от объема приложенной формулы изобретения. В формуле изобретения, любые ссылочные позиции, помещенные в скобках, не следует толковать в качестве ограничения формулы изобретения. Использование глагола "содержать" и его спряжения не исключают присутствия элементов или стадий, отличных от тех, которые указаны в формуле изобретения. Указание единственного числа элемента не исключает присутствия множества таких элементов. Данное изобретение может быть реализовано посредством аппаратных средств, содержащих несколько отдельных элементов, и посредством соответствующим образом запрограммированного компьютера. В пунктах формулы изобретения, относящихся к устройству, перечисляющих некоторые средства, некоторые из этих средств могут быть осуществлены одним и тем же элементом аппаратных средств. Сам факт, что некоторые меры перечислены в обоюдно разных зависимых пунктах формулы изобретения, не указывает на то, что сочетания этих мер нельзя использовать с пользой.