СПОСОБЫ И УСТРОЙСТВО ДЛЯ ЭФФЕКТИВНОГО РАСПРОСТРАНЕНИЯ ДАННЫХ ИЗОБРАЖЕНИЯ
METHODS AND APPARATUS FOR EFFICIENT DISTRIBUTION OF IMAGE DATA

Настоящее изобретение относится к области переноса изображений по сети, и, в частности, к способам эффективного переноса данных источника, таких как медицинские изображения, между сервером и клиентом.
Все более общим становится для изображений хранение, распространение и просмотр в цифровой форме с помощью компьютерных технологий. В медицинской области широко распространены Системы Архивации и Передачи Изображений (Picture Archival and Communication Systems, PACS). В типичном приложении PACS данные изображения, полученные с оборудования создания изображений, как например, сканеры CT (компьютерной томографии) или сканеры MRI (магнитно-резонансное изображение), хранятся в форме компьютерных файлов данных. Размер файла данных для изображения меняется в зависимости от размера и разрешения изображения. Например, типичный файл рентгеновского изображения грудной клетки диагностического качества составляет порядка 10 мегабайт (MB). Файлы данных изображений обычно форматируют в «стандартном» или широко принимаемом формате. В медицинской области один широко используемый формат изображения известен как DICOM. Файлы данных изображений в формате DICOM распространяются по компьютерным сетям на специализированные станции просмотра, способные конвертировать данные изображения в изображения с высоким разрешением на дисплее.
В медицинских приложениях создания изображений изображения должны быть отображены с высоким разрешением, так чтобы подробности изображения, имеющие потенциальное диагностическое значение, были видны. Также, в медицинских приложениях создания изображений желательным является одновременный просмотр нескольких изображений, захватываемых с течением времени, для того, чтобы обеспечить возможность обнаружения изменений, которые возникают за период времени. Необходимость высокого разрешения и нескольких видов превращается в необходимость высокой пропускной способности сети, большой емкости хранения и значительной мощности обработки на станциях просмотра. Традиционные кодированные цифровым способом медицинские изображения, используемые в медицинских приложениях, обычно требуют мощных и дорогих компьютерных систем для архивации, распространения, управления и отображения медицинских изображений. Следовательно, многие современные системы создания изображений очень дороги.
Доктором Paul Chang, M.D., и Carlos Bentancourt в университете Питтсбурга был разработан способ эффективного распространения больших изображений по сети, таких как медицинские изображения. Этот способ функционирует в клиент-серверной среде для доставки данных изображений от сервера к клиенту по мере того, как данные изображений требуются клиенту (т.е. механизм доставки данных точно в срок). Для реализации этого механизма доставки данных точно в срок, синтаксис динамического переноса генерирует гибкое иерархическое представление изображения для хранения на сервере. Иерархическое представление состоит из коэффициентов, производимых вейвлет-преобразованием, которые могут быть использованы сервером для получения данных изображения из конкретной области изображения. Коэффициенты преобразования сохраняют данные, соответствующие конкретной области изображения. Для просмотра части изображения на клиенте клиент создает запросы серверу на данные преобразования, которые включают в себя координаты коэффициентов для идентификации коэффициентов в иерархическом представлении. Сервер предоставляет запрошенные данные преобразования клиенту. Затем клиент реконструирует часть изображения по комбинации данных, которые уже кэшированы локально, при необходимости, и предоставленных данных преобразования. Полное описание синтаксиса динамического переноса содержится в Патенте США № 6711297, озаглавленном «Methods and Apparatus for Dynamic Transfer of Image Data» авторы Paul Joseph Chang и Carlos Bentancourt, выданном 23 марта 2004, который явным образом включен в данный документ посредством ссылки.
В одном варианте осуществления системы патента США № 6711297, описанного выше, вейвлет-преобразование использует ядра с фиксированной запятой с результирующими целочисленными коэффициентами для того, чтобы достигнуть представления данных без потерь. Однако, это ограничение на сжатие без потерь в общем случае исключает степени сжатия большие чем 2-3 к 1 для данных изображения. В некоторых случаях возможность получать большие степени сжатия не является необходимой, если приложение имеет надлежащую пропускную способность. Однако, в других приложения, таких как приложения телерадиологии, желательно достигать степеней сжатия, превосходящих степени, генерируемые чистым сжатием без потерь. Другим классом приложений, где эта возможность полезна, являются те, в которых наборы данных настолько велики, что перенос всего набора данных без потерь становится непрактичным (такие как очень большие наборы данных CT - с тысячами изображений). Желательно увеличить степени сжатия для участков с ограниченной пропускной способностью, в то же время сохраняя возможность восстановления первоначальных данных без потерь.
Настоящее изобретение раскрывает систему, которая эффективно переносит данные источника от сервера по меньшей мере одному клиенту.
В одном примерном варианте осуществления данные источника подвергают разуплотняют (выполняют декомпозицию) в иерархическое представление, состоящее из коэффициентов. Коэффициенты квантуют и сжимают, чтобы сформировать сжатое иерархическое представление, состоящее из сжатых коэффициентов. Сжатое иерархическое представление может быть использовано для восстановления версии «без визуальных потерь» данных источника для отображения на клиенте.
Для того, чтобы восстановить версию «без визуальных потерь» данных источника на клиенте, клиент запрашивает сжатые коэффициенты с сервера, который имеет доступ к сжатому иерархическому представлению. В ответ на запрос клиента сервер переносит сжатые коэффициенты, заданные в запросе. Клиент разупаковывает (выполняет декомпрессию) сжатые коэффициенты и выполняет обратное вейвлет-преобразование для генерации версии без потерь данных источника.
Версия абсолютно точного или совершенно без потерь данных источника может быть реконструирована из версии без визуальных потерь данных источника, совмещенной с остаточными данными. Обратное вейвлет-преобразование выполняется над сжатыми коэффициентами для генерации обратных данных без визуальных потерь, а остаточные данные генерируются из разности между обратными данными без визуальных потерь и первоначальными данными источника. Сгенерированные остаточные данные хранят в разбитом на части и сжатом формате, дополняя иерархическое преставление без визуальных потерь.
Для генерации абсолютно точного или совершенно без потерь изображения клиент запрашивает с сервера остаточные данные, которые соответствуют части без визуальных потерь. Сервер имеет доступ к сгенерированным остаточным данным. Сервер передает остаточные данные клиенту, а клиент использует принятые остаточные данные для обновления версии без визуальных потерь данных источника до абсолютно точной версии или версии совершенно без потерь данных источника.
Сжатое иерархическое представление и остаточные данные необязательно организованы в разделы. В этом варианте, запросы клиента и ответы сервера соответствуют разделам, которые организуют сжатые иерархическое представление и остаточные данные.
Фиг.1A является блок-схемой, иллюстрирующей один вариант осуществления обработки данных источника.
Фиг.1B является схемой клиент-серверной архитектуры для обработки данных источника.
Фиг.2A иллюстрирует один вариант осуществления генерации сжатых иерархических представлений данных.
Фиг.2B иллюстрирует один вариант осуществления генерации остаточных данных пикселей.
Фиг.3A иллюстрирует пример иерархической структуры данных.
Фиг.3B иллюстрирует разуплотнения третьего и четвертого уровней для изображения источника с Фиг.3А размером 4К×4К.
Фиг.4 иллюстрирует организацию уровня иерархической структуры данных коэффициентов в разделах.
Фиг.5 иллюстрирует один вариант осуществления файла данных источника.
Фиг.6A иллюстрирует сжатое иерархическое представление и остаточные данные, хранимые на жестком диске сервера.
Фиг.6B является блок-схемой, иллюстрирующей один вариант осуществления реализации способов сжатия в клиент-серверной среде.
Фиг.7 является блок-схемой последовательности операций, иллюстрирующей один вариант осуществления для обработки запросов клиента на разделы сжатых коэффициентов.
Фиг.8 является блок-схемой последовательности операций, иллюстрирующей один вариант осуществления для обработки запросов клиента на остаточные данные.
Фиг.9 является блок-схемой, иллюстрирующей один вариант осуществления реконструкции изображения на клиенте.
Как более подробно описано ниже в отношении по меньшей мере одного примерного варианта осуществления, способ сжатия «без визуальных потерь» используется для доставки данных в приложения с ограниченной пропускной способностью. В общем случае термин «без визуальных потерь» относится к изображению, которое подверглось способу сжатия с потерями, но потеря информации изображения не воспринимается человеческим глазом, либо потеря кажется просматривающему приемлемой. Как описано полностью ниже, изображения высокого качества без визуальных потерь генерируются для распространения по сетям с ограниченной пропускной способностью. Остаточные данные генерируются так, чтобы изображения совершенно без потерь (например, первоначальные данные без потерь) могли быть реконструированы из изображений без визуальных потерь на клиенте (например, диагностической станции).
Способы сжатия настоящего раскрытия имеют применение в создании изображений, включая медицинские приложения создания изображений (например, маммограммы, рентгеновские, MRI, CATSCAN и т.п.).
Фиг.1A является блок-схемой, иллюстрирующей обзор одного примерного способа осуществления обработки данных 110 источника. Данные 110 источника являются, например, одним или более изображениями, или более конкретно, одним или более медицинскими изображениями, полученными способом воздействия, таким как рентген, CT или MR, либо из архива медицинских изображений. Данные 110 источника обрабатываются для хранения на сервере 100 и распространения по сети 180 для отображения на клиентских компьютерах (150, 160 и 170). Клиент-серверная архитектура изображена более подробно на Фиг.1B. Сервер 100 и клиентские компьютеры 150-170 осуществляют связь друг с другом через сетевые интерфейсы или другие средства связи для осуществления связи по сети в клиент-серверной архитектуре.
На Фиг.1A, данные 110 источника сначала вводятся в блок обработки 120 данных источника. Блок обработки 120 данных источника осуществляется либо непосредственно на сервере 100, либо на каком-либо другом компьютере (не показан), который доступен или осуществляет связь с сервером 100. Блок обработки 120 данных источника содержит программное обеспечение (например, компьютерно-исполняемые инструкции) или аппаратное обеспечение такое, как выделенный процессор с процессорно-исполняемыми инструкциями, или их комбинацию для выполнения функций, описанных здесь. Например, блок обработки 120 данных источника содержит программное обеспечение или аппаратное обеспечение с исполняемыми инструкциями, или их комбинацию для генерации сжатого иерархического представления 240 данных, как описано более полно ниже совместно с обсуждением Фиг.2A. Сжатое иерархическое представление 240 данных либо генерируется непосредственно на сервере 100, либо на каком-либо другом компьютере (не показан), который доступен или осуществляет связь с сервером 100, либо иным способом способном осуществлять совместное использование сжатого иерархического представления 240 данных с сервером 100.
Обработка 120 данных источника для генерации сжатого иерархического представления данных включает в себя первый этап «обработки разуплотнения». В общем случае «обработка разуплотнения» относится к использованию «преобразования» для генерации иерархического представления, включая коэффициенты. Коэффициенты, которые генерируются из обработки разуплотнения, описанной выше, являются обратимыми в первоначальные данные 110 источника. Коэффициенты преобразования сохраняют данные, соответствующие конкретной области изображения. Эти коэффициенты преобразования вместе с координатами коэффициентов, которые идентифицируют коэффициенты в иерархическом представлении, здесь и далее будут называться вместе «данные преобразования». Каждый уровень сгенерированного иерархического представления 220 данных является достаточным для реконструкции данных источника с данным разрешением. Одним конкретным примером обработки разуплотнения является обработка 210 вейвлет-преобразования, которая более подробно описана ниже совместно с Фиг.2A.
Подходящее аппаратное обеспечение и программное обеспечение для обработки разуплотнения описаны более полно в Патенте США № 6711297, который включен в данный документ посредством ссылки. Подобное аппаратное обеспечение и программное обеспечение далее будут называться вместе как средство обработки разуплотнения.
Блок обработки 120 данных источника для генерации сжатого иерархического представления данных содержит программное или аппаратное обеспечение с исполняемыми инструкциями, или их комбинацию для разбиения на разделы иерархического представления данных и квантования и сжатия коэффициентов иерархического представления, как описано более подробно ниже совместно с Фиг.2A. Блок обработки 120 данных источника дополнительно содержит программное или аппаратное обеспечение с исполняемыми инструкциями, или их комбинацию для генерации остаточных данных 280 так, чтобы позволить клиенту реконструировать изображения совершенно без потерь из изображений без визуальных потерь. Подобное программное обеспечение и аппаратное обеспечение далее будут называться вместе как «средство генерации остаточных данных». Генерация остаточных данных 280 описана более подробно ниже совместно с Фиг.2B.
Как далее изображено на Фиг.1A, сжатое иерархическое представление(я) 240 данных и остаточные данные источника 280 хранятся файле(ах) 400 остаточных данных источника и данных коэффициентов, который генерируется средством генерации файлов таким, как подходящее программное обеспечение, либо непосредственно на сервере 100, либо на другом компьютере. При генерации на другом компьютере, сервер 100 имеет доступ к файлу(ам) 400 остаточных данных источника и данных коэффициентов, либо файл(ы) 400 остаточных данных источника и данных коэффициентов могут иным способом быть предоставлены и/или сохранены на сервере 100. Для медицинских приложений создания изображений файл(ы) 400 остаточных данных источника и данных коэффициентов является файлом медицинских изображений.
Как более подробно изображено на Фиг.5, файл(ы) 400 остаточных данных источника и данных коэффициентов включает(ют) в себя сжатое иерархическое представление(я) данных (т.е. сжатые физические коэффициенты), организованное в разделы, и информацию для идентификации местоположения уровней иерархического преобразования в иерархическом представлении(ях) данных, как и информацию для идентификации местоположения сжатых физических коэффициентов отдельных разделов в уровнях иерархического преобразования. Файл(ы) 400 остаточных данных источника и данных коэффициентов содержит(ат) данные пикселей (т.е. остаточные данные источника) для улучшения версии без визуальных потерь данных 110 источника (сгенерированной из сжатых физических коэффициентов) до версии без потерь данных 110 источника, как будет объяснено более подробно ниже. Как более подробно изображено на Фиг.5, файл(ы) 400 остаточных данных источника и данных коэффициентов хранит(ят) информацию для идентификации местоположения остаточных данных, соответствующего уровню 0 данных коэффициентов, и информацию для идентификации местоположения остаточных данных отельных разделов в пределах уровня 0.
Фиг.2A более подробно иллюстрирует, как сжатое иерархическое представление(я) 240 данных генерируется в качестве части обработки 120 данных источника. Данные источника 110 сначала обрабатываются в блоке обработки 210 вейвлет-преобразования для генерации иерархического представления 220 данных. Обработка 210 вейвлет-преобразования является формой обработки разуплотнения. Более конкретно, обработка 210 вейвлет-преобразования является формой разуплотнения по поддиапазонам, которая состоит в отделении «высокочастотной» информации от «низкочастотной» информации. При разуплотнении по поддиапазонам используется фильтр с конечной импульсной характеристикой (FIR). Один и тот же, либо разные, фильтр FIR могут быть использованы на каждом этапе процесса разуплотнения, приводя к иерархической структуре, проиллюстрированной на Фиг.3A и 3B. Одним примерным семейством фильтров FIR для использования являются вейвлет-фильтры. Одним предпочтительным вейвлет-фильтром для использования является вейвлет-ядро, 5,7 биортогональное с плавающей точкой (Daubechies), заданное и используемое в стандарте JPEG 2000. При использовании такой вейвлет-системы и фильтра, или подобных системы и фильтра, преобразование называют «вейвлет-преобразованием».
В настоящем варианте осуществления используется вейвлет-преобразование предпочтительно с ядрами с плавающей запятой для генерации иерархического представления 220 данных, состоящего из коэффициентов с плавающей запятой. Иерархическое представление 220 данных может быть использовано на сервере 100 для получения данных изображения из конкретной области изображения. Вейвлет-преобразование с ядрами с плавающей запятой производит данные изображения низкого разрешения более высокого качества, чем преобразование с ядрами с фиксированной запятой (для заданной длины фильтра). Также, вейвлет-преобразование с ядрами с плавающей запятой используется для улучшенных соотношений сигнал-шум в приложениях сжатия. Таким образом, вейвлет-преобразование с ядрами с плавающей запятой обеспечивает возможность сжатия без потерь с высоким отношением сигнал-шум, но на уровне, который визуально без потерь. Такой подход позволяет достигать степеней сжатия между 3 и 20 к 1, и, следовательно, является подходящим дл общего распространения изображений. Значимость преимуществ вейвлет-преобразования с ядрами с плавающей запятой приложениям сжатия будет более понятна из дальнейшего обсуждения последующего квантования и обработки 230 сжатия.
Вейвлет-преобразование относящееся к функции разуплотнения может быть в общем случае определено как:
I=C,
где:  задает функцию преобразования для преобразования, которое использует ядра с плавающей точкой, I представляет данные источника (например, изображение), а C представляет преобразованные данные (например, преобразованное изображение).
Использование вейвлет-преобразования для генерации иерархического представления данных обеспечивает масштабируемое решение для переноса различных частей большого файла данных. При разуплотнении данных источника в иерархическое представление данных, суб-изображения и изображения с суб-разрешением, в глубине детализации разделов коэффициентов, могут быть извлечены непосредственно с диска сервера. Сервер изображений затем передает только физические коэффициенты, требуемые для реконструкции точного размера желаемого изображения для отображения на клиенте. Соответственно, в иерархическом представлении данных неявно присутствует формат с несколькими разрешениями.
Функция вейвлет-преобразование генерирует математически независимую информацию среди уровней иерархического представления. Соответственно, в иерархическом представлении данных не присутствует избыточной информации. Таким образом, иерархическое представление данных является не просто несколькими репликациями данных источника с разными разрешениями, но оно также содержит уникальные данные на разных уровнях иерархического представления. Математически независимый характер вейвлет-преобразования позволяет минимизировать количество данных, переносимых по сети, посредством необходимости переноса только «дополнительных данных», еще не перенесенных на компьютер с сервера и необходимых для конструирования данного изображения. Вейвлет-преобразование является преобразованием без потерь в смысле того, что никакие данные из первоначальных данных источника не теряются в разуплотнения в иерархическое представление данных.
В других вариантах осуществления вейвлет-преобразование может быть использовано для генерации мультиспектральных (например, цветных) данных преобразования. В общем случае мультиспектральные данные преобразования объединяют несколько компонентов изображения источника в вектор для данных преобразования. Также, мультиспектральные данные преобразования могут содержать любой тип атрибутов для присоединения к данным источника.
«Вейвлет-преобразование» было описано здесь лишь как пример с целью обеспечения полного и подробного описания по меньшей мере одного конкретного варианта осуществления. Обработка разуплотнения никоим образом не ограничивается обработкой вейвлет-преобразования и связанными вейвлет-фильтрами и способами. Могут быть использованы другие способы обработки разуплотнения, которые будут очевидны и известны специалистам в области техники, или которые в присущей манере попадают в объем и сущность настоящего раскрытия.
В общем случае для генерации иерархического представления 220 данных вейвлет-преобразование применяется к колонкам данных 110 источника, а затем это вейвлет-преобразование применяется к строкам данных 110 источника (либо наоборот). Выбор вейвлет-преобразования для обработки 210 вейвлет-преобразования зависит от конкретных характеристик желаемой иерархической структуры данных. Каждый уровень иерархической структуры данных генерируется путем возвращения к низким частотам, «нижний низкий», предыдущего верхнего уровня. Эта рекурсия продолжается до тех пор, пока не будет достигнут предопределенный размер. Например, в одном варианте осуществления, самый нижний уровень в иерархической структуре данных для данных источника состоит из низкочастотного компонента размером примерно 128×128. Однако, любая глубина детализации разрешения может быть сгенерирована для использования в иерархической структуре данных без отклонения от объема или сущности изобретения. Также, в процессе рекурсии может быть использован любой квадрант при любом желаемом преобразовании.
Фиг.3A иллюстрирует пример иерархического представления 220 данных Фиг.2A. Для этого примера изображение источника содержит изображение размера 4К×4К. Блок обработки 120 данных источника генерирует, на первой итерации, структуру Малла (Mallat) (разделяемое преобразование) первого уровня. В частности, как показано на Фиг.3A, генерируется низкочастотный компонент, «нижний низкий», который состоит из суб-изображения размером 2К×2К. Высокочастотные компоненты, состоящие из «нижний высокий», «верхний высокий» и «верхний низкий», содержат координаты физических коэффициентов (например, верхней правой координатой прямоугольника, который составляет компонент «нижний высокий» является (4К, 0)).
Фиг.3A также иллюстрирует второй уровень разуплотнения изображения. Вторая итерация обработки 120 данных источника работает с низкочастотным (т.е. «нижним низким») компонентом данных первого уровня. Для второго уровня низкочастотный компонент, «нижний низкий», состоит из суб-изображения размером 1К×1К, как показано на Фиг.3A. Фиг.3B иллюстрирует разуплотнения третьего уровня и четвертого уровня изображения источника размером 4К×4К с Фиг.3A. Для генерации разуплотнения третьего уровня, обработка 120 данных источника работает с компонентом «нижний низкий» второго уровня (т.е. с изображением размером 1К×1К). Для преобразования третьего уровня низкочастотным компонентом, «нижним низким», является суб-изображение размером 512×512, как показано на Фиг.3A. Фиг.3B также иллюстрирует четвертый уровень разуплотнения для изображения источника размером 4К×4К. Для преобразования четвертого уровня низкочастотный компонент содержит суб-изображение размером 256×256 пикселей.
Возвращаясь обратно к Фиг.2A, после того, как данные источника подверглись разуплотнению в иерархическое представление(я) 220 данных, данные преобразования разделяются на разделы обработки 222 для генерации блоков данных преобразования, или разделенных данных преобразования. Разделение данных преобразования описано в Патенте США № 6925208, который включен в данный документ посредством ссылки. В настоящем варианте осуществления каждый уровень иерархического представления данных, выше уровня «n», организуется в разделы коэффициентов или блоки 64×64, что описано более полно ниже совместно с обсуждением Фиг.4. Однако, могут быть использованы другие альтернативные схемы разделения данных преобразования, которые будут очевидны специалисту в области техники, или которые в присущей манере попадают в объем и сущность настоящего раскрытия.
Разделенные данные преобразования квантуются и сжимаются в обработке 230 квантования и сжатия (Фиг.2A) посредством подходящего средства квантования и сжатия, например, в форме программного обеспечения, для генерации сжатых иерархических представлений 240 данных (Фиг.2A). В одном варианте осуществления для сжатия данных преобразования коэффициенты для блока квантуются с помощью значения с плавающей запятой. Результат округляется в сторону нуля и сохраняется как целое число. Блок коэффициентов квантуется с помощью шагов квантования, Qi, например. В настоящем варианте осуществления используется один шаг квантования на блок коэффициентов, но может быть использовано любое количество шагов квантования. В общем случае эта операция может быть выражена как:
где R представляет блок коэффициентов в данных преобразования, а  представляет квантуемую функцию. Для этого выражения, если используется округление в сторону нуля, функция квантования может быть описана следующим образом:
Если (R>0), тогда
иначе, (т.е., если R<0),
где Q является значением с плавающей запятой и результат соответственно округляется (т.е. в сторону нуля или в сторону от нуля) так, чтобы  являлось кратным шагу квантования, Q.
Коэффициенты могут быть квантованы согласно соответствующему уровню разуплотнения. Так, для этого варианта осуществления, используется один шаг квантования для каждого уровня, но можно использовать любое количество шагов квантования. Для этого варианта осуществления величины квантования могут быть квантованы следующим образом:
где L и Level представляют уровень разуплотнения для примера уровня N, а Q1, Q2, Q3 и QN представляют шаги квантования для соответствующих уровней. Хотя выражение выше представляет квантование на основании уровней разуплотнения, любая комбинация различных значений квантования может быть использована для квантования набора коэффициентов без отклонения от сущности и объема изобретения.
Также, в дополнительном сценарии, где коэффициенты квантуются на основании уровня разуплотнения, высокочастотные коэффициенты могут быть объединены в блок квантованных коэффициентов следующим образом:
Соответственно, для этого примера, высокоэнергетические компоненты для каждого блока коэффициентов преобразования квантуются для обработки сжатия. Хотя пример выше квантует компоненты преобразования, любой блок данных преобразования может быть квантован для дальнейшего сжатия.
Блок квантованных коэффициентов, , сжимается для генерации блока коэффициентов передачи согласно выражению:
где  задает выражение сжатия, а  задает блок сжатых коэффициентов для передачи. В общем случае, функция сжатия  содержит кодер без потерь. Любое правило кодирования может быть использовано для функции сжатия  без отклонения от сущности и объема изобретения. Например, функция сжатия  может быть реализована с помощью функции кодирования Райса или функции кодирования Хаффмана, с или без кодирования длины серий, арифметического кодирования и т.п. В качестве одного примера, нижний низкий («LL») компонент уровня кодируется с использованием кодера Райса, а квантованные данные (которые обычно содержат серии нулей) кодируются с использованием арифметического кодера.
Как более полно описано ниже, блок сжатых коэффициентов  передается клиенту. На клиенте выполняются функции обратного квантования и декодирования. Эта операция может быть выражена как:
Обратное преобразование  выполняется над коэффициентами R (и над любыми дополнительно требуемыми данными, уже находящимися на клиенте) для генерации первоначальных данных.
Фиг.2B иллюстрирует обработку 120 данных источника для генерации остаточных данных 280 пикселей. Сжатое иерархическое представление 280 данных, сгенерированное согласно блок-схеме с Фиг.2A, обрабатывается обработкой 246 обратного вейвлет-преобразования. В общем случае обработка 246 обратного вейвлет-преобразования выполняет вейвлет-преобразование, обратное к вейвлет-преобразованию, выполненному обработкой 210 (Фиг.2A). Выходом обработки 246 обратного вейвлет-преобразования являются обращенные данные 254 пикселей без визуальных потерь. Для генерации остаточных данных пикселей, обращенные данные 254 пикселей без визуальных потерь вычитаются из первоначальных данных 110 источника в блоке 262 вычитания для генерации остаточных данных 280 пикселей.
В настоящем варианте осуществления данные коэффициентов и остаточные данные организуются в разделы. Фиг.4 иллюстрирует организацию уровня иерархического представления данных коэффициентов в разделах. Для этого примера, коэффициенты организованы в разделы коэффициентов размером 64×64. Каждый уровень иерархического представления данных выше уровня «n» организуется в разделы (например, уровни 0, 1, 2 и 3 для примера, показанного на Фиг.3A и 3B). Для этого примера, коэффициенты в высокочастотных компонентах уровня 4 (например, нижний-высокий (LH), верхний-низкий (HL), и верхний-высокий (HH)) каждый разделяются на 16 разделов (т.е. 256×256 коэффициентов на компонент). Хотя пример с Фиг.4 изображен как разделение коэффициентов на блоки коэффициентов размером 64×64, любой размер раздела может быть использован без отклонения от сущности или объема изобретения. В альтернативных вариантах осуществления разные уровни могут использовать разделы разного размера. Например, остаточные разделы на уровне 0 могут являться удвоенными в размерности по столбцам и строкам, по сравнению с разделами коэффициентов уровня 1.
Как изображено на Фиг.4 каждый раздел идентифицируется однозначно. Группа разделов для компонента LH, обозначенного позицией 200 на Фиг.4, идентифицирована как разделы -. Подобным образом, группа разделов для компонента 212 HH идентифицирована как разделы -, а группа разделов для компонента 222 HL идентифицирована как разделы -. Блоки коэффициентов организуются в формате файла, как изображено в блоках 232 и 242 с Фиг.4. Для этого примера формат файла организует сжатые данные коэффициентов путем группирования соответствующих разделов и сопутствующих сжатых данных коэффициентов из компонентов LH, HH и HL. Так, для этого примера, для того, чтобы хранить этот уровень сжатых данных коэффициентов, за разделом  из компонента LH следует раздел  из компонента HH, и далее раздел  из компонента HL. Подобным образом, за разделом  из компонента LH следует раздел  из компонента HH, и далее раздел  из компонента HL.
Фиг.5 иллюстрирует файл 400 остаточных данных источника и данных коэффициентов согласно настоящему варианту осуществления. Файл 400 данных источника включает в себя заголовок 410 файла. Заголовок 410 файла включает в себя общую информацию о файле 400 данных источника, как и указатели местоположений, которые идентифицируют данные для уровней в файле 400 данных источника. Для этого варианта осуществления заголовок 410 файла устанавливает: порядок байтов, версию, формат изображения, сжатые разделы/остаточные данные, количество строк, столбцов и уровней для соответствующих данных источника, местоположение смещений уровней, контрольную сумму коэффициентов и контрольную сумму заголовка. Формат изображения может содержать любое количество подходящих форматов для хранения изображений. Например, формат изображения может включать в себя: монохромное представление, представление яркости/цветности, как и различные типы схем кодирования (например, RLE, JPEG, и т.п.).
Как изображено на Фиг.5, заголовок 410 файла включает в себя адреса для идентификации местоположений в файле каждого отдельного уровня. Для этого примера, level 0[addr] указывает на местоположение (смещение) в файле 400 данных источника начала данных, относящихся к уровню 0 (данные уровня 0 содержат разделы остаточных данных), level 1[addr] указывает на начальное местоположение в файле 400 данных источника данных уровня 1 (данные уровня 1 содержат разделы коэффициентов и соответствуют блокам 232 коэффициентов с Фиг.4 для данного уровня преобразования) и т.д. Как изображено на Фиг.5, данные уровня 0 содержат количество остаточных разделов, содержащихся на уровне 0, и смещение каждого отдельного остаточного раздела. Смещения разделов идентифицируют начальный адрес остаточных данных в этом разделе. Например, partition0[offset] указывает на остаточные данные Раздела 0 (т.е. остаточные данные в разделе 0 уровня 0). Для этого варианта осуществления данные для уровней выше, чем 0 (т.е. уровень 1-n) включают в себя, в дополнение к данным коэффициентов, количество разделов, содержащихся в соответствующем уровне и смещения каждого отдельного раздела. Смещения разделов идентифицируют начальный адрес коэффициентов в этом разделе. Например, partition0[offset] на уровне 2 указывает на данные коэффициентов Раздела 0 (т.е. коэффициенты раздела 0 уровня 2). Соответственно, файл 400 данных источника обеспечивает местоположения каждого раздела путем идентификации уровня и смещения раздела в пределах уровня для данных коэффициентов (уровни 1-n) или остаточных данных (уровень 0). Как изображено на Фиг.5 данные коэффициентов уровня «n» не разбиты на разделы, хотя причины, по которой его не стоит разбивать на разделы, не существует. Файл 400 данных источника позволяет серверу непосредственно отображать файл 400 данных источника в память.
Фиг.6B является блок-схемой, иллюстрирующей один вариант осуществления реализации способов сжатия в клиент-серверной среде. Сервер 100 соединен посредством сети с одним или более клиентов (например, клиенты 150 и 160). Данные источника подвергаются разуплотнению либо на сервере 100, либо на другом компьютере (не показан) в иерархическое представление(я) данных, содержащее «n» уровней. Иерархическое представление(я) данных квантуется и сжимается либо на сервере 100, либо на другом компьютере. В обоих случаях сжатое иерархическое представление(я) данных доступно серверу 100. Как изображено на Фиг.6A, каждый уровень сжатых коэффициентов организуется в разделы (например, уровень 1 имеет «X» разделов, уровень 2 имеет «Y» разделов, уровень 3 имеет «Z» разделов, уровень 4 имеет «AA» разделов и уровень 5 имеет «BB» разделов). Остаточные данные уровня 0 также сохраняются. Сжатые коэффициенты и остаточные данные сохраняются на постоянном носителе постоянного хранения, таком как один или более накопителей на жестких дисках на сервере 100.
Во время настройки протокола связи между сервером и клиентом, клиент может задать одни или более данные источника или изображения (т.е. сжатые коэффициенты) для последующего запроса клиента - процесса переноса сервера. В одном варианте осуществления сервер-клиент реализует службы связи «событие», предлагаемые Общей Архитектурой Брокера Объектных Запросов (CORBA). Однако, любой сетевой протокол может быть использован для реализации клиент-серверной связи по сети без отклонения от сущности или объема изобретения.
Как изображено на Фиг.6B, данные переносятся от сервера 100 на клиент после инициации запросов клиента. В частности, клиент генерирует запрос, который идентифицирует один или более разделов сжатых коэффициентов данных источника (например, изображения источника). Для этого примера клиент 150 генерирует запросы разделов сжатых коэффициентов, соответствующих желаемой части данных 110 источника. Клиент генерирует запрос, который задает разделы координат коэффициентов, достаточных для реконструкции, на клиенте, желаемой части данных 110 источника. Запросы клиентом коэффициентов включают в себя идентификатор (ID) изображения и обозначение запрашиваемых разделов сжатых коэффициентов. ID изображения идентифицирует изображение, которое запрашивается. Обозначение запрашиваемых разделов идентифицирует один или более уровней иерархического представления данных в файле 400 данных источника, как и один или более соответствующих запрашиваемых разделов в уровнях.
В ответ на запрос сервер 100 извлекает разделы сжатых коэффициентов из файла 400 данных источника, идентифицированных в запросе, и переносит сжатые разделы коэффициентов клиенту 150. После этого, клиент 150 может реконструировать версию без визуальных потерь части изображения с использованием сжатых разделов коэффициентов. Реконструкция достигается с помощью программного обеспечения (например, компьютерно-исполняемых инструкций), аппаратного обеспечения, такого как выделенный процессор с исполняемыми процессором инструкциями, или их комбинацией, работающем на клиенте 150 для выполнения функций, описанных здесь. Подобное программное обеспечение и аппаратное обеспечение здесь вместе называются как средство реконструкции изображения без визуальных потерь.
Если клиент желает, чтобы версия абсолютно точной или совершенно без потерь части изображения источника хранилась в клиенте, и клиент имеет данные коэффициентов уровня 1, клиент генерирует запрос разделов остаточных данных для этой части изображения, включая идентификатор изображения и координаты пикселей. Клиент 160 генерирует запрос остаточных данных коэффициентов уровня 0. Сервер 100 в ответ на запрос извлекает разделы остаточных данных пикселей уровня 0 и переносит остаточные данные клиенту 160. В свою очередь, клиент 160 реконструирует часть изображения, с абсолютной точностью (версия совершенно без потерь части изображения) с использованием ранее сгенерированных данных пикселей и остаточных данных пикселей. Реконструкция достигается с помощью программного обеспечения (например, компьютерно-исполняемых инструкций), аппаратного обеспечения, такого как выделенный процессор с исполняемыми процессором инструкциями, или их комбинацией, работающем на клиенте 160 для выполнения функций, описанных здесь. Подобное программное обеспечение и аппаратное обеспечение здесь вместе называются как средство реконструкции изображения совершенно без потерь.
Фиг.7 является блок-схемой последовательности операций, иллюстрирующей способ обработки запросов клиентом разделов сжатых коэффициентов. Работающее на клиентском компьютере клиентское приложение требует отображения данных источника, таких как изображения. Процесс инициируется, когда клиентское приложение генерирует координаты пикселей с желаемым разрешением для изображения (500, Фиг.7). Клиент вычисляет разделы сжатых коэффициентов, необходимые для генерации части изображения, заданной координатами пикселя, с желаемым разрешением (520, Фиг.7). Если коэффициенты не кэшированы на клиенте, то клиент формулирует запрос требуемого раздела(ов) сжатых коэффициентов (530 и 540, Фиг.7). Запрос передается серверу. Сервер извлекает раздел(ы) сжатых коэффициентов из файла 400 данных источника, соответствующих желаемой части файла изображения, и разделы сжатых коэффициентов переносятся клиенту (550, Фиг.7). Затем клиент распаковывает сжатые коэффициенты (555, Фиг.7). Если коэффициенты кэшированы на клиенте (530, Фиг.7) или клиент распаковал сжатые коэффициенты, то клиент реконструирует изображение из раздела(ов) коэффициентов (560, Фиг.7). Реконструированное изображение отображается на клиенте в ответ на запрос пользователя (570, Фиг.7).
Фиг.8 является блок-схемой последовательности операций, иллюстрирующей способ обработки запросов клиентом остаточных данных. Для этого варианта осуществления клиент хранит данные изображения, сгенерированные из сжатых коэффициентов, и/или хранит сжатые коэффициенты для по меньшей мере части изображения источника. Клиентское приложение принимает запрос представления с разрешением совершенно без потерь (800, Фиг.8). Клиент вычисляет требуемые разделы уровня 1 сжатых коэффициентов и остаточные данные уровня 0 из координат пикселей изображения источника (810, Фиг.8). Как обсуждалось выше, клиент устанавливает дополнительные пиксели для обработки краевых эффектов. В ответ на запрос сервер извлекает раздел(ы) уровня 1 сжатых коэффициентов и раздел(ы) уровня 0 остаточных данных пикселей, и переносит сжатые коэффициенты и остаточные данные пикселей клиенту (850, Фиг.8). С использованием сжатых коэффициентов и остаточных данных клиент реконструирует абсолютно точное изображение (т.е. изображение совершенно без потерь) с помощью ранее сгенерированных данных пикселей и остаточных данных пикселей (860, Фиг.8). Затем клиент отображает изображение совершенно без потерь (870, Фиг.8).
Фиг.9 является блок-схемой, иллюстрирующей способ реконструкции изображения совершенно без потерь из изображения без визуальных потерь на клиенте. Клиент принимает сжатые коэффициенты в механизме 910 распаковки. Механизм 910 распаковки генерирует коэффициенты из сжатых коэффициентов. Блок обработки 920 обратного преобразования выполняет обратное преобразование для генерации данных пикселей из коэффициентов. Данные пикселей кэшируются в кэше 950. Блок обработки 930 пикселей генерирует данные пикселей для буфера 940 фреймов и для отображения на клиенте. Остаточные данные, после распаковки в механизме 905 распаковки принимаются в блоке обработки 930 пикселей. Для реконструкции абсолютно точного изображения или изображения совершенно без потерь блок обработки 930 пикселей объединяет данные пикселей, сгенерированные из данных коэффициентов и остаточных данных пикселей для буфера 940 фреймов отображения.
Специалистам будет понятно, что различные иллюстративные логические блоки, модули и этапы алгоритмов, описанные совместно с вариантами осуществления, раскрытыми здесь, могут быть реализованы в качестве электронного аппаратного обеспечения, компьютерного программного обеспечения или их комбинации. Для ясной иллюстрации этой взаимозаменяемости аппаратного обеспечения и программного обеспечения различные иллюстративные компоненты, блоки, модули и этапы были описаны выше в общих понятиях их функциональности. Будет ли такая функциональность реализована в аппаратном обеспечении или программном обеспечении, зависит от конкретного применения и ограничений разработки, наложенных на всю систему. Опытные специалисты могут реализовать описанную функциональность различными способами для каждого конкретного применения, но такие решения реализации не должны рассматриваться как не попадающие в объем настоящего изобретения.
Различные иллюстративные логические блоки и модули, описанные совместно с вариантами осуществления, раскрытыми здесь, могут быть реализованы или выполнены с помощью процессора общего назначения, процессора цифровых сигналов (DSP), специализированной интегральной схемы (ASIC), программируемой вентильной матрицы (FPGA) или другого программируемого логического устройства, дискретной вентильной или транзисторной логической схемы, отдельных компонентов аппаратного обеспечения или любой их комбинации, выполненной с возможностью выполнения функций, описанных здесь. Процессор общего назначения может являться микропроцессором, но в альтернативном случае процессор может являться любым традиционным процессором, контроллером, микроконтроллером или конечным автоматом. Процессор может также быть реализован в качестве комбинации вычислительных устройств (например, комбинации DSP и микропроцессора, множества микропроцессоров, одного или более микропроцессоров совместно с ядром DSP или любой другой подобной конфигурации).
Хотя настоящее изобретение было описано в терминах конкретных примерных вариантов осуществления, необходимо понимать, что различные модификации и изменения могут быть сделаны специалистами в области техники без отклонения от духа и объема изобретения.