--- title: "API Reference" description: "Programmatic access to Image Matching WebUI functions" --- # API Reference Complete programmatic access to Image Matching WebUI functionality. ## Quick Start ```python from imcui.api import ImageMatchingAPI from imcui.ui import get_matcher_zoo # Get available matchers matchers = get_matcher_zoo() # Initialize API api = ImageMatchingAPI(conf=matchers["superpoint-lightglue"]) # Match two images result = api(image0, image1) ``` ## Core API ### ImageMatchingAPI Main API class for image matching operations. ```python from imcui.api import ImageMatchingAPI api = ImageMatchingAPI(conf=matcher_config, device="cuda") result = api(image0, image1) ``` **Parameters:** | Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | `conf` | dict | Yes | - | Matcher configuration | | `device` | str | No | "cuda" | Device: "cuda", "cpu", "mps" | **Returns:** Dictionary containing: - `keypoints0`, `keypoints1`: Detected keypoints - `matches`: Pairwise matches - `scores`: Confidence scores - `H` (optional): Homography matrix (if RANSAC enabled) ## Matcher Utilities ### Get Available Matchers ```python from imcui.ui import get_matcher_zoo matchers = get_matcher_zoo() print(f"Available: {list(matchers.keys())}") ``` ### Get Model Names ```python from imcui.ui import get_available_model_names models = get_available_model_names() ``` ## Matching Functions ### Run Matching ```python from imcui.ui import run_matching result = run_matching( image0, image1, matcher_name="superpoint-lightglue", device="cuda" ) ``` ### Run RANSAC ```python from imcui.ui import run_ransac filtered_matches = run_ransac( kp0, kp1, matches, ransac_method="CV2_USAC_MAGSAC", threshold=8.0 ) ``` ### Filter Matches ```python from imcui.ui import filter_matches clean_matches = filter_matches(matches, scores, threshold=0.2) ``` ## Geometry Functions ### Compute Geometry ```python from imcui.ui import compute_geometry H, mask = compute_geometry( kp0, kp1, matches, geometry_type="homography", ransac_method="CV2_USAC_MAGSAC" ) ``` **Geometry Types:** - `homography` - Planar scenes - `fundamental` - Calibrated cameras - `essential` - Stereo vision ## Visualization Functions ### Display Keypoints ```python from imcui.ui import display_keypoints result = display_keypoints( image, keypoints, color=(0, 255, 0) ) ``` ### Display Matches ```python from imcui.ui import display_matches result = display_matches( image0, image1, kp0, kp1, matches, color=(0, 255, 0) ) ``` ### Plot Images ```python from imcui.ui import plot_images plot_images([img0, img1], titles=["Image 0", "Image 1"]) ``` ## Utility Functions ### Get Configuration Path ```python from imcui import get_default_config_path config_path = get_default_config_path() ``` ### Get Data Path ```python from imcui import get_example_data_path data_path = get_example_data_path() ``` ### Get Version ```python from imcui import get_version version = get_version() ``` ## Model Caching ### ARC Size-Aware Cache ```python from imcui.ui import ARCSizeAwareModelCache cache = ARCSizeAwareModelCache() model = cache.get_model("superpoint-lightglue") ``` ### LRU Cache ```python from imcui.ui import LRUModelCache cache = LRUModelCache(max_size=10) model = cache.get_model("loftr") ``` ## Complete Example ```python from imcui.api import ImageMatchingAPI from imcui.ui import ( DEVICE, get_matcher_zoo, display_matches ) import cv2 # Load images img0 = cv2.imread("image0.jpg") img1 = cv2.imread("image1.jpg") # Get available matchers matchers = get_matcher_zoo() # Initialize API api = ImageMatchingAPI( conf=matchers["superpoint-lightglue"], device=DEVICE ) # Run matching result = api(img0, img1) # Visualize results result_image = display_matches( img0, img1, result["keypoints0"], result["keypoints1"], result["matches"] ) cv2.imwrite("matches.jpg", result_image) ``` API Updates: All matching algorithms are maintained in the vismatch repository. Check their documentation for the latest algorithms and features.