A portion of the disclosure of this patent document contains material that is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure, as it appears in the Patent and Trademark Office patent file or records, but otherwise reserves all copyright rights whatsoever.
This disclosure relates to the field of computer graphics rendering using a web browser, and more particularly to techniques for rendering high bit depth grayscale images using graphics processor unit (GPU) color spaces.
The proliferation of cloud-based services and platforms continues to increase. Specifically, cloud-based content management services and platforms have impacted the way personal and corporate information is stored, and has also impacted the way personal and corporate information is shared and managed. One benefit of using a cloud-based service (e.g., content storage service) is for access to content from anywhere and any device through a web browser. However, web browser applications and most user device displays (e.g., laptops, smart phone displays, etc.) are limited in their ability to display high bit depth (HBD) images. These limitations often limit the applicability of cloud-based services to environments involving HBD images. For example, medical images from various medical imaging modalities such as X-ray, magnetic resonance imaging (MRI), and computed tomography (CT) can comprise between 12 and 16 bits per pixel, which corresponds to 4,096 to 65,536 possible shades of grayscale per pixel. In some cases, medical imaging in certain patient studies can comprise thousands of such HBD images.
Some legacy approaches for displaying medical images and other HBD images implement dedicated and/or proprietary computing systems with specialized graphics accelerators and displays. Such approaches, however, require costly on-premises hardware infrastructure and software, and do not include the aforementioned accessibility and collaboration features of a cloud-based service using web browsers and mobile devices. Other legacy attempts rely on general purpose CPUs and general purpose CPU computer languages to render images. However, approaches that rely on general purpose CPUs to render images fail to achieve suitable performance. Referring again to the aforementioned medical imaging scenario, a single image rendering operation would need to process and render the HBD images (e.g., an 8000 x 8000 pixel X-ray image) on a pixel-by-pixel basis, resulting in extremely long rendering times and unacceptable user experiences.
The legacy technological approach of custom graphics hardware suffers from an utter lack of portability to modern user terminals (e.g., laptops, smart phones), while the naive browser approach using general purpose CPUs and general purpose CPU computer languages to render images suffer from severely limited performance characteristics. The problem to be solved is therefore rooted in technological limitations of the legacy approaches. Improved techniques, in particular improved application of technology, are needed to address the problem of performing fast and high resolution rendering of high bit depth grayscale images in a web browser having no native graphics and display hardware support for high bit depth grayscale. More specifically, the technologies applied in the aforementioned legacy approaches fail to achieve sought-after capabilities of the herein disclosed techniques for rendering high bit depth grayscale images using GPU color spaces and acceleration. What is needed is a technique or techniques to improve the application and efficacy of various technologies as compared with the application and efficacy of legacy approaches.
The present disclosure provides improved systems, methods, and computer program products suited to address the aforementioned issues with legacy approaches. More specifically, the present disclosure provides a detailed description of techniques used in systems, methods, and in computer program products for rendering high bit depth grayscale images using GPU color spaces and acceleration. Certain embodiments are directed to technological solutions for recasting a high resolution grayscale image into a texture color space that is supported by high performance GPU APIs such as WebGL, which embodiments advance the relevant technical fields, as well as advancing peripheral technical fields. The disclosed embodiments modify and improve over legacy approaches. In particular, practice of the disclosed techniques reduces use of computer memory, reduces demand for computer processing power, and reduces communication overhead needed for rendering high bit depth grayscale images using GPU color spaces and acceleration. Some embodiments disclosed herein use techniques to improve the functioning of multiple systems within the disclosed environments, and some embodiments advance peripheral technical fields as well. As one specific example, use of the disclosed techniques and devices within the shown environments as depicted in the figures provide advances in the technical field of high performance computer graphics as well as advances in the technical fields of distributed storage.
Embodiments commence upon receiving, at a cloud-based collaboration server, a request to render a high bit depth image on a user device using a browser and a graphics processing unit. The graphics processing unit is configurable to render a display image based on a color space. The cloud-based collaboration server transmits a high bit depth image to the user device and a sending module sends instructions to be executed by the browser on the user device. The sent instructions comprise one or more first GPU commands that serve for rendering images using the graphics processing unit, wherein at least some of the GPU commands map the pixel data array to a color space, and some of the GPU commands map the pixel data array to the color space to generate a remapped grayscale image.
Further details of aspects, objectives, and advantages of the disclosure are described below and in the detailed description, drawings, and claims. Both the foregoing general description of the background and the following detailed description are exemplary and explanatory, and are not intended to be limiting as to the scope of the claims.
The drawings described below are for illustration purposes only. The drawings are not intended to limit the scope of the present disclosure. This patent or application file contains at least one drawing executed in color. Copies of this patent or patent application publication with color drawings will be provided by the U.S. Patent and Trademark Office upon request and payment of the necessary fee.
Some embodiments of the present disclosure address the problem of performing fast and high resolution rendering of 16-bit grayscale images in a web browser having no native graphics and display hardware support for 16-bit grayscale. Some embodiments are directed to approaches for recasting a high resolution grayscale image into a color space that is supported by high performance GPU APIs such as WebGL. More particularly, disclosed herein and in the accompanying figures are exemplary environments, systems, methods, and computer program products for rendering high bit depth grayscale images using GPU color spaces and acceleration.
The proliferation of cloud-based services and platforms continues to increase. One benefit of using a cloud-based service (e.g., content storage service) is access to content from anywhere using any device through a web browser. However, web browser applications and common user device displays can be limited in displaying high bit depth (HBD) images, potentially limiting the application of cloud-based services to environments involving HBD images. For example, medical images from various medical imaging modalities such as X-ray, MRI, and CTs can comprise grayscale images with 16 bits per pixel in formats that are pervasive in medical imaging, such as the digital imaging and communications in medicine (DICOM) file format.
The techniques described herein do not rely on costly on-premise hardware infrastructure and software, yet do provide the aforementioned accessibility and collaboration features of a cloud-based service using web browsers and mobile devices. Further, the herein-disclosed techniques eliminate or reduce the use of scripting languages when rendering HBD images.
To address the need for performing fast and high resolution rendering of high-bit depth (e.g., 16-bit depth) grayscale images in a web browser (e.g., a browser having no native graphics and display hardware support for high bit depth grayscale), the techniques described herein discuss (1) allocating high bit depth grayscale pixel data to red and green components (e.g., the 8-bit red and 8-bit green components) of a respective pixel in a texture color space, (2) constructing an associated fragment shader to convert the texture color space back to grayscale at the full resolution of the display, and (3) sending the texture data and fragment shader directly to a GPU using a browser-based protocol for rendering images using a graphics processor (e.g., WebGL) to accomplish fast rendering of images from within a browser.
Various embodiments are described herein with reference to the figures. It should be noted that the figures are not necessarily drawn to scale and that the elements of similar structures or functions are sometimes represented by like reference characters throughout the figures. It should also be noted that the figures are only intended to facilitate the description of the disclosed embodiments—they are not representative of an exhaustive treatment of all possible embodiments, and they are not intended to impute any limitation as to the scope of the claims. In addition, an illustrated embodiment need not portray all aspects or advantages of usage in any particular environment. An aspect or an advantage described in conjunction with a particular embodiment is not necessarily limited to that embodiment and can be practiced in any other embodiments even if not so illustrated. Also, reference throughout this specification to “some embodiments” or “other embodiments” refers to a particular feature, structure, material, or characteristic described in connection with the embodiments as being included in at least one embodiment. Thus, the appearances of the phrase “in some embodiments” or “in other embodiments” in various places throughout this specification are not necessarily referring to the same embodiment or embodiments.
The appended figures discuss aspects in a succession as follows: (1) an environment in which embodiments of the present disclosure can operate, (2) a view windowing technique, (3) a high-performance image file transformation technique, (4) a representative user view change operation, and (5) a system for rendering high bit depth grayscale images using GPU color spaces and acceleration.
Some of the terms used in this description are defined below for easy reference. The presented terms and their respective definitions are not rigidly restricted to these definitions—a term may be further defined by the term's use within this disclosure. The term “exemplary” is used herein to mean serving as an example, instance, or illustration. Any aspect or design described herein as “exemplary” is not necessarily to be construed as preferred or advantageous over other aspects or designs. Rather, use of the word exemplary is intended to present concepts in a concrete fashion. As used in this application and the appended claims, the term “or” is intended to mean an inclusive “or” rather than an exclusive “or”. That is, unless specified otherwise, or is clear from the context, “X employs A or B” is intended to mean any of the natural inclusive permutations. That is, if X employs A, X employs B, or X employs both A and B, then “X employs A or B” is satisfied under any of the foregoing instances. The articles “a” and “an” as used in this application and the appended claims should generally be construed to mean “one or more” unless specified otherwise or is clear from the context to be directed to a singular form.
Reference is now made in detail to certain embodiments. The disclosed embodiments are not intended to be limiting of the claims.
As shown in
Environment 1A00 further comprises an instance of a user device 102 that can represent one of a variety of other computing devices (e.g., a smart phone 113, a tablet 114, an IP phone 115, a laptop 116, a workstation 117, etc.) having software (e.g., a browser 103, an application, etc.) and hardware (e.g., a graphics processing unit or GPU 104) capable of processing and displaying information (e.g., web page, graphical user interface, etc.) on a display and communicating information (e.g., web page request, user activity, electronic files, etc.) over the wireless network 107, the network 108, and the content delivery network 109. As shown, the user device 102 can be operated by a user 105. Further, an imaging device 118 (e.g., MRI scanner, CT scanner, X-ray scanner, other imaging devices, etc.) can be coupled to the proxy server 111, and capture images that are sent to the proxy server 111 for various operations.
As shown, the user device 102, the proxy server 111, and the content management server 110 can exhibit a set of high-level interactions (e.g., operations, messages, etc.) in a protocol 120. Specifically, the protocol 120 can represent interactions in systems for rendering high bit depth grayscale images using GPU color spaces and acceleration. As shown, a viewer web application for a browser (e.g., browser 103) can be developed (see operation 122) and delivered (e.g., served by a web server) from the content management server 110 to the user device 102 (see message 125) in response to the user 105 invoking the viewer in a browser 103 (see operation 124). High bit depth images (e.g., 16-bit grayscale images in DICOM format) captured on the imaging device 118 can be securely sent (e.g., using HTTPS) by the proxy server 111 to the content management server 110 (see message 126). The images can be received by the content management server 110 and stored as original image data in a storage facility (see operation 128), such as content storage facility 112. In some cases, the content management server 110 can also preprocess the original images for various purposes (see operation 130). For example, various metadata from the original images can be extracted and used to construct new sets of metadata. Also, the original images can be used to pre-render images of various formats (e.g., JPEG) to support legacy browsers (e.g., having no mobile Javascript APIs). Further, the original images might be normalized (e.g., to a uniform DICOM structure) or normalized to a particular compression (e.g., run length encoding to RGB encoding) for later processing. The aforementioned processed images and data can then be stored (see operation 132).
When the user 105 changes the view settings from the viewer web application (see operation 136), a request for one or more image files is sent from the user device 102 to the content management server 110 (see message 138). For example, the user 105 might use the viewer to request a certain patient study recently captured at the imaging device 118 and comprising multiple (e.g., possibly hundreds) images grouped in a collection of image series or image stacks (e.g., one series for each view of the patient). Further, the user 105 can use the viewer web application to access the cloud-based service features of the content management server 110, such as searching, organizing, and collaboration. Responsive to the request (see message 138), the content management server 110 can return the related HBD image files (see message 139). The viewer web application operated in the browser 103 by the user device 102 can invoke software instructions (e.g., scripts, Javascript, WebGL commands, etc.) to prepare the images for display by allocating the HBD images to a color space, such as an RGB color space (see operation 142) that can be interpreted directly by the GPU 104 for rendering (see operation 144) and viewing (see operation 146). In one or more embodiments, for example, each 16-bit pixel in a grayscale file can be allocated to the 8-bit red and 8-bit green components of a respective pixel in a texture color space, and an associated fragment shader can be constructed or selected to convert the texture color space back to grayscale at the full resolution of the display when rendered by the GPU 104. In other embodiments, each high bit depth pixel in a grayscale image can be allocated to a selected set of color components to convert the texture color space back to grayscale at the full resolution of the display when rendered by the GPU 104. The color components can be organized as red, green, blue (RGB), or can be RGB plus alpha (RGBA), or can be BGR, or can by cyan, magenta, yellow, black (CMYK), or any other organization of color components.
As shown, as the user 105 interacts with the viewer web application and changes various view settings (see operation 136), a set of continuous operations 140 comprising the shown portion of the aforementioned messages and operations will be executed. One embodiment of a system for implementing the techniques shown in protocol 120 for rendering high bit depth grayscale images using GPU color spaces and acceleration is shown in
The system 1B00 shown in
The view windowing technique 200 shown in
The image processing flow 3A00 shown in
The image file transformation technique 3B00 shown in
Strictly as an example, the following lines of code can be used in a fragment shader.
The embodiment shown in
Any individual ones or combinations of any of the herein-described techniques can be used for acceleration and rendering on target systems (e.g., user devices) that do not have native support for handling HBD grayscale images (e.g., grayscale images that have a bit depth of more than 8 bits).
Many variations are possible without departing from the solution. For example, one embodiment receives a request to render a high bit depth (HBD) grayscale image on a user device comprising a GPU (e.g., where the GPU has a color space to natively render grayscale images at a lower bit depth level from the high bit depth grayscale image). The HBD grayscale image (e.g., in a pixel data array), and instructions can be sent to be executed on the user device where some of the instructions serve to operate the GPU (e.g., using WebGL instructions). The instructions can be packaged for transmission. Strictly one such example, an instruction package can comprise one or more first GPU commands wherein the one or more first GPU commands implement a browser-based protocol for rendering images using the GPU, and the one or more first GPU commands to map the pixel data array of the HBD grayscale image to the color space to generate a remapped grayscale image. In exemplary cases the pixel data array of the HBD grayscale image is mapped to a portion of a register or set of registers that comprise a subset of bits associated with the color space. Further, instructions can be packages to cause the GPU to execute one or more commands for displaying the remapped grayscale image.
According to an embodiment of the disclosure, computer system 6A00 performs specific operations by data processor 607 executing one or more sequences of one or more program code instructions contained in a memory. Such instructions (e.g., program instructions 6021, program instructions 6022, program instructions 6023, etc.) can be contained in or can be read into a storage location or memory from any computer readable/usable medium such as a static storage device or a disk drive. The sequences can be organized to be accessed by one or more processing entities configured to execute a single process or configured to execute multiple concurrent processes to perform work. A processing entity can be hardware based (e.g., involving one or more cores) or software based, and/or can be formed using a combination of hardware and software that implements logic, and/or can carry out computations and/or processing steps using one or more processes and/or one or more tasks and/or one or more threads or any combination therefrom.
According to an embodiment of the disclosure, computer system 6A00 performs specific networking operations using one or more instances of communications interface 614. Instances of the communications interface 614 may comprise one or more networking ports that are configurable (e.g., pertaining to speed, protocol, physical layer characteristics, media access characteristics, etc.) and any particular instance of the communications interface 614 or port thereto can be configured differently from any other particular instance. Portions of a communication protocol can be carried out in whole or in part by any instance of the communications interface 614, and data (e.g., packets, data structures, bit fields, etc.) can be positioned in storage locations within communications interface 614, or within system memory, and such data can be accessed (e.g., using random access addressing, or using direct memory access DMA, etc.) by devices such as data processor 607.
The communications link 615 can be configured to transmit (e.g., send, receive, signal, etc.) any types of communications packets 638 comprising any organization of data items. The data items can comprise a payload data area 637, a destination address 636 (e.g., a destination IP address), a source address 635 (e.g., a source IP address), and can include various encodings or formatting of bit fields to populate the shown packet characteristics 634. In some cases the packet characteristics include a version identifier, a packet or payload length, a traffic class, a flow label, etc. In some cases the payload data area 637 comprises a data structure that is encoded and/or formatted to fit into byte or word boundaries of the packet.
In some embodiments, hard-wired circuitry may be used in place of or in combination with software instructions to implement aspects of the disclosure. Thus, embodiments of the disclosure are not limited to any specific combination of hardware circuitry and/or software. In embodiments, the term “logic” shall mean any combination of software or hardware that is used to implement all or part of the disclosure.
The term “computer readable medium” or “computer usable medium” as used herein refers to any medium that participates in providing instructions to data processor 607 for execution. Such a medium may take many forms including, but not limited to, non-volatile media and volatile media. Non-volatile media includes, for example, optical or magnetic disks such as disk drives or tape drives. Volatile media includes dynamic memory such as a random access memory.
Common forms of computer readable media includes, for example, floppy disk, flexible disk, hard disk, magnetic tape, or any other magnetic medium; CD-ROM or any other optical medium; punch cards, paper tape, or any other physical medium with patterns of holes; RAM, PROM, EPROM, FLASH-EPROM, or any other memory chip or cartridge, or any other non-transitory computer readable medium. Such data can be stored, for example, in any form of external data repository 631, which in turn can be formatted into any one or more storage areas, and which can comprise parameterized storage 639 accessible by a key (e.g., filename, table name, block address, offset address, etc.).
Execution of the sequences of instructions to practice certain embodiments of the disclosure are performed by a single instance of the computer system 6A00. According to certain embodiments of the disclosure, two or more instances of computer system 6A00 coupled by a communications link 615 (e.g., LAN, PTSN, or wireless network) may perform the sequence of instructions required to practice embodiments of the disclosure using two or more instances of components of computer system 6A00.
The computer system 6A00 may transmit and receive messages such as data and/or instructions organized into a data structure (e.g., communications packets 638). The data structure can include program instructions (e.g., application code 603), communicated through communications link 615 and communications interface 614. Received program code may be executed by data processor 607 as it is received and/or stored in the shown storage device or in or upon any other non-volatile storage for later execution. Computer system 6A00 may communicate through a data interface 633 to a database 632 on an external data repository 631. Data items in a database can be accessed using a primary key (e.g., a relational database primary key).
The processing element partition 601 is merely one sample partition. Other partitions can include multiple data processors, and/or multiple communications interfaces, and/or multiple storage devices, etc. within a partition. For example, a partition can bound a multi-core processor (e.g., possibly including embedded or co-located memory), or a partition can bound a computing cluster having plurality of computing elements, any of which computing elements are connected directly or indirectly to a communications link. A first partition can be configured to communicate to a second partition. A particular first partition and particular second partition can be congruent (e.g., in a processing element array) or can be different (e.g., comprising disjoint sets of components).
A module as used herein can be implemented using any mix of any portions of the system memory and any extent of hard-wired circuitry including hard-wired circuitry embodied as a data processor 607. Some embodiments include one or more special-purpose hardware components (e.g., power control, logic, sensors, transducers, etc.). A module may include one or more state machines and/or combinational logic used to implement or facilitate the performance characteristics of rendering high bit depth grayscale images using GPU color spaces and acceleration.
Various implementations of the database 632 comprise storage media organized to hold a series of records or files such that individual records or files are accessed using a name or key (e.g., a primary key or a combination of keys and/or query clauses). Such files or records can be organized into one or more data structures (e.g., data structures used to implement or facilitate aspects of rendering high bit depth grayscale images using GPU color spaces and acceleration). Such files or records can be brought into and/or stored in volatile or non-volatile memory.
A portion of workspace access code can reside in and be executed on any user device. Also, a portion of the workspace access code can reside in and be executed on any computing platform (e.g., computing platform 660), including in a middleware setting. As shown, a portion of the workspace access code (e.g., workspace access code 6533) resides in and can be executed on one or more processing elements (e.g., processing element 6621). The workspace access code can interface with storage devices such the shown networked storage 666. Storage of workspaces and/or any constituent files or objects, and/or any other code or scripts or data can be stored in any one or more storage partitions (e.g., storage partition 6641). In some environments, a processing element includes forms of storage, such as RAM and/or ROM and/or FLASH, and/or other forms of volatile and non-volatile storage.
A stored workspace can be populated via an upload (e.g., an upload from a user device to a processing element over an upload network path 657). One or more constituents of a stored workspace can be delivered to a particular user and/or shared with other particular users via a download (e.g., a download from a processing element to a user device over a download network path 659).
In the foregoing specification, the disclosure has been described with reference to specific embodiments thereof. It will, however, be evident that various modifications and changes may be made thereto without departing from the broader spirit and scope of the disclosure. For example, the above-described process flows are described with reference to a particular ordering of process actions. However, the ordering of many of the described process actions may be changed without affecting the scope or operation of the disclosure. The specification and drawings to be regarded in an illustrative sense rather than in a restrictive sense.