Stitch arbitrary or consecutive sets of images
Project description
image-stitcher
Python library for general mass image stitching.
Setup
pip install image-stitcher
Usage
An example can be found in tests/.
Arbitrary stitching
Relations in an arbitrarily arranged set of images are automatically determined. Each related collection found is stitched together.
import os
from image_stitcher.stitcher import ArbitraryStitcher
dir_path = "path/to/dir"
filepaths = [os.path.join(dir_path, f) for f in os.listdir(dir_path)]
arbs = ArbitraryStitcher(
log_level = 2,
output_dir = "stitches/",
min_match_count = 5,
lowes_ratio_threshold = 0.65,
algorithm = 0,
matcher = 0,
type = 0,
resize = None,
consecutive_range = None,
blend_processor = lambda x: x,
blender = 1,
ref_image_contrib = 0.2,
images = None,
filepaths = dir_path,
with_tqdm = True
)
collections = arbs.get_collections()
stitched = arbs.stitch_collections(collections)
Consecutive stitching
- Images are sequentially stitched without pre-determining relations in the large set.
- Optimizations coded in allow this to stitch HD images at 5Hz and SD images at up to 10Hz. Suitable for applications such as live aerial drone mapping.
import os
from image_stitcher.stitcher import ConsecutiveStitcher
dir_path = "path/to/dir"
filepaths = [os.path.join(dir_path, f) for f in os.listdir(dir_path)]
def load_image(filepath, to_resize = None):
image = cv2.imread(filepath)
return resize_image(image, to_resize)
cons = ConsecutiveStitcher(
log_level = 2,
output_dir = "stitches/",
min_match_count = 5,
lowes_ratio_threshold = 0.65,
algorithm = 0,
matcher = 0,
type = 0,
resize = None,
consecutive_range = None,
blend_processor = lambda x: x,
blender = 1,
ref_image_contrib = 0.2,
consecutive_range = 1,
backup_interval = False,
consecutive_volatility_threshold = 4,
)
for filepath in filepaths:
cons.stitch_consecutive(load_image(filepath))
Synchronous stitching
Consecutively stitches a second set of images using the same transformations calculated when stitching the first set. Can be used to stitch depth images from corresponding RGB images.
from image_stitcher.stitcher import ConsecutiveStitcher
class SynchronizedStitcher:
def __init__(self, rgb_args=None, depth_args=None, points=None):
self.rgb_stitcher = ConsecutiveStitcher(**rgb_args)
self.depth_stitcher = ConsecutiveStitcher(**depth_args)
def stitch(self, rgb_image, depth_image = None):
first_stitch = self.rgb_stitcher.stitch_count == 0
tf = self.rgb_stitcher.stitch_consecutive(rgb_image)
if not (depth_image is None):
if not first_stitch:
if self.rgb_stitcher.stitch_count > self.depth_stitcher.stitch_count:
self.depth_stitcher.save_and_reset()
self.depth_stitcher.stitch_consecutive(depth_image, tf)
return tf
sync_st = SynchronizedStitcher(
rgb_args={
"output_dir": "path/to/rgbdir",
"matcher": 1,
"algorithm": 1,
"backup_interval": 50,
"consecutive_range": 2,
"blender": 1,
"log_level": 2
},
depth_args={
"output_dir": "path/to/depthdir",
# "blend_processor": lambda x: utils.color_map(x),
"backup_interval": 50,
"blender": 0,
"ref_image_contrib": 0.5,
"log_level": 2
}
)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
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 image_stitcher-0.9.1.tar.gz.
File metadata
- Download URL: image_stitcher-0.9.1.tar.gz
- Upload date:
- Size: 13.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a63ff6c3615b624c2a698fbd5cea0fe6b7d80aa943dc066f7b39971f34c334be
|
|
| MD5 |
73bd803149aa35ea260c6f1646fd5504
|
|
| BLAKE2b-256 |
76ea7f33784ce9e89048e1bac3ac1046b04bc54062192bfe0e6a4312cfc71c76
|
File details
Details for the file image_stitcher-0.9.1-py3-none-any.whl.
File metadata
- Download URL: image_stitcher-0.9.1-py3-none-any.whl
- Upload date:
- Size: 12.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e92a0da0953ba284dddb49befbf1d354a0d521cba754c9ec954bcb4dfcfcf10a
|
|
| MD5 |
9d1e2ca8fd5afaa0ea36cbed2471f5fc
|
|
| BLAKE2b-256 |
ef9533bd86801715158a343b2881038dfc4de16696e64e1528807acfbe5c2813
|