Package: aafitrans
Aafitrans (AstroAlign FInd TRANSform)Aafitrans is a Python package that builds upon the capabilities of the Astroalign package'sfind_transformfunction. It incorporates several modifications to improve its functionality and performance:Enhanced RANSAC Algorithm: The RANSAC algorithm used in Aafitrans has been optimized to provide a solution that minimizes the sum of squared residuals. This improvement ensures a more accurate transformation estimation.Arun and Horn's Method: Aafitrans replaces Umeyama's method fromscikit-imagewith Arun and Horn's method for estimating'euclidean'or'similarity'transformations.Reflection Support: Unlike Astroalign, Aafitrans enables the matching of coordinate lists that include reflection along one axis. This enhancement expands the range of transformations that can be accurately estimated.Extended Transformation Options: Aafitrans supports all transformations available in thescikit-imagelibrary, providing a comprehensive set of options for aligning and transforming images.Note: only'euclidean','similarity', and'affine'transformations have been tested.Improved Matching Efficiency: Thekdtree_search_radiusparameter in Aafitrans allows users to set the search radius for matches, enabling faster and more efficient matching of corresponding points between images.Reproducible Results: Aafitrans introduces theseedparameter, which can be set during each run to ensure the reproducibility of results. This feature is particularly useful for research and debugging purposes.Dependency Optimization: Aafitrans eliminates the need for thesepandbottleneckpackages as dependencies, streamlining the installation process and reducing potential compatibility issues.Please see the original Astroalign software athttps://github.com/quatrope/astroalignCitation:Astroalign: A Python module for astronomical image registration.
Beroiz, M., Cabral, J. B., & Sanchez, B.
Astronomy & Computing, Volume 32, July 2020, 100384.InstallationpipinstallaafitransUsageIt is similar to Astroalign'sfind_transformfunction. However, there are many parameters available for the user to modify.fromaafitransimportfind_transformtransf,(matched_source_xy,matched_target_xy)=find_transform(source_xy,target_xy,max_control_points=50,ttype='similarity',pixel_tolerance=2,min_matches=4,num_nearest_neighbors=8,kdtree_search_radius=0.02,n_samples=1,get_best_fit=True,seed=None)WARNING:The Astroalignfind_transformfunction takes both coordinate lists and images as input, while the Aafitransfind_transformfunction only takes coordinate lists as input.Documentation forfind_transformfunctionThefind_transformfunction estimates the transform between two sets of control points, source and target. It returns a GeometricTransform objectT(see scikit-image documentation for details) that maps pixel x, y indices from the source image s = (x, y) into the target (destination) image t = (x, y).Parameters:source: An iterable of (x, y) coordinates of the source control points.target: An iterable of (x, y) coordinates of the target control points.max_control_points: Default value is 50. The maximum number of control points to find the transformation.ttype: Default value is'similarity'. The type of transform to be estimated. One of the following should be set: {'euclidean','similarity','affine','piecewise-affine','projective','polynomial'}. For details, seescikit-image documentation.pixel_tolerance: The maximum residual error for the estimated tranform.min_matches: The minimum number of matches to be found. A value of 1 refers to 1 triangle, corresponding to 3 pairs of coordinates.num_nearest_neighbors: The number of nearest neighbors of a given star (including itself) to construct the triangle invariants.kdtree_search_radius: The default is 0.02. This radius is used to find nearest neighbours while conducting a KD tree search of invariant features.n_samples: The minimum number of data points to fit the model to. A value of 1 refers to 1 triangle, corresponding to 3 pairs of coordinates.get_best_fit: Whether to minimize the total error.seed: Seed value for Numpy Random Generator.Returns:T: GeometricTransform object that maps pixel x, y indices from the source image s = (x, y) into the target (destination) image t = (x, y). It contains parameters of the transformation.(source_pos_array, target_pos_array): A tuple of corresponding star positions in source and target.Raises:TypeError: If input type ofsourceortargetis not supported.ValueError: If it cannot find more than 3 stars on any input.MaxIterError: If no transformation is found.