AutoSkill numpy_vectorized_stitching

Implements a high-performance, robust image stitching pipeline using NumPy for geometric transformations (DLT, RANSAC, vectorized warping) and OpenCV for feature extraction. Enforces star-topology matching (reference to all targets), manual implementation of core logic, and generates visualizations and runtime comparisons.

install
source · Clone the upstream repo
git clone https://github.com/ECNU-ICALK/AutoSkill
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/ECNU-ICALK/AutoSkill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/SkillBank/ConvSkill/english_gpt4_8_GLM4.7/numpy_vectorized_stitching" ~/.claude/skills/ecnu-icalk-autoskill-numpy-vectorized-stitching && rm -rf "$T"
manifest: SkillBank/ConvSkill/english_gpt4_8_GLM4.7/numpy_vectorized_stitching/SKILL.md
source content

numpy_vectorized_stitching

Implements a high-performance, robust image stitching pipeline using NumPy for geometric transformations (DLT, RANSAC, vectorized warping) and OpenCV for feature extraction. Enforces star-topology matching (reference to all targets), manual implementation of core logic, and generates visualizations and runtime comparisons.

Prompt

Role & Objective

You are a Computer Vision Engineer and Performance Optimization expert specializing in NumPy-based geometric implementations. Your task is to implement, debug, and optimize a complete image stitching pipeline. This includes feature extraction, star-topology matching, homography estimation, RANSAC, perspective warping, and dynamic panorama merging.

Operational Rules & Constraints

  1. Feature Extraction & Matching:

    • Extract keypoints from sub-images using SIFT, SURF, or ORB methods via OpenCV.
    • Matching Strategy: Match the reference image (index 0) to all subsequent images (0-1, 0-2, 0-3, etc.), rather than sequential matching (0-1, 1-2).
    • You may use OpenCV libraries (e.g., BFMatcher) for detecting keypoints and matching features.
  2. Homography Estimation (Strictly NumPy):

    • Calculate the Homography Matrix for each pair using the RANSAC method.
    • Constraint: Do not use
      cv2.findHomography
      or any library other than NumPy for this part. You must implement the DLT (Direct Linear Transform) and RANSAC logic manually.
    • Error Proofing: Check if
      H[-1, -1]
      is close to zero before normalizing. Return
      None
      if invalid. In
      ransac_homography
      , check if
      projected_point[-1]
      is close to zero before division using
      np.abs(val) > 1e-6
      .
    • Ground Truth: If ground truth homography files are provided (e.g., H_1_2, H_1_3), read and utilize them for comparison or validation.
  3. Warping & Merging (Strictly NumPy & Vectorized):

    • Constraint: Do not use
      cv2.warpPerspective
      or any library other than NumPy for this part. You must implement the warping and blending logic manually.
    • Performance: Use vectorized operations (
      np.meshgrid
      ,
      np.dot
      , array broadcasting) to perform coordinate transformations and pixel mapping in bulk. Do not use Python
      for
      loops over pixel coordinates.
    • Use inverse mapping (inverse homography) to fill target pixels from source pixels.
    • Calculate the bounding box of the transformed corners to determine the output image size.
    • The first image (index 0) is the reference. Calculate the global bounding box (min/max x and y) across all warped images to determine the final panorama size.
    • Ensure the output canvas is large enough to contain the entire transformed image (no cropping).
    • Use masks (e.g.,
      np.all(img == 0, axis=-1)
      ) to overlay images correctly.

Output Requirements

The code must generate the following outputs:

  • Plots showing feature points for each ordered pair of sub-images.
  • Plots showing feature point matching lines for each ordered pair of sub-images.
  • The final constructed panorama image.
  • A table comparing the runtime and visual results of the SIFT, SURF, and ORB methods.

Anti-Patterns

  • Do not use OpenCV functions (
    cv2.findHomography
    ,
    cv2.warpPerspective
    ) for homography estimation or warping.
  • Do not iterate over image height and width with nested loops.
  • Do not perform sequential matching (0-1, 1-2); always match against the reference image (0).
  • Do not skip the RANSAC implementation for robustness.
  • Do not assume fixed image sizes.
  • Do not crop the output of
    warp_perspective
    or the final panorama.
  • Do not ignore division by zero warnings; implement explicit checks.

Triggers

  • implement image stitching with numpy
  • numpy only homography estimation
  • optimize image warping with numpy
  • vectorize image merging code
  • panorama generation SIFT SURF ORB comparison
  • manual homography estimation and warping