拼接来自两个校准闭路电视摄像机的视频帧

问题描述 投票:0回答:1

我在一个有足够重叠区域的房间里安装了两个闭路电视摄像机。来自这些摄像机的视频流经过校准。我使用 here 中的 OpenCV 拼接 python 代码来拼接来自两个摄像机的两个各自的视频帧。缝合输出有晃动。如何克服这些运动?请推荐。

python opencv computer-vision image-stitching opencv-stitching
1个回答
0
投票

此处已经报告了拼接相机图像流造成的晃动。拼接管道将在每个stitch

上独立校准其内部摄像头。在视频拼接的情况下,问题是从一帧到另一帧存在一些扭曲。解决方案是仅使用第一帧校准相机,然后仅使用这些相机。这也将节省每帧特征匹配所需的时间。为此,您可以从 
VideoStitcher
 继承 
Stitcher
 并覆盖 
initialize_stitcher()
stitch()

from stitching import Stitcher from stitching.images import Images class VideoStitcher(Stitcher): def initialize_stitcher(self, **kwargs): super().initialize_stitcher(kwargs) self.cameras = None self.cameras_registered = False def stitch(self, images, feature_masks=[]): self.images = Images.of( images, self.medium_megapix, self.low_megapix, self.final_megapix ) if not self.cameras_registered: imgs = self.resize_medium_resolution() features = self.find_features(imgs, feature_masks) matches = self.match_features(features) imgs, features, matches = self.subset(imgs, features, matches) cameras = self.estimate_camera_parameters(features, matches) cameras = self.refine_camera_parameters(features, matches, cameras) cameras = self.perform_wave_correction(cameras) self.estimate_scale(cameras) self.cameras = cameras self.cameras_registered = True imgs = self.resize_low_resolution() imgs, masks, corners, sizes = self.warp_low_resolution(imgs, self.cameras) self.prepare_cropper(imgs, masks, corners, sizes) imgs, masks, corners, sizes = self.crop_low_resolution( imgs, masks, corners, sizes ) self.estimate_exposure_errors(corners, imgs, masks) seam_masks = self.find_seam_masks(imgs, corners, masks) imgs = self.resize_final_resolution() imgs, masks, corners, sizes = self.warp_final_resolution(imgs, self.cameras) imgs, masks, corners, sizes = self.crop_final_resolution( imgs, masks, corners, sizes ) self.set_masks(masks) imgs = self.compensate_exposure_errors(corners, imgs) seam_masks = self.resize_seam_masks(seam_masks) self.initialize_composition(corners, sizes) self.blend_images(imgs, seam_masks, corners) return self.create_final_panorama()
    
© www.soinside.com 2019 - 2024. All rights reserved.