kornia_moons
Conversions between kornia and other computer vision libraries formats, mainly OpenCV.
Documentation: https://ducha-aiki.github.io/kornia_moons/
What's inside
- Keypoint / LAF conversions — OpenCV
cv2.KeyPoint↔ kornia local affine frames (LAFs), handling the differing scale and orientation conventions (mrSize=6.0for SIFT,1.0for ORB):laf_from_opencv_SIFT_kpts,opencv_ORB_kpts_from_laf, … - Match conversions — kornia match tensors ↔
cv2.DMatchlists:cv2_matches_from_kornia,kornia_matches_from_cv2 - OpenCV detectors as kornia modules —
OpenCVDetectorKornia,OpenCVFeatureKornia,OpenCVDetectorWithAffNetKornia(with kornia AffNet shape refinement) - Visualization — LAFs (
visualize_LAF), matches with inliers/epipolar lines/reprojected corners (draw_LAF_matches), plain point matches from LoFTR-style matchers (draw_point_matches), epipolar errors, and SOLD2 line segments (plot_lines,plot_color_line_matches)
Install
pip install kornia_moons
Quick start: keypoint conversion
import matplotlib.pyplot as plt
import cv2
from kornia.image import image_to_tensor
from kornia_moons.feature import laf_from_opencv_ORB_kpts, opencv_ORB_kpts_from_laf
from kornia_moons.viz import visualize_LAF
img = cv2.cvtColor(cv2.imread('data/strahov.png'), cv2.COLOR_BGR2RGB)
det = cv2.ORB_create(500)
kps, descs = det.detectAndCompute(img, None)
out_img = cv2.drawKeypoints(img, kps, None, flags=cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)
plt.imshow(out_img)
lafs = laf_from_opencv_ORB_kpts(kps)
visualize_LAF(image_to_tensor(img, False), lafs, 0)
kps_back = opencv_ORB_kpts_from_laf(lafs)
out_img2 = cv2.drawKeypoints(img, kps_back, None, flags=cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)
plt.imshow(out_img2)
Matching and visualization
import cv2
import numpy as np
import torch
import kornia
from kornia_moons.feature import laf_from_opencv_SIFT_kpts
from kornia_moons.viz import draw_LAF_matches
det = cv2.SIFT_create(100)
img1 = cv2.cvtColor(cv2.imread('data/strahov.png'), cv2.COLOR_BGR2RGB)
Hgt = np.array([[0.5, 0.1, 10], [-0.1, 0.5, 10], [0, 0, 1]])
img2 = cv2.warpPerspective(img1, Hgt, img1.shape[:2][::-1], borderValue=(255, 255, 255))
kps1, descs1 = det.detectAndCompute(img1, None)
lafs1 = laf_from_opencv_SIFT_kpts(kps1)
kps2, descs2 = det.detectAndCompute(img2, None)
lafs2 = laf_from_opencv_SIFT_kpts(kps2)
match_dists, match_idxs = kornia.feature.match_snn(
torch.from_numpy(descs1).float(), torch.from_numpy(descs2).float(), 0.98)
H, mask = cv2.findHomography(
kornia.feature.get_laf_center(lafs1[:, match_idxs[:, 0]]).numpy().reshape(-1, 2),
kornia.feature.get_laf_center(lafs2[:, match_idxs[:, 1]]).numpy().reshape(-1, 2),
cv2.USAC_MAGSAC, 0.5)
draw_LAF_matches(lafs1, lafs2, match_idxs, img1, img2, mask,
draw_dict={"inlier_color": (0.2, 1, 0.2),
"tentative_color": (0.8, 0.8, 0),
"feature_color": None,
"vertical": False}, H=H)
Learn more
- Local features tutorial — conversions in both directions, matches, detector wrappers
- Visualization tutorial — matches, epipolar geometry, SOLD2 line segments
- API reference
Development
pip install -e ".[dev]"
pytest tests # unit tests
pytest --nbmake docs/feature.ipynb docs/viz.ipynb # run the docs notebooks
mkdocs serve # preview docs locally
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
kornia_moons-0.3.0.tar.gz
(23.5 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file kornia_moons-0.3.0.tar.gz.
File metadata
- Download URL: kornia_moons-0.3.0.tar.gz
- Upload date:
- Size: 23.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/7.0.0 CPython/3.11.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f607ac16debb03e62750b3efdb2398e70d8225dbe5431f358c07b0ff718eb3c0
|
|
| MD5 |
7617053d25133972378141110bf54d67
|
|
| BLAKE2b-256 |
731b27c36b53c67484cc0917dfea3b73884bc3d8d8bebcaa9866f331244be35f
|
File details
Details for the file kornia_moons-0.3.0-py3-none-any.whl.
File metadata
- Download URL: kornia_moons-0.3.0-py3-none-any.whl
- Upload date:
- Size: 19.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/7.0.0 CPython/3.11.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a187d797f1b3bea760b573aa5582d6226253e503bf62185e2afc086d6e0b9746
|
|
| MD5 |
be61a05128c84b6ff7b7ddf65a199d8a
|
|
| BLAKE2b-256 |
8f024ca3a20f7c8ce01e9ac7f1a4bdcbefeab10579d933829a30741355a75c9c
|