METHODS AND APPARATUS TO SHARPEN A RADIOGRAPHIC IMAGE
20260020834 ยท 2026-01-22
Inventors
Cpc classification
G01T1/20181
PHYSICS
A61B6/5258
HUMAN NECESSITIES
G06T12/10
PHYSICS
International classification
A61B6/00
HUMAN NECESSITIES
A61B6/02
HUMAN NECESSITIES
Abstract
Systems, apparatus, articles of manufacture, and methods are disclosed to sharpen a radiographic image by capturing a radiographic image with a detector receiving a beam from a source and performing a digital correction to the radiographic image to generate a digital image with increased uniformity in sharpness compared to the radiographic image.
Claims
1. An apparatus to sharpen a radiographic image comprising: interface circuitry; machine readable instructions; and programmable circuitry to at least one of instantiate or execute the machine readable instructions to: capture a radiographic image with a detector receiving a beam from a source; and perform a localized digital correction to the radiographic image to generate a digital image with increased uniformity in sharpness compared to the radiographic image.
2. The apparatus of claim 1, wherein the localized digital correction includes local spatial filtering of the radiographic image.
3. The apparatus of claim 1, wherein the localized digital correction is performed by applying an adaptive convolution kernel to the radiographic image.
4. The apparatus of claim 3, wherein the adaptive convolution kernel is generated using an adaptive convolution kernel function that generates non-stationary convolution kernels to be applied to areas of the radiographic image.
5. The apparatus of claim 4, wherein the adaptive convolution kernel function generates coefficient values for the non-stationary convolution kernels to be applied to the radiographic image based on a coordinate location on a surface of the detector.
6. The apparatus of claim 4, wherein the adaptive convolution kernel function generates coefficient values for the non-stationary convolution kernels to be applied to the radiographic image based on an angle between the source and a coordinate location on a surface of the detector.
7. The apparatus of claim 4, wherein the adaptive convolution kernel function generates coefficient values based on a current tomographic angle of a tomographic imaging tube relative to a normal of a plane of the detector.
8. The apparatus of claim 4, wherein the adaptive convolution kernel function generates coefficient values for the non-stationary convolution kernels to be applied to the radiographic image based on dose.
9. The apparatus of claim 3, wherein the adaptive convolution kernel is generated by selection from a set of local convolution kernels determined based on at least one of a position on an area of the detector, an angle between the source and a coordinate location on a surface of the detector, or dose.
10. The apparatus of claim 9, wherein a first local convolution kernel is used for sharpening a first portion of the radiographic image that corresponds to a first region on a surface of the detector and a second local convolution kernel is used for sharpening a second portion of the radiographic image that corresponds to a second region on the surface of the detector, the first region different from the second region.
11. The apparatus of claim 1, wherein the programmable circuitry is to store the digital image and transmit the digital image to an external system.
12. The apparatus of claim 1, wherein the radiographic image is a two-dimensional X-ray image.
13. The apparatus of claim 1, wherein the radiographic image is a three-dimensional tomosynthesis image, and wherein the three-dimensional tomosynthesis image is obtained by computation from a set of two-dimensional X-ray images captured at different angles corresponding to a first revolution of the apparatus.
14. The apparatus of claim 1, wherein the programable circuitry is to measure a point spread function value at a specific location on the detector of the apparatus, the point spread function value used in calibrating a set of local convolution kernels.
15. The apparatus of claim 14, wherein the programmable circuitry is to average a first point spread function value at a first location on the detector and a second point spread function value at the first location on the detector to generate an average point spread function value, the average point spread function value used in calibrating the set of local convolution kernels.
16. A non-transitory machine readable storage medium comprising instructions to cause programmable circuitry to at least: capture a first radiographic image with a detector of a medical imaging device; and perform a localized digital correction to the first radiographic image to generate a digital image with increased uniformity in sharpness compared to the radiographic image, the localized digital correction performed by at least one of linear convolution kernel using a non-stationary convolution kernel function that depends on position of the medical imaging device or a set of local convolution kernels, with ones of the local convolution kernels determined based on a position on a detector surface of the medical imaging device.
17. The non-transitory machine readable storage medium of claim 16, wherein the instructions are to cause the programmable circuitry to calibrate the medical imaging device according to a modulation transfer function of the detector.
18. A method for sharpening a radiographic image comprising: capturing a radiographic image with a detector receiving a beam from a source; performing a localized digital correction to generate a locally corrected radiographic image; and transmitting the locally corrected radiographic image to an external system.
19. The method of claim 18, further including calibrating an imaging device by measuring to quantify a level of non-uniformity in blurring of radiographic images captured by the imaging device, the calibrating to occur before capturing the radiographic image.
20. The method of claim 18, further including calibrating an imaging device by determining a first local convolution kernel of a library of local convolution kernels by: determining a plurality of detector locations; taking a test image of the detector; measuring a plurality of point-spread values associated with ones of the plurality of detector locations; and storing the plurality of point-spread values corresponding to the plurality of detector locations.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
[0003]
[0004]
[0005]
[0006]
[0007]
[0008]
[0009]
[0010]
[0011]
[0012]
[0013]
[0014]
[0015]
[0016]
[0017]
[0018]
[0019]
[0020]
[0021]
[0022]
[0023]
[0024]
[0025] In general, the same reference numbers will be used throughout the drawing(s) and accompanying written description to refer to the same or like parts. The figures are not necessarily to scale. Instead, the thickness of the layers or regions may be enlarged in the drawings. Although the figures show layers and regions with clean lines and boundaries, some or all of these lines and/or boundaries may be idealized. In reality, the boundaries and/or lines may be unobservable, blended, and/or irregular.
DETAILED DESCRIPTION
[0026] Medical imaging devices capture two-dimensional (2D) images and/or three-dimensional (3D) images using a plurality of methods including ultrasound, X-ray, gamma ray, computed tomography (CT) scan, tomosynthesis, magnetic resonance imaging (MRI), etc. Some medical imaging devices are used in mammography to detect cancer in anatomy such as a patient breast. In mammography, the images are to have a high resolution and wide dynamic range. The mammographic images are to have a high sensitivity to detect and depict small structures (e.g., microcalcifications, fibers, etc.).
[0027] Medical images, such as radiographic images created using X-rays, are not perfect representations of an object (e.g., breast(s), etc.) being imaged. Rather, captured radiographic images depict interactions between X-rays and an object (e.g., patient breast(s)). For example, X-ray images are projections of the interactions of three-dimensional objects with the X-rays on a plane. The X-ray images are not perfectly clear due to imperfections of the medical imaging device (e.g., imperfect detector, imperfect source, etc.). Imperfections in the medical imaging device and/or an environment in which the breast is imaged introduce blurriness and/or other artifact in resulting radiographic images, which hinders a radiologist or a machine with computer-aided detection from proper processing and analysis of the images (e.g., to determine whether a patient is likely to have cancer).
[0028] If a radiologist or a machine with computer-aided detection is unable to properly diagnose and/or determine next step(s) for a patient, subsequent images may be unnecessarily requested, which wastes processor cycles, patient, staff time, and other healthcare resources. In addition to wasting healthcare resources, these subsequent radiographic images involve an additional radiation dose to the patient, which may have adverse health effects due to repeated exposure to radiation.
[0029] In some examples, the radiologist may use an image processing technique to increase image quality (e.g., image sharpness, image clarity, image contrast, image resolution, etc.) of the captured radiographic images. There are various techniques to increase image sharpness. One of these techniques is to apply a uniform convolution kernel to the initial radiographic image as a correction term over the entire image (corresponding to an entire medical imaging device detector). However, this technique does not account for variation in a detector, including different angles at which an imaging beam contacts different areas of the detector. Techniques disclosed herein determine and apply localized digital correction such as local convolution kernels and/or other local spatial filtering to compensate for detector effects. For example, local convolution kernels can be selected from a set of convolution kernels to different portions of the initial radiographic image corresponding to different areas of the detector. Techniques disclosed herein use the plurality of localized convolution kernels to generate a more accurate radiographic image that is sharper (e.g., has a sharpness that is more uniform across the detector) when compared to radiographic images generated with the uniform, single-kernel technique. Techniques disclosed herein include calculating local convolution kernels to apply different corrections to different areas of an obtained image to generate a more accurate radiographic image. The techniques disclosed herein include performing a digital correction (e.g., a digital computation, localized digital correction, etc.) on the initial radiographic image by filtering in Fourier space, artificial intelligence methods, and using a non-stationary, variable convolution kernel function. In some examples, the variable convolution kernel function is characterized as a continuous kernel or a continuous kernel function (e.g., defined as a function of detector location and/or beam angle). In some examples, the non-stationary, continuous, variable convolution kernel function is to, for various inputs, generate kernel coefficients as outputs.
[0030] Turning to the figures,
[0031] As shown in the example of
[0032] In some versions of mammography (e.g., digital breast tomosynthesis (DBT)), multiple images are taken at different positions (e.g., different gantry angles) as the source 102 of medical imaging device 100 is rotated with respect to the breast being imaged, as shown in the example of
[0033] The techniques disclosed herein may use a direct conversion detector (e.g., typically manufactured with amorphous selenium (a-Se), thallium bromide, and gadolinium compounds) or an indirect conversion detector (e.g., typically manufactured with thallium-doped cesium iodide (CsI:Tl), gadolinium oxysulfide, terbium-doped gadolinium oxysulfide (Gd.sub.2O.sub.2S:Tb), barium fluoride, or cadmium tungstate (CdWO.sub.4), for example. In some examples, the direct conversion detectors use a first layer to receive X-ray photons and convert the X-ray photons into electric charges. The electric charges are then converted into a digital signal. In some examples, the indirect conversion detectors first convert the X-rays into light. The light is then converted into an electrical signal. The electrical signal is then converted into a digital signal. In some examples, the medical imaging device 100 (e.g., the Senographe Pristina manufactured and sold by GE HealthCare) is an indirect conversion detector full-field digital mammography system with a cesium iodide (CsI) crystalline phosphor coupled to an amorphous silicon thin-film transistor array. The photons of the beam 202 impact the detector 108 as discussed in connection with
[0034]
[0035] As shown in callout 307, the beam spread 308 is shown as being separated by the photodiodes 310 which produce the initial image 312. The center of the beam (e.g., a contact point) is shown as a first region 314 (e.g., a white region) with some of the spread shown as a second region 316 (e.g., a light gray region) that surrounds the first region 314 and portions that were not impacted are shown as a third region 318 (e.g., black region). Scintillation generates electrical signals in adjacent locations to a contact point of the energy of an X-ray beam (e.g., the beam 202 of
[0036] As shown in the initial image 312, blurring (e.g., point-spread) and/other artifact can occur in at least some of the pixels based on a quality of the signals generated. The medical imaging device 100 applies one or more imaging processing algorithms to sharpen (e.g., un-blur) the initial image 312 as described further below. The medical imaging device 100, to apply the one or more imaging processing algorithm, converts the initial image 312 into an initial image pixel matrix 320. The one or more imaging processing algorithms perform operations on the individual pixel values that compose the initial image pixel matrix 320. These one or more imaging processing algorithms change the values of the initial image pixel matrix 320 to generate a corrected image pixel matrix which is then converted back into a visual format as a corrected image that radiologist or a machine with computer-aided detection can evaluate. The one or more imaging processing algorithms that are implemented by the example medical imaging device 100 are further discussed below, before returning to an example discussion of how the medical imaging device 100 operates in
[0037] Quality of a resulting image can be dependent on characteristics of the detector 108 to translate the received beam 202 into signals representative of light intensity and/or other information. A modulation transfer function (MTF) quantifies an ability of the detector 108 to accurately convert the received beam 202 into electrical signals that convey information about an object, including contrast in and around the object to form a resulting image. For example, MTF quantifies how well the medical imaging device 100 transfers contrast of sinusoidal patterns from the incident X-ray pattern to the output. In other words, MTF measures how the medical imaging device 100 transmits signal, as a function of special frequency. The MTF can be expressed in terms of spatial frequency and signal amplitude. For example, the detector 108 has a certain limited spatial resolution. This limited spatial resolution causes a loss in contrast in the initial image 312. A perfect MTF is equal to 1 at all frequencies.
[0038] For example, the spatial resolution of the detector 108 relates to an ability of the scintillator layer 302 to receive and translate the beam 202. For example, the scintillator layer 302 transforms the incoming X-ray beam 202 into a plurality of optical photons, which scatter in the scintillator (e.g., a Cesium Iodide (CsI) scintillator, etc.). The scattering of photons in the scintillator layer 302 transforms a single point into a wider area (e.g., a point spread function), which affects the MTF. The change (e.g., decrease) in the MTF is indicative of a loss in resolution (and associated image contrast) from a point to a spread of values in the detector 108.
[0039] The MTF of the detector 108 relates contrast values of the object(s) being imaged into contrast intensity levels in the initial image 312. The MTF of the detector 108 can be used on a measure of image resolution because the function accounts for blur and contrast over a range of spatial frequencies. The MTF represents an ability of the detector 108 to transfer modulation of an input signal to an output at a given spatial frequency. However, the MTF for the detector 108 can be degraded or otherwise affected.
[0040] Loss of contrast or other image degradation caused by the detector 108 MTF can be accounted for through convolution or filtering. However, conventional convolution assumes that the MTF remains constant over all areas of the detector 108 using a single, uniform convolution kernel (as discussed in
[0041] More specifically, the initial image 312 (e.g., a detector image, etc.) is convolved with a sharpening term (e.g., a correction term):
In Equation 1, an initial image I is convolved (represented by the asterisk *) with a convolution kernel K (e.g., a correction term) to generate a corrected image C. In some examples, before convolving the initial image I with the convolution kernel K, the medical imaging device 100 performs pre-processing on the initial image 312. This pre-processing includes applying a gain filter (e.g., gain correction), applying an offset filter (e.g., offset correction), and/or removing bad pixels (e.g., correcting for detector elements). As used herein, removing bad pixels includes removing pixels that are malfunctioning by always transmitting white light (e.g., always turned on), always transmitting black (e.g., always turned off), or other defect. In some examples, the pre-processing optionally includes applying a noise filter (e.g., noise correction).
[0042] The techniques disclosed herein use an adaptive convolution kernel in lieu of a single convolution kernel K. As used herein, the adaptive convolution kernel may refer to either a set of discrete local convolution kernels (e.g., a library of discrete local convolution kernels) or an adaptive local convolution kernel function. As such, a localized convolution kernel can be generated by selecting one of the set of local convolution kernels or by executing the adaptive convolution kernel function according to local parameters such as angle between source and detector, position/location on the detector, etc. In some examples, the local convolution kernels K.sub.x,y are based on local detector information. One example of the local detector information corresponds to a position or location (e.g., x-coordinate, y-coordinate) on the surface of the detector 108 (
In Equation 2, the initial image I is convolved (represented by the asterisk *) with the local convolution kernels K.sub.x,y (e.g., local correction terms) to generate a corrected image C. The techniques of Equation 2 are implemented by the medical imaging device 100 as shown in connection with
[0043] In some examples, the techniques of Equation 2 are implemented by the medical imaging device 100 in connection with a Wiener filter used in a sharpening algorithm (e.g., the GE HealthCare Fine View sharpening algorithm, etc.). The Wiener filter is to modify an amount of correction applied by the kernel K based on an amount of noise. The Wiener filter substitutes the correction term that is convolved with the initial image I to generate the corrected image C:
In Equation 3, H is the Fourier transform of the point-spread function of the scintillator layer 302 (
[0044] The W term of the Wiener filter acts as a modifier to regulate correction of the MTF in the presence of noise. For example, if there is no noise (e.g., zero in the numerator of Equation 4), the Wiener filter barely reduces the amount of correction that is applied to adjust signal values. In some examples, values for the power-spectral density of noise n are between 0 and 0.5. In some examples, values for the power-spectral density of object s are between 0 and 5. In some examples, a higher value of W may be around 0.3 which would warrant less correction compared to a lower value of W of around 0.03 which would warrant higher amounts of correction.
[0045] For example, using numbers merely for illustration, H is a constant value such as 0.5. A Wiener filter with H as 0.5 without any noise is shown in Equation 5:
[0046] Equation 5 is simplified to generate Equation 6:
[0047] In the example of Equation 6, the amount of correction is a value of 2.0. This value will be reduced by either a large amount (e.g., a significant amount of reduction, a large amount of reduction) or reduced by a small amount (e.g., a mild amount of reduction, a lesser amount of reduction). The amount of reduction of the amount of correction is based on the Wiener spectrum value W which is based on an amount of noise.
[0048] For example, if there is a higher amount of noise (e.g., a large number in the numerator of Equation 4), the Wiener filter significantly reduces an amount of correction. The higher amount of noise corresponds to a large Wiener spectrum value W (e.g., 0.3) in Equation 4. The large Wiener spectrum value W of Equation 4 is in the denominator of Equation 3 which reduces the amount of correction. Equation 7 illustrates an example that also assumes that H is a value such as 0.5:
[0049] Simplifying the terms of Equation 7, results in Equation 8:
[0050] Simplifying the terms of Equation 8 results in Equation 9:
[0051] As seen in Equation 9, there is a significant reduction in the amount of correction used with the initial image I to generate the corrected image C. The initial amount of correction was 2.0, while the correction has been reduced to 1.47.
[0052] Alternatively, if there is a lesser amount of noise (e.g., a small number in the numerator of Equation 4), the Wiener filter reduces an amount of correction at a reduction level that is not as extreme as the Wiener filter of Equations 7-9. The lesser amount of noise corresponds to a small Wiener spectrum value W (e.g., 0.03) in Equation 4. The small Wiener spectrum value W of Equation 4 is in the denominator of Equation 3 which reduces the amount of correction. Equation 10 illustrates an example that also assumes that H is a value such as 0.5:
[0053] Simplifying the terms of Equation 10, results in Equation 11:
[0054] Simplifying the terms of Equation 11 results in Equation 12:
As shown in Equation 12, the amount of correction is 1.99 reduced from an initial correction of 2.0. As shown in Equations 6-12, when there is less noise, there is more of a correction and when there is more noise, there is less of a correction. Stated differently, Wiener filtering (e.g., minimum mean-square-error filtering) approximates inverse filtering when there is little noise (e.g., low noise, such as when W is 0.03), and approximates a frequency-rejection filter when there is a significant amount of noise (e.g., high noise such as when Wis 0.3). For example, there may be little noise if the source 102 is directly over the detector 108, and lots of noise if the source 102 is not aligned over the detector 108.
[0055] An inverse Fourier Transform is applied to the Wiener filter to change Equation 3 from Fourier space to real space. The inverse Fourier Transform generates a convolution kernel which is an array (e.g., or matrix) of values. In some examples, the inverse Fourier Transform is an inverse Fast Fourier Transform.
[0056] The techniques of Equation 2 are implemented by the medical imaging device 100 in connection with an adapted Wiener filter (e.g., a local Wiener filter) used in a sharpening algorithm (e.g., the GE HealthCare Fine View sharpening algorithm, etc.). Equation 13 illustrates an adapted Wiener filter where H is based on various positions x and y of the detector 108 (
[0057] After calculating Equation 13, the medical imaging device 100 uses an inverse Fourier Transform to generate a set of noise-adjusted local kernels that are based on the position of the detector 108 (
[0058] Equation 14 illustrates an adapted Wiener filter where His based on various angles between the detector 108 (
[0059] After calculating Equation 14, the medical imaging device 100 uses an inverse Fourier Transform to generate a set of noise-adjusted local convolution kernels that are based on the angle between the detector 108 (
[0060] Equations 13 and 14 are based on the adaptive local convolution kernel function. By interpolating between different variables, the adaptive local convolution kernel function dynamically generates more accurate local convolution kernels based on the parameters of the adaptive local convolution kernel function. For example, a discrete local convolution kernel can be generated for a particular detector location based on an angle between the detector 108 and the source 102.
[0061] The medical imaging device 100 and/or a computing device associated with the medical imaging device 100 can apply a localized digital correction (e.g., local spatial filtering such as with an adaptive convolution kernel, model, etc.) to generate images with increased contrast between small details and high spatial frequencies, resulting in improved sharpness or clarity. For example, a MTF (local or overall) can be determined outside the medical imaging device 100 based on an image acquired by the medical imaging device 100 of a known reference object, or by computation using a model of the detector 108, etc. In some examples, MTF is defined as a ratio of output signal amplitude to input signal amplitude (e.g., corresponding to an amount of contrast that is preserved by the detector 108). A higher MTF score corresponds to a sharper image (e.g., an MTF of 1.0 corresponds to 100% of an input signal amplitude being transmitted by the detector 108; an MTF of 0.5 indicates a 50% signal degradation).
[0062] In typical methods, the convolution kernel K is determined based on a standard set of values for the entire detector 108. A further discussion of how the local convolution kernels K.sub.x,y is determined is included in connection with
[0063] Rather than maintain a uniform or fixed convolution kernel to be applied to the entire detector 108, the techniques disclosed herein perform a digital correction (e.g., a local digital correction, local spatial filtering, etc.). One example method of performing the digital correction is to use an adaptive convolution kernel (e.g., a discrete library of values or a non-stationary function that generates output values based on inputs, etc.). In some examples, the techniques disclosed herein use an adaptive convolution kernel function that is continuous.
[0064] In some examples, the adaptive convolution kernel is formed as a matrix of NP coefficients. The coefficients are a function of parameters such as a position (x,y) in the detector 108, an angle (,) of a ray from the X-ray source 102 to a specific point of the detector 108, or position (x,y) and current tomographic angle of the source 102 (e.g., an X-ray tube, etc.) relative to a plane normal to the detector plane, or a combination thereof.
[0065] In some examples, the techniques disclosed herein use an adaptive convolution kernel by determining multiple local convolution kernels (e.g., a non-uniform set of convolution kernels corresponding to a plurality of source/detector positions). This plurality of adaptive convolution kernels is applied to respective images corresponding to particular locations to further deconvolve the image. The medical imaging device 100 is to adaptively determine which convolution kernel of the non-uniform set of local convolution kernels to apply for specific portions of the image (as described in connection with
[0066]
[0067] The initial image pixel matrix 320 is represented in
[0068] The example medical imaging device 100 performs image convolution on the initial image pixel matrix 320 with the uniform convolution kernel 402 to generate a uniformly corrected image matrix 404 that is the same dimensions as the initial image pixel matrix 320. The uniformly corrected image matrix 404 is converted into a visual format as a uniformly corrected image which may be inspected by a radiologist or a machine with computer-aided detection.
[0069]
[0070] The example of
[0071] In the example of
[0072] The medical imaging device 100 assigns the local convolution kernels 414, 416, 418, 420 to the regions 406, 408, 410, 412 of the initial image pixel matrix 320. For example, a first local convolution kernel 414 is assigned to a first region 406, a second local convolution kernel 416 is assigned to a second region 408, a third local convolution kernel 418 is assigned to a third region 410, and a fourth local convolution kernel 420 is assigned to a fourth region 412.
[0073] However, in other examples, different convolution kernel assignments may be selected by the medical imaging device 100. For example, the medical imaging device 100 may determine to use the first local convolution kernel 414 and the second local convolution kernel 416 for a left half and a right half of the initial image pixel matrix. In other examples, more local convolution kernels (such as nine local convolution kernels) may be used by the medical imaging device 100 to sharpen (e.g., correct, adjust, etc.) the initial image 312 (
[0074]
[0075]
[0076] The example first location 504 corresponds to detector position 2, the example second location 508 corresponds to detector position 5, and the example third location 512 corresponds to detector position 9. The first location 504 has a corresponding first point spread function 506, the second location 508 has a corresponding second point spread function 510, and the third location 512 has a corresponding third point spread function 514. A standard point spread function 502 is illustrated as a circle.
[0077] While all nine detector positions have a corresponding point spread function due to the scintillation process described in connection with
[0078] In some examples, the medical imaging device 100 is to measure a first point spread function value corresponding to a first location on the detector 108 (
[0079] For a three-dimensional image (3D) tomosynthesis image, as the source 102 (
[0080]
[0081]
[0082]
[0083] The example of
[0084]
[0085]
[0086] The example of
[0087]
[0088]
[0089] The techniques disclosed herein use the medical imaging device circuitry 700 (
[0090]
[0091] The medical imaging device circuitry 700 includes an example network interface 702, example image capture circuitry 704, example pre-processing circuitry 706, example sharpening circuitry 708, example kernel determiner circuitry 710, example post-processing circuitry 712, example modulation transfer function circuitry 714, example dose determination circuitry 716, an example non-uniform kernels data store 718, and an example image data store 720.
[0092] Turning briefly to
[0093] Returning to
[0094] The image capture circuitry 704 of the medical imaging device circuitry 700 is to perform capture of the radiographic images. The example radiographic images include different types (e.g., X-ray, flat detector images, cone-beam computed tomography images, and tomosynthesis images), different doses (e.g., an X-ray of a first strength such as ten micrograys (e.g., 10 Gy), an X-ray of a second dose such as twenty micrograys (e.g., 20 Gy)), and different dimensions (e.g., two-dimensional (2-D), three-dimensional (3-D)). The image capture circuitry 704 is to activate (e.g., operate) the source 102 (
[0095] The example pre-processing circuitry 706 is to apply preliminary corrections to the initial image 312 (
[0096] The example sharpening circuitry 708 performs a digital correction on the radiographic image. One example method of a digital correction is that the sharpening circuitry 708 accesses at least one determined convolution kernel (e.g., multiple local convolution kernels, a library of convolution kernels that correspond to different detector positions and angles, a non-uniform set of convolution kernels, etc.) from the example kernel determiner circuitry 710. The example sharpening circuitry 708 applies the at least one determined convolution kernel by performing convolution with the initial image pixel matrix 320 (
[0097] The example kernel determiner circuitry 710 adaptively determines which local convolution kernel from a library of convolution kernels to apply to specific portions of the initial image pixel matrix 320 (
[0098] The post-processing circuitry 712 is to perform post-processing on the radiographic image. The post-processing circuitry 712 performs the post-processing on the radiographic image after the convolution kernel has been applied which further sharpens the radiographic image. For example, a first post-processing technique is contrast enhancement. A second post-processing technique is denoising. The post-processing circuitry 712 uses post-processing to improve the image look after kernel convolution and before image display.
[0099] The modulation transfer function circuitry 714 generates graphs such as the graphs of
[0100] In some examples, calibration to determine the MTF for the detector occurs before and/or between patient exams on the medical imaging device 100. In other examples, the medical imaging device 100 is calibrated at manufacture before being released to a healthcare facility. The MTF can be determined based on imaging a known reference object, using a model of the detector, etc.
[0101] The dose determination circuitry 716 determines a dose level (e.g., dose value) used in generating the radiographic image. Differing dose levels correspond to different kernel strengths that are to be used to sharpen the radiographic image. For example, a dose value such as twenty micrograys (e.g., 20 Gy) of radiation in an X-ray only requires a small adjustment (e.g., a small compensation) to sharpen the image. Alternatively, a dose value such as one hundred and fifty micrograys (e.g., 150 Gy) of radiation in an X-ray requires a larger adjustment (e.g., a larger compensation). For example, at a frequency of four line pairs per millimeter (4 lp/mm), a small kernel adjustment is 1.05 and a large kernel adjustment is 2.0.
[0102] In some examples, the medical imaging device circuitry 700 includes means for transmitting images to a central computer which may be implemented by the network interface 702. For instance, the network interface 702 may be instantiated by the example programmable circuitry 1312 of
[0103] In some examples, the medical imaging device circuitry 700 includes means for capturing images which may be implemented by the image capture circuitry 704. For instance, the image capture circuitry 704 may be instantiated by the example programmable circuitry 1312 of
[0104] In some examples, the medical imaging device circuitry 700 includes means for performing pre-processing on initial images which may be implemented by the pre-processing circuitry 706. For instance, the pre-processing circuitry 706 may be instantiated by the example programmable circuitry 1312 of
[0105] In some examples, the medical imaging device circuitry 700 includes means for performing a sharpening algorithm on images which may be implemented by the sharpening circuitry 708. For instance, the sharpening circuitry 708 may be instantiated by the example programmable circuitry 1312 of
[0106] In some examples, the medical imaging device circuitry 700 includes means for generating an adaptive continuously variable local convolution kernel function or a non-uniform set of local convolution kernels which may be implemented by the kernel determiner circuitry 710. For instance, the kernel determiner circuitry 710 may be instantiated by the example programmable circuitry 1312 of
[0107] In some examples, the medical imaging device circuitry 700 includes means for performing post-processing on the corrected image which may be implemented by the post-processing circuitry 712. For instance, the post-processing circuitry 712 may be instantiated by the example programmable circuitry 1312 of
[0108] In some examples, the medical imaging device circuitry 700 includes means for determining a dose of a mammographic image which may be implemented by the dose determination circuitry 716. For instance, the dose determination circuitry 716 may be instantiated by the example programmable circuitry 1312 of
[0109]
[0110] The example detector location circuitry 802 determines a plurality of detector locations. For example, in the example of
[0111] The example point-spread measurement circuitry 804 measures the point spread function value associated with ones of the plurality of detector locations. The example point-spread measurement circuitry 804 stores the point spread function values corresponding to the plurality of detector locations in the example point-spread values data store 812.
[0112] In some examples, the point-spread measurement circuitry 804 receives point spread function values and measurements from other medical imaging devices such as an identical medical imaging device in a separate hospital. In some examples, a technician may manually measure the various point spread functions on the detector 108. In some examples, various machines may have calibration tables for the point spread function values that are stored in an online data store. The point-spread measurement circuitry 804 may use the network interface 702 of the medical imaging device circuitry 700 to access online calibration tables stored in the online data store.
[0113] The example averaging circuitry 806 averages the various point-spread measurements that are stored in the point-spread values data store 812. By averaging the at least two saved point spread function values, the averaging circuitry 806 increases a precision of an average point spread function value. For example, if the measured point spread function value of a first detector location at a first time is one hundred and fifty micrometers (e.g., 150 m) and the point spread function value of the same first detector location at a second time is three hundred and fifty micrometers (e.g., 350 m), the average of the two point spread function values is two hundred and fifty micrometers (e.g., 250 m). In the example of
[0114] The example AI model circuitry 808 implements a machine learning (ML) model and/or an artificial intelligence (AI) model which may perform any of the functions of the example point-spread measurement circuitry 804, the example averaging circuitry 806, and/or the kernel calculator circuitry 810. By using an AI/ML model, the AI model circuitry 808 is to make predictions that improve with further training data.
[0115] In some examples, the AI model circuitry 808 implements the AI model to infer the locations of the point spread function values. In some examples, the AI model circuitry 808 implements the AI model that uses the average point spread function values as inputs and generate the non-uniform kernel set as output with information for the sharpening circuitry 708 (
[0116] Artificial intelligence (AI), including machine learning (ML), deep learning (DL), and/or other artificial machine-driven logic, enables machines (e.g., computers, logic circuits, etc.) to use a model to process input data to generate an output based on patterns and/or associations previously learned by the model via a training process. For instance, the model may be trained with data to recognize patterns and/or associations and follow such patterns and/or associations when processing input data such that other input(s) result in output(s) consistent with the recognized patterns and/or associations.
[0117] Many different types of machine learning models and/or machine learning architectures exist. In examples disclosed herein, a convolutional model is used. Using a convolutional model enables image sharpening by taking an initially blurry image using a sharpening term. In examples disclosed herein, a deconvolutional model is used. Using a deconvolutional model enables image sharpening by taking an initially blurry image and removing blurry components (e.g., removing a blurring kernel).
[0118] In general, implementing a ML/AI system involves two phases, a learning/training phase and an inference phase. In the learning/training phase, a training algorithm is used to train a model to operate in accordance with patterns and/or associations based on, for example, training data. In general, the model includes internal parameters that guide how input data is transformed into output data, such as through a series of nodes and connections within the model to transform input data into output data. Additionally, hyperparameters are used as part of the training process to control how the learning is performed (e.g., a learning rate, a number of layers to be used in the machine learning model, etc.). Hyperparameters are defined to be training parameters that are determined prior to initiating the training process.
[0119] Different types of training may be performed based on the type of ML/AI model and/or the expected output. For example, supervised training uses inputs and corresponding expected (e.g., labeled) outputs to select parameters (e.g., by iterating over combinations of select parameters) for the ML/AI model that reduce model error. As used herein, labelling refers to an expected output of the machine learning model (e.g., a classification, an expected output value, etc.) Alternatively, unsupervised training (e.g., used in deep learning, a subset of machine learning, etc.) involves inferring patterns from inputs to select parameters for the ML/AI model (e.g., without the benefit of expected (e.g., labeled) outputs).
[0120] In examples disclosed herein, ML/AI models are trained using stochastic gradient descent. However, any other training algorithm may additionally or alternatively be used. In examples disclosed herein, training is performed until an acceptable amount of error is achieved. In examples disclosed herein, training is performed remotely at a central facility (e.g., a manufacturer of the medical imaging devices 100). In some examples, training is performed locally at the healthcare facility. Training is performed using hyperparameters that control how the learning is performed (e.g., a learning rate, a number of layers to be used in the machine learning model, etc.).
[0121] Training is performed using training data. In examples disclosed herein, the training data originates from locally generated data. Because supervised training is used, the training data is labeled. Labeling is applied to the training data by a radiologist.
[0122] Once training is complete, the model is deployed for use as an executable construct that processes an input and provides an output based on the network of nodes and connections defined in the model. The model may then be executed by the AI model circuitry 808.
[0123] Once trained, the deployed model may be operated in an inference phase to process data. In the inference phase, data to be analyzed (e.g., live data) is input to the model, and the model executes to create an output. This inference phase can be thought of as the AI thinking to generate the output based on what it learned from the training (e.g., by executing the model to apply the learned patterns and/or associations to the live data). In some examples, input data undergoes pre-processing before being used as an input to the machine learning model. Moreover, in some examples, the output data may undergo post-processing after it is generated by the AI model to transform the output into a useful result (e.g., a display of data, an instruction to be executed by a machine, etc.).
[0124] In some examples, output of the deployed model may be captured and provided as feedback. By analyzing the feedback, an accuracy of the deployed model can be determined. If the feedback indicates that the accuracy of the deployed model is less than a threshold or other criterion, training of an updated model can be triggered using the feedback and an updated training data set, hyperparameters, etc., to generate an updated, deployed model.
[0125] The example kernel calculator circuitry 810 calculates a convolution kernel value based on the average point-spread values. For example, a larger point-spread value corresponds to a larger compensation and a smaller point-spread value corresponds to a smaller compensation. The example kernel calculator circuitry 810 computes a plurality of convolution kernels and stores the convolution kernels in the non-uniform kernels data store 718. In some examples, the kernel calculator circuitry 810 computes the plurality of convolution kernels based on geometric principles (e.g., an angle between the source 102 (
[0126] In other examples, the kernel calculator circuitry 810 computes the plurality of local kernels based on the positions of the detector 108 (
[0127] In some examples, the kernel calculator circuitry 810 interpolates the local convolution kernels (e.g., selects convolution kernels from the library) based on dose as determined by the example dose determination circuitry 716 (
[0128] The example point-spread values data store 812 stores the individual point-spread values and the averaged point-spread values that correspond to the various detector locations.
[0129] While an example manner of implementing the medical imaging device circuitry 700 of
[0130] Flowchart(s) representative of example machine readable instructions, which may be executed by programmable circuitry to implement and/or instantiate the medical imaging device circuitry 700 of
[0131] The program may be embodied in instructions (e.g., software and/or firmware) stored on one or more non-transitory computer readable and/or machine readable storage medium such as cache memory, a magnetic-storage device or disk (e.g., a floppy disk, a Hard Disk Drive (HDD), etc.), an optical-storage device or disk (e.g., a Blu-ray disk, a Compact Disk (CD), a Digital Versatile Disk (DVD), etc.), a Redundant Array of Independent Disks (RAID), a register, ROM, a solid-state drive (SSD), SSD memory, non-volatile memory (e.g., electrically erasable programmable read-only memory (EEPROM), flash memory, etc.), volatile memory (e.g., Random Access Memory (RAM) of any type, etc.), and/or any other storage device or storage disk. The instructions of the non-transitory computer readable and/or machine readable medium may program and/or be executed by programmable circuitry located in one or more hardware devices, but the entire program and/or parts thereof could alternatively be executed and/or instantiated by one or more hardware devices other than the programmable circuitry and/or embodied in dedicated hardware. The machine readable instructions may be distributed across multiple hardware devices and/or executed by two or more hardware devices (e.g., a server and a client hardware device). For example, the client hardware device may be implemented by an endpoint client hardware device (e.g., a hardware device associated with a human and/or machine user) or an intermediate client hardware device gateway (e.g., a radio access network (RAN)) that may facilitate communication between a server and an endpoint client hardware device. Similarly, the non-transitory computer readable storage medium may include one or more mediums. Further, although the example program is described with reference to the flowchart(s) illustrated in
[0132] The machine readable instructions described herein may be stored in one or more of a compressed format, an encrypted format, a fragmented format, a compiled format, an executable format, a packaged format, etc. Machine readable instructions as described herein may be stored as data (e.g., computer-readable data, machine-readable data, one or more bits (e.g., one or more computer-readable bits, one or more machine-readable bits, etc.), a bitstream (e.g., a computer-readable bitstream, a machine-readable bitstream, etc.), etc.) or a data structure (e.g., as portion(s) of instructions, code, representations of code, etc.) that may be utilized to create, manufacture, and/or produce machine executable instructions. For example, the machine readable instructions may be fragmented and stored on one or more storage devices, disks and/or computing devices (e.g., servers) located at the same or different locations of a network or collection of networks (e.g., in the cloud, in edge devices, etc.). The machine readable instructions may require one or more of installation, modification, adaptation, updating, combining, supplementing, configuring, decryption, decompression, unpacking, distribution, reassignment, compilation, etc., in order to make them directly readable, interpretable, and/or executable by a computing device and/or other machine. For example, the machine readable instructions may be stored in multiple parts, which are individually compressed, encrypted, and/or stored on separate computing devices, wherein the parts when decrypted, decompressed, and/or combined form a set of computer-executable and/or machine executable instructions that implement one or more functions and/or operations that may together form a program such as that described herein.
[0133] In another example, the machine readable instructions may be stored in a state in which they may be read by programmable circuitry, but require addition of a library (e.g., a dynamic link library (DLL)), a software development kit (SDK), an application programming interface (API), etc., in order to execute the machine-readable instructions on a particular computing device or other device. In another example, the machine readable instructions may need to be configured (e.g., settings stored, data input, network addresses recorded, etc.) before the machine readable instructions and/or the corresponding program(s) can be executed in whole or in part. Thus, machine readable, computer readable and/or machine readable media, as used herein, may include instructions and/or program(s) regardless of the particular format or state of the machine readable instructions and/or program(s).
[0134] The machine readable instructions described herein can be represented by any past, present, or future instruction language, scripting language, programming language, etc. For example, the machine readable instructions may be represented using any of the following languages: C, C++, Java, C#, Perl, Python, JavaScript, HyperText Markup Language (HTML), Structured Query Language (SQL), Swift, etc.
[0135] As mentioned above, the example operations of
[0136]
[0137] At block 904, the kernel determiner circuitry 710 performs calibration based on an MTF of the detector 108 to generate a set of local convolution kernels (e.g., a library of local convolution kernels) or an adaptive kernel convolution function. Further details regarding an example method that the kernel determiner circuitry 710 uses to determine the adaptive convolution kernel in the calibration process are described in connection with
[0138] At block 906, the network interface 702 loads the image capture setup instructions into the image capture circuitry 704. For example, the network interface 702 may receive instructions that an image (e.g., an X-ray image, etc.) and/or a set of images is to be captured. In some examples, the dose determination circuitry 716 accesses a dose level saved in the image capture setup instructions.
[0139] At block 908, the image capture circuitry 704 determines if a two-dimensional capture or a three-dimensional capture is requested. For example, in response to determining that a two-dimensional capture is requested (e.g., 2D), control advances to block 910. Alternatively, in response to determining that a three-dimensional capture is requested (e.g., 3D), control advances to block 912. The example image capture circuitry 704 may determine whether to perform a two-dimensional capture or a three-dimensional capture based on instructions received by the network interface 702 (e.g., in the image capture set-up file). For example, an external system, such as a radiology workstation and/or computer-aided diagnosis software in communication with the medical imaging device 100, may determine that a single X-ray is to be taken for screening a patient. Alternatively, the external system may determine that digital breast tomosynthesis (DBT) is to be used to accurately focus on tissue of the patient.
[0140] At block 910, the image capture circuitry 704 determines a starting point. For example, the starting point is the second location 508 of
[0141] At block 912, the image capture circuitry 704 determines gantry angles. These gantry angles correspond to different positions in a revolution at which the source 102 (
[0142] At block 914, the image capture circuitry 704 captures the radiographic image at the angle determined at block 912. For example, the image capture circuitry 704 may capture the radiographic image with an X-ray beam. In some examples, at block 914, the dose determination circuitry 716 confirms the radiation dose used in an X-ray image.
[0143] At block 916, the pre-processing circuitry 706 performs preprocessing on the radiographic image to generate a pre-processed image. For example, the pre-processing circuitry 706 may include using at least one of a noise filter, a gain filter, or a filter that removes bad pixels (e.g., pixels that are defective, pixels that transmit white light, pixels that do not transmit light). In some examples, pre-processing is bypassed on the radiographic image and the radiographic image is transmitted to the sharpening circuitry 708.
[0144] At block 918, the kernel determiner circuitry 710 determines an adaptive local convolution kernel (e.g., using the non-uniform convolution kernel set that includes local convolution kernels, executing the adaptive local kernel convolution function, etc.). In some examples, the kernel determiner circuitry 710 retrieves, for various detector positions and detector angles, different convolution kernel values from a previously calibrated kernel library. In other examples, the kernel determiner circuitry 710 interpolates convolution kernel values based on detector positions and detector angles that do not align with stored detector positions and stored detector angles. In yet other examples, the kernel determiner circuitry 710 is to use a continuously variable convolution kernel. The continuously variable convolution kernel is based on a position of the detector 108, for example. The kernel determiner circuitry 710 calculates, by executing the adaptive local convolution kernel function, a plurality of local convolution kernel values.
[0145] At block 920, after receiving at least one local convolution kernel from the non-uniform convolution kernel set or from the adaptive convolution kernel function, the sharpening circuitry 708 adaptively uses the at least one local convolution kernel in a sharpening algorithm to generate a locally corrected image. Rather than a standard convolution kernel (e.g., a uniform convolution kernel), the sharpening circuitry 708 uses individual ones of the local convolution kernels that correspond to particular detector locations and/or detector angles or by executing an adaptive convolution kernel function to generate a localized kernel that is dependent on detector location and/or detector angle.
[0146] In some examples, the sharpening circuitry 708 performs image convolution with the local convolution kernels to generate a corrected image (e.g., a locally corrected image matrix 424 of
[0147] At block 922, the post-processing circuitry 712 performs post processing on the corrected radiographic image. For example, the post-processing circuitry 712 performs post-processing which can further increase the contrast of small details divided by high spatial frequencies of the corrected radiographic image. Some example post-processing techniques include contrast enhancement and denoising.
[0148] At block 924, the network interface 702 transmits the locally corrected image to an external radiology system. In some examples, the network interface 702 stores the locally corrected image in the image data store 720. By transmitting the locally corrected image to the radiologist, the medical imaging device circuitry 700 improves the efficiency of using a computing device by saving processor cycles. By improving the image quality, the computing device is not required to generate a subsequent image which saves processor cycles for the computing device. After block 924, the instructions 900 end.
[0149]
[0150] At block 1004, the detector location circuitry 802 uses the example image capture circuitry 704 (
[0151] At block 1006, the example point-spread measurement circuitry 804 measures a point spread function value associated with ones of the plurality of detector locations. Some example point spread function values include a spread of 150 micrometers (e.g., 150 m), a spread of two hundred micrometers (e.g., 200 m), and a spread of 350 micrometers (e.g., 350 m). However, in other examples, other point spread function values are measured using different units (e.g., centimeters, inches, micrometers, nanometers, etc.).
[0152] At block 1008, the point-spread measurement circuitry 804 stores the point spread function values corresponding to the plurality of detector locations in the example point-spread values data store 812. By storing the point-spread values associated with ones of the plurality of detector locations, the point-spread values are available for interpolation by the AI model circuitry 808.
[0153] At block 1010, the kernel calculator circuitry 810 determines if more data is required. For example, in response to determining that more data is required (e.g., YES), control returns to block 1004 where the example image capture circuitry 704 (
[0154] At block 1012, the averaging circuitry 806 averages, for a selected detector location, at least two saved point spread function values. By averaging the at least two saved point spread function values, the averaging circuitry 806 increases a precision of the point spread function value measurement. For example, if the point spread function value of a first detector location at a first time is one hundred and fifty micrometers (e.g., 150 m) and the point spread function value of the same first detector location at a second time is 350 micrometers (e.g., 350 m)., the average of the two point spread function values is 250 micrometers (e.g., 250 m). In the example of
[0155] At block 1014, the detector location circuitry 802 determines if there are more detector locations to analyze. For example, in response to determining that there are more detector locations to analyze (e.g., YES), control returns to block 1012. Alternatively, in response to determining that there are not more detector locations to analyze (e.g., NO), control advances to block 1016. The example detector location circuitry 802 may determine there are more detector locations based on if some detector locations have an average point-spread value and some detector locations have multiple individual point-spread values, but not an average point-spread value.
[0156] At block 1016, the example kernel calculator circuitry 810 generates the adaptive convolution kernel based on the average point spread function values of the plurality of center locations. In some examples, the adaptive convolution kernel is selected from a pre-generated set or library of non-uniform local convolution kernels. The example kernel calculator circuitry 810 may generate a non-uniform kernel set of local convolution kernels by using an inverse Fourier transform on the average point spread function values, for example. The example kernel calculator circuitry 810 stores a correspondence for the local convolution kernels (K.sub.x,y) based on center locations. For example, the kernel calculator circuitry 810 stores that a first local convolution kernel (K.sub.1,1) was generated based on a first detector location that is in a first spot in a horizontal direction and a first spot in a vertical direction. The first local convolution kernel (K.sub.1,1) is transmitted for use by the sharpening circuitry 708 (
[0157]
[0158]
[0159]
[0160] The programmable circuitry platform 1300 of the illustrated example includes programmable circuitry 1312. The programmable circuitry 1312 of the illustrated example is hardware. For example, the programmable circuitry 1312 can be implemented by one or more integrated circuits, logic circuits, FPGAs, microprocessors, CPUs, GPUs, DSPs, and/or microcontrollers from any desired family or manufacturer. The programmable circuitry 1312 may be implemented by one or more semiconductor based (e.g., silicon based) devices.
[0161] In this example, the programmable circuitry 1312 implements an example network interface 702, example image capture circuitry 704, example pre-processing circuitry 706, example sharpening circuitry 708, example kernel determiner circuitry 710, example post-processing circuitry 712, example modulation transfer function circuitry 714, example dose determination circuitry 716, example detector location circuitry 802, example point-spread measurement circuitry 804, example averaging circuitry 806, example AI model circuitry 808, and example kernel calculator circuitry 810.
[0162] The programmable circuitry 1312 of the illustrated example includes a local memory 1313 (e.g., a cache, registers, etc.). The programmable circuitry 1312 of the illustrated example is in communication with main memory 1314, 1316, which includes a volatile memory 1314 and a non-volatile memory 1316, by a bus 1318. The volatile memory 1314 may be implemented by Synchronous Dynamic Random Access Memory (SDRAM), Dynamic Random Access Memory (DRAM), RAMBUS Dynamic Random Access Memory (RDRAM), and/or any other type of RAM device. The non-volatile memory 1316 may be implemented by flash memory and/or any other desired type of memory device. Access to the main memory 1314, 1316 of the illustrated example is controlled by a memory controller 1317. In some examples, the memory controller 1317 may be implemented by one or more integrated circuits, logic circuits, microcontrollers from any desired family or manufacturer, or any other type of circuitry to manage the flow of data going to and from the main memory 1314, 1316.
[0163] The programmable circuitry platform 1300 of the illustrated example also includes interface circuitry 1320. The interface circuitry 1320 may be implemented by hardware in accordance with any type of interface standard, such as an Ethernet interface, a universal serial bus (USB) interface, a Bluetooth interface, a near field communication (NFC) interface, a Peripheral Component Interconnect (PCI) interface, and/or a Peripheral Component Interconnect Express (PCIe) interface.
[0164] In the illustrated example, one or more input devices 1322 are connected to the interface circuitry 1320. The input device(s) 1322 permit(s) a user (e.g., a human user, a machine user, etc.) to enter data and/or commands into the programmable circuitry 1312. The input device(s) 1322 can be implemented by, for example, an audio sensor, a microphone, a camera (still or video), a keyboard, a button, a mouse, a touchscreen, a trackpad, a trackball, an isopoint device, and/or a voice recognition system.
[0165] One or more output devices 1324 are also connected to the interface circuitry 1320 of the illustrated example. The output device(s) 1324 can be implemented, for example, by display devices (e.g., a light emitting diode (LED), an organic light emitting diode (OLED), a liquid crystal display (LCD), a cathode ray tube (CRT) display, an in-place switching (IPS) display, a touchscreen, etc.), a tactile output device, a printer, and/or speaker. The interface circuitry 1320 of the illustrated example, thus, typically includes a graphics driver card, a graphics driver chip, and/or graphics processor circuitry such as a GPU.
[0166] The interface circuitry 1320 of the illustrated example also includes a communication device such as a transmitter, a receiver, a transceiver, a modem, a residential gateway, a wireless access point, and/or a network interface to facilitate exchange of data with external machines (e.g., computing devices of any kind) by a network 1326. The communication can be by, for example, an Ethernet connection, a digital subscriber line (DSL) connection, a telephone line connection, a coaxial cable system, a satellite system, a beyond-line-of-sight wireless system, a line-of-sight wireless system, a cellular telephone system, an optical connection, etc.
[0167] The programmable circuitry platform 1300 of the illustrated example also includes one or more mass storage discs or devices 1328 to store firmware, software, and/or data. Examples of such mass storage discs or devices 1328 include magnetic storage devices (e.g., floppy disk, drives, HDDs, etc.), optical storage devices (e.g., Blu-ray disks, CDs, DVDs, etc.), RAID systems, and/or solid-state storage discs or devices such as flash memory devices and/or SSDs.
[0168] The machine readable instructions 1332, which may be implemented by the machine readable instructions of
[0169]
[0170] The cores 1402 may communicate by a first example bus 1404. In some examples, the first bus 1404 may be implemented by a communication bus to effectuate communication associated with one(s) of the cores 1402. For example, the first bus 1404 may be implemented by at least one of an Inter-Integrated Circuit (I2C) bus, a Serial Peripheral Interface (SPI) bus, a PCI bus, or a PCIe bus. Additionally or alternatively, the first bus 1404 may be implemented by any other type of computing or electrical bus. The cores 1402 may obtain data, instructions, and/or signals from one or more external devices by example interface circuitry 1406. The cores 1402 may output data, instructions, and/or signals to the one or more external devices by the interface circuitry 1406. Although the cores 1402 of this example include example local memory 1420 (e.g., Level 1 (L1) cache that may be split into an L1 data cache and an L1 instruction cache), the microprocessor 1400 also includes example shared memory 1410 that may be shared by the cores (e.g., Level 2 (L2 cache)) for high-speed access to data and/or instructions. Data and/or instructions may be transferred (e.g., shared) by writing to and/or reading from the shared memory 1410. The local memory 1420 of each of the cores 1402 and the shared memory 1410 may be part of a hierarchy of storage devices including multiple levels of cache memory and the main memory (e.g., the main memory 1314, 1316 of
[0171] Each core 1402 may be referred to as a CPU, DSP, GPU, etc., or any other type of hardware circuitry. Each core 1402 includes control unit circuitry 1414, arithmetic and logic (AL) circuitry (sometimes referred to as an ALU) 1416, a plurality of registers 1418, the local memory 1420, and a second example bus 1422. Other structures may be present. For example, each core 1402 may include vector unit circuitry, single instruction multiple data (SIMD) unit circuitry, load/store unit (LSU) circuitry, branch/jump unit circuitry, floating-point unit (FPU) circuitry, etc. The control unit circuitry 1414 includes semiconductor-based circuits structured to control (e.g., coordinate) data movement within the corresponding core 1402. The AL circuitry 1416 includes semiconductor-based circuits structured to perform one or more mathematic and/or logic operations on the data within the corresponding core 1402. The AL circuitry 1416 of some examples performs integer based operations. In other examples, the AL circuitry 1416 also performs floating-point operations. In yet other examples, the AL circuitry 1416 may include first AL circuitry that performs integer-based operations and second AL circuitry that performs floating-point operations. In some examples, the AL circuitry 1416 may be referred to as an Arithmetic Logic Unit (ALU).
[0172] The registers 1418 are semiconductor-based structures to store data and/or instructions such as results of one or more of the operations performed by the AL circuitry 1416 of the corresponding core 1402. For example, the registers 1418 may include vector register(s), SIMD register(s), general-purpose register(s), flag register(s), segment register(s), machine-specific register(s), instruction pointer register(s), control register(s), debug register(s), memory management register(s), machine check register(s), etc. The registers 1418 may be arranged in a bank as shown in
[0173] Each core 1402 and/or, more generally, the microprocessor 1400 may include additional and/or alternate structures to those shown and described above. For example, one or more clock circuits, one or more power supplies, one or more power gates, one or more cache home agents (CHAs), one or more converged/common mesh stops (CMSs), one or more shifters (e.g., barrel shifter(s)) and/or other circuitry may be present. The microprocessor 1400 is a semiconductor device fabricated to include many transistors interconnected to implement the structures described above in one or more integrated circuits (ICs) contained in one or more packages.
[0174] The microprocessor 1400 may include and/or cooperate with one or more accelerators (e.g., acceleration circuitry, hardware accelerators, etc.). In some examples, accelerators are implemented by logic circuitry to perform certain tasks more quickly and/or efficiently than can be done by a general-purpose processor. Examples of accelerators include ASICs and FPGAs such as those discussed herein. A GPU, DSP and/or other programmable device can also be an accelerator. Accelerators may be on-board the microprocessor 1400, in the same chip package as the microprocessor 1400 and/or in one or more separate packages from the microprocessor 1400.
[0175]
[0176] More specifically, in contrast to the microprocessor 1400 of
[0177] In the example of
[0178] In some examples, the binary file is compiled, generated, transformed, and/or otherwise output from a uniform software platform utilized to program FPGAs. For example, the uniform software platform may translate first instructions (e.g., code or a program) that correspond to one or more operations/functions in a high-level language (e.g., C, C++, Python, etc.) into second instructions that correspond to the one or more operations/functions in an HDL. In some such examples, the binary file is compiled, generated, and/or otherwise output from the uniform software platform based on the second instructions. In some examples, the FPGA circuitry 1500 of
[0179] The FPGA circuitry 1500 of
[0180] The FPGA circuitry 1500 also includes an array of example logic gate circuitry 1508, a plurality of example configurable interconnections 1510, and example storage circuitry 1512. The logic gate circuitry 1508 and the configurable interconnections 1510 are configurable to instantiate one or more operations/functions that may correspond to at least some of the machine readable instructions of
[0181] The configurable interconnections 1510 of the illustrated example are conductive pathways, traces, vias, or the like that may include electrically controllable switches (e.g., transistors) whose state can be changed by programming (e.g., using an HDL instruction language) to activate or deactivate one or more connections between one or more of the logic gate circuitry 1508 to program desired logic circuits.
[0182] The storage circuitry 1512 of the illustrated example is structured to store result(s) of the one or more of the operations performed by corresponding logic gates. The storage circuitry 1512 may be implemented by registers or the like. In the illustrated example, the storage circuitry 1512 is distributed amongst the logic gate circuitry 1508 to facilitate access and increase execution speed.
[0183] The example FPGA circuitry 1500 of
[0184] Although
[0185] It should be understood that some or all of the circuitry of
[0186] In some examples, some or all of the circuitry of
[0187] In some examples, the programmable circuitry 1312 of
[0188] A block diagram illustrating an example software distribution platform 1605 to distribute software such as the example machine readable instructions 1332 of
[0189] Including and comprising (and all forms and tenses thereof) are used herein to be open ended terms. Thus, whenever a claim employs any form of include or comprise (e.g., comprises, includes, comprising, including, having, etc.) as a preamble or within a claim recitation of any kind, it is to be understood that additional elements, terms, etc., may be present without falling outside the scope of the corresponding claim or recitation. As used herein, when the phrase at least is used as the transition term in, for example, a preamble of a claim, it is open-ended in the same manner as the term comprising and including are open ended. The term and/or when used, for example, in a form such as A, B, and/or C refers to any combination or subset of A, B, C such as (1) A alone, (2) B alone, (3) C alone, (4) A with B, (5) A with C, (6) B with C, or (7) A with B and with C. As used herein in the context of describing structures, components, items, objects and/or things, the phrase at least one of A and B is intended to refer to implementations including any of (1) at least one A, (2) at least one B, or (3) at least one A and at least one B. Similarly, as used herein in the context of describing structures, components, items, objects and/or things, the phrase at least one of A or B is intended to refer to implementations including any of (1) at least one A, (2) at least one B, or (3) at least one A and at least one B. As used herein in the context of describing the performance or execution of processes, instructions, actions, activities, etc., the phrase at least one of A and B is intended to refer to implementations including any of (1) at least one A, (2) at least one B, or (3) at least one A and at least one B. Similarly, as used herein in the context of describing the performance or execution of processes, instructions, actions, activities, etc., the phrase at least one of A or B is intended to refer to implementations including any of (1) at least one A, (2) at least one B, or (3) at least one A and at least one B.
[0190] As used herein, singular references (e.g., a, an, first, second, etc.) do not exclude a plurality. The term a or an object, as used herein, refers to one or more of that object. The terms a (or an), one or more, and at least one are used interchangeably herein. Furthermore, although individually listed, a plurality of means, elements, or actions may be implemented by, e.g., the same entity or object. Additionally, although individual features may be included in different examples or claims, these may possibly be combined, and the inclusion in different examples or claims does not imply that a combination of features is not feasible and/or advantageous.
[0191] As used herein, unless otherwise stated, the term above describes the relationship of two parts relative to Earth. A first part is above a second part, if the second part has at least one part between Earth and the first part. Likewise, as used herein, a first part is below a second part when the first part is closer to the Earth than the second part. As noted above, a first part can be above or below a second part with one or more of: other parts therebetween, without other parts therebetween, with the first and second parts touching, or without the first and second parts being in direct contact with one another.
[0192] As used in this patent, stating that any part (e.g., a layer, film, area, region, or plate) is in any way on (e.g., positioned on, located on, disposed on, or formed on, etc.) another part, indicates that the referenced part is either in contact with the other part, or that the referenced part is above the other part with one or more intermediate part(s) located therebetween.
[0193] As used herein, connection references (e.g., attached, coupled, connected, and joined) may include intermediate members between the elements referenced by the connection reference and/or relative movement between those elements unless otherwise indicated. As such, connection references do not necessarily infer that two elements are directly connected and/or in fixed relation to each other. As used herein, stating that any part is in contact with another part is defined to mean that there is no intermediate part between the two parts.
[0194] Unless specifically stated otherwise, descriptors such as first, second, third, etc., are used herein without imputing or otherwise indicating any meaning of priority, physical order, arrangement in a list, and/or ordering in any way, but are merely used as labels and/or arbitrary names to distinguish elements for ease of understanding the disclosed examples. In some examples, the descriptor first may be used to refer to an element in the detailed description, while the same element may be referred to in a claim with a different descriptor such as second or third. In such instances, it should be understood that such descriptors are used merely for identifying those elements distinctly within the context of the discussion (e.g., within a claim) in which the elements might, for example, otherwise share a same name.
[0195] As used herein, approximately and about modify their subjects/values to recognize the potential presence of variations that occur in real world applications. For example, approximately and about may modify dimensions that may not be exact due to manufacturing tolerances and/or other real world imperfections as will be understood by persons of ordinary skill in the art. For example, approximately and about may indicate such dimensions may be within a tolerance range of +/10% unless otherwise specified herein.
[0196] As used herein substantially real time refers to occurrence in a near instantaneous manner recognizing there may be real world delays for computing time, transmission, etc. Thus, unless otherwise specified, substantially real time refers to real time+1 second.
[0197] As used herein, the phrase in communication, including variations thereof, encompasses direct communication and/or indirect communication through one or more intermediary components, and does not require direct physical (e.g., wired) communication and/or constant communication, but rather additionally includes selective communication at periodic intervals, scheduled intervals, aperiodic intervals, and/or one-time events.
[0198] As used herein, programmable circuitry is defined to include (i) one or more special purpose electrical circuits (e.g., an application specific circuit (ASIC)) structured to perform specific operation(s) and including one or more semiconductor-based logic devices (e.g., electrical hardware implemented by one or more transistors), and/or (ii) one or more general purpose semiconductor-based electrical circuits programmable with instructions to perform specific functions(s) and/or operation(s) and including one or more semiconductor-based logic devices (e.g., electrical hardware implemented by one or more transistors). Examples of programmable circuitry include programmable microprocessors such as Central Processor Units (CPUs) that may execute first instructions to perform one or more operations and/or functions, Field Programmable Gate Arrays (FPGAs) that may be programmed with second instructions to cause configuration and/or structuring of the FPGAs to instantiate one or more operations and/or functions corresponding to the first instructions, Graphics Processor Units (GPUs) that may execute first instructions to perform one or more operations and/or functions, Digital Signal Processors (DSPs) that may execute first instructions to perform one or more operations and/or functions, XPUs, Network Processing Units (NPUs) one or more microcontrollers that may execute first instructions to perform one or more operations and/or functions and/or integrated circuits such as Application Specific Integrated Circuits (ASICs). For example, an XPU may be implemented by a heterogeneous computing system including multiple types of programmable circuitry (e.g., one or more FPGAs, one or more CPUs, one or more GPUs, one or more NPUs, one or more DSPs, etc., and/or any combination(s) thereof), and orchestration technology (e.g., application programming interface(s) (API(s)) that may assign computing task(s) to whichever one(s) of the multiple types of programmable circuitry is/are suited and available to perform the computing task(s).
[0199] As used herein integrated circuit/circuitry is defined as one or more semiconductor packages containing one or more circuit elements such as transistors, capacitors, inductors, resistors, current paths, diodes, etc. For example an integrated circuit may be implemented as one or more of an ASIC, an FPGA, a chip, a microchip, programmable circuitry, a semiconductor substrate coupling multiple circuit elements, a system on chip (SoC), etc.
[0200] From the foregoing, it will be appreciated that example systems, apparatus, articles of manufacture, and methods have been disclosed that sharpen a radiographic image with a non-uniform kernel. Disclosed systems, apparatus, articles of manufacture, and methods improve the efficiency of using a computing device by saving processor cycles. By improving the image quality, the computing device is not required to generate a subsequent image which saves processor cycles for the computing device. Additionally, localized generation and application of kernels, rather than a single uniform kernel applied to an entire detector image, provides a cleaner, clearer, and more accurate image for automated processing and analysis to drive other systems in patient diagnosis and treatment. Disclosed systems, apparatus, articles of manufacture, and methods are accordingly directed to one or more improvement(s) in the operation of a machine such as a computer or other electronic and/or mechanical device.
[0201] Example methods, apparatus, systems, and articles of manufacture to sharpen a radiographic image with an adaptive kernel by increasing a uniformity in sharpness are disclosed herein. Further examples and combinations thereof include the following:
[0202] Example 1 includes an apparatus to sharpen a radiographic image comprising interface circuitry, machine readable instructions, and programmable circuitry to at least one of instantiate or execute the machine readable instructions to capture a radiographic image with a detector receiving a beam from a source, and perform a digital correction to the radiographic image to generate a digital image with increased uniformity in sharpness compared to the radiographic image.
[0203] Example 2 includes the apparatus of example 1, wherein the digital correction is local spatial filtering.
[0204] Example 3 includes any of example 1 and example 2, wherein the digital correction is performed by using an adaptive convolution kernel.
[0205] Example 4 includes any of examples 1-3, wherein the adaptive convolution kernel is generated using an adaptive convolution kernel function that generates non-stationary convolution kernels.
[0206] Example 5 includes any of examples 1-4, wherein the adaptive convolution kernel function generates coefficient values based on a coordinate location on a surface of the detector.
[0207] Example 6 includes any of examples 1-5, wherein the adaptive convolution kernel function generates coefficient values based on an angle between the source and a coordinate location on a surface of the detector.
[0208] Example 7 includes any of examples 1-6, wherein the adaptive convolution kernel function generates coefficient values based on a current tomographic angle of a tomographic imaging tube relative to a normal of a plane of the detector.
[0209] Example 8 includes any of examples 1-7, wherein the adaptive convolution kernel function generates coefficient values based on dose.
[0210] Example 9 includes any of examples 1-8, wherein the adaptive convolution kernel is generated by selection from a set of local convolution kernels determined based on at least one of a position on an area of the detector, an angle between the source and a coordinate location on a surface of the detector, and dose.
[0211] Example 10 includes any of examples 1-9, wherein a first local convolution kernel is used for sharpening a first portion of the radiographic image that corresponds to a first region on a surface of the detector and a second local convolution kernel is used for sharpening a second portion of the radiographic image that corresponds to a second region on the surface of the detector, the first region different from the second region.
[0212] Example 11 includes any of examples 1-10, further including storing the digital image and transmitting the digital image to an external system.
[0213] Example 12 includes any of examples 1-11, wherein the radiographic image is a two-dimensional X-ray image.
[0214] Example 13 includes any of examples 1-12, wherein the radiographic image is a three-dimensional tomosynthesis image, wherein the three-dimensional tomosynthesis image is obtained by computation from a set of two-dimensional X-ray images captured at different angles corresponding to a first revolution of the apparatus.
[0215] Example 14 includes any of examples 1-13, further including measuring a point spread function value at a specific location on the detector of the apparatus, the point spread function value used in calibrating a set of local convolution kernels.
[0216] Example 15 includes any of examples 1-14, further including averaging a first point spread function value at a first location on the detector and a second point spread function value at the first location on the detector to generate an average point spread function value, the average point spread function value used in calibrating the set of local convolution kernels.
[0217] Example 16 includes a non-transitory machine readable storage medium comprising instructions to cause programmable circuitry to at least capture a first radiographic image with a medical imaging device, and perform a localized digital correction to the first radiographic image to generate a digital image with increased uniformity in sharpness compared to the radiographic image, the localized digital correction performed by at least one of linear convolution kernel using a non-stationary convolution kernel function that depends on position of the medical imaging device or a set of local convolution kernels, with ones of the local convolution kernels determined based on a position on a detector surface of the medical imaging device.
[0218] Example 17 includes example 16, wherein the instructions are to cause the programmable circuitry to increase modulation transfer function values associated with the first radiographic image.
[0219] Example 18 includes a method for sharpening a radiographic image comprising capturing a radiographic image with a detector receiving a beam from a source, performing a digital correction to generate a locally corrected radiographic image, and transmitting the locally corrected radiographic image to an external system.
[0220] Example 19 includes example 18, further including calibrating an imaging machine by performing a measurement process that quantifies a level of non-uniformity in blurring of radiographic images captured by the imaging machine, the calibrating to occur before capturing the radiographic image.
[0221] Example 20 includes any of example 18 and example 19, further including calibrating an imaging machine by determining a first local convolution kernel of a library of local convolution kernels by determining a plurality of detector locations, taking a test image of the detector, measuring a plurality of point-spread values associated with ones of the plurality of detector locations, and storing the plurality of point-spread values corresponding to the plurality of detector locations.
[0222] The following claims are hereby incorporated into this Detailed Description by this reference. Although certain example systems, apparatus, articles of manufacture, and methods have been disclosed herein, the scope of coverage of this patent is not limited thereto. On the contrary, this patent covers all systems, apparatus, articles of manufacture, and methods fairly falling within the scope of the claims of this patent.