Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Scope setting for an initial prototype #3

Open
8 tasks
uellue opened this issue Jul 16, 2019 · 2 comments
Open
8 tasks

Scope setting for an initial prototype #3

uellue opened this issue Jul 16, 2019 · 2 comments

Comments

@uellue
Copy link
Member

uellue commented Jul 16, 2019

The scope for first "test prototypes" should be wide enough to validate and improve the general concept and API. At the same time, it should be specific enough to be implemented quickly.

Idea collection for a first attempt:

Do a full correction and physical data analysis for the SiGe blobfinder analysis. https://nbviewer.jupyter.org/github/LiberTEM/LiberTEM/blob/260b20a6856f81b4ae7af93a16b5af635a5b5fee/examples/strainmap-SiGe.ipynb

  • Dark, gain, hot, dead correction for detector data
    • What is faster: Sparse matrix after dark frame subtraction "in one go", or separate steps of multiplication and pixel fiddling?
  • Scale bar and physical coordinate map in 3D sample coordinates for navigation dimension, including non-linear distortions of the scan coordinates
    • Pragmatic approach: make the mapping linear and put non-linear terms in the correction (next item)
    • The linear part is a very, very fast and simple affine transformation. --> Return value is the linear transformation matrix
    • Probably separate into mapping in focal plane coordinates, and then mapping from focal plane to sample coordinates? That would make the non-trivial 3D sample coordinate part optional.
    • Zero point for focal plane: Beam position at zero displacement of the scan coils?
  • Include correction for sample drift and scan noise (actual values are not known at this time, include just to develop API)
  • Scale bars and scattering angle map for detector frames, including aberrations of the projection
    • Same as scan: Main part as affine transformation, non-linear parts as error polynom and as explicit map in signal space
    • Separate in map from pixel coordinates to physical detector coordinates, and from detector coordinates to scattering angle
    • Reference center point is position of central beam at zero deflection
  • Correct descan error
  • Linear part: Affine transformation of nav space to center offset value
  • Error term: Map of nav space to center offset to be added to linear part
  • Fit descan error and generate new correction and user parameters
    • Match linear part of descan error to vacuum reference image (EMPAD field mapping should have suitable data)
  • Size and elliptical distortion of the bright field disk as a function of scan position and position on the detector
    • This could be implemented with a "virtual illumination" that uses matrix optics plus an error term to project a source image through an aperture. For the time being, the source image can likely be a point on the optical axis. This introduces the lens errors that are a function of scan position because this approach can describe how the beam passes through the column away from the optical axis. Additionally, the image will be distorted by the projection, which is handled by the corrections described above.
  • Scale bars and map of "pinhole camera" sample coordinates on the detector as a function of defocus
@uellue
Copy link
Member Author

uellue commented Jul 16, 2019

Probably it is a good idea to separate corrections by their origin and let the application add them up to make transparent and controllable where they come from. No "magic numbers".

@uellue
Copy link
Member Author

uellue commented Jul 18, 2019

Some of the corrections can likely be folded into a single processing step by correcting masks instead of data.

Detector correction

Scattering angle and similar coordinates

  • Masks in physical coordinates, including distortions, can be generated by applying a filter to maps of those coordinates. Example: Calculating the scattering angle of each detector pixel allows to select pixels within a certain range to generate a bright field disk or virtual dark field detector.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant