Patent Description:
The above features and advantages and other features and advantages of the present disclosure are readily apparent from the following detailed description of the best modes for carrying out the disclosure when taken in connection with the accompanying drawings.

Representative embodiments of this disclosure are shown by way of nonlimiting example in the drawings and are described in additional detail below. It should be understood, however, that the novel aspects of this disclosure are not limited to the particular forms illustrated in the above-enumerated drawings.

Referring to the drawings, wherein like reference numbers refer to like components, <FIG> schematically illustrates an imaging system <NUM> having an imaging device <NUM>. The imaging device <NUM> includes a detector <NUM> configured to detect radiation emanating from a plurality of directions. The detector <NUM> may include a semiconductor, such as for example, a cadmium zinc telluride (CdZnTe) compound. The detector <NUM> may include a Compton camera which utilizes Compton scattering to determine the spatial origin of the observed radiation. The detector <NUM> may employ other types of sensor technology available to those skilled in the art.

Referring to <FIG>, the detector <NUM> is configured to obtain position-sensitive radiation data of at least one source of interest <NUM>, such as first source <NUM> and second source <NUM>. The source of interest <NUM> may be a gamma-emitting radioisotope. The source of interest <NUM> may emit alpha, beta and electromagnetic radiation, neutrons or other type of radiation phenomenon known to those skilled in the art. In one example, the source of interest <NUM> is gamma-emitting Cesium-<NUM>. The detector <NUM> is configured to be time-sensitive and record the radiation data as a function of time. In the case of gamma rays, each photon may be involved in multiple interactions. The detector <NUM> may be in motion while capturing the radiation data. For example, the detector <NUM> may be carried around by a user or positioned on a mobile platform (not shown) that is remotely controlled.

Referring to <FIG>, the imaging device <NUM> may include an optical camera <NUM> configured to capture an optical image of the source of interest <NUM>. Spatial information on both global position and pose may be obtained from a number of methods available to those skilled in the art. The imaging device <NUM> may include a laser range finder <NUM> configured to determine a distance to a target, for example, by sending a laser pulse in a narrow beam towards the target and measuring the time taken by the pulse to be reflected off the target and returned back. The imaging device <NUM> may include a GPS (global positioning system) unit <NUM> or other device adapted to transmit global position coordinates of the detector <NUM>. The imaging device <NUM> may employ visual odometry, where the position and pose of an object is estimated from a sequence of images. The visual odometry information may be collected using a single stereo camera and/or dual stereo cameras, and may include color information (e.g., RGB) and depth information (e.g., RGB-D).

The imaging device <NUM> may include a spectrometer (not shown) that detects distribution of intensity (counts) of radiation versus the energy of the respective radiation. The imaging device <NUM> may include associated circuitry or electronics (not shown) appropriate to the application at hand. For instance, the circuitry may include a photomultiplier tube, a silicon photodiode, other photon-electron conversion devices, high voltage supply, preamplifier, amplifier and analog to digital converter (ADC). The imaging system <NUM> may take many different forms and include multiple and/or alternate components and facilities.

Referring to <FIG>, the imaging system <NUM> includes a controller C operatively connected to and configured to control the operation of the imaging device <NUM>. Referring to <FIG>, the controller C includes at least one processor P and at least one memory M (or any non-transitory, tangible computer readable storage medium) on which instructions are recorded for executing method <NUM>, for reconstructing a three-dimensional image or distribution of the source of interest <NUM> based at least partially on the radiation data. Method <NUM> is shown in <FIG> and described below. The memory M can store controller-executable instruction sets, and the processor P can execute the controller-executable instruction sets stored in the memory M.

As described below, the imaging system <NUM> employs a combined two-dimensional to three-dimensional approach that greatly reduces the computational burden of imaging three-dimensional space. The imaging system <NUM> uses two-dimensional imaging data (e.g., of gamma rays) to obtain three-dimensional projection by binning events together, then projecting into three-dimensional space to obtain a completed three-dimensional image. Events are first imaged in a common two-dimensional angular space and corrected for the rotational detector pose. Changes in detector pose, which may be recorded as roll, pitch and yaw, are used to translate detector events to a common, global reference frame which allows for the two-dimensional to three-dimensional reconstruction process. The imaging system <NUM> enables full three-dimensional imaging (e.g., gamma-ray imaging) on a mobile platform, with weak computational resources.

The controller C may be configured to control the operation of the detector <NUM> and as well as acquisition, processing and storage of the radiation data. The detector <NUM> and/or controller C may be configured to record a respective sequence of counts (e.g., <NUM>=counts and <NUM>=no counts) as a function of time or spatial location. The controller C (along with the processor P and memory M) may be an integral portion of the imaging device <NUM>. Alternately, the controller C (along with the processor P and memory M) may be a separate module in communication with the imaging device <NUM>, via a network <NUM>. A display device <NUM>, such as a tablet, may connect wirelessly to the controller C (e.g., via the network <NUM>) for real-time display of the images some distance away.

The network <NUM> may be a serial communication bus in the form of a local area network. The local area network may include, but is not limited to, a Controller Area Network (CAN), a Controller Area Network with Flexible Data Rate (CAN-FD), Ethernet, blue tooth, WIFI and other forms of data. The network <NUM> may be a Wireless Local Area Network (LAN) which links multiple devices using a wireless distribution method, a Wireless Metropolitan Area Networks (MAN) which connects several wireless LANs or a Wireless Wide Area Network (WAN) which covers large areas such as neighboring towns and cities. Other types of connections may be employed.

The controller C of <FIG> is specifically programmed to execute the blocks of method <NUM> (discussed in detail below with respect to <FIG>) and may have access to information downloaded from remote sources and/or executable programs. Referring to <FIG>, the controller C may be configured to communicate with a remote server <NUM> and/or a cloud unit <NUM>, via the network <NUM>. The remote server <NUM> may be a private or public source of information maintained by an organization, such as for example, a research institute, a company, a university and/or a hospital. The cloud unit <NUM> may include one or more servers hosted on the Internet to store, manage, and process data.

Referring now to <FIG>, a flowchart of the method <NUM> stored on and executable by the controller C of <FIG> is shown. The start and end of method <NUM> are respectively shown as "S" and "E. " Method <NUM> need not be applied in the specific order recited herein. Furthermore, it is to be understood that some steps may be eliminated.

The method <NUM> may begin with block <NUM>, where the controller C is programmed to initialize or define one or more initial conditions, which include reconstruction parameters used to initialize data structures for the two-dimensional and three-dimensional reconstruction of the image or distribution of the source of interest <NUM> (see <FIG>). The initial conditions may include defining a two-dimensional grid size, a two-dimensional pixel size, a three-dimensional grid size and a three-dimensional voxel size.

Block <NUM> includes defining a plurality of buffers based on the initial conditions. The plurality of buffers may be temporally or spatially defined. In one embodiment, the initial condition is time-based such that each respective buffer in the plurality of buffers starts at a predefined start time (tmin,buffer) and ends at a predefined end time (tmax,buffer), such that tmax,buffer= [tmin,buffer + Δt]. Here, an individual event falls within the respective buffer when the event time (tevent) is within the predefined start time and the predefined end time, such that tmin,buffer ≤tevent ≤tmax,buffer. Block <NUM> includes defining a buffer updating frequency, which may be temporally or spatially defined. In one example, the buffer updating frequency is between about <NUM> and <NUM> seconds.

In another embodiment, the initial condition is distance-based such that each respective buffer in the plurality of buffers defines a respective buffer location (xbuffer, ybuffer, zbuffer). Here, an individual event falls within the respective buffer when a respective distance (d) between the event position (xglobal, yglobal, zglobal) and the respective buffer location (xbuffer, ybuffer, zbuffer) is less than or equal to a threshold distance (Δd). In one example, the buffer updating frequency may be between about <NUM> and <NUM>.

Per block <NUM> of <FIG>, the controller C is programmed to receive an individual event from the radiation data captured by the detector <NUM>. The detector <NUM> is adapted to send out time-tagged radiation events, consisting of up to N interactions. Each interaction, referred to herein as "event", is characterized by an event position (x, y, z), and energy absorbed (E), as follows: (x, y, z, E)<NUM>, (x, y, z, E)<NUM>,. (x, y, z, E)N. Each individual event is time-tagged with an event time (tevent). Each of the plurality of events is tagged with an event position or location. The event position may be described based on Cartesian coordinates. Alternatively, the event position may be specified in terms of a polar angle (θ) and an azimuth angle (φ). The polar angle (θ) is measured from the Z axis, and the azimuth angle (φ) is the orthogonal projection of the event position (on the XY plane that passes through the origin and orthogonal to the Z-axis), measured from the X-axis. The detector <NUM> may stream the events in real-time to the controller C.

Additionally, the detector <NUM> is adapted to transmit a detector position in real-time, referred to herein as the global detector position, which may be expressed in Cartesian coordinates as (xglob, yglob, zglob). The initial global position may be selected to be zero, i.e., (xglobal, yglobal, zglobal) = (<NUM>,<NUM>,<NUM>). The detector <NUM> is adapted to transmit a global detector pose (position and orientation) in real-time, which may be expressed as a set of roll, pitch and yaw parameters (rollglob, pitchglob, yawglob).

Per block <NUM> of <FIG>, the controller C is programmed to determine if one or more predefined criteria is met. The predefined criteria may include the energy of the event being within a specified energy range, i.e., between a minimum energy and a maximum energy. In another example, the controller C may process the individual event (received in block <NUM>) in real-time to determine whether or not it fits within at least one predefined modality. The predefined modality may include, but is not limited to, Compton imaging, coded aperture imaging or attenuation-based imaging. If the predefined criteria are met, the method <NUM> proceeds to block <NUM>. If not, the method <NUM> loops back to block <NUM>.

Per block <NUM> of <FIG>, the controller C is programmed to designate one of the plurality of buffers as a current buffer (e.g., current buffer <NUM> in <FIG> shows an example process of summation and reconstruction of a plurality of events <NUM> from a current buffer <NUM> (in two-dimensional space <NUM>) to three-dimensional space <NUM>. The plurality of events <NUM>, such as a first individual event <NUM> and a second (or Nth) individual event <NUM>, are schematically represented as Compton cones in <FIG>.

Also, per block <NUM> of <FIG>, the controller C is programmed to determine if the individual event (received in block <NUM>) falls within the current buffer. As noted above, if the plurality of buffers is temporally defined, the individual event falls within the current buffer <NUM> when the event time (tevent) is within the predefined start time and the predefined end time, such that tmin,buffer ≤tevent ≤tmax,buffer. If the plurality of buffers is spatially defined, the individual event falls within the current buffer when a respective distance (d) between the event position (xglobal, yglobal, zglobal) and the respective buffer location (xbuffer, ybuffer, zbuffer) is less than or equal to a threshold distance (Δd). If the individual event (received in block <NUM>) falls within the current buffer, the method <NUM> proceeds from block <NUM> to block <NUM>.

Per block <NUM> of <FIG>, the controller C is programmed to correct the individual event within the current buffer <NUM> for pose (position and orientation) and add the individual event to the current buffer <NUM> in the two-dimensional space <NUM>. When reconstructing events from a detector <NUM> that is moving, a global reference frame is required. The changes in detector pose, recorded as roll, pitch and yaw, are used to translate the individual events to a common, global reference frame. This common, global reference frame allows for the two-dimensional to three-dimensional reconstruction process described below in block <NUM>.

Referring to <FIG>, each of the plurality of events <NUM> is corrected for pose on an event-by-event basis to obtain a corrected set <NUM> of events. The plurality of events <NUM> are tagged with a respective event time. Correcting for pose includes obtaining a respective detector pitch, a respective detector yaw and a respective detector roll of the detector <NUM> at the respective event time and shifting the plurality of events <NUM> in angular space by the respective detector pitch, the respective detector yaw and the respective detector roll. Referring to <FIG>, the first individual event <NUM> and the second (or Nth) individual event <NUM> are corrected for pose to obtain a corrected first event <NUM> and a corrected second (or Nth) event <NUM>, respectively. The method <NUM> proceeds from block <NUM> to block <NUM>.

From block <NUM>, the method <NUM> proceeds to block <NUM>. Per block <NUM> of <FIG>, the controller C is programmed to align the plurality of events <NUM> in the common two-dimensional space <NUM>. In some embodiments, the plurality of events <NUM> are moved into the current buffer <NUM> and then pose-corrected. In other embodiments, the plurality of events <NUM> are corrected for pose and then moved into the current buffer <NUM>. Referring to <FIG>, the current buffer <NUM> may be represented by a two-dimensional grid (or set of pixels) of angles (θ, φ). The plurality of events <NUM> may be represented in the current buffer <NUM> as respective Compton cones <NUM>. Referring to <FIG>, aligning the plurality of events <NUM> in the common two-dimensional space includes overlaying the respective Compton cones <NUM> together in the current buffer <NUM> in the two-dimensional space <NUM>. As understood by those skilled in the art, for Compton scattering events, Compton cones are developed based on an incident scattering angle and an interaction position. The projection of a Compton cone, in the form of rings, onto an image slice determines the location of a source. Other methods of representation may be employed.

Also, per block <NUM>, the controller C is programmed to record the average spatial coordinates or position (x,y,z) of all the individual events (represented by respective Compton cones <NUM>) in the current buffer <NUM>. From block <NUM>, the method <NUM> loops back to block <NUM>, as indicated by line <NUM>. Referring to block <NUM> of <FIG>, if the individual event (received in block <NUM>) does not fall within the current buffer <NUM>, the method <NUM> proceeds from block <NUM> to block <NUM>.

Per block <NUM> of <FIG>, the current buffer <NUM>, which contains the contributions from multiple events, is added to the three-dimensional space <NUM> in one step. In other words, the plurality of events <NUM> are simultaneously reconstructed in the three-dimensional space <NUM>. The reconstruction into the three-dimensional space <NUM> is done once for each of the plurality of buffers. The technical advantage here is a much lower computational burden, as opposed to calculating the three-dimensional contributions of individual events on an event-by-event basis.

Also, per block <NUM> of <FIG>, the controller C is adapted to determine an average global position <NUM> for the current buffer <NUM> by averaging the respective event positions for the plurality of events <NUM> in the current buffer <NUM>. In other words, the average global position <NUM> is calculated using the average spatial coordinates or position (x,y,z) of all the individual events in the current buffer <NUM>.

Referring to <FIG>, the two-dimensional space <NUM> may be represented by a two-dimensional grid or set of pixels (e.g., represented by angles θ, φ). <FIG> shows a first pixel <NUM>, represented by angles (θ1, φ1), and a second pixel <NUM> represented by angles (θ2, φ2). The contribution of each of the pixels in the current buffer <NUM> is added to the three-dimensional space <NUM>. The contribution of each of the pixels may be represented by the number of the respective Compton cones <NUM> in the pixel.

The respective contribution from each pixel in the current buffer <NUM> is projected from the average global position <NUM> in the three-dimensional space <NUM>. The three-dimensional space <NUM> may be represented by three-dimensional voxels. The respective angles (θi, φj) between each three-dimensional voxel in the three-dimensional space <NUM> and the average global position <NUM> are computed. The respective angles (θi, φj) are used to look up corresponding pixel values from the two-dimensional buffer image (current buffer <NUM>), which is in angular space and contains the contributions of many events, which are added to each corresponding three-dimensional voxel.

The respective angles (θi, φj) may be represented by vectors extending from the average global position <NUM>. In one example, a first vector <NUM> extending from the average global position <NUM> at an angle (θ1, φ1) leads to the first voxel <NUM>. Since the angle (θ1, φ1) corresponds to the first pixel <NUM>, the contribution of the first pixel <NUM> is added to or reconstructed in the first voxel <NUM>.

In one example, a first vector <NUM> extending from the average global position <NUM> at an angle (θ1, φ1) leads to the first voxel <NUM>. Since the angle (θ1, φ1) corresponds to the first pixel <NUM>, the contribution of the first pixel <NUM> is added to or reconstructed in the first voxel <NUM>. In the example, shown in <FIG>, the first pixel <NUM> does not include any of the respective Compton cones <NUM> [grid2D(θ1, φ1)=<NUM>]. In another example, a second vector <NUM> extending from the average global position <NUM> at an angle (θ2, φ2) leads to the second voxel <NUM>. Since the angle (θ2, φ2) corresponds to the second pixel <NUM>, the contribution of the second pixel <NUM> is added to the second voxel <NUM>. The second pixel <NUM> includes two of the respective Compton cones <NUM> [grid2D(θ2, φ2)=<NUM>]. This process is repeated for each of the angles (θi, φj). This process is also repeated each time the current buffer <NUM> is filled, gradually filling in and creating a three-dimensional image or three-dimensional distribution <NUM>. The method <NUM> proceeds from block <NUM> to block <NUM>.

Per block <NUM> of <FIG>, the controller C is programmed to hold the individual event, which falls outside of the current buffer <NUM>, in memory and to reset a number of parameters. The controller C is programmed to zero the current buffer <NUM>, removing the contribution of older, 'stale' events, and subsequently designating another of the plurality of buffers as the current buffer <NUM>. In other words, the controller C chooses new temporal or spatial boundaries for the current buffer <NUM>. The rate at which new buffers are needed is a function of the inputs (i.e., the buffer updating frequency) designed in block <NUM>. Block <NUM> includes resetting the list of global three-dimensional event positions (used to compute an average global position <NUM>) in order that a new buffer-averaged global position <NUM> may be obtained.

Per block <NUM> of <FIG>, the controller C is programmed to determine if a signal to finish the method <NUM> or process has been received. The signal may be in the form of a predefined measurement time limit that has ended or a signal from a user, for example, through an input device (e.g., a mouse or touchscreen button). If the signal is not received, the method <NUM> loops from block <NUM> to block <NUM>. Per block <NUM>, the individual event is added to the current buffer <NUM>. Since the parameters have been reset in block <NUM>, the "current buffer <NUM>" is now a different buffer, with different temporal or spatial boundaries.

If the signal for completion has been received, the method <NUM> proceeds from block <NUM> to block <NUM>, where the controller C is programmed to output the three-dimensional distribution <NUM> and the method <NUM> is ended.

Referring now to <FIG>, a diagram of an example source localization carried out by the imaging system <NUM> (see <FIG>) is shown. The imaging device <NUM> is taken on a route <NUM>, from a starting point <NUM> to an ending point <NUM>. The imaging device <NUM> may be carried by a user or transported on a mobile platform or robot (not shown), which may be remotely controlled or autonomous. The controller C (of <FIG>) is adapted to construct a three-dimensional distribution of one or more sources of interest along the route <NUM>. In the example shown, the route <NUM> is inside a building <NUM> having multiple walls <NUM>. Referring to <FIG>, as the imaging device <NUM> is transported through a first door <NUM> and a second door <NUM> of the building <NUM>, the imaging device <NUM> collects radiation data. The imaging device <NUM> may stream the radiation data in real-time to the controller C and/or record the radiation data. The radiation data accumulated over the route <NUM> is employed to construct a map in three-dimensional space <NUM>, via execution of method <NUM> of <FIG>. In the example shown in <FIG>, the three-dimensional image or distribution indicates a first source <NUM> and a second source <NUM> observed along the route <NUM>.

In summary, the imaging system <NUM> employs a two-dimensional to three-dimensional approach to minimize the computational burden of creating a three-dimensional image or distribution. The use of a current buffer <NUM> (which contains the contributions of many events) in a common, two-dimensional space <NUM> reduces the frequency at which the three-dimensional reconstruction is to be conducted. The process of reconstructing events in three-dimensions is done once per buffer, instead of on an event-by-event-basis. Conducting the three-dimensional reconstruction of many events at once makes full three-dimensional reconstructions computationally tractable on embedded systems without the requisite memory and processing capacities.

The controller C includes a computer-readable medium (also referred to as a processor-readable medium), including any non-transitory (e.g., tangible) medium that participates in providing data (e.g., instructions) that may be read by a computer (e.g., by a processor of a computer). Such a medium may take many forms, including, but not limited to, non-volatile media and volatile media. Non-volatile media may include, for example, optical or magnetic disks and other persistent memory. Volatile media may include, for example, dynamic random-access memory (DRAM), which may constitute a main memory. Such instructions may be transmitted by one or more transmission media, including coaxial cables, copper wire and fiber optics, including the wires that comprise a system bus coupled to a processor of a computer. Some forms of computer-readable media include, for example, a floppy disk, a flexible disk, hard disk, magnetic tape, other magnetic media, a CD-ROM, DVD, other optical media, other physical media with patterns of holes, a RAM, a PROM, an EPROM, a FLASH-EEPROM, any other memory chip or cartridge, or any other medium from which a computer can read.

Look-up tables, databases, data repositories or other data stores described herein may include various kinds of mechanisms for storing, accessing, and retrieving various kinds of data, including a hierarchical database, a set of files in a file system, an application database in a proprietary format, a relational database management system (RDBMS), etc. Each such data store may be included within a computing device employing a computer operating system such as one of those mentioned above and may be accessed via a network in any one or more of a variety of manners. A file system may be accessible from a computer operating system and may include files stored in various formats. An RDBMS may employ the Structured Query Language (SQL) in addition to a language for creating, storing, editing, and executing stored procedures, such as the PL/SQL language mentioned above.

The flowcharts presented herein illustrate an architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present disclosure. It will also be noted that each block of the block diagrams and/or flowchart illustrations, and combinations of blocks in the block diagrams and/or flowchart illustrations, may be implemented by specific purpose hardware-based devices that perform the specified functions or acts, or combinations of specific purpose hardware and computer instructions. These computer program instructions may also be stored in a computer-readable medium that can direct a controller or other programmable data processing apparatus to function in a particular manner, such that the instructions stored in the computer-readable medium produce an article of manufacture including instructions to implement the function/act specified in the flowchart and/or block diagram blocks.

The numerical values of parameters (e.g., of quantities or conditions) in this specification, including the appended claims, are to be understood as being modified in each respective instance by the term "about" whether or not "about" actually appears before the numerical value. "About" indicates that the stated numerical value allows some slight imprecision (with some approach to exactness in the value; about or reasonably close to the value; nearly). In addition, disclosure of ranges includes disclosure of each value and further divided ranges within the entire range. Each value within a range and the endpoints of a range are hereby disclosed as separate embodiments.

Claim 1:
An imaging system (<NUM>) comprising:
a detector (<NUM>) configured to obtain radiation data from one or more sources (<NUM>, <NUM>, <NUM>), the radiation data including a plurality of events (<NUM>);
a controller (C) configured to receive the radiation data, the controller (C) having a processor (P) and tangible, non-transitory memory (M) on which instructions are recorded;
wherein execution of the instructions by the processor (P) causes the controller (C) to:
define a plurality of buffers based on at least one initial condition and designate one of the plurality of buffers as a current buffer (<NUM>);
receive an individual event of the plurality of events (<NUM>) and determine if the individual event falls within the current buffer (<NUM>);
align the plurality of events (<NUM>) in the current buffer (<NUM>) in a two-dimensional space (<NUM>);
reconstruct the plurality of events (<NUM>) in the current buffer (<NUM>) in a three-dimensional space (<NUM>), the reconstruction being done once for each of the plurality of buffers; and
create a three-dimensional image (<NUM>) based in part on the reconstruction in the three-dimensional space (<NUM>); and
wherein prior to aligning the plurality of events (<NUM>) in the current buffer (<NUM>) in the two-dimensional space (<NUM>), the controller (C) is configured to correct each of the plurality of events (<NUM>) within the current buffer (<NUM>) for pose,
characterised in that
correcting the plurality of events (<NUM>) within the current buffer (<NUM>) includes
time-tagging the plurality of events (<NUM>) with a respective event time;
obtaining a respective detector pitch, a respective detector yaw and a respective detector roll of the detector (<NUM>) at the respective event time; and
shifting the plurality of events (<NUM>) in angular space by the respective detector pitch, the respective detector yaw and the respective detector roll.