IP Library Patent Application 15607152
Patent Application
App. No. 15/607,152

IN LOOP STITCHING FOR MULTI-CAMERA ARRAYS

Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US None
App. No.
15/607,152
Abstract

Methods and apparatus for the stitching of images from a multi-camera array. In one embodiment, stitching is performed for a first image and a second image with an overlapping field of view by: encoding the first image to produce a first encoded image; encoding the second image to produce a second uncompressed encoded image; stitching the first image with the second image by: decoding the first encoded image to produce a decoded first image; storing the decoded first image in memory; accessing, by a stitching engine, the decoded first image from memory; accessing, by the stitching engine, the second uncompressed encoded image; stitching, by the stitching engine, the decoded first image with the accessed second uncompressed encoded image to produce a stitched image; and outputting, by the stitching engine, the stitched image.

Claims (69)

1 . A method for stitching images, comprising:

accessing first image captured by a first camera;

accessing a second image captured by a second camera, the first image and the second image including portions representative of an overlapping field of view;

encoding the first image to produce a first encoded image;

encoding the second image to produce a second uncompressed encoded image;

stitching the first image with the second image by:

decoding the first encoded image to produce a decoded first image;

storing the decoded first image in memory;

accessing, by a stitching engine, the decoded first image from memory;

accessing, by the stitching engine, the second uncompressed encoded image;

stitching, by the stitching engine, the decoded first image with the accessed second uncompressed encoded image to produce a stitched image; and

outputting, by the stitching engine, the stitched image.

2 . The method of claim 1 , further comprises synchronizing a decoder associated with the decoding of the first encoded image with the stitching engine, the synchronizing configured to reduce memory usage, system latency and computational resources as compared with non-synchronized stitching.

3 . The method of claim 2 , further comprising converting the first image captured by the first camera and converting the second image captured by the second camera from a first imaging format to a second imaging format prior to the encoding of the first image and prior to the encoding of the second image.

4 . The method of claim 3 , further comprising:

scaling down the decoded first image in order to produce a scaled down decoded first image;

scaling down the second uncompressed image in order to produce a scaled down second uncompressed image; and

stitching the scaled down decoded first image with the scaled down second uncompressed image.

5 . A camera system comprising an image stitching pipeline for use in a multi-camera system, the image stitching pipeline configured to generate stitched image data, the camera system, comprising:

a first image sub-pipeline comprising a first image sensor, a first encoder, a first memory, and a first decoder;

a second image sub-pipeline comprising a second image sensor, a second encoder, and a second memory; and

an in-loop stitching engine configured to stitch images from the first image sensor and the second image sensor during capture and processing of image data captured by a camera system;

wherein: (i) the first encoder and the second encoder are synchronized; or (ii) the in-loop stitching engine and the first decoder are synchronized, the synchronization being configured to reduce memory usage, system latency and computational resources as compared with non-synchronized image stitching.

6 . The camera system of claim 5 , wherein the first image sub-pipeline and the in-loop stitching engine are contained within a first housing of a first camera.

7 . The camera system of claim 6 , wherein the second image sub-pipeline is contained within the first housing of the first camera.

8 . The camera system of claim 5 , wherein the second image sub-pipeline and the in-loop stitching engine is contained within a second housing of a second camera and the first image sub-pipeline is contained within a first housing of a first camera.

9 . The camera system of claim 5 , wherein the first image sensor is contained within a first camera, the second image sensor is contained within a second camera; and

an image server, where the image server comprises the first and second encoder, the first and second memory, the first decoder and the in-loop stitching engine.

10 . The camera system of claim 5 , wherein the in-loop stitching engine enables the stitching of images from the first image sensor and the second image sensor in substantially real-time.

11 . The camera system of claim 5 , wherein the first encoder and the second encoder are synchronized and the in-loop stitching engine stitches the images from the first image sensor and the second image sensor via:

receipt of a first image captured by the first image sensor;

receipt of a second image captured by the second image sensor, the first and the second images having an overlapping field of view;

encode the first image and store an encoded uncompressed first image in memory;

encode the second image and store an encoded uncompressed second image in the memory;

access, by the in-loop stitching engine, of the encoded uncompressed first image;

access, by the in-loop stitching engine, of the encoded uncompressed second image; and

stitch, by the in-loop stitching engine, the encoded uncompressed first image with the encoded uncompressed second image in order to produce a stitched image.

12 . The camera system of claim 5 , wherein the in-loop stitching engine and the first decoder are synchronized and the in-loop stitching engine stitches the images from the first image sensor and the second image sensor via:

receipt of a first image captured by the first image sensor;

receipt of a second image captured by the second image sensor, the first and the second images having an overlapping field of view;

encode the first image and store the encoded first image in memory;

encode the second image and store an encoded uncompressed second image in the memory;

decode the encoded first image and store the decoded first image in the memory;

access, by the in-loop stitching engine, the encoded uncompressed second image; and

stitch, by the in-loop stitching engine, the encoded uncompressed second image with the decoded first image in order to produce a stitched image.

13 . The camera system of claim 12 , wherein the camera system is further configured to:

scale down the decoded first image in order to produce a scaled down decoded first image;

scale down the encoded uncompressed second image in order to produce a scaled down uncompressed second image; and

stitch the scaled down decoded first image with the scaled down uncompressed second image.

14 . An in-loop stitching engine, the in-loop stitching engine comprising:

one or more hardware processors that are configured to:

access uncompressed imaging data from a first image sub-pipeline;

access compressed imaging data from a second image sub-pipeline;

decompress the compressed imaging data from the second image sub-pipeline in order to generate decompressed imaging data; and

stitch the uncompressed imaging data with the decompressed imaging data.

15 . The in-loop stitching engine of claim 14 , wherein the one or more hardware processors are configured to perform a plurality of different stitching operations of varying image stitching power or varying image stitching quality.

16 . The in-loop stitching engine of claim 15 , wherein a first stitching operation of the plurality of different stitching operations is configured to:

identify portions of two or more separately captured images representative of an overlap region;

align the identified portions of the two or more separately captured images representative of the overlap region; and

average or feather the aligned identified portions of the two or more separately captured images representative of the overlap region in order to generate a stitched image.

17 . The in-loop stitching engine of claim 16 , wherein a second stitching operation of the plurality of different stitching operations is configured to:

determine a depth of an imaging feature contained within the overlap region associated with the two or more separately captured images; and

perform an image warp operation based at least in part on the determined depth of the imaging feature contained within the overlap region associated with the two or more separately captured images;

wherein the image warp operation adjusts the shape and/or size of the imaging feature contained within the overlap region associated with the two or more separately captured images.

18 . The in-loop stitching engine of claim 17 , wherein a third stitching operation of the plurality of differing stitching operations is configured to:

receive a sequence of frames of a video sequence; and

determine the depth of the imaging feature contained within the overlap region associated with the two or more separately captured images based on an analysis of the received sequence of frames of the video sequence.

19 . The in-loop stitching engine of claim 18 , further comprising an iterative application of one or more of the first stitching operation, the second stitching operation, and the third stitching operation in order to generate a higher quality stitched image as compared with a single performance of the respective first, second, and third stitching operations.

20 . The in-loop stitching engine of claim 18 , further comprising an interface that enables a selection of one or more of the first stitching operation, the second stitching operation, and the third stitching operation.

Assignments (3)
RELEASE OF PATENT SECURITY INTEREST Recorded Jan 25, 2021
From: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
To: GOPRO, INC.
Reel/Frame 055106/0434 →
SECURITY INTEREST Recorded Jul 31, 2017
From: GOPRO, INC.
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 043380/0163 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 27, 2017
From: DOSHI, SANDEEP; ABBAS, ADEEL
To: GOPRO, INC.
Reel/Frame 042829/0402 →