Airy function fitting on minima

14 ビュー (過去 30 日間)
Julien Maxime
Julien Maxime 2023 年 3 月 29 日
コメント済み: Julien Maxime 2023 年 5 月 17 日 14:16
I am making a program to delete fringes on an image.
My approch is the following:
  1. (Done) In a given zone, integrate radially around a arbitrary center to search for minima of signals with a given thickness of circle. Several thicknesses were tried and the better optimized was selected. From this, position of minima on X axis were saved as optimisation points of interest. I chose to save only one point, the radius value, as I consider as a simplifying model, fringes circular.
  2. (Done) Selection of an optimal center by moving it around and observe the impact on the signal amplitude of these points of interest.
  3. Once we have a optimized center and found position minima (on X axis) of each of the fringes seen in the images, I would like to fit in to an Airy function or any other function that could fit thoses fringes.
  4. Once fitted, i plan to make the difference between an image of the fitted function and my image.
I am now starting the 3rd part but it is the one that I am the least knowledgable and I really have no idea how to fitting an airy function just by having its center and minima. If you have any ideas, could you please share it with me ?
Thank you very much,

回答 (1 件)

Jack 2023 年 3 月 29 日
Fitting an Airy function to the fringes you have identified can be a good approach to accurately model and remove the fringes from your image. An Airy function is a special case of the more general Bessel function, which describes the diffraction pattern of a circular aperture.
To fit an Airy function to your data, you could use a nonlinear least squares fitting algorithm. This involves defining an objective function that measures the difference between the Airy function and your data, and then minimizing this objective function to find the parameters of the Airy function that best fit your data.
The parameters of the Airy function include the radius of the circular aperture, which you have already identified, and the amplitude and width of the function. You could start by estimating these parameters from your data, for example by using the height and width of the fringes you have identified.
Once you have an estimate of the parameters, you can use a fitting algorithm such as the Levenberg-Marquardt algorithm to minimize the objective function and find the best-fit parameters. There are many libraries available in various programming languages that can perform nonlinear least squares fitting, such as SciPy in Python.
After fitting the Airy function to your data, you can subtract it from your original image to remove the fringes. Alternatively, you could use the fitted function to interpolate the fringes and remove them from your image.
Keep in mind that fitting an Airy function can be sensitive to noise and other sources of error in your data. It may be helpful to first preprocess your data to remove noise or correct for other sources of distortion before fitting the Airy function.
  1 件のコメント
Julien Maxime
Julien Maxime 2023 年 5 月 17 日 14:16
Sorry for the late, late, late answer.. I agree with you on all points but I cannot find an easy formula for the airy function (the A(z) real part). The matlab one is quite hermetic and does not allow the modification of parameters such as width or "periodicity" of the function. Therefore it is impossible to try and fit it with mine.
What do you think about this problem ?
Thank you very much!



Find more on Special Functions in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by