We're sorry but this page doesn't work properly without JavaScript enabled. Please enable it to continue.
Feedback

The Phantom of Radon

00:00

Formal Metadata

Title
The Phantom of Radon
Subtitle
A story of analytical sinograms
Title of Series
Number of Parts
130
Author
License
CC Attribution - NonCommercial - ShareAlike 3.0 Unported:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal and non-commercial purpose as long as the work is attributed to the author in the manner specified by the author or licensor and the work or content is shared also in adapted form only under the conditions of this
Identifiers
Publisher
Release Date
Language

Content Metadata

Subject Area
Genre
Abstract
This project contains an open source Python library for image reconstruction in Axial Computed Tomography (TAC), based on the analytical Radon transforms of some classes of phantoms. The package is available on GitHub at the following address: https://github.com/francescat93/Exact_sinogram. The mathematical phantoms are fictitious images, composed of very simple geometric figures (ellipses, squares and rectangles) that, sampled with the Radon transform allows to build a fictitious signal, called (exact) sinogram. Using a phantom gives the advantage to test the reconstruction algorithm on a zero-noise data so the error we get is only due to numerical inaccuracies in the algorithm itself. We want to calculate two reconstructed images from the approximated and exact sinograms, obtained applying the iradon function of the Python library scikit-image on both of them. We expect a smaller error on the exact reconstructed image. This turns to be true on continuous regions, but near the discontinuities of the phantom the Gibbs phenomenon prevents us to obtain the same enhancement.
Student's t-testX-ray computed tomographyPopulation densityMereologyNeuroinformatikVirtual machineQuantum stateSoftware testingAlgorithmData structureMusical ensembleFood energyObject (grammar)Sheaf (mathematics)Medical imagingLibrary (computing)XMLUMLComputer animationMeeting/Interview
Inverse elementFigurate numberScatteringPolygonQuicksortTransformation (genetics)Medical imagingEllipseAlgorithmLevel (video gaming)Meeting/Interview
PiArc (geometry)MechatronicsError messageTransformation (genetics)AlgorithmFunctional (mathematics)Line (geometry)Library (computing)Quantum stateProjective planeRepresentation (politics)CodeInverse elementType theoryNeuroinformatikParameter (computer programming)INTEGRALFigurate numberAxiom of choiceValidity (statistics)Image resolutionLine integralNoise (electronics)Medical imagingAngleMathematical analysisNumeral (linguistics)Instance (computer science)Virtual machinePixelFourier seriesApproximationMeasurementQuicksortGraph (mathematics)Zoom lensWavePoint (geometry)Square numberRectangle1 (number)Social classRandomizationNumberRight angleMusical ensembleLevel (video gaming)Analytic setDiagramInverse problemComputer fileEllipseRadon transformNichtlineares GleichungssystemEstimatorComputer animation
Arc (geometry)Square numberLibrary (computing)Error messagePoint (geometry)Active contour modelNumeral (linguistics)Pairwise comparisonAuditory maskingMedical imagingPerformance appraisalDefault (computer science)MetreCASE <Informatik>Functional (mathematics)Proxy serverLibrary (computing)Continuous functionRepresentation (politics)MereologyFourier seriesShape (magazine)INTEGRALConvex setSeries (mathematics)Sound effectFrequencyEllipseRectangleGibbs-samplingFunctional (mathematics)Logical constantL1-NormInterpolationTerm (mathematics)Projective planeAlgorithmMusical ensembleQuicksortBitInterior (topology)Cycle (graph theory)PixelType theoryTable (information)Radon transformFigurate numberRegular graphTransformation (genetics)Social classInverse elementComputer animation
LaptopNormed vector spaceInclusion mapCalculationExecution unitNumberCellular automatonMatrix (mathematics)Cartesian coordinate systemMusical ensembleSymmetric matrixFigurate numberoutputBitRaster graphicsReal numberSmoothingEllipseKernel (computing)Image resolutionRow (database)Point (geometry)Type theoryError messageFunctional (mathematics)Parameter (computer programming)Vector graphicsVector spaceGradientNumberQuantum stateAuditory maskingBinary codePixelAngleRotationLibrary (computing)LengthSquare numberAlgorithmTransformation (genetics)XML
CalculationLibrary (computing)Function (mathematics)Mathematical analysisMenu (computing)Execution unitActive contour modelAuditory maskingInverse elementDialectPoint (geometry)Structural loadDifferent (Kate Ryan album)AlgorithmAnalytic continuationInverse problemType theoryMatching (graph theory)Goodness of fitFigurate numberCASE <Informatik>Parameter (computer programming)Medical imagingError messageLine (geometry)ZeitdilatationQuantum stateDistancePolarization (waves)Library (computing)Cartesian coordinate systemMathematical analysisRange (statistics)Vertex (graph theory)Analytic setMusical ensembleNoise (electronics)WordThetafunktionDifferenz <Mathematik>Software testingLevel (video gaming)MathematicsComputer animation
QuicksortMedical imagingApplied mathematicsProjective planeEmailDynamical systemSuspension (chemistry)Information engineeringVirtual machineEndliche ModelltheorieSoftwareSoftware developerNeuroinformatikBuildingGalerkin-MethodeStudent's t-testComputer simulationFluid mechanicsMultiplication signMathematicsPattern recognitionMeeting/Interview
Transcript: English(auto-generated)
So, I'm a PhD student and I'm a PhD student and I did this work on computerized tomography.
Do you know about it? Do you know something? Do you know the technique? Yes, I think especially for medical issues. So, I can introduce briefly the work and then we can pass to questions.
Basically, computerized tomography is this technique to which we scan an object with its rays and the object is attenuating the energy of the rays depending on the internal structure, depending on the density of various parts and the tomography machine detects the energy of the solution.
So, I was saying that there is a reconstruction algorithm to process the data and access the image of the section of the body without cutting it.
Okay, so this is tomography and this work is not about the reconstruction algorithm but in this work we provide a library called the exact single that is a tool for the testing of reconstruction algorithms.
In particular, when we are testing a reconstruction algorithm, we don't use any real body. So, the testing of reconstruction algorithm is based on the support fun concept
that are not multiple figures, so I put in the poster. Okay, I was saying, I was speaking about phantom map. Do you know the concept of phantom map? No, so you're doing some sort of inverse scattering. Yes, so the phantom is a fictitious image that allows us to build a fictitious
which is the stenogram. Basically, we don't use any real body to test the algorithm, the reconstruction algorithm, but we use this image with very simple figures such as ellipses or polygonal figures
and then we apply the random transformer that gives us the stenogram. So, we do a projection of the phantom through the random transformer
which is defined, which is a mathematical tool, is the line integral. Okay, so you have to imagine that we scan the phantom with different angles theta
and with rays that are represented by the parameter t and then we compute the projection along the line which is individuated by these two parameters t and theta. So, we scan, we do this projection along these lines which represent the rays
and the representation of this projection is the stenogram which is this graph and using the phantom and the random transformer allows us to mimic the tomography experiment without doing it.
So, the stenogram represents data that we would collect with the tomography machine. So, RF is the data and you're trying to infer?
Yes, so in this data, so we have a data which is built a doc for our purpose and so you can use the random function that learn provides but since we speak about integrals, we using that lead to have an approximating stenogram
because numerical techniques for doing integrals obviously introduce an error, a numerical error.
So, our library which is exact stenogram compute an analytical random transform. So, we implement an approach which is analytical.
So, our data is exact in the sense that we are not computing the integral but we reach the value of the random with another method, so without using the integral.
I don't know if this could be clear because we must go deeper but basically using figures that have an equation, for example ellipses, allow us to find the value of the random transformer in an analytical way.
So, we reach these values keeping the computation of the integral. Okay, so you're actually trying to do the thought problem then? Yes. In this particular work, you're not trying to get f out of Rf, you're trying to get Rf out of f.
Sorry, I don't really understand. You're given f and f is the left diagram, right? So, f is the attenuation function because the phantom I'm showing here is the representation of how the body attenuates the waves.
Yes, and the scope of the medical imaging reconstruction is to reconstruct this image. So, getting back the function f starting from the synogram.
Yes, but in this work that you're doing right now, you're trying to find the synogram given the phantom. Yes, of course. So, we built this library which is provided with this class called
phantom that contains not only some special phantoms we elaborated but also their analytical random. And this library can be useful for someone that is testing a reconstruction algorithm
because starting from an exact datum is an advantage because the datum has no noise. So, in a certain sense, we remove bias. Yes, so that the person doing the inverse transform can focus on the inverse transform and not worry about the forward transform being correct.
Yes. So, they know that's the data they get which is the transformed function. Yes, all inaccuracies. So, the final error we get after applying the reconstruction algorithm is only due
to the algorithm itself and we can skip caring about noise in the data or error in measurement. Yeah. Oh, that's cool.
Yeah, that's cool. Okay, we estimate error with the two norm. So, the error estimate, okay, is not so precise but even with these little estimates, we can appreciate a little improvement.
Could you zoom in, please? Yes, please. Yeah, thank you. Okay. Yes, so here there is an error because, so I can explain, yes, this is the code is quite simple. I can show you also tutorial of the code. But basically, in the code, you can choose the phantom type. So, we have ellipses, sheplogon, a modified sheplogon or maybe squares or rectangles.
These are the phantoms we built. Yeah. And we can choose the resolution of the image. So, in this parameter and point number of pixels.
Okay, and then we save the phantom. So, we add the instance of the cluster and we put it in phm and then calling this method of the cluster, which is get phantom.
We get effectively the phantom associated to the resolution and the type we choose. So, in phi, we have our phantom. And then in analytical synogram, to the need of the guess synogram, we put the datum, the analytical datum, related to the phantom.
Okay. And then we invert this datum through the iradon.
So, basically, to test our library, we use the iradon, which is the inverse radon. So, this is a special choice for the reconstruction algorithm to test the validity of our library.
We choose iradon and iradon gives us the reconstructed image of the phantom and we call it pian because it's analytical. So clever. So, you're using how accurate their inverse transform is?
Yes. To work out how good your forward transform is? Yes. Nice. So, yes, for reconstruction algorithm, I knew that there are two types of reconstruction algorithm. So, basically, there is the ones based on filter back projection.
I don't know if you know something. Did you say also the null projection? Filter back projection. I don't know. Okay. So, basically, with radon, we do the projection of the image.
And then to reconstruct the image, we have to do a sort of back projection. Okay. Based on Fourier analysis. Okay. I did not go deep. Okay. And then there are iterative methods. But the iradon is a phantom of psychic learner and we apply this one.
Okay. And in a proxy synogram, we put the approximating synogram, okay, that we find applying the radon of the psychic learner.
So, psychic learner is providing a radon transform, which is done with the interpolation. So, numerical techniques of integration and the synogram that gives radon is approximated.
And we compare our phantom, which is the analytical, with the approximated one. I don't know if it's clear. So, we have an initial phantom. We can do two things. So, applying our radon, which is analytical, or radon of the psychic learner.
We did these two things. Yeah. And then we apply iradon to all of the two, yes, all of the two synogram. Yes. Okay.
Yes. And we get, we got that our approach gives an announcement in the error, in the error of the final reconstructed image. A better error than that. Yes, a smaller error.
In this table, you can see that the error evaluated on our reconstructed image for all the four types of phantom gives an error that is smaller. Even if, with a small percentage, is smaller than the one we get with the default functions of the psychic learner.
How sensitive is it to, oh, that's cool. Yeah. How sensitive is it to, sorry, sorry.
How sensitive is it to shape, to the shapes that you put in, so like real bodies won't be just, real bodies won't be just F equals zero or one. And they won't be, it's not nice. Oh, sorry, I didn't understand the point. Yeah, so your phantom function, your phantom, can you go up a bit?
Yeah, phantom is the... Yeah, go to the picture. Yeah, so that's like, the function is, the F is either zero or one, right? Yes. Yes, black is zero and white is one. So basically when we have black there is anything, so error.
And when we have white there is bone, for example. So it could be a representation of brain or some mind here of a bone. Yes. So I noticed that the shapes in that, the ellipses and also rectangles you said, they're all convex shapes, for example.
And this is also, it's also like piecewise, piecewise constant. Yes. Do you know how sensitive, yeah, do you know how sensitive your transforms are to weird non-convex behaviour?
Oh, I don't know exactly, but maybe you refer to the Gibbs phenomenon. We started here the Gibbs phenomenon because we saw that along the discontinuities of the figure, the error is spreading up.
And this seems to be a common feature because, yes, the function of the, yes, the F function, which is the definition, is discontinuous.
And we are approximating it with a continuous function. Yes. So along the end, since we involve also Fourier transform and its inverse,
yes, there are phenomenons associated to the foundation of the series, the Fourier series. And yes, considering much more terms of the series can attenuate this effect because we would go much more close to the discontinuities.
But in fact, we, in our error, in our evaluation of the error, we put a mask along the discontinuities of the figure. A mask, you can say, yes, a mask.
So you just say, we ignore the few pixels near that. Yes, basically, we didn't consider the contour and some, a little region around the contours as regards to the error.
So they don't contribute to the error because the error along the discontinuities would be too large. And this is a common phenomenon. And so to evaluate the announcement of our approach, we must, how can I say, we must, yes.
Yes. So if you took an F that wasn't discontinuous, if you took an F that is continuous and nice and smooth and everything. Do you think the error comparisons between the two radon transforms, do you think?
Yes, would be better. Do you think so? Would it help that, would it help their radon transform, for example? OK, so could it be that their radon transform is just tripping up over discontinuities?
Yes, yes, I think it would be better, but I don't really imagine an affirmation function which can be continuous. So I think it's not appropriate because, yes, if we think about the body, which has different parts inside.
Yes, because the attenuation depends on. Yes, OK, I was thinking about the body, which is not homogeneous and maybe.
Yes, if your attenuation function was continuous, then you have bigger things to worry about.
Yes, I think that the the announcement would. No, that makes sense. That makes sense. Yes, because I remember something. Yes, I think that could be also simpler.
The reconstruction algorithm, because I remember that the problem, yes, was along the discontinuities. And for example, there was the back projection, which is, yes, basically because of these discontinuities, we must use the filtered back projection.
So this filter that attenuates frequencies due to these discontinuities. The effect is continuous, is all much more simpler.
And yes, the announcement of the library would be much more pronounced. Yes, this is the worst case we can see that.
So we we eat enough that we have an integrable function, an absolute integrable function. And OK, if it is much more regular. Yes, yes, yes, yes.
Yes, this is my quantum guy. We provide the library with this default gallery of fountains. And then there are two meters of the class, one for the fountains and one for building the synogram with the radon.
And OK, these are some references. I can show you the tutorial if you don't have any other questions. So, yeah, OK.
So here we go. OK, so import some tools, some library we need. This is the way the answers.
So basically is used to detect the discontinuities. Binary delay for doing the applying the mask. So once we we detect the discontinuities, we enlarge the interval to be sure that the mask over the discontinuities.
Errors. And then, OK, this is the starting point of the tutorial.
So here we can choose the fountains type, which can be ellipses, squares and maybe we can try squares. And OK, and we choose the resolution. And here we store the fountains.
OK, yes. Here we can add as input also a matrix. Because basically a phantom is a matrix, is conceived at the beginning as a
matrix of values of the parameter of the figures that we want in the fountains. For example, you can imagine no one. So in the fountains there are, for example, five squares.
So a square is represented by five parameters. The two coordinates of the center point, the length of the side, the angle of rotation. Yeah. And basically you can build a matrix in which the rows represent the parameters of one square.
So each row is related to one square. And then we can put this matrix as input of this function.
And we can build our own fountains. So we provide a gallery of the full fountains. But if you want, you define here a matrix with the parameters we want. And then we put the matrix inside this fountains.
So you're basically, basically it's kind of like vector graphics. OK, yeah. Obviously in real applications it would be a raster image.
In real applications it would be a raster image, I assume. OK, this is the fountains, the initial fountains.
Then we compute the synogram, the analytical synogram. And the approximated one. So we have the analytical here approximated. So is this computing? It's a bit slow.
Oh yes, I understand. Because the number of points should be equal to the number of...
Yes, basically the number of pixels should be... The number of rays we use should be equal to the number of pixels.
But the algorithm does it right. OK, I don't know why.
I don't understand the Sobel transform thing.
Why is it so slow now?
So for the Sobel transform you're kind of smoothing before you take the gradient.
Yeah. Yes.
Sorry, you're breaking up the world.
OK, so we have the... Sorry, can't hear you. There's a noise.
Yes. Sorry, can't hear you again. Yes, but it's very quiet.
OK, so maybe then our analytical...
What's the y-axis? What's the vertical axis? Yeah, t is the parameter that...
Sorry. Yeah. Yeah. OK, for each theta, so for each angle, there are a range...
Each ray we send is individuated by t. Yes, our polar coordinates, sorry, in the t-word. Ready or not? Yes, polar. So for each theta, we have t, which is the distance from the origin of the reference, we can say.
So each t individuates a line, the line of a ray, of a particular ray. Yeah, OK, yeah.
OK, yes, this is the difference between the reconstructed image and the initial phantom by the radon of the type learner. And this is the difference between our reconstructed phantom and the initial one.
And we can see that the error is concentrated along the discontinuities, the contours of the figure. So in fact, if we don't put the mask, so k is zero, it's representing the mask.
So if we consider the contour, we don't see the announcement of our algorithm because we have an error which is greater than the one of the radon of the cyclic learner.
But if we take into account the Gibbs phenomenon, putting this parameter to a value different from zero, we have the announcement because, yes, a little one, but OK, it's a certain point.
Maybe the error analysis should be made in more detail. Yes, this is to see the mask, basically. OK, here is not so visible, but yes, this contour should be white.
OK, the mask here is not working really well because we should hide all of the white because it's the discontinuity. So we can enlarge the mask with this parameter.
We should put three, four or something like that because this parameter enlarges, so do the dilation of the mask. And this is the brief tutorial for applications. Isn't it the case that the discontinuities are where you most care about them because if you're thinking about muscle going to bone?
Yes. Isn't it quite important that you know exactly where the discontinuities are? Yes. So you are saying that, for example, I don't know.
OK, you mean in real application, we don't know where are the discontinuities? Yeah, surely you're going to be quite interested in where those discontinuities are. So you could have a really good match. You could have a really good match in continuous regions.
But if you're worse at discontinuities. Yeah, but this step we are done is to be sure that we test the reconstruction algorithm well.
So I think that if we would apply once we. So, yes, once we compare the two different algorithms using our library, we are sure that we are comparing the right things.
Yeah, when you do the backwards. Yes. So we are sure that what we are doing is the best we can do. I don't know how to explain without caring about.
Yeah, I kind of see what you mean. We can do. Yeah, you want to get you want to essentially you want to evaluate the backwards transforms based on it, based on your forwards transform rather than based on their forwards.
Yes. Yes, we at this stage, we can use really simple figures and it's better to use the simplest. Because in this way, we can integrate the discontinuities discontinuities in a perfect way.
And we test our package. Yes, that's pretty cool. There's loads of people doing inverse like inverse problems.
Yeah, yeah. First step could be change. Yes, we tried to to to elaborate the reconstruction algorithm. So that's the needs on different reconstruction algorithms.
And we we were inspired by the algorithm. OK, then we decided to use the algorithm, but choosing the filter and choosing. Yes, the filter and yes, choosing the filter basically or the type of the construction algorithm.
You can comparing different things and give much more, I say, give much more value to our library.
So because at this stage, we used only the algorithm and another algorithm similar. But yes, this is a starting point. OK, maybe we have to finish if you. Yes, it's quite late. But if you want, we can continue in the chapter in the channel of the poster.
If you have any questions. Good to see more.
And what do you work about? So I was I was a Ph.D. student in applied maths. Well, kind of fluid mechanics. I graduated last year and now I work in sound recognition. I'm a data engineer nowadays.
Newer networks or something like that? Yeah, so I don't do machine learning myself. I do data engineering. OK, cool. Building up a data pipeline. I work on computation after dynamics suspensions.
I didn't know if you know, I did not do suspensions. I did dry gremlin materials, dry gremlin flows. Very cool. Yeah. OK. Thank you very much. Sorry. What sort of things do you do with suspensions? Simulations. I use the software which is Lamps.
You know, I know Lamps, molecular dynamics. I'm a developer for Mercury DPM and we like to bitch about Lamps. OK. Yes. We are elaborating multi-scale model.
Yes. Using discontinuous galerkin and molecular dynamics. Basically I use Lamps to get data. How did you come in to do this project then? Yes, with some colleagues.
Yes, there was a researcher and I followed the course on medical imaging. Yes, and it was a sort of a joke. I was born like a joke and we really enjoyed it. That's super cool.
I'd love to talk sometime about suspensions actually. Maybe some other time. Yeah, of course. I would like to. Give you my email. Yes, I am. We have to leave maybe the channel.
Thank you very much, John.