Method and image processing device for dividing pixel array into slices and tiles and system for encoding slices and tiles into video stream

JP2023093363A5Active Publication Date: 2025-09-25AXIS
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
JP2022199187
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Priority Date
2021-12-22
Filing Date
2022-12-14
Publication Date
2025-09-25
Estimated Expiration
2042-12-14

AI Technical Summary

Technical Problem

Existing image processing systems face inefficiencies when handling large image frames due to the need for synchronization and data transfer between separate processing circuits, leading to slowed processing and increased complexity.

Method used

The pixel array is divided into slices and tiles, with a slanted boundary between subsets of pixels, allowing each subset to be processed independently by separate encoders, minimizing data transfer between circuits by setting offsets based on tilt angles.

Benefits of technology

This approach reduces the amount of pixel data transferred between processing circuits, enhancing processing efficiency and reducing complexity by allowing parallel processing without significant data synchronization delays.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 00000000_0000_ABST
    Figure 00000000_0000_ABST
Patent Text Reader

Abstract

To provide an image division method, an image processing device, and a storage medium that enable more efficient parallel processing.SOLUTION: An image segmentation method in a system including a first encoder arranged in a first image processing circuit and a second encoder arranged in a second image processing circuit includes a step of dividing a pixel array into a first subset of pixels stored in a first buffer arranged in the first image processing circuit and a second subset of pixels stored in a second buffer arranged in the second image processing circuit. A first boundary between the first subset and the second subset is tilted at a tilt angle with respect to the pixel array.SELECTED DRAWING: Figure 2
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present invention relates to image processing, and more particularly, to dividing a pixel array into slices and tiles and encoding and buffering two subsets of pixels of the pixel array for encoding into an encoded video stream using each of two separate image processing circuits.

Background Art

[0002] Over time, image frames have grown larger, for example, by increasing resolution and increasing the size of the image sensor. Other examples of large image frames include panoramic image frames structured by synthesizing image frames captured by multiple image sensors. When processing such large image frames of a video stream, for example, when encoding an image frame, each image frame can be divided into two or more image portions, which are then processed in parallel in separate processing circuits. Similarly, an encoded image frame can also be divided into two or more corresponding image portions on the decoder side, and the two or more image portions are then processed in parallel in separate processing circuits. In such a solution, generally, it is desirable for the separate processing circuits to process each image portion as large as possible independently and to minimize the pixel data shared, because such sharing requires synchronization including transfer of pixel data between processing circuits that slows down the processing and / or requires faster transfer of pixel data between processing circuits that increases the complexity and cost of the processing circuits.

Summary of the Invention

[0003] The object of the present invention is to overcome or mitigate the problems in known methods, image processing devices, and systems by providing a method, image processing device, and system for dividing a pixel array into slices and tiles to encode into an encoded video stream using each of two separate image processing circuits, and for encoding and buffering two subsets of pixels in the pixel array.

[0004] According to a first aspect, a method is provided for dividing a pixel array into slices and tiles for encoding into an encoded video stream, using a first encoder located in a first image processing circuit and a second encoder located in a second image processing circuit. The pixel array comprises a first subset of pixels, the pixel data of which is stored in a first buffer located in the first image processing circuit, and a second subset of pixels, the pixel data of which is stored in a second buffer located in the second image processing circuit, wherein a first boundary between the first subset of pixels and the second subset of pixels is inclined with respect to the pixel array at a certain angle. The method includes dividing the pixel array into two or more slices and dividing each slice into two or more tiles, the two or more tiles of each slice comprising a first subset of tiles and a second subset of tiles, the first subset of tiles and the second subset of tiles being separated, the first subset of tiles being encoded by a first encoder, and the second subset of tiles being encoded by a second encoder. The operation of dividing each slice into two or more tiles involves setting a second boundary between the first subset of tiles and the second subset of tiles at an offset between two adjacent slices of the two or more slices, where the offset is based on the slope angle.

[0005] Setting a second boundary between a first subset of tiles and a second subset of tiles by an offset between two adjacent slices of two or more slices, where the offset is based on a tilt angle, reduces the number of pixels encoded by the first encoder in the first subset of tiles of each slice where the pixel data is stored in the second buffer, and in addition, the number of pixels encoded by the second encoder in the second subset of tiles of each slice where the pixel data is stored in the first buffer, in connection with not using an offset when the first boundary between the first subset of pixels and the second subset of pixels is tilted with respect to the pixel array at a certain tilt angle. Thus, the amount of pixel data stored in the second buffer that needs to be transferred to the first encoder, and the amount of pixel data stored in the first buffer that needs to be transferred to the second encoder, are reduced in connection with not using an offset.

[0006] A slice refers to a vertical separation of data into upper and lower sections. Each slice can be encoded without requiring access to the image data of the other slices.

[0007] A tile refers to a horizontal separation of adjacent tiles. Each tile can be encoded without requiring access to the image data of other tiles.

[0008] Here, the fact that the first boundary is tilted at a slope angle means that, at least somewhere along the first boundary, the first boundary between the first subset of pixels and the second subset of pixels does not extend along the columns or rows of pixels in the pixel array, so that pixels in the same column of pixels are located on different sides of the first boundary between the first subset of pixels and the second subset of pixels, and pixels in the same row of pixels are located on different sides of the first boundary between the first subset of pixels and the second subset of pixels.

[0009] The offset here means an offset along the length of the slice, i.e., the second boundary between the first subset of tiles and the second subset of tiles in two adjacent slices is not aligned along the length of the slice.

[0010] The fact that the offset is based on the tilt angle means that the offset between two adjacent slices is set taking the tilt angle into account, so that different offsets are set for different tilt angles. For example, the offset may be set based on a tilt angle such that the number of pixels encoded in the first subset of tiles of each slice, where the pixel data is stored in the second buffer, plus the number of pixels encoded in the second subset of tiles of each slice, where the pixel data is stored in the first buffer, remains minimized or at least as low as possible when the first and second encoders subsequently encode the first and second subsets of tiles into an encoded video stream, respectively. For example, a technique for setting the offset based on the tilt angle may be an iterative process such that the sum of the number of pixels encoded in the first subset of tiles of each slice, where the pixel data is stored in the second buffer, and the number of pixels encoded in the second subset of tiles of each slice, where the pixel data is stored in the first buffer, is determined for different offsets and is set to the offset that minimizes the sum.

[0011] The tilt angle may be constant along the first boundary between a first subset of pixels and a second subset of pixels. The offset may also be set to be the same for two adjacent slices of each of two or more slices.

[0012] Alternatively, the tilt angle may vary along a first boundary between a first subset of pixels and a second subset of pixels. The operation of dividing the pixel array into two or more slices may further include dividing the pixel array into three or more slices, and the operation of dividing each slice into two or more tiles may include, for each of the three or more slices, setting a second boundary between a first subset of tiles and a second subset of tiles in each of the two adjacent slices at an offset, where the offset is based on the local tilt angle of the first boundary between the first subset of pixels and a second subset of pixels in the two adjacent slices.

[0013] The local slope angle is a measure of the slope angle of the first boundary in two adjacent slices where an offset is set.

[0014] In a scenario where the tilt angle varies along the first boundary between a first subset of pixels and a second subset of pixels, the first boundary between the first subset of pixels and the second subset of pixels may have a constant tilt angle, but separate horizontal portions of the pixel array may have different tilt angles. The operation of dividing the pixel array into three or more slices may further include dividing the pixel array into four or more slices by dividing each separate horizontal portion of the pixel array into two or more slices such that, for each pair of adjacent horizontal portions, the third boundary between the two adjacent horizontal portions aligns with the fourth boundary between the two adjacent slices. By aligning the fourth boundary between the two adjacent slices with the third boundary between the two adjacent horizontal portions, the first boundary will have a constant tilt angle in the slices in each horizontal portion. This makes it possible to set an offset for the second boundary in each slice based on the tilt angle of the first boundary in that slice, thereby reducing the amount of data that needs to be transferred between image processing circuits for encoding, in relation to the absence of an offset. Alternatively, the first boundary between a first subset of pixels and a second subset of pixels can be curved.

[0015] In a scenario where the tilt angle varies along the first boundary between a first subset of pixels and a second subset of pixels, the local tilt angle of the first boundary in two adjacent slices may be determined as the average tilt angle in the two adjacent slices.

[0016] The sizes of the corresponding tiles in each of the two or more slices may be the same in each of the two or more slices. In other words, the boundaries between tiles in the two or more slices may be aligned horizontally.

[0017] The method may further include transferring pixel data to a first encoder, which is encoded in pixels of a first subset of tiles in each slice, whose pixel data is stored in a second buffer; encoding the first subset of tiles by the first encoder; transferring pixel data to a second encoder, which is encoded in pixels of a second subset of tiles in each slice, whose pixel data is stored in the first buffer; and encoding the second subset of tiles by the second encoder.

[0018] According to a second aspect, a non-temporary computer-readable storage medium is provided, which stores instructions for performing the method according to the first aspect when executed by a device having processing capabilities.

[0019] According to a third aspect, an image processing device is provided for dividing a pixel array into slices and tiles for encoding into an encoded video stream, comprising a first encoder located in a first image processing circuit and a second encoder located in a second image processing circuit. The pixel array comprises a first subset of pixels, the pixel data of which is stored in a first buffer located in the first image processing circuit, and a second subset of pixels, the pixel data of which is stored in a second buffer located in the second image processing circuit, wherein the first boundary between the first subset of pixels and the second subset of pixels is inclined with respect to the pixel array at a certain angle. The device comprises circuitry configured to perform a first division function configured to divide a pixel array into two or more slices, and a second division function configured to divide each slice into two or more tiles, wherein the two or more tiles of each slice consist of a first subset of tiles and a second subset of tiles, the first subset of tiles and the second subset of tiles being isolated, the first subset of tiles being encoded by a first encoder, and the second subset of tiles being encoded by a second encoder. The second division function is further configured to set a second boundary between the first subset of tiles and the second subset of tiles by an offset between two adjacent slices of the two or more slices, the offset being based on a tilt angle.

[0020] Where applicable, the above optional features of the method according to the first embodiment also apply to the third embodiment. To avoid excessive repetition, please refer to the above.

[0021] According to a fourth aspect, a system is provided for encoding a pixel array into an encoded video stream. The pixel array comprises a first subset of pixels and a second subset of pixels, wherein a first boundary between the first subset of pixels and the second subset of pixels is inclined with respect to the pixel array at a certain angle. The system comprises a first image processing circuit, a second image processing circuit, a first encoder located in the first image processing circuit, a second encoder located in the second image processing circuit, a first buffer located in the first image processing circuit for storing pixel data of the first subset of pixels, and a second buffer located in the second image processing circuit for storing pixel data of the second subset of pixels. The system further comprises circuitry configured to perform a first division function configured to divide a pixel array into two or more slices, and a second division function configured to divide each slice into two or more tiles, wherein the two or more tiles of each slice consist of a first subset of tiles and a second subset of tiles, the first subset of tiles and the second subset of tiles being isolated, the first subset of tiles being encoded by a first encoder and the second subset of tiles being encoded by a second encoder. The second division function is further configured to set a second boundary between the first subset of tiles and the second subset of tiles by an offset between two adjacent slices of the two or more slices, the offset being based on a tilt angle. The circuit further comprises a first transfer function configured to transfer pixel data of pixels encoded in a first subset of tiles in each slice, where the pixel data is stored in a second buffer, to a first encoder, and a second transfer function configured to transfer pixel data of pixels encoded in a second subset of tiles in each slice, where the pixel data is stored in the first buffer, to a second encoder. The first encoder is configured to encode the first subset of tiles, and the second encoder is configured to encode the second subset of tiles.

[0022] Where applicable, the above optional features of the method according to the first embodiment also apply to the fourth embodiment. To avoid excessive repetition, please refer to the above.

[0023] Further scope of the applicability of the present invention will become apparent from the detailed description below. However, it should be understood that the detailed description and specific examples are provided only as illustrations to illustrate preferred embodiments of the present invention, as various changes and modifications within the scope of the invention will become apparent to those skilled in the art from this detailed description.

[0024] Therefore, it should be understood that the present invention is not limited to the operation of specific components of the described device or the described method, as such devices and methods may vary. It should also be understood that the terminology used herein is solely for the purpose of describing specific embodiments and is not intended to limit them. It should be noted that, as used herein and in the appended claims, the articles “a,” “an,” “the,” and “said” are intended to mean that there is one or more elements unless otherwise explicitly indicated in the context. Thus, for example, a reference to “a unit” or “the unit” may include several devices, etc. Furthermore, the words “comprising,” “including,” “containing,” and similar phrases do not exclude other elements or steps.

[0025] The above and other aspects of the present invention will be described in more detail here with reference to the accompanying drawings. The drawings should not be considered limiting, but rather are used for illustrative and understanding purposes. Similar reference numerals refer to similar elements throughout. [Brief explanation of the drawing]

[0026] [Figure 1]Schematic block diagram of a system for encoding a pixel array into an encoded video stream according to the present disclosure. [Figure 2] Flowchart of a method for dividing a pixel array into slices and tiles for encoding into an encoded video stream according to the present disclosure, where the pixel array is composed of a first subset of pixels and a second subset of pixels, and a first boundary between the first subset of pixels and the second subset of pixels is inclined at a certain inclination angle with respect to the pixel array. [Figure 3] Schematic block diagram of an image processing device for dividing a pixel array into slices and tiles for encoding into an encoded video stream according to the present disclosure. [Figure 4] Schematic diagram of a combination of four sensors for capturing a single image frame. [Figure 5] Schematic diagram of the division of an image frame captured using a single image sensor into four parts. [Figure 6] Diagram showing the division of a pixel array into tiles by a prior art method for a first example with a horizontal boundary between a first subset of pixels and a second subset of pixels. [Figure 7a] Diagram showing the division of a pixel array into tiles by a prior art method as a second example with a certain inclination angle. [Figure 7b] Diagram showing an example of the division of a pixel array into slices and tiles by the method of the present disclosure as a second example having the same certain inclination angle as in FIG. 7a. [Figure 8a] Diagram showing the division of a pixel array into tiles by a prior art method as a third example with a varying inclination angle that is constant but different in two horizontal parts. [Figure 8b] Diagram showing the division of a pixel array into slices and tiles by the method of the present disclosure as a third example with the same varying inclination angle as in FIG. 8a, where the inclination angle is constant but different in two horizontal parts. [Figure 8c]A third example with a varying tilt angle, similar to that shown in Figure 8a, where the tilt angle is constant but different in the two horizontal sections, is a diagram showing the slicing and tiling of a pixel array by the method of the present disclosure. [Figure 8d] A third example with a varying tilt angle, similar to that shown in Figure 8a, where the tilt angle is constant but different in the two horizontal sections, is a diagram showing the slicing and tiling of a pixel array by the method of the present disclosure. [Figure 9a] A fourth example of a changing tilt angle when the first boundary between a first subset of pixels and a second subset of pixels is curved is shown, illustrating the tiling of a pixel array by a prior art method. [Figure 9b] A fourth example with the same changing tilt angle as in Figure 9a, where the first boundary between a first subset of pixels and a second subset of pixels is curved, is shown here, illustrating the division of a pixel array into slices and tiles by the method of the present disclosure. [Figure 9c] A fourth example with the same changing tilt angle as in Figure 9a, where the first boundary between a first subset of pixels and a second subset of pixels is curved, is shown here, illustrating the division of a pixel array into slices and tiles by the method of the present disclosure. [Figure 9d] A fourth example with the same changing tilt angle as in Figure 9a, where the first boundary between a first subset of pixels and a second subset of pixels is curved, is shown here, illustrating the division of a pixel array into slices and tiles by the method of the present disclosure. [Figure 10a] A fifth example of a change in tilt angle when the first boundary between a first subset of pixels and a second subset of pixels is curved is shown, illustrating the tiling of a pixel array by a prior art method. [Figure 10b] A fifth example with the same changing tilt angle as in Figure 10a, where the first boundary between a first subset of pixels and a second subset of pixels is curved, is shown here, illustrating the division of a pixel array into slices and tiles by the method of the present disclosure. [Figure 10c]A fifth example with the same changing tilt angle as in Figure 10a, where the first boundary between a first subset of pixels and a second subset of pixels is curved, is shown here, illustrating the division of a pixel array into slices and tiles by the method of the present disclosure. [Figure 10d] A fifth example with the same changing tilt angle as in Figure 10a, where the first boundary between a first subset of pixels and a second subset of pixels is curved, is shown here, illustrating the division of a pixel array into slices and tiles by the method of the present disclosure. [Modes for carrying out the invention]

[0027] The present invention will be described in more detail hereafter with reference to the accompanying drawings illustrating currently preferred embodiments of the invention. However, the present invention may be embodied in many different forms and should not be construed as being limited to the embodiments shown herein. Rather, these embodiments are provided to fully convey the scope of the invention to those skilled in the art.

[0028] The following describes a system 100 for encoding a pixel array into an encoded video stream, as disclosed herein, with reference to Figure 1. The system 100 is intended for use in a scenario where the pixel array consists of a first subset of pixels and a second subset of pixels, and a first boundary between the first subset of pixels and the second subset of pixels is inclined with respect to the pixel array at a certain angle, and the first subset of pixels and the second subset of pixels are processed separately by their respective processing circuits, for example, to enable parallel processing.

[0029] System 100 can be used, for example, for encoding large image frames, such as panoramic image frames structured by combining image frames captured by multiple image sensors. The pixel array encoded in System 100 may further relate to pixels from two of the multiple image sensors. The pixels of the pixel array may further be processed, typically by horizontal correction transformations of the pixel data, as well as by compositing and mixing of the pixel data, to remove or reduce any visible influence at the first boundary between pixels from the two separate image sensors. Further processing of the pixel array may also be performed before the pixel array is obtained in System 100. If such processing is performed separately (typically in parallel) in two image processing circuits, the pixel data must be transferred between the two image processing circuits. Furthermore, in some cases, the first boundary between the pixel data of the pixel array processed by one of the two different image processing circuits may be inclined with respect to the pixel array. Figure 4 shows an example of the setup of the first image sensor 410, the second image sensor 420, the third image sensor 430, and the fourth image sensor 440. The second image sensor 420 and the third image sensor 430 are positioned in the center without any relative tilt, while the first image sensor 410 and the fourth image sensor 440 are positioned tilted at an angle u relative to the second image sensor 420 and the third image sensor 430, respectively. For example, for a pixel array processed in system 100 containing pixel data relating to the first image sensor 410 and the second image sensor 420, the first boundary between the pixel data after the synthesis process and any further processing to be performed by different processing circuits will be tilted at an angle relative to the pixel array. This tilt is partly due to the angle u between the first image sensor 410 and the second image sensor 420, and partly due to the transformation before processing by system 100.The inclination of the first boundary may also occur in the pixel array relating to the processed image data from the second image sensor 420 and the third image sensor 430 for reasons other than the relative inclination between the image sensors, for example, due to horizontal correction transformations.

[0030] System 100 may also be used, for example, to encode large image frames, using a wide-angle lens, where the large image frame is divided into two or more vertical parts. The pixel array encoded in System 100 may also be related to pixels from two parts of the image frame. The pixels of the pixel array may also be processed, typically, before the pixel array is obtained in System 100. Such processing may include, for example, transformations of the pixel data with respect to spherical or cylindrical projection. When such processing with respect to synthesis and any further processing may be performed separately (typically in parallel) in two image processing circuits, this pixel data will typically require the transfer of pixel data between the two image processing circuits. Furthermore, in some cases, the first boundary between the pixel data of a pixel array processed in one of the two different image processing circuits may be inclined with respect to the pixel array, for example, by the transformation of the pixel data with respect to spherical or cylindrical projection, such that the first boundary is curved. Figure 5 shows an example of dividing an image frame 500 into a first image portion 510, a second image portion 520, a third image portion 530, and a fourth image portion 540. For example, when a pixel array processed in system 100, including pixel data relating to the first image portion 510 and the second image portion 520, is processed in one of two corresponding processing circuits, including, for example, a horizontal correction transformation of the pixel data to adjust for lens distortion, the first boundary between the pixel data of the pixel array processed in the different of the two image processing circuits may be inclined with respect to the pixel array such that the first boundary is curved.

[0031] The system 100 comprises a first image processing circuit 110, a second image processing circuit 120, a first encoder 112 located in the first image processing circuit 110, a second encoder 122 located in the second image processing circuit 120, a first buffer 114 located in the first image processing circuit 110, and a second buffer 124 located in the second image processing circuit 120. The first buffer 114 stores pixel data relating to a first subset of pixels, and the second buffer 124 stores pixel data relating to a second subset of pixels. The first processing circuit 110 and the second processing circuit 120 may each include a first processor 116 and a second processor 126, respectively, such as a central processing unit (CPU), microcontroller, or microprocessor. The first encoder 112 and the second encoder 122 can be adapted to encode according to video compression standards such as H.262, H.265, H.266, AV1, and VP9.

[0032] System 100 further comprises circuit 130, which is configured to perform the functions of system 100. The circuit may be included in, for example, an image processing device 300, which will be further described with reference to Figure 3. Circuit 130 may include a processor 132, such as a central processing unit (CPU), a microcontroller, or a microprocessor. The processor 132 is configured to execute program code, which may be configured to perform the functions of system 100.

[0033] System 100 may further include memory 140. Memory 140 may be one or more of a buffer, flash memory, hard drive, removable medium, volatile memory, non-volatile memory, random access memory (RAM), or another suitable device. In the exemplary configuration, memory 140 includes non-volatile memory for long-term data storage and volatile memory that functions as system memory for circuit 130. Memory 140 may exchange data with circuit 130 over a data bus. Additional control lines and address buses may also exist between memory 140 and circuit 130. Data may be further exchanged between a first processing circuit 110 and a second processing circuit 120 over the data bus.

[0034] The functions of system 100 may be embodied in the form of executable logical routines (e.g., lines of code, software programs, etc.) stored on a non-temporary computer-readable medium of system 100 (e.g., memory 140) and executed by circuit 130 (e.g., using processor 132). Furthermore, the functions of image processing device 100 may be standalone software applications or may form part of a software application that performs additional tasks related to image processing device 100. The functions described may be considered as methods configured to be executed by the processing unit of circuit 130, e.g., processor 132. Also, while the functions described may be implemented in software, such functionality may also be performed through dedicated hardware or firmware, or any combination of hardware, firmware, and / or software.

[0035] Since system 100 is intended for use in scenarios where a first subset of pixels and a second subset of pixels are encoded separately in the first processing circuit 110 and the second processing circuit 120, respectively, it is desirable that as little pixel data as possible be shared between the first processing circuit 110 and the second processing circuit 120, because such sharing requires synchronization, including the transfer of pixel data between the first processing circuit 110 and the second processing circuit 120, which slows down processing. Therefore, when encoding pixel data in one of the first processing circuit 110 and the second processing circuit 120, such encoding should preferably require the transfer of as little pixel data as possible. Since encoding will be performed on slice tiles, the division into slices and tiles should be such that each tile relates to pixel data from only one or primarily one of a first subset of pixels and a second subset of pixels; that is, some tiles may relate primarily to pixel data from the first subset of pixels, and some tiles may relate primarily to pixel data from the second subset of pixels. To this end, circuit 130 is configured to perform a division function for dividing the pixel array into slices and tiles based on the tilt angle.

[0036] Specifically, the circuit 130 is configured to perform a first splitting function 151 which is configured to divide the pixel array into two or more slices. The first splitting function 151 is configured to divide the pixel array into at least two slices, typically up to 100 slices, preferably 4 to 16 slices.

[0037] Circuit 130 is further configured to perform a second division function 152 configured to divide each slice into two or more tiles, the two or more tiles of each slice consisting of a first subset of tiles and a second subset of tiles, the first subset of tiles and the second subset of tiles being separate, the first subset of tiles being encoded by a first encoder 112 and the second subset of tiles being encoded by a second encoder 122. In addition to being separate, the first subset of tiles and the second subset of tiles are contiguous, and mainly relating to pixels on one side of a first boundary between the first subset of pixels and the second subset of pixels, so that one of the first subset of tiles and the other relating to pixels on the other side of the first boundary. The second partitioning function is further configured to set a second boundary between a first subset of tiles and a second subset of tiles by an offset between two adjacent slices of two or more slices, where the offset is based on a tilt angle. Specifically, the offset is selected so as to reduce the number of pixels encoded in the first subset of tiles of each slice where the pixel data is stored in the second buffer, in addition to the number of pixels encoded in the second subset of tiles of each slice where the pixel data is stored in the first buffer, in relation to not using an offset when the first boundary between the first subset of pixels and the second subset of pixels is tilted at a tilt angle v with respect to the pixel array. Thus, the amount of pixel data stored in the second buffer that needs to be transferred to the first encoder, and the amount of pixel data stored in the first buffer that needs to be transferred to the second encoder, are reduced in relation to not using an offset.For example, the offset may be set based on an iterative tilt angle such that the sum of the number of pixels encoded in a first subset of tiles in each slice where the pixel data is stored in the second buffer, and the number of pixels encoded in a second subset of tiles in each slice where the pixel data is stored in the first buffer, is determined for different offsets and is set to the offset that minimizes the sum. Alternatively, an analytical solution may be used, derived from the fact that a function of the tilt angle is computable for the determined tilt angle. The second partitioning function 152 is configured to partition the pixel array into at least two tiles per slice. The number of tiles per slice may be application-specific, for example, 10 tiles per slice. The number of tiles per slice may differ for different slices.

[0038] The circuit 130 is further configured to perform a first transfer function 153 configured to transfer pixel data of pixels encoded in a first subset of tiles of each slice, where the pixel data is stored in a second buffer, to a first encoder, and a second transfer function 154 configured to transfer pixel data of pixels encoded in a second subset of tiles of each slice, where the pixel data is stored in the first buffer, to a second encoder. The transfer of pixel data from the second buffer to the first encoder and from the first buffer to the second encoder may be performed via a Peripheral Component Interconnect (PCI), thereby slowing down access to the image data compared to when the first encoder directly accesses the image data in the first buffer and when the second encoder directly accesses the image data in the second image buffer.

[0039] The circuit 130 may be further configured to perform a first instruction function 155 configured to instruct a first encoder to encode a first subset of tiles, and a second instruction function 156 configured to instruct a second encoder to encode a second subset of tiles.

[0040] The first encoder 112 is configured to encode a first subset of the tile, and the second encoder 114 is configured to encode a second subset of the tile.

[0041] The tilt angle may be constant along the first boundary between a first subset of pixels and a second subset of pixels. The offset may also be set to be the same between each of two adjacent slices.

[0042] Alternatively, the tilt angle may vary along a first boundary between a first subset of pixels and a second subset of pixels in the pixel array. The first division function 151 may also be configured to divide the pixel array into three or more slices, and the second division function may be configured to use different offsets between two different adjacent slices. Specifically, the offset used between two adjacent slices may be based on the local tilt angle in the two adjacent slices.

[0043] If the tilt angle changes in two adjacent slices of three or more slices, for example, if the first boundary between a first subset of pixels and a second subset of pixels in a pixel array is curved, the local tilt angle in the two adjacent slices may be determined as the average tilt angle in the two adjacent slices.

[0044] If the tilt angle is constant in a first horizontal portion of the pixel array and constant but different in a second horizontal portion of the pixel array, the first division function 151 may be configured to divide the pixel array into four or more slices by dividing each distinct horizontal portion of the pixel array into two or more slices. The local tilt angle for two adjacent slices in the same horizontal portion of the pixel array may further be determined as a constant tilt angle in that horizontal portion. The local tilt angle for two adjacent slices in different horizontal portions of the pixel array may be determined as the average of two different but constant tilt angles in the two horizontal portions. By aligning the fourth boundary between two adjacent slices with the third boundary between two adjacent horizontal portions, the first boundary will have a constant tilt angle in each slice in each horizontal portion. This makes it possible to set the offset of the second boundary in each slice based on the tilt angle of the first boundary in that slice, which reduces the amount of data that needs to be transferred between image processing circuits for encoding in relation to the absence of an offset.

[0045] The sizes of the corresponding tiles in each of two or more slices may be the same or different in each of the two or more slices. In other words, the boundaries between tiles in two or more slices may or may not be horizontally aligned. This depends on whether different sizes for corresponding tiles in different slices are decodeable for the relevant implementation or not available on the decoder side. Furthermore, having the same size for corresponding tiles in two or more slices can simplify encoding scheduling because encoding tiles of the same size takes similar time. Having the same size for corresponding tiles in two or more slices may further allow the use of image data in the corresponding buffer for corresponding tiles in other slices of the two or more slices when encoding a tile in one of the two or more slices.

[0046] Hereinafter, a method 200 for dividing a pixel array into slices and tiles for encoding into an encoded video stream, as disclosed herein, will be discussed with reference to Figure 2. Method 200 is intended for use in scenarios where the pixel array consists of a first subset of pixels and a second subset of pixels, and a first boundary between the first subset of pixels and the second subset of pixels is tilted at a certain angle with respect to the pixel array, and the first subset of pixels and the second subset of pixels are processed separately by their respective processing circuits, for example, to enable parallel processing. Method 200 may be performed with respect to encoding large image frames, such as panoramic image frames structured by combining image frames captured by multiple image sensors, or large image frames captured using a wide-angle lens, for example, where the large image frame is divided into two or more parts, as described with reference to system 100 with reference to Figures 1, 4, and 5.

[0047] Since Method 200 is intended to be performed in a scenario where a first subset of pixels and a second subset of pixels are encoded separately in the first processing circuit 110 and the second processing circuit 120, respectively, it is desirable that as little pixel data as possible be shared between the first processing circuit 110 and the second processing circuit 120, because such sharing requires synchronization, including the transfer of pixel data between the first processing circuit 110 and the second processing circuit 120, such that the sharing slows down the processing. For example, the transfer of pixel data from the second buffer to the first encoder and from the first buffer to the second encoder may be performed via PCI, which slows down access to the image data compared to when the first encoder directly accesses the image data in the first buffer and when the second encoder directly accesses the image data in the second image buffer, respectively. Furthermore, having an additional step of synchronization, including the transfer of pixel data, may introduce latency because one of the image processing circuits must wait for the other image processing circuit to receive the image data. Therefore, when encoding pixel data in one of the first processing circuit 110 and the second processing circuit 120, such encoding should preferably require the transfer of as little pixel data as possible. Since the encoding will be performed on slice tiles, the division into slices and tiles should be such that each tile relates to pixel data from only one or primarily one of the first subset of pixels and the second subset of pixels; that is, some tiles may relate primarily to pixel data from the first subset of pixels, and some tiles may relate primarily to pixel data from the second subset of pixels. To this end, the pixel array is divided into slices and tiles based on the tilt angle.

[0048] Method 200 includes dividing a pixel array into two or more slices S210 and dividing each slice into two or more tiles S220, wherein the two or more tiles of each slice consist of a first subset of tiles and a second subset of tiles, the first subset of tiles and the second subset of tiles being separate, the first subset of tiles being encoded by a first encoder and the second subset of tiles being encoded by a second encoder. In addition to being separate, the first subset of tiles and the second subset of tiles are contiguous, and mainly relate to pixels on one side of a first boundary between the first subset of pixels and the second subset of pixels, so that one of the first subset of tiles and the other relates to pixels on the other side of the first boundary. Dividing each slice into two or more tiles S210 includes setting a second boundary between a first subset of tiles and a second subset of tiles by an offset between two adjacent slices of the two or more slices, where the offset is based on a tilt angle. Specifically, the offset is selected so as to reduce the number of pixels encoded in the first subset of tiles of each slice where the pixel data is stored in the second buffer, in addition to the number of pixels encoded in the second subset of tiles of each slice where the pixel data is stored in the first buffer, in relation to not using an offset when the first boundary between the first subset of pixels and the second subset of pixels is tilted at a tilt angle v with respect to the pixel array. Thus, the amount of pixel data stored in the second buffer that needs to be transferred to the first encoder, and the amount of pixel data stored in the first buffer that needs to be transferred to the second encoder, are reduced in relation to not using an offset.For example, the offset may be set based on an iterative tilt angle such that the sum of the number of pixels encoded in the first subset of tiles of each slice, where the pixel data is stored in the second buffer, and the number of pixels encoded in the second subset of tiles of each slice, where the pixel data is stored in the first buffer, is determined for different offsets and is set to the offset that minimizes the sum.

[0049] Method 200 and the steps contained herein may be further adapted as corresponding functions of system 100 as described with respect to Figure 1.

[0050] The following describes an image processing device 300 for dividing a pixel array into slices and tiles, as disclosed herein, with reference to Figure 3. The slices and tiles are intended to be encoded into an encoded video stream by a first encoder located in a first image processing circuit and a second encoder located in a second image processing circuit. The image processing device 300 is intended for use in scenarios where the pixel array consists of a first subset of pixels and a second subset of pixels, and the first boundary between the first subset of pixels and the second subset of pixels is inclined with respect to the pixel array at a certain angle, and the first subset of pixels and the second subset of pixels are processed separately, for example, to enable parallel processing. The image processing device 300 may be used for encoding large image frames, such as panoramic image frames structured by combining image frames captured by multiple image sensors, or for encoding large image frames captured using a wide-angle lens, where the large image frame is divided into two or more parts, as described with reference to system 100 with reference to Figures 1, 4, and 5. The image processing device 300 may be included in a system such as system 100 as described with reference to Figure 1.

[0051] The image processing device 300 includes a circuit 130. The circuit 130 is configured to perform the functions of the system 100. The circuit 130 may include a processor 132, such as a central processing unit (CPU), a microcontroller, or a microprocessor. The processor 132 is configured to execute program code. The program code may be configured, for example, to perform the functions of the system 100.

[0052] The image processing device 300 may further include memory 140. Memory 340 may be one or more of a buffer, flash memory, hard drive, removable media, volatile memory, non-volatile memory, random access memory (RAM), or another suitable device. In the exemplary configuration, memory 140 includes non-volatile memory for long-term data storage and volatile memory that functions as system memory for circuit 130. Memory 140 may exchange data with circuit 130 over a data bus. Additional control lines and address buses may also exist between memory 140 and circuit 130. Data may be further exchanged between a first processing circuit 110 and a second processing circuit 120 over a data bus.

[0053] The functions of the image processing device 300 may be embodied in the form of executable logical routines (e.g., lines of code, software programs, etc.) stored on a non-temporary computer-readable medium (e.g., memory 140) of the image processing device 300 and executed by the circuit 130 (e.g., using the processor 132). Furthermore, the functions of the image processing device 300 may be standalone software applications or may form part of a software application that performs additional tasks related to the image processing device 300. The functions described may be considered as methods configured to be executed by the processing unit of the circuit 130, e.g., the processor 132. Also, while the functions described may be implemented in software, such functionality may also be performed via dedicated hardware or firmware, or any combination of hardware, firmware, and / or software.

[0054] Since the image processing device 300 is intended for use in scenarios where a first subset of pixels and a second subset of pixels are processed separately by the first processing circuit 110 and the second processing circuit 120, respectively, it is desirable that as little pixel data as possible be shared between the first processing circuit 110 and the second processing circuit 120, because such sharing requires synchronization, including the transfer of pixel data between the first processing circuit 110 and the second processing circuit 120, which slows down processing. Therefore, when encoding pixel data in one of the first processing circuit 110 and the second processing circuit 120, such encoding should preferably require the transfer of as little pixel data as possible. Since encoding will be performed on slice tiles, the division into slices and tiles should be such that each tile primarily relates to pixel data from one of a first subset of pixels and a second subset of pixels; that is, some tiles may primarily relate to pixel data from the first subset of pixels, and some tiles may primarily relate to pixel data from the second subset of pixels. To this end, circuit 130 is configured to perform a division function for dividing the pixel array into slices and tiles based on the tilt angle.

[0055] Specifically, the circuit 130 is configured to perform a first splitting function 151 which is configured to divide the pixel array into two or more slices.

[0056] Circuit 130 is further configured to perform a second division function 152 configured to divide each slice into two or more tiles, the two or more tiles of each slice consisting of a first subset of tiles and a second subset of tiles, the first subset of tiles and the second subset of tiles being separated, the first subset of tiles being encoded by a first encoder and the second subset of tiles being encoded by a second encoder. In addition to being separated, the first subset of tiles and the second subset of tiles are contiguous, and mainly relating to pixels on one side of a first boundary between the first subset of pixels and the second subset of pixels, so that one of the first subset of tiles and the other relating to pixels on the other side of the first boundary. The second partitioning function is further configured to set a second boundary between a first subset of tiles and a second subset of tiles by an offset between two adjacent slices of two or more slices, where the offset is based on a tilt angle. Specifically, the offset is selected so as to reduce the number of pixels encoded in the first subset of tiles of each slice where the pixel data is stored in the second buffer, in addition to the number of pixels encoded in the second subset of tiles of each slice where the pixel data is stored in the first buffer, in relation to not using an offset when the first boundary between the first subset of pixels and the second subset of pixels is tilted at a tilt angle v with respect to the pixel array. Thus, the amount of pixel data stored in the second buffer that needs to be transferred to the first encoder, and the amount of pixel data stored in the first buffer that needs to be transferred to the second encoder, are reduced in relation to not using an offset.For example, the offset may be set based on an iterative tilt angle such that the sum of the number of pixels encoded in the first subset of tiles of each slice, where the pixel data is stored in the second buffer, and the number of pixels encoded in the second subset of tiles of each slice, where the pixel data is stored in the first buffer, is determined for different offsets and is set to the offset that minimizes the sum.

[0057] The image processing device 300 and its functions may be further adapted as corresponding functions of system 100 as described with respect to Figure 1.

[0058] Five examples are described below, with reference to Figures 6, 7a–7b, 8a–8d, 9a–9d, and 10a–10d, in which the pixel array is divided into tiles or slices and tiles. Note that the absolute and relative sizes of the pixel array, slices, tiles, and tilt angles are selected for illustrative purposes only and may not necessarily reflect any real-world scenario. In Figures 6, 7a–7b, 8a–8d, 9a–9d, and 10a–10d, each square with a thin solid line and containing the number "1" or "2" corresponds to either a single pixel or a pixel block containing multiple pixels, each square or rectangle with a bold dashed line corresponds to a tile, and each horizontal thick line indicates a fourth boundary between slices. For example, in Figure 7a, the pixel array 700 is divided into eight square tiles, each consisting of nine pixels or pixel blocks, but the pixel array 700 is not divided into any slices. In Figure 7b, the pixel array 700 is divided by height into two slices, each consisting of three pixels or pixel blocks, and each slice is divided into three tiles. Four of the tiles consist of nine pixels or pixel blocks, and two of the tiles consist of eighteen pixels or pixel blocks.

[0059] Refer to Figure 6, which shows a first example of dividing the pixel array 600 into tiles. In this case, the first boundary B between the first subset of pixels and the second subset of pixels is horizontal, i.e., parallel to the columns in the pixel array. The first subset of pixels consists of squares indicated by the number "1", and the second subset of pixels consists of squares indicated by the number "2". Each square can correspond to a block of pixels containing a single pixel or multiple pixels. Dividing the pixel array 600 into tiles minimizes the amount of pixel data that must be transferred between the first and second processing circuits when encoding the first and second subsets of pixels separately in the first and second processing circuits, respectively. Avoiding the need to transfer pixel data between the first and second circuits is trivial. For example, the division into eight tiles shown in Figure 6 does not require the transfer of pixel data.

[0060] Here, see Figures 7a-7b for a second example in which the pixel array 700 is divided into tiles or slices and tiles. In this case, the first boundary B between the first subset of pixels and the second subset of pixels is inclined at a constant angle v. The first subset of pixels consists of a square indicated by the number "1", and the second subset of pixels consists of a square indicated by the number "2". The first subset of pixels has pixel data buffered in the first buffer in the first processing circuit, and the second subset of pixels has pixel data buffered in the first buffer in the first processing circuit. Each square can correspond to a block of pixels containing a single pixel or multiple pixels.

[0061] In Figure 7a, the pixel array 700 is divided into eight tiles, i.e., four-tile columns, each containing two tiles, according to the prior art method. The pixels of the four tiles in the first two columns from the left are encoded by a first encoder in a first processing circuit, and the four tiles in the last two columns from the left are encoded by a second encoder in a second processing circuit. As seen in Figure 7a, after dividing the pixel array 700 into tiles according to the prior art method, the pixel data of the pixels corresponding to the nine squares must be transferred from the second processing circuit to the first circuit when the four tiles in the first two columns are encoded by the first encoder, and the pixel data of the pixels corresponding to the nine squares must be transferred from the first processing circuit to the second circuit when the four tiles in the last two columns are encoded by the second encoder. Therefore, the entire pixel data of the pixels corresponding to the 18 squares must be transferred between the two processing circuits using the prior art method in this example.

[0062] When the method 200 of the present disclosure is performed as shown in Figure 7b, the pixel array 700 is first divided into two or more slices, each slice then divided into two or more tiles, each slice comprising two or more tiles consisting of a first subset of tiles and a second subset of tiles, the first subset of tiles and the second subset of tiles being separate, the first subset of tiles being encoded by a first encoder and the second subset of tiles being encoded by a second encoder. When each slice is divided into two or more tiles, the second boundary between the first subset of tiles and the second subset of tiles is set by an offset between two adjacent slices of the two or more slices, the offset being based on a tilt angle. The division into slices and tiles of the method used for Figure 7b further requires that the corresponding tiles in each slice (tiles in the same row of tiles) be of the same size, i.e., the same width. As shown in Figure 7b, the pixel array 700 is divided into a first slice S1 and a second slice S2. The first slice S1 is divided into three tiles T1, T2, and T3, with the first tile T1 and the second tile T2 belonging to a first subset of tiles, and the third tile T3 belonging to a second subset of tiles. The first subset and the second subset of tiles in the first slice S1 are separate; that is, each tile belongs to only one of the first subset and the second subset of tiles. Similarly, the second slice S2 is divided into three tiles T1, T2, and T3, with the first tile T1 belonging to a first subset of tiles, and the second tile T2 and the third tile T3 belonging to a second subset of tiles. The first subset and the second subset of tiles in the second slice S2 are separate; that is, each tile belongs to only one of the first subset and the second subset of tiles.The second boundary between the first subset of tiles and the second subset of tiles in the first slice S1, and the second boundary between the first subset of tiles and the second subset of tiles in the second slice S2, are offset relative to each other based on the tilt angle v of the first boundary B. The offset is selected so as to reduce the number of pixels encoded in the first subset of tiles of each slice where the pixel data is stored in the second buffer, in addition to the number of pixels encoded in the second subset of tiles of each slice where the pixel data is stored in the first buffer, in relation to not using the offset when the first boundary B between the first subset of pixels and the second subset of pixels is tilted at the tilt angle v with respect to the pixel array. Thus, the amount of pixel data stored in the second buffer that needs to be transferred to the first encoder, and the amount of pixel data stored in the first buffer that needs to be transferred to the second encoder, are reduced in relation to not using the offset. For example, the offset may be set based on an iterative tilt angle such that the sum of the number of pixels encoded in the first subset of tiles of each slice, where the pixel data is stored in the second buffer, and the number of pixels encoded in the second subset of tiles of each slice, where the pixel data is stored in the first buffer, is determined for different offsets and is set to the offset that minimizes the sum.

[0063] As shown in Figure 7b, after dividing the pixel array 700 into slices and tiles according to the method of this disclosure, the pixel data of the pixels corresponding to two squares must be transferred from the second processing circuit to the first circuit when encoding the first subset of tiles of the first slice S1, i.e., the first tile T1 and the second tile T2. The pixel data of the pixels corresponding to two squares must be transferred from the first processing circuit to the second circuit when encoding the second subset of tiles of the first slice S1, i.e., the third tile T3. Furthermore, the pixel data of the pixels corresponding to two squares must be transferred from the second processing circuit to the first circuit when encoding the first subset of tiles of the second slice S2, i.e., the first tile T1. The pixel data of the pixels corresponding to two squares must be transferred from the first processing circuit to the second circuit when encoding the second subset of tiles of the second slice S2, i.e., the second tile T2 and the third tile T3. Therefore, the entire pixel data of the pixels corresponding to the eight squares must be transferred between the two processing circuits using the method 200 of the present disclosure in this example.

[0064] In Figure 7b, the offset is represented by six squares. It is conceivable that the offset decreases as the inclination angle decreases, and vice versa.

[0065] Here, see Figures 8a to 8d for a third example in which the pixel array 800 is divided into tiles or slices and tiles. In this case, the first boundary B between the first subset of pixels and the second subset of pixels is inclined with inclination angles v1 and v2 that vary along the first boundary B, so that in the first horizontal portion of the pixel array 800, the first boundary B has a constant first inclination angle v1, and in the second horizontal portion of the pixel array 800, the first boundary B has a constant second inclination angle v2 that is different from the first inclination angle v1. The first subset of pixels consists of a square indicated by the number "1", and the second subset of pixels consists of a square indicated by the number "2". The first subset of pixels has pixel data that is buffered in the first buffer in the first processing circuit, and the second subset of pixels has pixel data that is buffered in the first buffer in the first processing circuit. Each square can correspond to a block of pixels containing a single pixel or multiple pixels.

[0066] In Figure 8a, the pixel array 800 is divided into 16 tiles, i.e., four rows of four tiles, each containing four tiles, according to the prior art method. The pixels of the eight tiles in the first two rows from the left are encoded by a first encoder in a first processing circuit, and the eight tiles in the last two rows from the left are encoded by a second encoder in a second processing circuit. As seen in Figure 8a, after dividing the pixel array 800 into tiles according to the prior art method, the pixel data of the pixels corresponding to four squares must be transferred from the second processing circuit to the first circuit when the eight tiles in the first two rows are encoded by the first encoder, and the pixel data of the pixels corresponding to twelve squares must be transferred from the first processing circuit to the second circuit when the eight tiles in the last two rows are encoded by the second encoder. Therefore, the entire pixel data of the pixels corresponding to sixteen squares must be transferred between the two processing circuits using the prior art method in this example.

[0067] When the method 200 of the present disclosure is performed as a third example as shown in Figure 8b, the pixel array 800 is first divided into two or more slices, each slice then divided into two or more tiles, each slice comprising two or more tiles consisting of a first subset of tiles and a second subset of tiles, the first subset of tiles and the second subset of tiles being separate, the first subset of tiles being encoded by a first encoder and the second subset of tiles being encoded by a second encoder. When each slice is divided into two or more tiles, the second boundary between the first subset of tiles and the second subset of tiles is set by an offset between two adjacent slices of the two or more slices, the offset being based on inclination angles v1, v2. The division into slices and tiles of the method used for Figure 8b further requires that the corresponding tiles in each slice (tiles in the same row of tiles) be of the same size, i.e., the same width. The inclination angles v1 and v2 are constant but differ in the two horizontal sections, and each of the two horizontal sections is divided into two slices. As can be seen in Figure 8b, the pixel array 800 is divided into a first slice S1, a second slice S2, a third slice S3, and a fourth slice S4. The first slice S1 is divided into seven tiles T1 to T7, with the first to sixth tiles T6 belonging to the first subset of tiles in the first slice S1, and the seventh tile T7 belonging to the second subset of tiles in the first slice S1. Similarly, the second slice S2 is divided into seven tiles T1 to T7, with the first to fourth tiles T4 belonging to the first subset of tiles in the second slice S2, and the fifth to seventh tiles T7 belonging to the second subset of tiles in the second slice S2. The third slice S3 is divided into seven tiles T1 to T7. The first tile T1 to the third tile T3 belong to the first subset of tiles in the third slice S3, and the fourth tile T4 to the seventh tile T7 belong to the second subset of tiles in the third slice S3.Finally, the fourth slice S4 is divided into seven tiles T1-T7, with the first tile T1 and the second tile T2 belonging to the first subset of tiles in the fourth slice S4, and the third to seventh tiles T3-T7 belonging to the second subset of tiles in the fourth slice S4. The first subset and the second subset of tiles in each slice are separate; that is, each tile belongs to only one of the first subset and the second subset of tiles. The second boundary between the first subset and the second subset of tiles in the first slice S1, and the second boundary between the first subset and the second subset of tiles in the second slice S2, are offset from each other based on the local inclination angle v1 of the first boundary B in the horizontal portions of the third slice S3 and the fourth slice S4. The second boundary between the first subset of tiles in the second slice S2 and the second subset of tiles in the third slice S2 is offset from each other based on the local inclination angles v1 and v2 of the first boundary B in the horizontal portions of the second slice S2 and the third slice S3. Since the second slice S2 and the third slice S3 are located in different horizontal portions with different constant inclination angles, the local inclination angles in the second slice S2 and the third slice S3 can be determined as the average of the first inclination angle v1 and the second inclination angle v2. The second boundary between the first subset of tiles and the second subset of tiles in the third slice S3, and the second boundary between the first subset of tiles and the second subset of tiles in the fourth slice S4, are offset from each other based on the local inclination angle v2 where the first boundary B in the horizontal portions of the third slice S3 and the fourth slice S4 is located.The corresponding offset between each pair of adjacent slices is chosen such that the number of pixels encoded in the first subset of tiles of each slice, where the pixel data is stored in the second buffer, plus the number of pixels encoded in the second subset of tiles of each slice, where the pixel data is stored in the first buffer, is reduced in relation to the absence of offsets when the first boundary B between the first subset of pixels and the second subset of pixels is tilted with respect to the pixel array at varying tilt angles v1, v2. Thus, the amount of pixel data stored in the second buffer that needs to be transferred to the first encoder, and the amount of pixel data stored in the first buffer that needs to be transferred to the second encoder, is reduced in relation to the absence of offsets.

[0068] As shown in Figure 8b, after dividing the pixel array 800 into slices and tiles according to the method of this disclosure, the pixel data of the pixels corresponding to one square must be transferred from the second processing circuit to the first circuit when encoding the first subset of tiles of the first slice S1, i.e., the first tile T1 to the sixth tile T6. The pixel data of the pixels corresponding to one square must be transferred from the first processing circuit to the second circuit when encoding the second subset of tiles of the first slice S1, i.e., the seventh tile T7. Furthermore, the pixel data of the pixels corresponding to one square must be transferred from the second processing circuit to the first circuit when encoding the first subset of tiles of the second slice S2, i.e., the first tile T1 to the fourth tile T4. The pixel data of the pixels corresponding to one square must be transferred from the first processing circuit to the second circuit when encoding the second subset of tiles of the second slice S2, i.e., the fifth tile T5 to the seventh tile T7. Furthermore, the pixel data of a pixel corresponding to one square must be transferred from the second processing circuit to the first circuit when encoding the first subset of tiles in the third slice S3, i.e., the first tile T1 to the third tile T3. The pixel data of a pixel corresponding to a zero square must be transferred from the first processing circuit to the second circuit when encoding the second subset of tiles in the third slice S3, i.e., the fourth tile T4 to the seventh tile T7. Finally, the pixel data of a pixel corresponding to a zero square must be transferred from the second processing circuit to the first circuit when encoding the first subset of tiles in the fourth slice S4, i.e., the first tile T1 and the second tile T2. The pixel data of a pixel corresponding to a zero square must be transferred from the first processing circuit to the second circuit when encoding the second subset of tiles in the fourth slice S4, i.e., the third tile T3 to the seventh tile T7. Therefore, the entire pixel data of the pixels corresponding to the five squares must be transferred between the two processing circuits using the method 200 of the present disclosure in this example.

[0069] In Figure 8b, the offsets are the two squares between the first and second slices, the one square between the second slice S2 and the third slice S3, and the one square between the third slice S3 and the fourth slice S4. If the slope angle decreases in either of the adjacent slices, the offset decreases between those two adjacent slices, and vice versa.

[0070] Here, we refer to Figure 8c, which shows the division of the pixel array 800 into slices and tiles according to the present disclosure as a third example. In contrast to the division described with respect to Figure 8b, the division into slices and tiles of the method used for Figure 8c does not impose any restrictions on the size of the tiles in different slices. Therefore, the size and position of the tiles in the slices can be set independently. As a result, as seen in Figure 8c, the pixel array 800 is divided into first to fourth slices S1, S2, S3, and S4. The first slice S1 is divided into four tiles, in this case the first three tiles from the left belong to the first subset of tiles in the first slice S1, and the last tile belongs to the second subset of tiles in the first slice S1. Similarly, the second slice S2 is divided into five tiles, the first three tiles belong to the first subset of tiles in the second slice S2, and the last two tiles belong to the second subset of tiles in the second slice S2. The third slice S3 is divided into four tiles, with the first two tiles from the left belonging to the first subset of tiles in the third slice S3, and the last two tiles belonging to the second subset of tiles in the third slice S3. Finally, the fourth slice S4 is divided into five tiles, with the first two tiles from the left belonging to the first subset of tiles in the fourth slice S4, and the last three tiles belonging to the second subset of tiles in the fourth slice S4. The first subset and the second subset of tiles in each slice are separate; that is, each tile belongs to only one of the first subset and the second subset of tiles. The second boundary between the first subset of tiles and the second subset of tiles in the first slice S1, and the second boundary between the first subset of tiles and the second subset of tiles in the second slice S2, are offset from each other based on the local inclination angle v1 of the first boundary B in the horizontal portions of the first slice S1 and the second slice S2.The second boundary between the first subset of tiles in the second slice S2 and the second subset of tiles in the third slice S3 is offset from each other based on the local inclination angles v1 and v2 of the first boundary B in the horizontal portions of the second and third slices S3. Since the second and third slices S2 and S3 are located in different horizontal portions with different constant inclination angles, the local inclination angles in the second and third slices S2 and S3 can be determined as the average of the first inclination angle v1 and the second inclination angle v2. The second boundary between the first subset of tiles in the third slice S3 and the second subset of tiles in the fourth slice S4 is offset from each other based on the local inclination angle v2 of the first boundary B in the horizontal portions of the third and fourth slices S3. The corresponding offset between each pair of adjacent slices is selected so as to reduce the number of pixels encoded in the first subset of tiles of each slice, in which the pixel data is stored in the second buffer, and in addition, the number of pixels encoded in the second subset of tiles of each slice, in which the pixel data is stored in the first buffer, when the first boundary B between the first subset of pixels and the second subset of pixels is tilted with respect to the pixel array by a tilt angle v1 or v2 or by varying tilt angles v1, v2, without using an offset. Thus, the amount of pixel data stored in the second buffer that needs to be transferred to the first encoder, and the amount of pixel data stored in the first buffer that needs to be transferred to the second encoder, are reduced in connection with the absence of an offset.

[0071] As shown in Figure 8c, after dividing the pixel array 800 into slices and tiles according to the method of this disclosure, where the tile sizes can be independently configured in slices with different sizes, the pixel data of the pixels corresponding to one square must be transferred from the second processing circuit to the first circuit when encoding the first subset of tiles in the first slice S1, i.e., the first to third tiles, and the pixel data of the pixels corresponding to one square must be transferred from the first processing circuit to the second circuit when encoding the second subset of tiles in the first slice S1, i.e., the fourth tile. Furthermore, the pixel data of the pixels corresponding to one square must be transferred from the second processing circuit to the first circuit when encoding the first subset of tiles in the second slice S2, i.e., the first to third tiles, and the pixel data of the pixels corresponding to one square must be transferred from the first processing circuit to the second circuit when encoding the second subset of tiles in the second slice S2, i.e., the fourth and fifth tiles. Furthermore, the pixel data for a pixel corresponding to one square must be transferred from the second processing circuit to the first circuit when encoding the first subset of tiles in the third slice S3, i.e., the first and second tiles. The pixel data for a pixel corresponding to zero squares must be transferred from the first processing circuit to the second circuit when encoding the second subset of tiles in the third slice S3, i.e., the third and fourth tiles. Finally, the pixel data for a pixel corresponding to zero squares must be transferred from the second processing circuit to the first circuit when encoding the first subset of tiles in the fourth slice S4, i.e., the first and second tiles. The pixel data for a pixel corresponding to zero squares must be transferred from the first processing circuit to the second circuit when encoding the second subset of tiles in the fourth slice S4, i.e., the third through fifth tiles. Thus, the entire pixel data for pixels corresponding to five squares must be transferred between the two processing circuits using the method 200 of the present disclosure in this example.

[0072] In Figure 8c, the offsets are the two squares between the first slice S1 and the second slice S2, the one square between the second slice S2 and the third slice S3, and the one square between the third slice S3 and the fourth slice S4. If the slope angle decreases in any of the adjacent slices, the offset decreases between those adjacent slices, and vice versa.

[0073] Regarding Figure 8c, it should be noted that even if there are no restrictions on the size of tiles in different slices, each slice is divided into two or more tiles. Alternatively, each slice is also divided into two tiles, one on each side of the first boundary. However, dividing a slice into two or more tiles of similar size can simplify the coding scheduling because coding tiles of similar size takes similar amount of time. This also allows the use of image data in the corresponding buffer for corresponding tiles in other slices of two or more slices.

[0074] As yet another method, Figure 8d shows the division of the pixel array 800 into slices and tiles, where it is required that the corresponding tiles in each slice (tiles in the same row of tiles) must be the same size, i.e., the same width, except for the tiles at the first boundary B between the first subset of pixels and the second subset of pixels. As can be seen, most of the corresponding tiles in the slices are the same size. However, the width of the tiles at the first boundary B between the first subset of pixels and the second subset of pixels in the second slice S2 and the fourth slice S4 is adapted and positioned such that the second boundary between the first subset of tiles and the second subset of tiles is positioned with an offset relative to each of these adjacent slices, thereby reducing the total amount of pixel data of pixels that must be transferred between the two processing circuits compared to the prior art. Specifically, the offset of the second boundary between the first slice S1 and the second slice S2 is two squares, the offset of the second boundary between the second slice S2 and the third slice S3 is one square, and the offset of the second boundary between the third slice S3 and the fourth slice S4 is one square.

[0075] Here, see Figures 9a to 9d for a fourth example in which the pixel array 900 is divided into tiles or slices and tiles. In this case, the first boundary B between the first subset of pixels and the second subset of pixels is inclined at a slope angle that changes along the first boundary B so that the first boundary B is curved. The first subset of pixels consists of a square indicated by the number "1", and the second subset of pixels consists of a square indicated by the number "2". The first subset of pixels has pixel data buffered in a first buffer in the first processing circuit, and the second subset of pixels has pixel data buffered in a first buffer in the first processing circuit. Each square can correspond to a block of pixels containing a single pixel or multiple pixels.

[0076] In comparison with Figures 8a to 8d, the first boundary B between the first subset of pixels and the second subset of pixels in the pixel array 900 in Figures 9a to 9d is also sloped with a varying angle of inclination, but rather curved rather than having a constant angle of inclination in the two horizontal portions of the pixel array 900. However, in the fourth example, the average angle of inclination of the curved first boundary B in the first two slices S1 and S2 in Figures 9b to 9d is close to the constant angle of inclination in the first two slices S1 and S2 in Figures 8b to 8d, and the curved first boundary B in the last two slices S3 and S4 in Figures 9b to 9d is close to the constant angle of inclination in the last two slices S3 and S4 in Figures 8b to 8d, so that the division into tiles based on the prior art method and the division into slices and tiles based on the method of the present disclosure are the same in Figures 9a to 9d, respectively, as in Figures 8a to 8d. The locations of each tile in each slice, in each of the first subset of tiles and the second subset of tiles, are the same in Figures 9b, 9c, and 9d, as in Figures 8b, 8c, and 8d, respectively. Similarly, the total amount of pixel data of pixels that must be transferred between two processing circuits using the prior art method for Figure 9a is the same as for Figure 8a, and using the method 200 of the present disclosure for Figures 9b, 9c, and 9d is the same as for Figures 8b, 8c, and 8d, respectively.

[0077] Here, Figures 10a to 10d refer to a fifth example in which the pixel array 1000 is divided into tiles or slices and tiles. In this case, the first boundary B between the first subset of pixels and the second subset of pixels is inclined at a slope angle that changes along the first boundary B so that the first boundary B is curved. The first subset of pixels consists of a square indicated by the number "1", and the second subset of pixels consists of a square indicated by the number "2". The first subset of pixels has pixel data buffered in a first buffer in the first processing circuit, and the second subset of pixels has pixel data buffered in a first buffer in the first processing circuit. Each square can correspond to a block of pixels containing a single pixel or multiple pixels.

[0078] In Figure 10a, the pixel array 1000 is divided into 16 tiles, i.e., four rows of four tiles, each containing four tiles, according to the prior art method. The pixels of the eight tiles in the first two rows from the left are encoded by a first encoder in a first processing circuit, and the eight tiles in the last two rows from the left are encoded by a second encoder in a second processing circuit. As seen in Figure 10a, after dividing the pixel array 1000 into tiles according to the prior art method, the pixel data of the pixels corresponding to the six squares must be transferred from the second processing circuit to the first circuit when the eight tiles in the first two rows are encoded by the first encoder, and the pixel data of the pixels corresponding to the zero squares must be transferred from the first processing circuit to the second circuit when the eight tiles in the last two rows are encoded by the second encoder. Therefore, the entire pixel data of the pixels corresponding to the six squares must be transferred between the two processing circuits using the prior art method in this example.

[0079] When Method 200 of the present disclosure is performed as a third example as shown in Figure 10b, the pixel array 1000 is first divided into two or more slices, each slice then divided into two or more tiles, each slice comprising two or more tiles consisting of a first subset of tiles and a second subset of tiles, the first subset of tiles and the second subset of tiles being separate, the first subset of tiles being encoded by a first encoder and the second subset of tiles being encoded by a second encoder. When each slice is divided into two or more tiles, the second boundary between the first subset of tiles and the second subset of tiles is set by an offset between two adjacent slices of the two or more slices, the offset being based on a tilt angle. The division into slices and tiles of the method used for Figure 10b further requires that the corresponding tiles in each slice (tiles in the same row of tiles) be of the same size, i.e., the same width. The tilt angle varies along the first boundary B such that the first boundary B is curved. As shown in Figure 10b, the pixel array 1000 is divided into first to fourth slices S1, S2, S3, and S4. The first slice S1 is divided into five tiles T1 to T5, with the first to third tiles T3 belonging to the first subset of tiles in the first slice S1, and the fourth and fifth tiles T4 and T5 belonging to the second subset of tiles in the first slice S1. Similarly, the second slice S2 is divided into five tiles T1 to T5, with the first and second tiles T1 and T2 belonging to the first subset of tiles in the second slice S2, and the third to fifth tiles T3 and T5 belonging to the second subset of tiles in the second slice S2. The third slice S3 is divided into five tiles T1 to T5. The first tile T1 and the second tile T2 belong to the first subset of tiles in the third slice S3, while the third to fifth tiles T3 to T5 belong to the second subset of tiles in the third slice S3.Finally, the fourth slice S4 is divided into five tiles T1-T5, with the first tile T1-T3 belonging to the first subset of tiles in the fourth slice S4, and the fourth tile T4 and fifth tile T5 belonging to the second subset of tiles in the fourth slice S4. The first subset and the second subset of tiles in each slice are separate; that is, each tile belongs to only one of the first subset and the second subset of tiles. The second boundary between the first subset and the second subset of tiles in the first slice S1, and the second boundary between the first subset and the second subset of tiles in the second slice S2, are offset from each other based on the local inclination angle of the first boundary B in the horizontal portions of the first slice S1 and the second slice S2. The second boundary between the first subset of tiles in the second slice S2 and the second subset of tiles in the third slice S3 is offset from each other based on the local inclination angle of the first boundary B in the second slice S2 and the third slice S3. The second boundary between the first subset of tiles in the third slice S3 and the second subset of tiles in the fourth slice S4 is offset from each other based on the local inclination angle of the first boundary B in the third slice S3 and the fourth slice S4. The local inclination angles in each pair of adjacent slices can be determined as the average of the inclination angles of the curved portion of the first boundary B in that pair of adjacent slices. The corresponding offset between each pair of adjacent slices is selected to reduce the number of pixels encoded in the first subset of tiles of each slice, where the pixel data is stored in the second buffer, in addition to the number of pixels encoded in the second subset of tiles of each slice, where the pixel data is stored in the first buffer, by not using an offset when the first boundary B between the first subset of pixels and the second subset of pixels is tilted at a varying tilt angle relative to the pixel array.Therefore, the amount of pixel data stored in the second buffer that needs to be transferred to the first encoder, and the amount of pixel data stored in the first buffer that needs to be transferred to the second encoder, are reduced in relation to not using an offset.

[0080] As shown in Figure 10b, after dividing the pixel array 1000 into slices and tiles according to the method of the present disclosure, the pixel data of the pixels corresponding to zero squares must be transferred from the second processing circuit to the first circuit when encoding the first subset of tiles of the first slice S1, i.e., the first tile T1 to the third tile T3, and the pixel data of the pixels corresponding to zero squares must be transferred from the first processing circuit to the second circuit when encoding the second subset of tiles of the first slice S1, i.e., the fourth tile T4 and the fifth tile T5. Furthermore, the pixel data of the pixels corresponding to the zero squares must be transferred from the second processing circuit to the first circuit when encoding the first subset of tiles in the second slice S2, i.e., the first tile T1 and the second tile T2. The pixel data of the pixels corresponding to the zero squares must be transferred from the first processing circuit to the second circuit when encoding the second subset of tiles in the second slice S2, i.e., the third tile T3 to the fifth tile T5. Furthermore, the pixel data of the pixels corresponding to the zero squares must be transferred from the second processing circuit to the first circuit when encoding the first subset of tiles in the third slice S3, i.e., the first tile T1 to the second tile T2. The pixel data of the pixels corresponding to the zero squares must be transferred from the first processing circuit to the second circuit when encoding the second subset of tiles in the third slice S3, i.e., the third tile T3 to the fifth tile T5. Finally, the pixel data of the pixels corresponding to the zero squares must be transferred from the second processing circuit to the first circuit when encoding the first subset of tiles in the fourth slice S4, i.e., the first tile T1 to the third tile T3, and the pixel data of the pixels corresponding to the zero squares must be transferred from the first processing circuit to the second circuit when encoding the second subset of tiles in the fourth slice S4, i.e., the fourth tile T4 and the fifth tile T5. Therefore, there is no pixel data in the entirety of the pixels that must be transferred between the two processing circuits using the method 200 of the present disclosure in this example.

[0081] In Figure 10b, the offsets are one square between the first slice S1 and the second slice S2, a zero square between the second slice S2 and the third slice S3, and one square between the third slice S3 and the fourth slice S4. If the slope angle decreases in any of the adjacent slices, the offset decreases between those adjacent slices, and vice versa.

[0082] Here, we refer to Figure 10c, which shows the division of the pixel array 1000 into slices and tiles according to the present disclosure as a third example. In contrast to the division described with respect to Figure 10b, with respect to the division of the pixel array 1000 into slices and tiles using the method used for Figure 10c, there are no restrictions on the size of tiles in different slices, with respect to the corresponding tiles in each slice. Therefore, the size and position of tiles in a slice can be set independently. As a result, as seen in Figure 10c, the pixel array 1000 is divided into first to fourth slices S1, S2, S3, and S4. The first slice S1 is divided into four tiles, in this case the first two tiles from the left belong to the first subset of tiles in the first slice S1, and the last two tiles belong to the second subset of tiles in the first slice S1. The second slice S2 is divided into five tiles, the first two tiles belong to the first subset of tiles in the second slice S2, and the last three tiles belong to the second subset of tiles in the second slice S2. The third slice S3 is divided into five tiles, with the first two tiles from the left belonging to the first subset of tiles in the third slice S3, and the last three tiles belonging to the second subset of tiles in the third slice S3. Finally, the fourth slice S4 is divided into four tiles, with the first two tiles from the left belonging to the first subset of tiles in the fourth slice S4, and the last two tiles belonging to the second subset of tiles in the fourth slice S4. The first subset and the second subset of tiles in each slice are separate; that is, each tile belongs to only one of the first subset and the second subset of tiles. The second boundary between the first subset of tiles and the second subset of tiles in the first slice S1, and the second boundary between the first subset of tiles and the second subset of tiles in the second slice S2, are offset from each other based on the local inclination angle of the first boundary B in the horizontal portions of the first slice S1 and the second slice S2.The second boundary between the first subset of tiles in the second slice S2 and the second subset of tiles in the third slice S3 is offset from each other based on the local inclination angle of the first boundary B in the second and third slices S2 and S3. The second boundary between the first subset of tiles in the third slice S3 and the second subset of tiles in the fourth slice S4 is offset from each other based on the local inclination angle of the first boundary B in the third and fourth slices S3 and S4. The local inclination angles in each pair of adjacent slices can be determined as the average of the inclination angles of the curved portion of the first boundary B in that pair of adjacent slices. The corresponding offset between each pair of adjacent slices is selected to reduce the number of pixels encoded in the first subset of tiles of each slice, where the pixel data is stored in the second buffer, and the number of pixels encoded in the second subset of tiles of each slice, where the pixel data is stored in the first buffer, in relation to the absence of offsets when the first boundary B between the first subset of pixels and the second subset of pixels is tilted at a changing tilt angle with respect to the pixel array. Thus, the amount of pixel data stored in the second buffer that needs to be transferred to the first encoder, and the amount of pixel data stored in the first buffer that needs to be transferred to the second encoder, are reduced in relation to the absence of offsets.

[0083] As shown in Figure 10c, after dividing the pixel array 1000 into slices and tiles according to the method of this disclosure, where the tile sizes can be independently configured in slices with different sizes, the pixel data of the pixels corresponding to zero squares must be transferred from the second processing circuit to the first circuit when encoding the first subset of tiles in the first slice S1, i.e., the first and second tiles. The pixel data of the pixels corresponding to zero squares must be transferred from the first processing circuit to the second circuit when encoding the second subset of tiles in the first slice S1, i.e., the third and fourth tiles. Furthermore, the pixel data of the pixels corresponding to zero squares must be transferred from the second processing circuit to the first circuit when encoding the first subset of tiles in the second slice S2, i.e., the first and second tiles. The pixel data of the pixels corresponding to zero squares must be transferred from the first processing circuit to the second circuit when encoding the second subset of tiles in the second slice S2, i.e., the third to fifth tiles. Furthermore, the pixel data of the pixels corresponding to zero squares must be transferred from the second processing circuit to the first circuit when encoding the first subset of tiles in the third slice S3, i.e., the first and second tiles, and the pixel data of the pixels corresponding to zero squares must be transferred from the first processing circuit to the second circuit when encoding the second subset of tiles in the third slice S3, i.e., the third to fifth tiles. Finally, the pixel data of the pixels corresponding to zero squares must be transferred from the second processing circuit to the first circuit when encoding the first subset of tiles in the fourth slice S4, i.e., the first and second tiles, and the pixel data of the pixels corresponding to zero squares must be transferred from the first processing circuit to the second circuit when encoding the second subset of tiles in the fourth slice S4, i.e., the third and fourth tiles. Therefore, in the entirety of the pixel data, nothing needs to be transferred between the two processing circuits using the method 200 of the present disclosure in this example.

[0084] In Figure 10c, the offsets are one square between the first slice S1 and the second slice S2, a zero square between the second slice S2 and the third slice S3, and one square between the third slice S3 and the fourth slice S4. If the slope angle decreases in any of the adjacent slices, the offset decreases between those adjacent slices, and vice versa.

[0085] As yet another method, Figure 10d shows the division of the pixel array 1000 into slices and tiles, where it is required that the corresponding tiles in each slice (tiles in the same row of tiles) must be the same size, i.e., the same width, except for the tiles at the first boundary B between the first subset of pixels and the second subset of pixels. As can be seen, most of the corresponding tiles in the slices are the same size. However, the width of the tiles at the first boundary B between the first subset of pixels and the second subset of pixels in the second slice S2 and the third slice S3 is adapted and positioned such that the second boundary between the first subset of tiles and the second subset of tiles is positioned with an offset relative to their respective adjacent slices, thereby reducing the overall amount of pixel data of pixels that must be transferred between the two processing circuits compared to the prior art. Specifically, the offset of the second boundary between the first slice S1 and the second slice S2 is one square, the offset of the second boundary between the second slice S2 and the third slice S3 is a square with zero offset, and the offset of the second boundary between the third slice S3 and the fourth slice S4 is one square.

[0086] Those skilled in the art will understand that the present invention is not limited to the embodiments described above. Rather, many modifications and variations are possible within the scope of the appended claims. Such modifications and variations are understandable and achievable by those skilled in the art in practicing the claimed invention by examining the drawings, this disclosure, and the appended claims.

[0087] For example, all examples are given for slices that have equal size, i.e., equal height, in several pixels / pixel blocks. However, slices of different sizes may be used. For example, dividing into slices of different sizes may be beneficial in different horizontal portions of a pixel array due to a changing slope angle along the first boundary. [Explanation of symbols]

[0088] 100 Systems 110 First image processing circuit 112 First Encoder 114 First buffer 116 First Processor 120 Second image processing circuit 122 Second Encoder 124 Second buffer 126 Second processor 130 circuits 132 processors 140 memory 151 First division function 152 Second division function 153 First Transfer Function 154 Second transfer function 155 First instruction function 156 Second command function 300 Image Processing Devices 410 First image sensor 420 Second image sensor 430 Third image sensor 440 The fourth image sensor 500 image frames 510 First image portion 520 Second image section 530 Third image section 540 The fourth image section 600, 700, 800, 900, 1000 pixel arrays

Claims

1. 1. A method for dividing a pixel array into slices and tiles for encoding the pixel array into an encoded video stream by a first encoder located in a first image processing circuit and a second encoder located in a second image processing circuit, wherein pixels of the pixel array are regularly spaced along vertical and horizontal directions, each slice is separated from each adjacent slice by a horizontal straight line across the entire width of the pixel array and is encoded without requiring access to image data for other slices, and each tile is separated from each adjacent tile of the same slice by a vertical straight line across the entire height of the slice and is encoded without requiring access to image data for other tiles, the pixel array consists of a first subset of pixels whose pixel data is stored in a first buffer located in the first image processing circuit and a second subset of pixels whose pixel data is stored in a second buffer located in the second image processing circuit, a first boundary between the first subset of pixels and the second subset of pixels is inclined at an oblique angle relative to the pixel array, the method comprising: dividing the pixel array into two or more slices; dividing each slice into two or more tiles; the two or more tiles of each slice are composed of a first subset of tiles and a second subset of tiles, the first subset of tiles and the second subset of tiles being disjoint, the first subset of tiles being encoded by the first encoder, and the second subset of tiles being encoded by the second encoder; the act of dividing each slice into two or more tiles includes setting the second boundaries between the first subset of tiles and the second subset of tiles in two adjacent slices with an offset along the horizontal direction between two adjacent slices of the two or more slices such that the second boundaries between the first subset of tiles and the second subset of tiles in two adjacent slices are not aligned along the horizontal direction, the offset being based on the tilt angle, such that a sum of the number of pixels to be coded into the first subset of tiles of each slice whose pixel data is stored in the second buffer and the number of pixels to be coded into the second subset of tiles of each slice whose pixel data is stored in the first buffer is reduced compared to when an offset is not used.

2. The method of claim 1 , wherein the tilt angle is constant along the first boundary between the first subset of pixels and the second subset of pixels.

3. the tilt angle varies along the first boundary between the first subset of pixels and the second subset of pixels; the act of dividing the pixel array into two or more slices includes dividing the pixel array into three or more slices; 2. The method of claim 1, wherein the act of dividing each slice into two or more tiles includes, for each two adjacent slices of the three or more slices, setting the second boundary between a first subset of tiles and a second subset of tiles of each slice of the two adjacent slices with an offset, the offset being based on a local tilt angle of the first boundary between the first subset of pixels and the second subset of pixels in the two adjacent slices.

4. The method of claim 3 , wherein the first boundary between the first subset of pixels and the second subset of pixels is curved.

5. 4. The method of claim 3, wherein the first boundary between the first subset of pixels and the second subset of pixels is slanted at a constant slant angle but at different slant angles in different horizontal portions of the pixel array.

6. 6. The method of claim 5, wherein the act of dividing the pixel array into three or more slices comprises dividing the pixel array into four or more slices by dividing each separate horizontal portion of the pixel array into two or more slices such that, for each two adjacent horizontal portions, a third boundary between the two adjacent horizontal portions aligns with a fourth boundary between two slices.

7. 7. The method of claim 3, wherein the local tilt angle of the first boundary between the first subset of pixels and the second subset of pixels in the two adjacent slices is determined as an average tilt angle in the two adjacent slices.

8. The method of claim 1 , wherein the size of corresponding tiles of the two or more tiles in each of the two or more slices is the same in each of the two or more slices.

9. transferring pixel data for pixels to be encoded in a first subset of the tiles of each slice whose pixel data is stored in the second buffer to the first encoder; encoding a first subset of the tiles with the first encoder; transferring pixel data for pixels to be encoded in a second subset of the tiles of each slice whose pixel data is stored in the first buffer to the second encoder; The method of claim 1 , further comprising: encoding a second subset of the tiles with the second encoder.

10. A non-transitory computer-readable storage medium having stored thereon instructions for performing the method of any one of claims 1 to 6 when executed by a device having processing capabilities.

11. 1. An image processing device for dividing a pixel array into slices and tiles for encoding the pixel array into an encoded video stream by a first encoder located in a first image processing circuit and a second encoder located in a second image processing circuit, wherein pixels of the pixel array are arranged at regular intervals along vertical and horizontal directions, each slice is separated from each adjacent slice by a horizontal straight line across the entire width of the pixel array and is encoded without requiring access to image data for other slices, and each tile is separated from each adjacent tile of the same slice by a vertical straight line across the entire height of the slice and is encoded without requiring access to image data for other tiles, the pixel array consists of a first subset of pixels whose pixel data is stored in a first buffer located in the first image processing circuit and a second subset of pixels whose pixel data is stored in a second buffer located in the second image processing circuit, a first boundary between the first subset of pixels and the second subset of pixels is inclined at an oblique angle with respect to the pixel array, and the image processing device: a first division function configured to divide the pixel array into two or more slices; a second partitioning function configured to partition each slice into two or more tiles, the two or more tiles of each slice consisting of a first subset of tiles and a second subset of tiles, the first subset of tiles and the second subset of tiles being disjoint, the first subset of tiles being encoded by the first encoder and the second subset of tiles being encoded by the second encoder; the second division function is further configured to set the second boundary between the first subset of tiles and the second subset of tiles with an offset along the horizontal direction between two adjacent slices of the two or more slices so that second boundaries between the first subset of tiles and the second subset of tiles in two adjacent slices are not aligned along the horizontal direction, the offset being based on the tilt angle, and a sum of the number of pixels to be coded into the first subset of tiles of each slice whose pixel data is stored in the second buffer and the number of pixels to be coded into the second subset of tiles of each slice whose pixel data is stored in the first buffer is reduced compared to when an offset is not used.

12. the tilt angle varies along the first boundary between the first subset of pixels and the second subset of pixels; the first division function is configured to divide the pixel array into three or more slices; 12. The image processing device of claim 11, wherein the second division function is configured to, for each two adjacent slices of the three or more slices, set the second boundary between the first subset of tiles and the second subset of tiles of each of the two adjacent slices with an offset, the offset being based on a local tilt angle of the first boundary between the first subset of pixels and the second subset of pixels in the two adjacent slices.

13. the first boundary between the first subset of pixels and the second subset of pixels is sloped at a constant slope angle but at different slope angles in different horizontal portions of the pixel array; 13. The image processing device of claim 12, wherein the second division function is configured to divide each separate horizontal portion of the pixel array into two or more slices such that, for each two adjacent horizontal portions, a third boundary between the two adjacent horizontal portions aligns with a fourth boundary between two adjacent slices.

14. 14. The image processing device of claim 12 or 13, wherein the second splitting function is further configured to determine the local tilt angle of the first boundary between the first subset of pixels and the second subset of pixels in the two adjacent slices as an average tilt angle in the two adjacent slices.

15. 1. A system for encoding a pixel array into an encoded video stream, wherein pixels of the pixel array are regularly spaced along vertical and horizontal directions, the pixel array being composed of a first subset of pixels and a second subset of pixels, a first boundary between the first subset of pixels and the second subset of pixels being inclined at an oblique angle relative to the pixel array, the system comprising: a first image processing circuit; a second image processing circuit; a first encoder disposed in the first image processing circuit; a second encoder disposed in the second image processing circuit; a first buffer disposed in the first image processing circuit, the first buffer storing pixel data for the first subset of pixels; a second buffer disposed in the second image processing circuit, the second buffer storing pixel data for the second subset of pixels; A circuit comprising: a first division function configured to divide the pixel array into two or more slices, each slice separated from each adjacent slice by a horizontal straight line spanning the entire width of the pixel array, and each slice being encoded without requiring access to image data for other slices; a second division function configured to divide each slice into two or more tiles, each tile separated from each adjacent tile of the same slice by a vertical straight line across the entire height of the slice, and encoded without requiring access to image data for other tiles, the two or more tiles of each slice consisting of a first subset of tiles and a second subset of tiles, the first subset of tiles and the second subset of tiles being disjoint, the first subset of tiles being encoded by the first encoder and the second subset of tiles being encoded by the second encoder; the second division function is further configured to set the second boundary between the first subset of tiles and the second subset of tiles with an offset along the horizontal direction between two adjacent slices of the two or more slices such that the second boundaries between the first subset of tiles and the second subset of tiles in two adjacent slices are not aligned along the horizontal direction, the offset being based on the tilt angle, such that a sum of the number of pixels to be coded into the first subset of tiles of each slice whose pixel data is stored in the second buffer and the number of pixels to be coded into the second subset of tiles of each slice whose pixel data is stored in the first buffer is reduced compared to when an offset is not used; a first forwarding function configured to forward pixel data for pixels of a first subset of the tiles of each slice, whose pixel data is stored in the second buffer, to the first encoder; a second forwarding function configured to forward pixel data for pixels of a second subset of the tiles of each slice for which pixel data is stored in the first buffer to the second encoder; the first encoder configured to encode a first subset of the tiles; The second encoder is configured to encode a second subset of the tiles.