Ultrasound imaging is commonly used as a non-invasive, diagnostic imaging modality that provides images of the internal volumes of objects in many different fields such as medical diagnostics and non-destructive materials testing. For instance, ultrasound imaging can be used to provide images of internal organs, such as an abdomen or a heart. One limitation in developing handheld ultrasound imaging devices without sacrificing image quality is the requirement of processing large amounts of data that consumes a substantial amount of computational resources. This reliance on substantial computational resources and implications of such resources on the device size and power requirements has limited the development of handheld ultrasound devices that are capable of producing images having the quality offered by conventional (i.e. non-handheld) ultrasound systems.
In light of the above, it would be advantageous to provide a handheld ultrasound system and method that requires or consumes fewer computational resources without sacrificing image quality. Ideally, such systems would be compact, handheld, and utilizable by individuals with no special technical training while still producing images of the same or comparable quality to those produced by conventional or non-handheld ultrasound systems.
The systems, devices and methods disclosed herein are capable of producing high resolution ultrasound images with a handheld ultrasound system with decreased computational requirements. Although specific reference is made to a handheld imaging probe for medical applications, the ultrasound system and methods disclosed herein will find application in many fields, such as non-destructive testing, metrology, materials science, aerospace, transportation infrastructure, dermatology, and dentistry.
The handheld ultrasound device comprises a plurality of components configured to provide decreased size, weight, complexity and power consumption. The handheld ultrasound device may comprise an ultrasound transducer and an analog to digital (“A/D”) converter coupled to the ultrasound transducer. A processor comprising a beamformer can be coupled to the A/D converter and configured to selectively store a plurality of signals from the A/D converter in a memory of the processor. The selective storage of the plurality of samples from the A/D converter can decrease the amount of memory used to generate ultrasound images, which can decrease the size, weight and power consumption of the handheld ultrasound device.
The handheld ultrasound imaging device can be configured for ease of use, and may comprise wireless communication circuitry to transmit images for display. In some instances, the handheld ultrasound device is configured to be held in the hand of a user, and may be configured to allow a person to measure himself or herself. The handheld ultrasound system comprises a housing to contain the measurement components, and the housing is sized, in some instances, such that the user can readily grasp the housing and lift the measurement components within the housing. The compactness and decreased mass of the handheld ultrasound system allow the system to be easily held in the hand and transported. The handheld ultrasound system may comprise a maximum dimension across within a range from about 80 mm to about 200 mm.
In an aspect, an ultrasound device to image an object comprises a processor coupled to the ultrasound transducer. The processor may comprise a tangible medium configured with instructions that when executed cause the processor to selectively store individual samples from an analog-to-digital (A/D) converter. Each of the selected individual samples may correspond to an ultrasound signal from a location in the object and an associated delay time for the ultrasound signal to reach the transducer from the location in the object. The delay time may correspond to a round-trip time of flight to the transducer. A maximum delay error may comprise no more than half of an RF sampling period. Each of the selected individual samples may be selectively stored in a memory of the processor in accordance with a flag table. The A/D converter may be configured to output a plurality of samples and wherein the selected individual samples comprise no more than about 70% of the plurality of samples and optionally no more than about 60%. The plurality of samples from the A/D converter may comprise a plurality of unselected samples. The plurality of unselected samples may be discarded prior to receipt of a last sample from the A/D converter. The delay time may correspond to a round-trip time of flight of the ultrasound signal from the transducer to the location and from the location to the transducer. The ultrasound device may comprise a plurality of transducers. There may be a delay time to said each of the plurality of transducers. The delay time may correspond to a round-trip time of flight to said each of the plurality of ultrasound transducers. For each location in the object there may be a delay time associated with the receipt of the ultrasound signal by the transducer. The sample corresponding to the ultrasound signal received at the transducer may be selected in accordance with a delay time for the transducer. The processor may not comprise a radiofrequency (RF) buffer to store a plurality of samples from the A/D converter. Each of the selectively stored individual samples from the A/D converter may be selected for use with a pixel in no more than one sampling cycle of the A/D converter after being received by the processor. An RF sample from the A/D converter may be selected to be used for a certain pixel or not, in no more than one RF sampling clock cycle after the RF sample is captured. The processor may be configured to generate an image from the selected samples. The processor may comprise a beamformer that utilizes a power draw of no more than 100 mW to generate the image. The ultrasound transducer may comprise a one-dimensional array of ultrasound transducers. The ultrasound transducer may comprise a two-dimensional array of ultrasound transducers. The ultrasound transducer may comprise a plurality of transducers. The plurality of transducers may comprise a number of transducers selected from the group consisting of 64 transducers, 128 transducers, and 256 transducers. The plurality of ultrasound transducers may comprise a number of transducers within a range of 32 transducers to 256 transducers.
In another aspect, an ultrasound device to generate an image of an object may comprise a plurality of transducer elements, a front-end unit, a real-time beamformer, and an image processor. Each transducer element may be associated with a data channel. Each data channel may comprise a transducer that receives ultrasonic energy reflected by the region of interest and generates radio frequency (RF) signals based on the received reflected ultrasonic energy. The front-end unit may amplify and digitize the RF signals received from each data channel to provide RF samples at an RF sampling rate associated with a data clock having a clock cycle. An RF sample may be received by each data channel at each clock cycle corresponding to the RF sampling rate. Each RF sample may be associated with one location in the scanline defined by a trajectory of the beam through the location of interest. The real-time beamformer may have a transmit beamformer and a flag table based receive beamformer. The transmit beamformer may direct a beam of ultrasound energy at a location of interest. The beam may generate ultrasound signals along a scanline defined by a trajectory of the beam through the location of interest. The receive beamformer may receive reflected ultrasound energy from portions of the region of interest that lie along the scanline. The receive beamformer may comprise a flag table generated for each beam and for each data channel and a processor that generates raw image data comprising a plurality of pixels. The flag table may comprise a flag associated with each of the RF samples provided by the front-end unit. An RF index may correspond to a delay time associated with receiving an RF sample based on the data clock. Each flag may be a single-bit binary flag indicator having a positive or a non-positive value. The processor may perform operations in real-time comprising processing each of the RF samples provided by the front-end unit based on the flag table for each of the data channels and for each beam of ultrasound energy directed at the location of interest. The processing may further comprise: 1) receiving an RF sample at a clock cycle of the data clock, the RF sample associated with a location along the scanline defined by a trajectory of the beam through the location of interest; 2) sending the received RF sample to a first pixel in a per-channel image buffer if the flag associated with the received RF sample has a positive value and if the flag is a first positive flag; 3) discarding the received RF sample if the flag associated with the received RF sample has a non-positive value; 4) receiving a subsequent RF sample corresponding to a next clock cycle of the data clock; 5) sending the subsequent RF sample to a next pixel in the per-channel image buffer if the flag associated with the subsequent RF sample has a positive value; 6) discarding the subsequent RF sample if the flag associated with the subsequent RF sample has a non-positive value; 7) repeating steps 4-6 until all channels receive an RF sample for a last pixel in the scanline; and 8) adding the RF samples corresponding to a pixel from all of the data channels to generate an image value for the pixel. The image processor may process the raw image data to provide the processed image data. The delay time may correspond to a round-trip time of flight of the ultrasound signal from a location of the object to the transducer. The location of the object may be a location along a scanline defined by a trajectory of the beam through the region of interest. The flag table may be compressed. The processor may perform further operations comprising decoding the compressed flag table. The compressed flag table may be compressed by a factor greater than 10 compared to a delay table. The compressed flag table may be compressed by a factor greater than 50 compared to a delay table. The flag table based real-time beamformer may be implemented on one or more field programmable gate array (FPGA) chips. An equivalent gate count of active circuitry to implement the flag table based real-time beamformer may be no more than 100,000 exclusive of a memory component. The device may comprise a first dimension no more than 210 mm, a second dimension no more than 75 mm and a third dimension no more than 38 mm. The first dimension may comprise no more than 140 mm, the second dimension may comprise no more than 50 mm and the third dimension may comprise no more than 25 mm. Power may be supplied by an external power module or battery having a battery lifetime of at least about 1 hour when the device is used to scan continuously. A memory of the beamformer may comprise no more than 2.5 KB per channel of a multi-channel beamformer.
In another aspect, a method of processing ultrasound signals received from a plurality of data channels may comprise: 1) directing a beam of ultrasound energy at a region of interest, the beam generating ultrasound signals along a scanline defined by a trajectory of the beam through the region of interest; 2) receiving, by a plurality of data channels, reflected ultrasound signals from portions of the region of interest that lie along the scanline; 3) generating, by the plurality of data channels, radio frequency (RF) signals based on the received reflected ultrasound signals; 4) amplifying and digitizing the generated RF signals received from the plurality of data channels to provide RF samples at an RF sampling rate associated with a data clock having a clock cycle; 5) generating a flag table for each beam and for each data channel; 6) processing each of the RF samples based on the flag table for each of the data channels and for each beam of ultrasound energy directed at the region of interest; and 7) processing the raw image data to provide the processed image data. An RF sample may be received by each of the plurality of data channels at each clock cycle corresponding to the RF sampling rate. The RF sample may be associated with a location along the scanline defined by a trajectory of the beam through the region of interest. The flag table may comprise a flag associated with each of the RF samples. Each RF index may correspond to a delay time associated with receiving an RF sample based on the data clock. Each flag may be a single-bit binary flag indicator having a positive or a non-positive value. Processing may further comprise: 1) receiving an RF sample at a clock cycle of the data clock; 2) sending the received RF sample to a first pixel in a per-channel image buffer if the flag associated with the received RF sample has a positive value and if the flag is a first positive flag; 3) discarding the received RF sample if the flag associated with the received RF sample has a non-positive value; 4) receiving a subsequent RF sample corresponding to a next clock cycle of the data clock, 5) sending the subsequent RF sample to a next pixel in the per-channel image buffer if the flag associated with the subsequent RF sample has a positive value; 6) discarding the subsequent RF sample if the flag associated with the subsequent RF sample has a non-positive value; 7) repeating steps 4-6 until all channels receive an RF sample for a last pixel in the scanline; and 8) adding the RF samples corresponding to a pixel from all data channels to generate an image value for the pixel. The RF sample associated with a location along the scanline may be defined by a trajectory of the beam through the region of interest. The delay time may correspond to a round-trip time of flight of the ultrasound signal from a location of the object to the transducer. The location of the object may be a location along a scanline defined by a trajectory of the beam through the region of interest. The method may comprise compressing the flag table. The method may comprise decoding the compressed flag table.
In another aspect, a system comprises a processor and logic encoded in one or more non-transitory computer-readable media for execution by the processors. When executed, the logic may be operable to perform operations comprising: 1) directing a beam of ultrasound energy at a region of interest; 2) receiving, by a plurality of data channels, reflected ultrasound signals from portions of the region of interest that lie along the scanline; 3) generating, by the plurality of data channels, radio frequency (RF) signals based on the received reflected ultrasonic signals; 4) amplifying and digitizing the generated RF signals received from the plurality of data channels to provide RF samples at an RF sampling rate associated with a data clock having a clock cycle; 5) generating a flag table for each beam and for each data channel; 6) processing each of the RF samples based on the flag table for each of the data channels and for each beam of ultrasound energy directed at the location of interest; and 7) processing the raw image data to provide the processed image data. The beam may generate ultrasound along a scanline defined by a trajectory of the beam through the region of interest. An RF sample may be received by each of the plurality of data channels at each clock cycle corresponding to the RF sampling rate. The RF sample may be associated with a location along the scanline defined by a trajectory of the beam through the region of interest. Each RF index may correspond to a delay time associated with receiving an RF sample based on the data clock. Each flag may be a single-bit binary flag indicator having a positive or a non-positive value. The RF sample may be associated with a location along the scanline defined by a trajectory of the beam through the region of interest. The delay time may correspond to a round-trip time of flight of the ultrasound signal from a location of the object to the transducer. The location of the object may be a location along a scanline defined by a trajectory of the beam through the region of interest. The performed operations may comprise compressing the flag table. The performed operations may comprise decoding the compressed flag table. The system may be implemented on one or more FPGA chips. The system may be implemented by an equivalent gate count of active circuitry that is no more than 100,000 exclusive of a memory component. A memory of the system may require no more than 2.5 KB per channel of a multi-channel beamformer.
All publications, patents, and patent applications mentioned in this specification are herein incorporated by reference to the same extent as if each individual publication, patent, or patent application was specifically and individually indicated to be incorporated by reference.
The novel features of the invention are set forth with particularity in the appended claims. A better understanding of the features and advantages of the present invention will be obtained by reference to the following detailed description that sets forth illustrative embodiments, in which the principles of the invention are utilized, and the accompanying drawings of which:
While various embodiments of the invention have been shown and described herein, it will be obvious to those skilled in the art that such embodiments are provided by way of example only. Numerous variations, changes, and substitutions can occur to those skilled in the art without departing from the invention. It should be understood that various alternatives to the embodiments of the invention described herein can be employed.
In the figures shown herein, like numbers refer to like elements.
The handheld ultrasound device can utilize components that are selected and arranged in such a manner as to provide a decreased size and weight. The handheld ultrasound device can be configured to be held in the hand of a user. The handheld ultrasound device can be configured to allow a patient to conduct a measurement on himself or herself. The handheld ultrasound device can comprise a housing to contain the measurement components, and the housing can be sized such that the user can readily grasp the housing and lift the measurement components within the housing. The compactness and decreased mass of the handheld ultrasound device can allow the system to be easily held in the hand and transported.
The handheld ultrasound device can comprise a maximum dimension across within a range from about 80 mm to about 200 mm, or about 100 mm to about 180 mm, or about 120 mm to about 160 mm, or about 130 mm to about 150 mm. The handheld ultrasound device can comprise a second dimension across within a range from about 10 mm to about 90 mm, or about 20 mm to about 80 mm, or about 30 mm to about 70 mm, or about 40 mm to about 60 mm. The handheld ultrasound device can comprise a third dimension across within a range from about 5 mm to about 45 mm, or about 10 mm to about 40 mm, or about 15 mm to about 35 mm, or about 20 mm to about 30 mm. The handheld ultrasound device can comprise a mass within a range from about 100 grams to about 500 grams, or about 200 grams to about 400 grams, or about 250 grams to about 350 grams.
The handheld ultrasound device can be configured without internal moving parts in order to increase the reliability of the system. The handheld ultrasound device can be configured to be dropped from a distance of about one foot, and provide a change in measurement repeatability and accuracy of no more than 1%, for example.
The handheld ultrasound device can utilize components selected and arranged in such a manner as to require and/or consume less memory and power as compared with conventional or non-handheld ultrasound devices. One or more of the ultrasound beamforming components can be implemented on a field programmable gate array (FPGA). In some instances, all of the beamforming components are implemented on the FPGA. One or more of the ultrasound beamforming components can be implemented on an application specific integrated circuit (ASIC). In some instances, all of the beamforming components are implemented on the ASIC. The FPGA or ASIC can utilize an equivalent gate count of no more than about 1,000,000 gates, no more than about 500,000 gates, no more than about 200,000 gates, no more than about 100,000 gates, no more than about 50,000 gates, no more than about 20,000 gates, or no more than about 10,000 gates. The FPGA or ASIC can utilize an equivalent gate count within a range defined by any two of the preceding values. The FPGA or ASIC can utilize memory resources of no more than about 10,000 kilobits, no more than about 5,000 kilobits, no more than about 2,000 kilobits, no more than about 1,000 kilobits, no more than about 500 kilobits, no more than about 200 kilobits, or no more than about 100 kilobits. The FPGA or ASIC can utilize memory resources within a range defined by any two of the preceding values. The FPGA or ASIC can have a power draw of no more than about 1000 mW, no more than about 500 mW, no more than about 200 mW, no more than about 100 mW, no more than about 50 mW, no more than about 20 mW, or no more than about 10 mW. The FPGA or ASIC can have a power draw within a range defined by any two of the preceding values.
One or more batteries or external power modules can be used to power the handheld ultrasound device. The batteries or external power modules can allow the handheld ultrasound device to be utilized for a lifetime of greater than about 0.5 hours, greater than about 1 hour, greater than about 2 hours, greater than about 5 hours, or greater than about 10 hours when the handheld ultrasound device is in continuous operation. The batteries or external power modules can allow the handheld ultrasound device to be utilized for a lifetime within a range defined by any two of the preceding values.
The handheld ultrasound device can be configured to utilize the systems and methods described herein to operate with reduced memory and computational processing requirements as compared to traditional, non-handheld ultrasound devices. The handheld ultrasound device can be configured to utilize a memory no greater than 68 kB for a 32 channel ultrasound system utilizing the systems and methods described herein. The handheld ultrasound device can be configured to utilize a memory no greater than 2.5 kB per channel of the ultrasound system. The receive (Rx) beamformer can be configured to utilize a memory no greater than 68 kB for a 32 channel ultrasound system. The Rx beamformer can be configured to utilize a memory no greater than 2.5 kB per channel of the ultrasound system.
The systems and methods described herein can allow reduced memory and computational processing requirements while maintaining high-quality ultrasound imaging capabilities. In particular, the systems and methods can allow the ultrasound beamforming operations with minimal error in calculated delay times. The systems and methods described herein can allow operations with errors in delay times that are within half of an RF sampling period.
The handheld ultrasound device can communicate the results of an ultrasound measurement via a communication channel to a portable electronic device 110, such as a tablet, smartphone, smartwatch, smartglasses, or other portable handheld electronic device. The handheld ultrasound device can communicate the results of an ultrasound measurement via a communication channel to a television or computer monitor. The communication channel can be a wired communication channel. The communication channel can be a wireless communication channel. The wireless communication can be via Bluetooth communication or other short distance wireless communication. The wireless communication can be via Wi-Fi communication. The wireless communication can be via any other wireless communication known to one having skill in the art.
The results can be partially or fully processed ultrasound images. All processing of the ultrasound image can be performed on the handheld ultrasound device. For instance, the handheld ultrasound device can include hardware or software elements that allow ultrasound signals to be converted into electronic representations. The handheld ultrasound device can further include hardware or software elements that allow processing of the electronic representations to extract, for instance, an ultrasound image. The handheld ultrasound device can further include hardware or software elements that allow post-processing of the ultrasound image to improve the image quality.
The portable electronic device can display results and analysis of the ultrasound measurement on one or more applications 120. The applications may comprise mobile applications, desktop applications, laptop application, or television applications. The one or more applications can comprise an environment that displays the ultrasound image. The one or more applications can comprise an environment that allows sharing of the ultrasound image with a specialist, such as a radiologist or ultrasound technician. The specialist can interpret the results of the ultrasound image to provide clinical advice, such as a diagnosis, based on the results of the ultrasound image. In this manner, the handheld ultrasound system can be used by a patient or by a health care provider even in facilities lacking access to specialists capable of interpreting ultrasound results. The one or more applications can allow sharing of ultrasound images with a specialist in near real time. This capability can allow the specialist to provide instructions to the user on how to operate the handheld ultrasound device. For instance, the near real time image sharing capability can allow the specialist to direct a patient or health care provider to move the handheld ultrasound device to a different location on the patient's body. The real time image sharing capability can provide near real time feedback on whether the handheld ultrasound is properly positioned to obtain ultrasound images of a desired location within the patient's body. In this manner, the handheld ultrasound system can be used even by a patient or health care provider who has little or no experience in the use of ultrasound systems.
As described in more detail below, the ultrasound device 100 can process the reflected ultrasonic waves and can send processed image data to a display device 110. The display device can display an ultrasound image 112 based on the processed image data received from the ultrasound device. In some cases, the ultrasound image can show one or more objects located in a particular space that reflect ultrasonic waves emitted by the ultrasound device back to the ultrasound device. The display device can be located at a position near to the ultrasound device, such as in the same room as the ultrasound device. The display device can be located at a position remote from the ultrasound device. For instance, the ultrasound device can be located at a physician's office while the display device can be located at a hospital or the office of a specialist who is able to interpret ultrasound images. The display device can be configured to communicate with an image reproduction device such as a digital display, a printer, a wearable device, an augmented-reality device, a virtual-reality device, a 3-dimensional (3D) display, etc.
In some cases, each of the transducer elements can be of the same type. For example, the transducer elements can be piezoelectric transducer elements. The transducer elements can be capacitive transducer elements. The transducer elements can be any transducer element as is known to one having skill in the art. In some cases, the transducer elements can vary in type. For instance, some transducer elements can be piezoelectric transducer elements while other transducer elements are capacitive transducer elements. When an electrical pulse is applied to a given transducer element, the transducer element vibrates and produces the ultrasound, or ultrasonic wave, which is directed at the region of interest. Conversely, when a given transducer element is vibrated by returning ultrasound echoes from objects in the region of interest, the transducer element produces radio frequency (RF) signals. Since the transducer elements can act to both produce and receive ultrasound signals, the ultrasound device can further comprise a switch 302. The switch may comprise a plurality of switches. The switch may comprise a switch network. The switch may comprise a multiplexer (mux). The switch may comprise a demultiplexer (demux). The switch may comprise a plurality of muxes. The switch may comprise a plurality of demuxes.
The ultrasound device can further comprise a transmit (Tx) beamformer 310. The Tx beamformer causes a pulse generator 312 to generate electrical signals based on transmit beamforming. These pulses are then applied to the transducer array to direct ultrasound waves to the region of interest. The electrical signals or pulses can be produced at a predetermined pulse rate. For instance, the electrical signals can be produced at a rate greater than 100 pulses per second, greater than 200 pulses per second, greater than 500 pulses per second, greater than 1000 pulses per second, greater than 2000 pulses per second, greater than 5000 pulses per second, or greater than 10000 pulses per second. The electrical signals may be produced at a pulse rate within a range defined by any two of the preceding values. The pulse generator may control the length of a pulse. The pulse generator may control the total number of pulses applied during a signal acquisition. The pulse generator may control the amplitude of the electrical signals, which may in turn control the intensity and energy of an ultrasound beam produced by the transducer array.
The transducer array can be positioned in direct contact with a surface, such as the body of a patient. For instance, the transducer array can be positioned in direct contact with the abdomen of a patient. In some cases, the transducer array is not in direct contact with the surface. For example, there can be water or another medium between the transducer array and the surface. In some cases, an ultrasound gel can be used to couple the transducer array with a surface. The transducer array shapes a beam of ultrasonic waves or pulses to give the beam a particular size and shape at various depths within a particular space beneath the surface. In some cases, the transducer array focuses ultrasonic waves to a particular location. In other cases, the transducer array produces ultrasonic waves which are not localized to a particular location. For instance, the transducer array can utilize synthetic aperture imaging. The transducer array can utilize multi-beam imaging. The transducer array can scan the ultrasound beam over region of interest.
When the transducer array receives ultrasonic waves reflected by objects in the region of interest, the transducer array generates RF signals based on the reflected ultrasonic waves. The reflected ultrasonic waves can also be referred to as ultrasonic echoes, or ultrasound echoes, or echoes. The RF signals can also be referred to as raw RF data.
Reception of the ultrasound signals is controlled by a receive (Rx) beamformer 320. The Rx beamformer can comprise a table 322. The table can comprise a flag table or a compressed flag table, as discussed herein. The Rx beamformer can comprise a table decoder 324, as described herein. The table decoder can comprise a flag table decoder, as described herein. The Rx beamformer can be communicatively coupled to an Rx front-end unit 326. The Rx front-end unit can amplify and digitize RF signals from the transducer array to provide RF samples. The Rx front-end unit can comprise an analog-to-digital converter (ADC). The Rx front-end unit can send the RF samples to the Rx beamformer. In some instances, the Rx front-end unit amplifies and/or filters the RF signals before digitizing them. In some cases, the amplifier gain of the Rx front-end unit can vary over time, in order to compensate for attenuation of the ultrasound signals.
The Rx beamformer can generate raw image data based on the RF samples, where the Rx beamformer performs beamforming functions in order to generate the raw image data. The Rx beamformer can create an intensity map of the reflected ultrasonic waves corresponding to every point in the field of view. The Rx beamformer can map the received signal to a location in an image and coherently sum the signals from all transducer elements for every point in the field of view.
Given a high enough sampling rate, one or more of the transducers may receive a plurality of RF samples corresponding to an ultrasound signal emanating from a particular location in a region of interest. In the far field, this may occur when the sampling rate is greater than twice the spacing between pixels in an image line divided by the speed of sound. Each of the plurality of RF samples corresponding to the ultrasound signal from the location may be regarded as conveying information about the location that is at least partially redundant. Thus, any one of the plurality of RF samples corresponding to the ultrasound signal from the location may be sufficient to reconstruct image information for that location. The Rx beamformer may therefore select to utilize only a fraction of the RF samples corresponding to the ultrasound signal from the location. The Rx beamformer may select to utilize one or more of the RF samples in order to reconstruct image information for the location. For instance, the Rx beamformer may select to utilize the RF sample that is closest to the center of a given pixel. Utilizing only a fraction of the RF samples may allow for a reduction in the memory requirements for the handheld ultrasound device.
The Rx beamformer can determine which of the RF samples are to be used to generate raw image data based on the table. The table can indicate which RF samples are to be used to generate raw image data and which RF samples are not to be used to generate raw image data. The table can be predetermined in that information in the table is generated prior to an imaging session. The table can be pre-loaded in the Rx beamformer or in any other suitable storage location. During runtime, the Rx beamformer can check the table during an imaging session in order to determine which RF samples to use to generate raw image data. Implementations of the table are described in more detail herein.
The Rx beamformer can generate raw image data based on the RF samples that are to be used to generate raw image data. The raw image data can then be sent to an image processor 330. The image processor can process the raw image data received from the Rx beamformer to provide processed image data.
The ultrasound device can further comprise one or more sensors 340. The sensors can include position sensors, rotational sensors, tilt sensors, gyroscopes, or accelerometers for positioning the ultrasound device. The sensors can comprise any other positioning sensor as is known to one having skill in the art.
The ultrasound device can further comprise one or more peripherals 350. The peripherals can comprise one or more display devices. The peripherals can send processed image data to remote display devices, such as a 2D display, a 3D display, a printer, a wearable device, an augmented-reality device, or a virtual-reality device. Remote display devices can comprise stand-alone computers, tablet computers, smartphones, dedicated monitors, etc. The peripherals can comprise one or more medical devices, such as an electrocardiograph (ECG or EKG), pulse oximeter, position tracker, needle guide, or any other medical device as is known to one having skill in the art.
One or more of the components 300, 302, 310, 312, 320, 322, 324, 326, 330, 340, or 350 of the ultrasound device can be implemented on an FPGA. In some cases, all of the components 300, 302, 310, 312, 320, 322, 324, 326, 330, 340, or 350 of the ultrasound device are implemented on an FPGA. In some cases, components 320, 322, and 324 are implemented on an FPGA. One or more of the components 300, 302, 310, 312, 320, 322, 324, 326, 330, 340, or 350 of the ultrasound device can be implemented on an ASIC. In some cases, all of the components 300, 302, 310, 312, 320, 322, 324, 326, 330, 340, or 350 of the ultrasound device are implemented on an ASIC. In some cases, components 320, 322, and 324 are implemented on an ASIC. The FPGA or ASIC can utilize an equivalent gate count of no more than about 1,000,000 gates, no more than about 500,000 gates, no more than about 200,000 gates, no more than about 100,000 gates, no more than about 50,000 gates, no more than about 20,000 gates, or no more than about 10,000 gates. The FPGA or ASIC can utilize an equivalent gate count within a range defined by any two of the preceding values. The FPGA or ASIC can utilize memory resources of no more than about 10,000 kilobits, no more than about 5,000 kilobits, no more than about 2,000 kilobits, no more than about 1,000 kilobits, no more than about 500 kilobits, no more than about 200 kilobits, or no more than about 100 kilobits. The FPGA or ASIC can utilize memory resources within a range defined by any two of the preceding values. The FPGA or ASIC can have a power draw of no more than about 1000 mW, no more than about 500 mW, no more than about 200 mW, no more than about 100 mW, no more than about 50 mW, no more than about 20 mW, or no more than about 10 mW. The FPGA or ASIC can have a power draw within a range defined by any two of the preceding values.
The transducer array can be any type of transducer array as is known to one having skill in the art. For example, the transducer array can be a one-dimensional array. The transducer array can be a linear sequential array. The transducer array can be a linear phased array. The transducer array can be a curved or convex sequential array. The transducer array can be an annular array. The transducer array can be a 2-dimensional array. The transducer can be a 2-dimensional rectangular array. The transducer array can include any number of transducer elements.
The transducer array shapes a beam of ultrasonic waves or pulses to give the beam a particular size and shape at various depths within a particular space beneath a surface. In some cases, the transducer array focuses ultrasonic waves to a particular location. In other cases, the transducer array produces ultrasonic waves which are not localized to a particular location. For instance, the transducer array can utilize synthetic aperture imaging. The transducer array can utilize multi-beam imaging. The transducer array can scan the ultrasound beam over the region of interest.
Regardless of the manner in which the transducer array directs ultrasonic waves at the region of interest, reflected ultrasound signals will emanate from multiple locations within the region of interest. For ease of illustration,
The location can comprise a portion of a region of interest such as an organ in a person's body. Multiple locations can comprise multiple different portions of the region of interest. As such, ultrasound signals received from a set of locations allow reconstruction of an image of the region of interest.
The distance between each transducer element and each specific location, as well as the speed of ultrasound signals, can be known or predetermined. The round-trip time of flight is the time it takes for an ultrasound wave to travel from one or more transmitting transducer elements to a given region of interest, to be reflected, and to be received by a transducer element. For a given signal, the transmitting transducer element can be the same as the receiving transducer element. However, transmitting transducer elements and receiving transducer elements are not necessarily the same. For example, the round-trip delay can be the one-way delay from one or more transmitting elements to a location plus the one-way delay from the field point to a different receiving transducer element. This round-trip time of flight can be referred to as a delay time. The delay time of each respective signal can be converted to a distance.
Due to the geometric relationships between the location and the various transducer elements, an ultrasound signal emanating from the location 420 is first received by channel 402. Prior to receipt of the ultrasound signal from the location, RF samples received at channel 402 contain no information that can be used to reconstruct one or more image pixels corresponding to that location. Such RF samples are indicated as white boxes in
The schematics detailed in
RF samples from all receiving transducer elements can be used. That is to say, a pixel in an image can be reconstructed using multiple RF samples received by multiple transducer elements. For instance, one or more RF samples from each transducer element can be used to reconstruct a pixel in an image.
When the RF data is sampled at a high enough sampling frequency, each receiving transducer element can receive a larger number of RF samples than the number of image pixels corresponding to a line in an image for a given data acquisition. An RF sample that is used in reconstructing a line in an image can be used only once for a single pixel for each line. The Rx beamformer can determine whether each RF sample received by each channel is to be used, if at all, in the reconstruction of an image or one or more pixels in an image. A used RF sample may be used for reconstruction of a fraction of the total number of image pixels. In some cases, a used RF sample may be used for reconstruction of one or more image pixels.
A trend can arise when examining the relationships between ultrasound signals obtained at a single transducer element for locations that are located near to one another. Each used RF sample received by a given transducer can be associated with a location. The locations can be indexed by image pixel index numbers. The pixel indices can be defined within each image line of an image. The pixel index can start at the location in the line that is closest to the transducer array. The pixel index can increase for locations that are further from the transducer array.
For each transducer, an RF sample received earlier in time can contribute to the reconstruction of an image pixel located closer to that transducer. For instance, the first used RF sample of a channel can be associated with the first image pixel of an image line, the second used RF sample can be associated with the second image pixel of the image line, and so on. The Rx beamformer can continuously increase the pixel index for each Rx channel.
In both the strongly non-linear and nearly linear portions of the delay curve, the delay time can increase monotonically with the pixel index. The combination of sparsity, periodicity, and monotonicity can allow compression of the table. This, in turn, can allow for a significant reduction in the computational resources required to carry out Rx beamforming on a handheld ultrasound device. For instance, compression of the table can allow for a significant reduction in the memory resources required to carry out Rx beamforming on a handheld ultrasound device.
The table can include positive indicators that indicate which RF samples are to be used to generate image data. The table can also include negative indicators that indicate the RF samples that are not to be used to generate image data. An indicator can associate with each RF sample received by each channel. In other words, each RF sample can be associated with either a positive indicator or a negative indicator.
The table can be referred to as a flag table. The flag table can utilize positive flags as positive indicators and negative flags as negative indicators. In this manner, each RF sample can be associated with either a positive flag or a negative flag. Each indicator or flag can be a 1-bit indicator. For example, a positive indicator can be a binary “1”, or a “1-flag”. A negative indicator can be a binary “0”, or a “0-flag”. Other binary conventions can be utilized, such as assigning a 0-flag as a positive indicator and a 1-flag as a negative indicator. Alternatively, more than one bit can be used as an indicator. In such cases, any binary coding scheme can be used to assign positive and negative indicators.
For each RF sample from each channel, the RF sample can be used, or stored into a memory device, if the flag is a 1-flag. The RF sample can be discarded, or not stored into memory, if the flag is a 0-flag. An RF sample with a 1-flag and associated with an ith image pixel can be stored in association with the ith image pixel in an image line of an image buffer. In some cases, two or more RF samples (originating, for instance, from two or more channels), each with a 1-flag and associated with an ith image pixel, can be added together in the image buffer.
The image buffer can store image data. In some cases, the image buffer can not store an entire set of image data, but instead can store only one or more partial or complete image lines. The image buffer can store multiple lines. Once the one or more image lines have been stored within the image buffer and are ready for further processing, the image data for the one or more lines can be transferred to the image processor before the beamformer starts to receive the RF samples for the next image line. Thus, it can be sufficient for the image buffer to have a memory capacity for only one image line or multiple image lines. It can not be necessary for the image buffer to have a memory capacity for the full image data.
Because all RF samples are processed immediately when they are received, there can be no need for an RF buffer. The flag table can replace a delay table which stores the delay values for all image pixels. In some cases, the flag table can require a smaller amount of memory than a delay table. Moreover, the real-time processing capability enabled by the flag table can eliminate the need for an RF buffer, further reducing the memory requirement.
As shown in
Delay times can be pre-calculated based on every distance from each transducer element to each focus point in space that is to be reconstructed. Each delay time can be saved in a look-up table. Each receiving transducer element can have a predetermined delay time associated with each location in a space being imaged. The delay times can be stored in advance of imaging. Similarly, the flag table, which is constructed from the delay times, can be stored in advance of imaging. The flag table can then be later accessed during operation. In some cases, the flag table can not change as long as the geometry of the imaging space, the transducer array, and/or the imaging scheme do not change.
To determine which of the RF samples are to be used to generate image data, the Rx beamformer can determine which of the RF samples are associated with positive indicators in the flag table. In such a determination, positive indicators can indicate the RF samples that are to be used to generate image data. For example, if a given RF sample is associated with a 1-flag in the flag table, that RF sample can be used to generate image data. Accordingly, the Rx beamformer can send incoming RF samples associated with a 1-flag to the image buffer.
To determine which of the RF samples are not to be used to generate image data, the Rx beamformer can determine which of the RF samples are associated with negative indicators in the flag table. In such a determination, negative indicators can indicate the RF samples that are not to be used to generate image data. For example, if a given RF sample is associated with a 0-flag in the flag table, that RF sample can not be used to generate raw image data. Accordingly, the Rx beamformer can ignore incoming RF samples associated with a 0-flag.
The Rx beamformer can send the RF samples that are to be used to generate image data to an image buffer, where the RF samples that are to be used to generate image data are added to the corresponding image pixel in the image buffer. The index of the corresponding image pixel can be one more than the number of RF samples in this Rx channel that have been used so far. The Rx beamformer can send each RF sample associated with a positive indicator to the image buffer immediately after acquisition of that RF sample.
An RF sample can be received by each channel at every data clock. The Rx beamformer can check the indicator or flag for the current RF sample. If the flag is a 0-flag, the Rx beamformer can discard the RF sample. If the flag is a 1-flag, the Rx beamformer can send the RF sample to an image buffer. The first used RF sample of the channel can be added to the first pixel in the image line of the image buffer, and the following used RF samples can be added to the following pixels in the image line of the image buffer, in the order of arrival.
When the slowest channel receives the RF sample for a given pixel, the RF samples from all channels for this pixel can be summed to calculate the image value of this pixel. For instance, the slowest channel can be one of the two edge channels of the active Rx aperture, or the first or last transducer in a line of transducers. Thus, the Rx beamformer can only need to check the progress of the two edge channels. When the two edge channels receive RF samples for a given pixel, the Rx beamformer can presume that all other channels have received RF samples for the pixel.
The Rx beamformer can discard the RF samples that are not to be used to generate image data. By not storing the RF samples that are not to be used to generate image data, the memory consumption can be reduced.
The 1-flags and 0-flags in the flag table can have a characteristic pattern of bits, and this pattern can be used to compress the flag table further. The flag table can be compressed in order to further reduce memory consumption. The compression can occur when the flag table is constructed and before the Rx beamformer accesses the flag table during runtime. During runtime, the Rx beamformer can decode the compressed flag table in order to determine which of the RF samples are to be used to generate raw image data. The flag table can be decoded in real time, so as to determine which RF samples to use in real time.
The flag table can include a predetermined pattern of positive indicators and negative indicators which can be substantially periodic. The periodicity can be especially pronounced in the far field. The periodicity can arise because, in the far field, the distances from a given transducer element to each location increases almost linearly, as a result of the uniform spacing between image pixels in an image line. Also, the delay times associated with those distances can increase substantially linearly.
As shown in
The space surrounding a given transducer element can be divided into two zones or regions. The zone relatively close to the transducer element can be referred to as the near field, and the zone further from the transducer element can be referred to as the far field. The behavior of the delay curve determines how NZ changes when moving from the near field to the far field. An initial value of NZ can be determined by the starting image depth, the transducer element location, and the angle of the image line. For instance, a shallow imaging depth will produce a relatively small initial NZ, as the difference in the distance from a transducer to a first image pixel and the distance from the transducer to a second image pixel located adjacent to the first image pixel is relatively small for a shallow imaging depth. A deeper imaging depth will produce a relatively large initial NZ, as the difference in the distance from a transducer to a first image pixel and the distance from the transducer to a second image pixel located adjacent to the first image pixel is relatively large for a deeper imaging depth. At near field, NZ can be relatively small. NZ can monotonically increase with distance from the transducer to a location. At far field, NZ can converge to a nearly constant number which is determined by the RF sampling rate and the image pixel spacing. Thus, for instance, NZ can converge to a value of 7 in the far field, as in
For portions of the flag table where the delay curve is approximately linear, less information can need to be saved because information specifying the slope of the delay curve, which does not change much, can be saved instead. The value of NZ can be correlated to the slope of the delay curve. Because the delay curve is mostly linear, but not perfectly linear, the slope of delay curve can change over the region being imaged. Thus, the compressed flag table can store a representation of only the initial slope of the delay curve and the locations where the slope of the delay curve changes. As such, the compressed flag table may not need to save all 1-flags and 0-flags. This can all reduce the size of the compressed flag table.
The flag table encoder can store the RF sample index of the first positive indicator. The flag table encoder can assign an initial NZ based on the number of negative indicators between the two first positive indicators. The flag table encoder can assume that the next positive indicator will be attained after NZ negative indicators. The flag table encoder can examine the flag table to determine whether this behavior is observed. If the flag table fails to conform to this behavior, the flag table encoder can alter the value of NZ in order to account for the non-linear behavior of the delay curve. If a negative indicator is observed when a positive indicator is expected, the flag table encoder can alter the value of NZ by increasing this value. If a positive indicator is observed when a negative indicator is expected, the flag table encoder can regard this behavior as an exception and leave NZ at its present value.
The predetermined pattern can be related to the slope of the delay curve. Information about the slope can be stored in the compressed flag table. The delay curve can be defined as the delay time as a function of image pixel index. The slope information can be predetermined and already stored in the compressed flag table before imaging. The slope can be equivalent to NZ, as NZ=round(slope−1).
The flag table encoder can start with the index of the first 1-flag and an initial NZ for the first two 1-flags. The flag table encoder can then scan the flag table, expecting a 1-flag after every NZ 0-flags based on the predetermined pattern. In some cases, a flag can not match this expectation. Such a disagreement between the position of the 1-flag predicted by NZ and the actual position of the 1-flag can indicate that the slope of the delay curve has changed or there has been a quantization error. The beamformer can only need to store the index of each flag at which this disagreement occurs. This can compress the data in the flag table.
Owing to the nature of the delay curve, the number of 0-flags between two 1-flags can only increase with larger and larger pixel index. As such, when there is an unexpected 0-flag, it can be assumed that the slope has increased. Thus, when there is an unexpected 0-flag, the flag table encoder can monotonically increase NZ by 1, as more 0-flags between two 1-flags can be expected from the functional form of the delay curve. The next flag can be expected to be a 1-flag.
In some cases, an unexpected 1-flag can occur such that there are fewer 0-flags between two 1-flags than expected from NZ. The functional form of the delay curve can lead to a belief that this should not happen. Thus, in such a case, a quantization error can be presumed. An unexpectedly early 1-flag can be considered an exception. In the case of an unexpectedly early 1-flag, the flag table encoder can keep the current NZ. The flag table encoder can store the exception. The next flag can be expected to be a 0-flag. The flag table encoder can continue scanning until the last flag has been checked.
The aforementioned activities can produce a compressed flag table. The compressed flag table can comprise an index of the RF sample at which the first 1-flag occurs, an initial NZ, and a list of the indices of RF samples that do not match the expected pattern. The list of RF sample indices that do not match the expected pattern can comprise a list of unexpected 0-flags and unexpected 1-flags. Since the compressed flag table can store only a few pieces of information that specify the full pattern of 1-flags and 0-flags in the flag table, as opposed to a full list of 1-flags and 0-flags stored in the flag table, the compressed flag table can be further substantially reduced in size. For instance, a compressed flag table for an ultrasound system utilizing 32 channels and 6400 RF samples per channel, with an image resolution of 76×761 pixels, can require only approximately 68 kB of storage space. This can be compared to storage space of approximately 1.86 MB for the full flag table and 3.93 MB for a delay table for an ultrasound system operating with the same parameters. Thus, the compressed flag table can reduce the storage requirements by a factor of greater than 25 compared to the full flag table and by a factor of greater than 50 compared to the delay table. The compressed flag table can reduce the storage requirements by a factor of greater than 5, greater than 10, greater than 50, greater than 100, greater than 250, greater than 500, or greater than 1000 compared to the full flag table. The compressed flag table can reduce the storage requirements by a factor of greater than 5, greater than 10, greater than 25, greater than 100, greater than 250, greater than 500, or greater than 1000 compared to the delay table.
The Rx beamformer can decode the compressed flag table at runtime. The first data entries in the compressed flag table can comprise the index of the first used RF sample and an initial NZ. The beamformer can utilize a counter to track the number of 0-flags that have occurred since the last 1-flag. In some cases, no RF sample is stored until the current RF sample index reaches the index of the first used RF sample. When the current RF sample index reaches the value of the first index, the RF sample can be stored to the first image pixel location in the image buffer. The Rx beamformer can then skip the next NZ samples before storing an RF sample to the next location in the image buffer, which can occur when the counter reaches the current NZ. The Rx beamformer can account for indices that do not match the flag pattern expected from the value of NZ. When the current RF sample index reaches the value of the next data entry in the compressed flag table, which may store the next RF sample index that does not match the expected flag pattern, the Rx beamformer may recognize that the current RF sample does not match the expected flag pattern. For instance, if the beamformer notes an unexpected 1-flag before the counter reaches a count of NZ, this can indicate a quantization error. In such case, the sample can be stored to the image buffer and the Rx beamformer can start counting the number of 0-flags until the counter again reaches NZ. If the beamformer notes an unexpected 0-flag when the counter reaches NZ, this can indicate a change in the slope of the delay curve. In such case, the sample can be discarded and the beamformer can increase the value of NZ by one. This process can be repeated until the last pixel in the image line is reconstructed.
In step 902, one or more beams of ultrasound energy are directed at a region of interest. The one or more beams can generate ultrasound signals along a scanline corresponding to a line in an image. The scanline can be defined by a trajectory of the one or more beams through the region of interest.
In step 904, ultrasound signals are received from portions of the region of interest. The ultrasound signals can arise from reflections of the ultrasound energy from portions of the region of interest that lie along a scanline of the one or more beams. The ultrasound signals can be received by one or more ultrasound transducers in one or more ultrasound transducer arrays. Each of the one or more ultrasound transducers can be referred to as a data channel.
In step 906, RF signals are generated based on the received ultrasound signals. The received signals can arise from reflections of the ultrasound energy from portions of the region of the interest that lie along a scanline of the one or more beams. The RF signals can be generated by causing each of the one or more transducers to vibrate.
In step 908, the RF signals received from the plurality of channels are amplified and digitized. The RF signals can be sampled to provide RF samples at an RF sampling rate that is associated with a data clock. The data clock can have a clock cycle. At each clock cycle, an RF sample can be received by each of the one or more data channels. Each RF sample can be associated with an ultrasound signal emanating from a location along a scanline of the one or more beams.
In step 910, a flag table is generated for each beam and for each data channel. The flag table can comprise a flag associated with each of the RF samples. The flag table may comprise an ordered list of flags. The ordering may correspond to the RF sample index. For instance, the first flag may correspond to the first RF sample index, the second flag may correspond to the second RF sample index, etc. The RF sample index can correspond to a delay time associated with receiving an RF sample. The delay time can be based on the data clock. Each flag can be a single-bit binary flag indicator. Each binary flag indicator can have a positive or a negative value. The positive value can comprise a 1-flag. The negative value can comprise a 0-flag.
In step 912, the flag table is compressed. The compression of the flag table can comprise the step of assigning an initial NZ based on the number of negative binary flag indicators occurring between the first and second positive binary flag indicators in the flag table. The compression can further comprise assuming that the next positive indicator will be attained after NZ negative indicators and examining the flag table to determine whether this behavior is observed. The compression can further comprise storing the index of the flag at which an expected value failed to occur if the flag table fails to conform to this behavior. If an unexpected 1-flag occurs, the compression can comprise storing the index of the unexpected 1-flag. If an unexpected 0-flag occurs, the compression can comprise storing the index of the unexpected 0-flag and incrementing the value of NZ. The compression can comprise continuing to scan the flag table until the last flag has been checked.
In step 914, the compressed flag table is decoded. The decoding of the compressed flag table can comprise noting the index of the first used RF sample and an initial NZ. The decoding of the compressed flag table can further comprise utilizing a counter to track the number of 0-flags that have occurred since the last 1-flag. The decoding of the compressed flag table can further comprise storing a first used RF sample to a first image pixel location in an image buffer when the current RF sample index reaches the value of the first used RF sample index. The decoding of the compressed flag table can further comprise skipping the next NZ samples before storing an RF sample to the next location in the image buffer when the counter reaches NZ. The decoding of the compressed flag table can further comprise accounting for indices that do not match the flag pattern expected from the value of NZ. The decoding of the compressed flag table can further comprise storing a sample to the image buffer when an unexpected 1-flag is encountered before the counter reaches a count of NZ. The decoding of the compressed flag table can further comprise discarding a sample when an unexpected 0-flag is encountered when the counter reaches a value of NZ and incrementing the value of NZ. The decoding of the compressed flag table can further comprise repeating this process until the last pixel in the image line is reconstructed.
In step 916, each of the RF samples is processed based on the flag table. The processing can occur for each data channel and for each ultrasound beam directed to the region of interest. The data channels can comprise one or more edge channels characterized by being located at a farthest point from the center of the transducer array. The data channels can comprise two edge channels. For instance, a linear transducer array may comprise two edge channels corresponding to the ends of the linear array. The data channels can comprise more than two edge channels. For instance, a square transducer array may comprise four edge channels corresponding to the corners of the square array. In another example, a circular transducer array may compromise a plurality of channels located on an outermost radius of the circular array. The data channels can comprise zero edge channels. For instance, an annular array may have all channels located at the same distance from a center of the array and therefore may have no edge channels.
The processing can comprise receiving an RF sample at a first clock cycle of the data clock. The RF sample can be associated with a location along a scanline defined by a trajectory of one or more ultrasound beams through a region of interest. The processing can further comprise sending the RF sample to a first pixel in a per-channel image buffer if the flag associated with the received RF sample has a positive indicator value. The processing can comprise sending the RF sample to a first pixel in a per-channel image buffer only if the flag associated with the received RF sample is the first positive flag. The processing can further comprise discarding the received RF sample if the flag associated with the received RF sample has a negative indicator value. The processing can further comprise receiving a subsequent RF sample corresponding to a next clock cycle of the data clock. The processing can further comprise sending the subsequent RF sample to a first pixel in a per-channel image buffer if the flag associated with the subsequent RF sample has a positive indicator value. The processing can comprise sending the subsequent RF sample to a first pixel in a per-channel image buffer only if the flag associated with the received RF sample is the first positive flag. The processing can further comprise discarding the subsequent RF sample if the flag associated with the subsequent RF sample has a negative indicator value. The processing can further comprise repeating receiving and either retaining or discarding each subsequent RF sample until all edge channels receive the RF samples corresponding to the last image pixel in an image line. The processing can further comprise adding the RF samples corresponding to a pixel from all data channels to generate an image value for the pixel.
In step 918, the raw image data is processed to provide processed image data. The processing can comprise any processing as is known to one having skill in the art.
The method 900 can produce a maximum delay error that is no more than half of an RF sampling period. The method 900 can allow a decision about whether an RF sample is to be used for a certain pixel or not in less than one RF sampling clock cycle after the data sample is captured.
A person of ordinary skill in the art will recognize many variations, alterations and adaptations based on the disclosure provided herein. For example, the order of the steps of the method 900 can be changed, some of the steps removed, some of the steps duplicated, and additional steps added as appropriate. Some of the steps can be performed in succession. Some of the steps can be performed in parallel. Some of the steps can be performed once. Some of the steps can be performed more than once. Some of the steps can comprise sub-steps. Some of the steps can be automated and some of the steps can be manual. The processor as described herein can comprise one or more instructions to perform at least a portion of one or more steps of the method 900.
The systems and methods described herein can be utilized to reconstruct ultrasound images
Digital Processing Device
In some embodiments, the platforms, systems, media, and methods described herein can comprise a digital processing device, or use of the same. In further embodiments, the digital processing device can comprise one or more hardware central processing units (CPUs) or general purpose graphics processing units (GPGPUs) that carry out the device's functions. In still further embodiments, the digital processing device can further comprise an operating system configured to perform executable instructions. In some embodiments, the digital processing device can be optionally connected to a computer network. In further embodiments, the digital processing device can be optionally connected to the Internet such that it accesses the World Wide Web. In still further embodiments, the digital processing device can be optionally connected to a cloud computing infrastructure. In other embodiments, the digital processing device can be optionally connected to an intranet. In other embodiments, the digital processing device can be optionally connected to a data storage device.
In accordance with the description herein, suitable digital processing devices can include, by way of non-limiting examples, server computers, desktop computers, laptop computers, notebook computers, sub-notebook computers, netbook computers, netpad computers, set-top computers, media streaming devices, handheld computers, Internet appliances, mobile smartphones, tablet computers, personal digital assistants, video game consoles, and vehicles. Those of skill in the art will recognize that many smartphones are suitable for use in the system described herein. Those of skill in the art will also recognize that select televisions, video players, and digital music players with optional computer network connectivity are suitable for use in the system described herein. Suitable tablet computers include those with booklet, slate, and convertible configurations, known to those of skill in the art.
In some embodiments, the digital processing device can comprise an operating system configured to perform executable instructions. The operating system can be, for example, software, including programs and data, which manages the device's hardware and provides services for execution of applications. Those of skill in the art will recognize that suitable server operating systems include, by way of non-limiting examples, FreeBSD, OpenBSD, NetBSD®, Linux, Apple® Mac OS X Server®, Oracle® Solaris®, Windows Server®, and Novell® NetWare®. Those of skill in the art will recognize that suitable personal computer operating systems include, by way of non-limiting examples, Microsoft® Windows®, Apple® Mac OS X®, UNIX®, and UNIX-like operating systems such as GNU/Linux®. In some embodiments, the operating system is provided by cloud computing. Those of skill in the art will also recognize that suitable mobile smart phone operating systems include, by way of non-limiting examples, Nokia® Symbian® OS, Apple® iOS®, Research In Motion® BlackBerry OS®, Google® Android®, Microsoft® Windows Phone® OS, Microsoft® Windows Mobile® OS, Linux®, and Palm® WebOS®. Those of skill in the art will also recognize that suitable media streaming device operating systems include, by way of non-limiting examples, Apple TV®, Roku®, Boxee®, Google TV®, Google Chromecast®, Amazon Fire®, and Samsung® HomeSync®. Those of skill in the art will also recognize that suitable video game console operating systems include, by way of non-limiting examples, Sony® PS3®, Sony® PS4®, Microsoft® Xbox 360®, Microsoft Xbox One, Nintendo® Wii®, Nintendo® Wii U®, and Ouya®.
In some embodiments, the device can include a storage and/or memory device. The storage and/or memory device can be one or more physical apparatuses used to store data or programs on a temporary or permanent basis. In some embodiments, the device can be volatile memory and requires power to maintain stored information. In some embodiments, the volatile memory can comprise dynamic random-access memory (DRAM). In some embodiments, the device can be non-volatile memory and retains stored information when the digital processing device is not powered. In further embodiments, the non-volatile memory can comprise flash memory. In some embodiments, the non-volatile memory can comprise ferroelectric random access memory (FRAM). In some embodiments, the non-volatile memory can comprise phase-change random access memory (PRAM). In other embodiments, the device is a storage device including, by way of non-limiting examples, CD-ROMs, DVDs, flash memory devices, magnetic disk drives, magnetic tapes drives, optical disk drives, and cloud computing based storage. In further embodiments, the storage and/or memory device is a combination of devices such as those disclosed herein.
In some embodiments, the digital processing device can include a display to send visual information to a user. In some embodiments, the display can be a cathode ray tube (CRT). In some embodiments, the display can be a liquid crystal display (LCD). In further embodiments, the display can be a thin film transistor liquid crystal display (TFT-LCD). In some embodiments, the display can be an organic light emitting diode (OLED) display. In various further embodiments, an OLED display can be a passive-matrix OLED (PMOLED) or active-matrix OLED (AMOLED) display. In some embodiments, the display can be a plasma display. In other embodiments, the display can be a video projector. In still further embodiments, the display can be a combination of devices such as those disclosed herein.
In some embodiments, the digital processing device can include an input device to receive information from a user. In some embodiments, the input device can be a keyboard. In some embodiments, the input device can be a pointing device including, by way of non-limiting examples, a mouse, trackball, track pad, joystick, game controller, or stylus. In some embodiments, the input device is a touch screen or a multi-touch screen. In other embodiments, the input device can be a microphone to capture voice or other sound input. In other embodiments, the input device can be a video camera or other sensor to capture motion or visual input. In further embodiments, the input device can be a Kinect, Leap Motion, or the like. In still further embodiments, the input device can be a combination of devices such as those disclosed herein.
Referring to
Continuing to refer to
Continuing to refer to
Continuing to refer to
Methods as described herein can be implemented by way of machine (e.g., computer processor) executable code stored on an electronic storage location of the digital processing device 1001, such as, for example, on the memory 1010 or electronic storage unit 1015. The machine executable or machine readable code can be provided in the form of software. During use, the code can be executed by the processor 1005. In some cases, the code can be retrieved from the storage unit 1015 and stored on the memory 1010 for ready access by the processor 1005. In some situations, the electronic storage unit 1015 can be precluded, and machine-executable instructions are stored on memory 1010.
Non-Transitory Computer Readable Storage Medium
In some embodiments, the platforms, systems, media, and methods disclosed herein can include one or more non-transitory computer readable storage media encoded with a program including instructions executable by the operating system of an optionally networked digital processing device. In further embodiments, a computer readable storage medium can be a tangible component of a digital processing device. In still further embodiments, a computer readable storage medium can be optionally removable from a digital processing device. In some embodiments, a computer readable storage medium can include, by way of non-limiting examples, CD-ROMs, DVDs, flash memory devices, solid state memory, magnetic disk drives, magnetic tape drives, optical disk drives, cloud computing systems and services, and the like. In some cases, the program and instructions can be permanently, substantially permanently, semi-permanently, or non-transitorily encoded on the media.
Computer Program
In some embodiments, the platforms, systems, media, and methods disclosed herein can include at least one computer program, or use of the same. A computer program can include a sequence of instructions, executable in the digital processing device's CPU, written to perform a specified task. Computer readable instructions can be implemented as program modules, such as functions, objects, Application Programming Interfaces (APIs), data structures, and the like, that perform particular tasks or implement particular abstract data types. In light of the disclosure provided herein, those of skill in the art will recognize that a computer program can be written in various versions of various languages.
The functionality of the computer readable instructions can be combined or distributed as desired in various environments. In some embodiments, a computer program can comprise one sequence of instructions. In some embodiments, a computer program can comprise a plurality of sequences of instructions. In some embodiments, a computer program can be provided from one location. In other embodiments, a computer program can be provided from a plurality of locations. In various embodiments, a computer program can include one or more software modules. In various embodiments, a computer program can include, in part or in whole, one or more web applications, one or more mobile applications, one or more standalone applications, one or more web browser plug-ins, extensions, add-ins, or add-ons, or combinations thereof.
Web Application
In some embodiments, a computer program can include a web application. In light of the disclosure provided herein, those of skill in the art will recognize that a web application, in various embodiments, utilizes one or more software frameworks and one or more database systems. In some embodiments, a web application is created upon a software framework such as Microsoft® .NET or Ruby on Rails (RoR). In some embodiments, a web application can utilize one or more database systems including, by way of non-limiting examples, relational, non-relational, object oriented, associative, and XML database systems. In further embodiments, suitable relational database systems can include, by way of non-limiting examples, Microsoft® SQL Server, mySQL™, and Oracle®. Those of skill in the art will also recognize that a web application, in various embodiments, is written in one or more versions of one or more languages. A web application can be written in one or more markup languages, presentation definition languages, client-side scripting languages, server-side coding languages, database query languages, or combinations thereof. In some embodiments, a web application can be written to some extent in a markup language such as Hypertext Markup Language (HTML), Extensible Hypertext Markup Language (XHTML), or eXtensible Markup Language (XML). In some embodiments, a web application can be written to some extent in a presentation definition language such as Cascading Style Sheets (CSS). In some embodiments, a web application can be written to some extent in a client-side scripting language such as Asynchronous Javascript and XML (AJAX), Flash® Actionscript, Javascript, or Silverlight®. In some embodiments, a web application is written to some extent in a server-side coding language such as Active Server Pages (ASP), ColdFusion®, Perl, Java™, JavaServer Pages (JSP), Hypertext Preprocessor (PHP), Python™, Ruby, Tcl, Smalltalk, WebDNA®, or Groovy. In some embodiments, a web application can be written to some extent in a database query language such as Structured Query Language (SQL). In some embodiments, a web application integrates enterprise server products such as IBM® Lotus Domino®. In some embodiments, a web application can include a media player element. In various further embodiments, a media player element can utilize one or more of many suitable multimedia technologies including, by way of non-limiting examples, Adobe® Flash®, HTML 5, Apple® QuickTime®, Microsoft® Silverlight®, Java™, and Unity®.
Mobile Application
In some embodiments, a computer program can include a mobile application provided to a mobile digital processing device. In some embodiments, the mobile application can be provided to a mobile digital processing device at the time it is manufactured. In other embodiments, the mobile application can be provided to a mobile digital processing device via the computer network described herein.
In view of the disclosure provided herein, a mobile application can be created by techniques known to those of skill in the art using hardware, languages, and development environments known to the art. Those of skill in the art will recognize that mobile applications can be written in several languages. Suitable programming languages include, by way of non-limiting examples, C, C++, C#, Objective-C, Java™, Javascript, Pascal, Object Pascal, Python™, Ruby, VB.NET, WML, and XHTML/HTML with or without CSS, or combinations thereof.
Suitable mobile application development environments are available from several sources. Commercially available development environments can include, by way of non-limiting examples, AirplaySDK, alcheMo, Appcelerator®, Celsius, Bedrock, Flash Lite, .NET Compact Framework, Rhomobile, and WorkLight Mobile Platform. Other development environments are available without cost including, by way of non-limiting examples, Lazarus, MobiFlex, MoSync, and Phonegap. Also, mobile device manufacturers distribute software developer kits including, by way of non-limiting examples, iPhone and iPad (iOS) SDK, Android™ SDK, BlackBerry® SDK, BREW SDK, Palm® OS SDK, Symbian SDK, webOS SDK, and Windows® Mobile SDK.
Those of skill in the art will recognize that several commercial forums are available for distribution of mobile applications including, by way of non-limiting examples, Apple® App Store, Google® Play, Chrome Web Store, BlackBerry® App World, App Store for Palm devices, App Catalog for webOS, Windows® Marketplace for Mobile, Ovi Store for Nokia® devices, Samsung® Apps, and Nintendo® DSi Shop.
Standalone Application
In some embodiments, a computer program can comprise a standalone application, which is a program that is run as an independent computer process, not an add-on to an existing process, e.g., not a plug-in. Those of skill in the art will recognize that standalone applications are often compiled. A compiler is a computer program(s) that transforms source code written in a programming language into binary object code such as assembly language or machine code. Suitable compiled programming languages include, by way of non-limiting examples, C, C++, Objective-C, COBOL, Delphi, Eiffel, Java™, Lisp, Python™, Visual Basic, and VB .NET, or combinations thereof. Compilation is often performed, at least in part, to create an executable program. In some embodiments, a computer program includes one or more executable complied applications.
Web Browser Plug-In
In some embodiments, the computer program includes a web browser plug-in (e.g., extension, etc.). In computing, a plug-in is one or more software components that add specific functionality to a larger software application. Makers of software applications support plug-ins to enable third-party developers to create abilities that extend an application, to support easily adding new features, and to reduce the size of an application. When supported, plug-ins enable customizing the functionality of a software application. For example, plug-ins are commonly used in web browsers to play video, generate interactivity, scan for viruses, and display particular file types. Those of skill in the art will be familiar with several web browser plug-ins including, Adobe® Flash® Player, Microsoft® Silverlight®, and Apple® QuickTime®. In some embodiments, the toolbar comprises one or more web browser extensions, add-ins, or add-ons. In some embodiments, the toolbar comprises one or more explorer bars, tool bands, or desk bands.
In view of the disclosure provided herein, those of skill in the art will recognize that several plug-in frameworks are available that enable development of plug-ins in various programming languages, including, by way of non-limiting examples, C++, Delphi, Java™, PHP, Python™, and VB .NET, or combinations thereof.
Web browsers (also called Internet browsers) are software applications, designed for use with network-connected digital processing devices, for retrieving, presenting, and traversing information resources on the World Wide Web. Suitable web browsers include, by way of non-limiting examples, Microsoft® Internet Explorer®, Mozilla® Firefox®, Google® Chrome, Apple® Safari®, Opera Software® Opera®, and KDE Konqueror. In some embodiments, the web browser is a mobile web browser. Mobile web browsers (also called mircrobrowsers, mini-browsers, and wireless browsers) are designed for use on mobile digital processing devices including, by way of non-limiting examples, handheld computers, tablet computers, netbook computers, subnotebook computers, smartphones, music players, personal digital assistants (PDAs), and handheld video game systems. Suitable mobile web browsers include, by way of non-limiting examples, Google® Android® browser, RIM BlackBerry® Browser, Apple® Safari®, Palm® Blazer, Palm® WebOS® Browser, Mozilla® Firefox® for mobile, Microsoft® Internet Explorer® Mobile, Amazon® Kindle® Basic Web, Nokia® Browser, Opera Software® Opera® Mobile, and Sony® PSP™ browser.
Software Modules
In some embodiments, the platforms, systems, media, and methods disclosed herein can include software, server, and/or database modules, or use of the same. In view of the disclosure provided herein, software modules can be created by techniques known to those of skill in the art using machines, software, and languages known to the art. The software modules disclosed herein can be implemented in a multitude of ways. In various embodiments, a software module comprises a file, a section of code, a programming object, a programming structure, or combinations thereof. In further various embodiments, a software module comprises a plurality of files, a plurality of sections of code, a plurality of programming objects, a plurality of programming structures, or combinations thereof. In various embodiments, the one or more software modules can comprise, by way of non-limiting examples, a web application, a mobile application, and a standalone application. In some embodiments, software modules can be in one computer program or application. In other embodiments, software modules can be in more than one computer program or application. In some embodiments, software modules can be hosted on one machine. In other embodiments, software modules can be hosted on more than one machine. In further embodiments, software modules can be hosted on cloud computing platforms. In some embodiments, software modules can be hosted on one or more machines in one location. In other embodiments, software modules can be hosted on one or more machines in more than one location.
Databases
In some embodiments, the platforms, systems, media, and methods disclosed herein can include one or more databases, or use of the same. In view of the disclosure provided herein, those of skill in the art will recognize that many databases are suitable for storage and retrieval of information. In various embodiments, suitable databases can include, by way of non-limiting examples, relational databases, non-relational databases, object oriented databases, object databases, entity-relationship model databases, associative databases, and XML databases. Further non-limiting examples include SQL, PostgreSQL, MySQL, Oracle, DB2, and Sybase. In some embodiments, a database is internet-based. In further embodiments, a database can be web-based. In still further embodiments, a database can be cloud computing-based. In other embodiments, a database can be based on one or more local computer storage devices.
When the RF sample index i is smaller than the 1st RF sample index, the pseudocode does nothing. When the RF sample index i is made equal to the 1st RF sample index, the pseudocode adds the value of the RF sample to a first pixel in an array of image pixels. The pseudocode then increments r to move to the next pixel. The pseudocode resets the value of the counter zc to 0. The pseudocode increments the value of k to a second RAM address.
For values of i greater than the 1st RF sample index, the pseudocode compares zc to nz. When zc is smaller than nz and i is equal to kth RF sample index stored in the compressed flag table, an unexpected 1-flag has been encountered, and the pseudocode adds the value of the RF sample to the rth pixel in an array of image pixels. The pseudocode then increments r to move to the next pixel and resets the value of the counter zc to 0. The pseudocode increments the value of k to the next RAM address (corresponding to the next RF sample index that does not match the expected flag pattern). When zc is smaller than nz and i is not equal to kth RF sample index stored in the compressed flag table, an expected 0-flag has been encountered, and the pseudocode increments zc.
When zc is equal to nz and i is equal to kth RF sample index stored in the compressed flag table, an unexpected 0-flag has been encountered, and the pseudocode increments zc, nz, and k. When zc is equal to nz and i is not equal to kth RF sample index stored in the compressed flag table, an expected 1-flag has been encountered, and the pseudocode adds the value of the RF sample to the rth pixel in an array of image pixels. The pseudocode then increments r to move to the next pixel and resets the value of the counter zc to 0.
While preferred embodiments of the present invention have been shown and described herein, it will be obvious to those skilled in the art that such embodiments are provided by way of example only. It is not intended that the invention be limited by the specific examples provided within the specification. While the invention has been described with reference to the aforementioned specification, the descriptions and illustrations of the embodiments herein are not meant to be construed in a limiting sense. Numerous variations, changes, and substitutions will now occur to those skilled in the art without departing from the invention. Furthermore, it shall be understood that all aspects of the invention are not limited to the specific depictions, configurations or relative proportions set forth herein which depend upon a variety of conditions and variables. It should be understood that various alternatives to the embodiments of the invention described herein can be employed in practicing the invention. It is therefore contemplated that the invention shall also cover any such alternatives, modifications, variations or equivalents. It is intended that the following claims define the scope of the invention and that methods and structures within the scope of these claims and their equivalents be covered thereby.
This application is a continuation of U.S. patent application Ser. No. 15/470,700, filed Mar. 27, 2017, which is a continuation-in-part application of U.S. patent application Ser. No. 15/467,656, filed Mar. 23, 2017, each of which is incorporated herein by reference in its entirety.
Number | Date | Country | |
---|---|---|---|
Parent | 15470700 | Mar 2017 | US |
Child | 17089425 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 15467656 | Mar 2017 | US |
Child | 15470700 | US |