What's new
3D / Bundle Adjustment
- Schur-complement bundle adjustment β dense reduced camera system (
k3d.bundle_adjust_schur)
- SE(3) pose graph optimization (
k3d.pose_graph_optimize)
- Cheirality-robust BA with pose-only mode and fixed-point gauge (
k3d.bundle_adjust)
- IRLS Huber + Cauchy robust loss for BA
solve_pnp_ransac moved into k3d namespace
RANSAC
- Generic RANSAC framework with NEON+AVX2 scorer and LO-RANSAC
- Homography estimator with rayon parallel scoring
- BA robust-kernel wiring
Segmentation + Depth (kornia_rs.segmentation, kornia_rs.depth)
- COCO RLE β mask encode/decode (NEON-accelerated transpose)
depth.sample_depth β sample depth under segmentation masks (median or mean, parallel via rayon)
- 19Γ speedup on mean path vs pure Python (Jetson Orin, 480Γ640, 16 masks)
Colormap (kornia_rs.imgproc.apply_colormap, Image.colormap())
- 21 OpenCV-compatible colormaps (viridis, turbo, jet, β¦)
- NEON-accelerated LUT lookup (
vqtbl4q_u8, 16 px/iter)
IO β RVL depth codec (kornia_rs.io)
encode_image_rvl / decode_image_rvl β lossless Run-Length Variable depth compression
write_image_rvl / read_image_rvl β file IO
- ~3β5Γ compression on typical depth frames; zeros (missing depth) pack to a single nibble
- NEON-accelerated delta+zigzag phase on aarch64
- Wire format:
RVL1 magic + width/height header
IO β In-memory PNG-16 + PIL-parity (kornia_rs.io, Image)
encode_image_png_{rgb8,rgba8,gray8,rgb16,rgba16,gray16} β symmetric in-memory PNG encode
Image class natively holds uint16 (depth maps)
Image.save(fp) accepts path or file-like (BytesIO, S3 objects)
Image.encode(format) β in-memory bytes for JPEG and PNG
IO β Zero-copy + WebP/TIFF
- Zero-copy IO path improvements
- WebP and TIFF in encode/save/decode/load
Upgrading
pip install --upgrade kornia-rs