Method, medium, image processing device for dividing a pixel array into slices and tiles, and system for encoding a pixel array into an encoded video stream

By dividing the pixel array into slices and tiles, and encoding them separately in two image processing circuits, and adjusting the tiling boundary by offset, the problem of low data transmission efficiency in large image frame processing is solved, and more efficient image processing is achieved.

CN116347253BActive Publication Date: 2025-03-21AXIS
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN202211627244.3
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2021-12-22
Filing Date
2022-12-16
Publication Date
2025-03-21
Estimated Expiration
2042-12-16

AI Technical Summary

Technical Problem

When processing large image frames, the prior art is difficult to effectively segment and encode pixel arrays, resulting in inefficient data transmission between image processing circuits and increasing processing complexity and cost.

Method used

By dividing the pixel array into slices and tiles, and encoding and buffering two subsets of pixels in two separate image processing circuits, the tiling boundaries are adjusted using offsets to reduce the amount of pixel data to be transmitted.

Benefits of technology

The amount of pixel data stored in the buffer needs to be transferred to the encoder, the data transmission requirements between image processing circuits are reduced, processing efficiency is improved, and cost is reduced.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN116347253B_ABST
    Figure CN116347253B_ABST
Patent Text Reader

Abstract

Disclosed are a method, an image processing device and a system for dividing a pixel array into slices and tiles. A first encoder in a first image processing circuit and a second encoder in a second image processing circuit encode the slices and tiles into a video stream. The pixel array is composed of a first and a second pixel subset, the first pixel subset having pixel data stored in a first buffer arranged in the first image processing circuit, the second pixel subset having pixel data stored in a second buffer arranged in the second image processing circuit, and a first boundary between the first and the second pixel subsets being tilted relative to the pixel array. The pixel array is divided into a plurality of slices. Each slice is divided into a plurality of tiles. The plurality of tiles of each slice is composed of a separated first and second tile subsets. The first and second tile subsets are to be encoded by a first and a second encoder, respectively. The division of the slices includes setting a second boundary between the first and the second tile subsets at an offset between two adjacent slices, and the offset is based on the tilt angle.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present invention relates to image processing, and in particular to dividing a pixel array into slices and tiles so as to encode and buffer two subsets of pixels of the pixel array using a respective one of two separate image processing circuits for encoding into an encoded video stream. Background Art

[0002] Image frames have become larger over time, for example due to higher resolutions and larger image sensors. Other examples of large image frames are panoramic image frames constructed by stitching together image frames captured by multiple image sensors. When processing such large image frames of a video stream, such as 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, the encoded image frame can also be divided into two or more corresponding image portions on the decoder side, which are then processed in parallel in separate processing circuits. In such a solution, it is generally desirable that the separate processing circuits can process the individual image portions individually to the greatest extent possible and share as little pixel data as possible, because such sharing requires synchronization, including the transmission of pixel data between processing circuits, which will slow down processing and / or require faster transmission of pixel data between processing circuits, which increases the complexity and cost of the processing circuits. Summary of the invention

[0003] The object of the present invention is to provide a method, an image processing device and a system for dividing a pixel array into slices and tiles so as to encode and buffer two subsets of pixels of the pixel array using a corresponding one of two separate image processing circuits, thereby overcoming or alleviating the problems in known methods, image processing devices and systems.

[0004] According to a first aspect, a method for dividing a pixel array into slices and tiles is provided for encoding into an encoded video stream by means of a first encoder arranged in a first image processing circuit and a second encoder arranged in a second image processing circuit. The pixel array consists of a first subset of pixels and a second subset of pixels, the first subset of pixels having pixel data stored in a first buffer arranged in the first image processing circuit, and the second subset of pixels having pixel data stored in a second buffer arranged in the second image processing circuit, wherein a first boundary between the first subset of pixels and the second subset of pixels is inclined at an inclined angle relative to the pixel array. The method includes dividing the pixel array into two or more slices, and dividing 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, wherein the first subset of tiles and the second subset of tiles are separate, and the first subset of tiles is to be encoded by the first encoder, and the second subset of tiles is to be encoded by the second encoder. The act of dividing each patch into two or more tiles includes setting a second boundary between the first subset of tiles and the second subset of tiles at an offset between two adjacent tiles in the two or more patches, wherein the offset is based on the tilt angle.

[0005] By setting the second boundary between the first tile subset and the second tile subset at an offset between two adjacent tiles in the two or more tiles (where the offset is based on the tilt angle), when the first boundary between the first pixel subset and the second pixel subset is tilted at the tilt angle relative to the pixel array, the sum of the number of pixels having pixel data stored in the second buffer to be encoded by the first encoder into the first tile subset for each tile and the number of pixels having pixel data stored in the first buffer to be encoded by the second encoder into the second tile subset for each tile is reduced relative to not using the offset. Therefore, the amount of pixel data stored in the second buffer that needs to be transmitted to the first encoder and the amount of pixel data stored in the first buffer that needs to be transmitted to the second encoder are reduced relative to not using the offset.

[0006] Slices are vertical partitions, one on top of another. Each slice can be encoded without accessing image data associated with other slices.

[0007] A tile is a horizontal partition that follows one another horizontally. Each tile can be encoded without accessing image data associated with other tiles.

[0008] The first boundary being inclined at an inclined angle means in this document that at least somewhere along the first boundary, the first boundary between the first pixel subset and the second pixel subset does not extend along the pixel column or row of the pixel array, so that pixels in the same pixel column are located on different sides of the first boundary between the first pixel subset and the second pixel subset, and pixels in the same pixel row are located on different sides of the first boundary between the first pixel subset and the second pixel subset.

[0009] The offset herein refers to an offset along the length of the patch, ie, the second boundary between the first tile subset and the second tile subset in two adjacent patches is not aligned along the length of the patch.

[0010] An offset based on a tilt angle refers to setting an offset between two adjacent slices taking into account the tilt angle, thereby setting different offsets for different tilt angles. For example, the offset can be set based on the tilt angle so that when the first tile subset and the second tile subset are subsequently encoded into a coded video stream by means of a first encoder and a second encoder, respectively, the sum of the number of pixels of each slice having pixel data stored in the second buffer to be encoded into the first tile subset and the number of pixels of each slice having pixel data stored in the first buffer to be encoded into the second tile subset is minimized or at least kept as low as possible. For example, a method for setting an offset based on a tilt angle can be iterative, so that for different offsets, the sum of the number of pixels of each slice having pixel data stored in the second buffer to be encoded into the first tile subset and the number of pixels of each slice having pixel data stored in the first buffer to be encoded into the second tile subset is determined, and the offset is set to the offset that results in the lowest sum.

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

[0012] Alternatively, the tilt angle may vary along a 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 patches may include dividing the pixel array into three or more patches, and the act of dividing each patch into two or more tiles may include, for each two adjacent patches in the three or more patches, setting a second boundary between the first subset of tiles and the second subset of tiles in each of the two adjacent patches at an offset, wherein the offset is 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 patches.

[0013] The local tilt angle refers to the measured value of the tilt angle of the first boundary in two adjacent slices to be offset.

[0014] Where the tilt angle varies along the first boundary between the first subset of pixels and the second subset of pixels, the first boundary between the first subset of pixels and the second subset of pixels may be tilted at a constant but separate tilt angle in separate horizontal portions of the pixel array. The act of dividing the pixel array into three or more slices may 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 two adjacent horizontal portions, the third boundary between the two adjacent horizontal portions is aligned 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 of each horizontal portion. This will enable the offset of the second boundary in each slice to be set based on the tilt angle of the first boundary in the slice, which results in a reduction in the amount of data for encoding that needs to be transmitted between image processing circuits relative to no offset. Alternatively, the first boundary between the first subset of pixels and the second subset of pixels may be curved.

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

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

[0017] The method may further include transmitting pixel data of each slice to be encoded into the first tile subset having pixel data stored in the second buffer to the first encoder, encoding the pixels in the first tile subset with the help of the first encoder, transmitting pixel data of each slice to be encoded into the second tile subset having pixel data stored in the first buffer to the second encoder, and encoding the pixels in the second tile subset with the help of the second encoder.

[0018] According to a second aspect, there is provided a non-transitory computer readable storage medium having stored thereon instructions for implementing 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 a coded video stream by means of a first encoder arranged in a first image processing circuit and a second encoder arranged in a second image processing circuit. The pixel array consists of a first subset of pixels and a second subset of pixels, the first subset of pixels having pixel data stored in a first buffer arranged in the first image processing circuit, and the second subset of pixels having pixel data stored in a second buffer arranged in the second image processing circuit, wherein a first boundary between the first subset of pixels and the second subset of pixels is inclined at an inclined angle relative to the pixel array. The device includes a circuit configured to perform a first division function and a second division function, the first division function being configured to divide the pixel array into two or more slices, and the second division function being 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, wherein the first subset of tiles and the second subset of tiles are separate, and the first subset of tiles is to be encoded by the first encoder, and the second subset of tiles is to be encoded by the second encoder. The second partitioning function is further configured to set a second boundary between the first subset of tiles and the second subset of tiles at an offset between two adjacent tiles of the two or more patches, wherein the offset is based on the tilt angle.

[0020] The above optional features of the method according to the first aspect also apply to the third aspect where applicable. To avoid unnecessary repetitions, reference is made to the above.

[0021] According to a fourth aspect, a system for encoding a pixel array into an encoded video stream is provided. 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 relative to the pixel array at an oblique angle. The system includes a first image processing circuit, a second image processing circuit, a first encoder arranged in the first image processing circuit, a second encoder arranged in the second image processing circuit, a first buffer arranged in the first image processing circuit to store pixel data of the first subset of pixels, and a second buffer arranged in the second image processing circuit to store pixel data of the second subset of pixels. The system further includes a circuit configured to perform a first partitioning function and a second partitioning function, the first partitioning function being configured to partition the pixel array into two or more slices, and the second partitioning function being configured to partition 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, wherein the first subset of tiles and the second subset of tiles are separate, and the first subset of tiles is to be encoded by the first encoder, and the second subset of tiles is to be encoded by the second encoder. The second partitioning function is further configured to set a second boundary between the first tile subset and the second tile subset at an offset between two adjacent tiles in the two or more slices, wherein the offset is based on the tilt angle. The circuit is also configured as: a first transfer function configured to transfer pixel data of pixels of each tile to be encoded into the first tile subset having pixel data stored in the second buffer to the first encoder; and a second transfer function configured to transfer pixel data of each tile to be encoded into the second tile subset having pixel data stored in the first buffer to the second encoder. The first encoder is configured to encode the first tile subset, and the second encoder is configured to encode the second tile subset.

[0022] The above optional features of the method according to the first aspect also apply to the fourth aspect where applicable. To avoid unnecessary repetitions, reference is made to the above.

[0023] Further applicability of the present invention will become apparent from the detailed description given below. However, it should be understood that the detailed description and specific examples, although indicating preferred embodiments of the present invention, are given by way of illustration only, because various changes and modifications within the scope of the present invention will become apparent to those skilled in the art from the detailed description.

[0024] Therefore, it should be understood that the present invention is not limited to the specific components of the described device or the action of the described method, because such device and method can change. It should also be understood that the terms used herein are only for describing specific embodiments, rather than for limiting. It must be noted that the articles "a, an", "the" and "said" as used in the specification and the appended claims are intended to represent the presence of one or more elements, unless the context clearly indicates otherwise. Therefore, for example, reference to "a unit" or "the unit" can include several devices, etc. In addition, the words "comprise", "comprising" and similar expressions do not exclude other elements or steps. BRIEF DESCRIPTION OF THE DRAWINGS

[0025] The above and other aspects of the present invention will now be described in more detail with reference to the accompanying drawings. The accompanying drawings should not be considered limiting but are for explanation and understanding. The same reference numerals refer to the same elements throughout.

[0026] Figure 1 is a schematic block diagram of a system for encoding a pixel array into an encoded video stream according to the present disclosure.

[0027] Figure 2 It is a 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, wherein 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 at an inclined angle relative to the pixel array.

[0028] Figure 3 is a schematic block diagram of an image processing apparatus for dividing a pixel array into slices and tiles for encoding into a coded video stream according to the present disclosure.

[0029] Figure 4 is a schematic diagram of a combination of four sensors used to capture a single image frame.

[0030] Figure 5 is a schematic diagram of dividing an image frame captured using a single image sensor into four parts.

[0031] Figure 6 A first example of dividing a pixel array into tiles according to a prior art method is shown for a first subset of pixels with a horizontal boundary between the first subset of pixels and the second subset of pixels.

[0032] Figure 7a A second example of dividing a pixel array into tiles according to a prior art method is shown for a constant tilt angle.

[0033] Figure 7b An example of dividing a pixel array into slices and tiles according to the method of the present disclosure is shown for a pixel array having Figure 7a Second example of the same constant tilt angle.

[0034] Figure 8a The division of the pixel array into tiles according to the prior art method is shown for a third example with a varying tilt angle, where the tilt angle is constant but different in two horizontal parts.

[0035] Figure 8b , Figure 8c and Figure 8d The method according to the present disclosure divides the pixel array into slices and tiles for having Figure 8a A third example of the same varying tilt angle, where the tilt angle is constant but different in the two horizontal sections.

[0036] Figure 9a A fourth example of dividing a pixel array into tiles according to a prior art method is shown for a varying tilt angle, wherein a first boundary between a first subset of pixels and a second subset of pixels is curved.

[0037] Figure 9b , Fig.9c and Figure 9d The method according to the present disclosure divides the pixel array into slices and tiles for having Figure 9a A fourth example of the same varying tilt angle, wherein a first boundary between the first subset of pixels and the second subset of pixels is curved.

[0038] Fig.10a A fifth example of dividing a pixel array into tiles according to a prior art method is shown for a varying tilt angle, wherein a first boundary between a first subset of pixels and a second subset of pixels is curved.

[0039] Fig.10b , Fig.10c and Fig.10d The method according to the present disclosure divides the pixel array into slices and tiles for having Fig.10a A fifth example of the same varying tilt angle, wherein a first boundary between the first subset of pixels and the second subset of pixels is curved. DETAILED DESCRIPTION

[0040] The present invention will be described more fully below with reference to the accompanying drawings, in which currently preferred embodiments of the present invention are shown. However, the present invention may be implemented in a variety of different forms and should not be construed as being limited to the embodiments set forth herein. Instead, these embodiments are provided for thoroughness and completeness and to convey the scope of the present invention to those skilled in the art.

[0041] The following will refer to Figure 1A system 100 for encoding a pixel array into an encoded video stream according to the present disclosure is discussed. 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 tilted at an oblique angle relative to the pixel array, and where the first subset of pixels and the second subset of pixels are processed separately in respective processing circuits, e.g., to enable parallel processing.

[0042] System 100 can be used, for example, for encoding of large image frames, such as panoramic image frames constructed by stitching together image frames captured by multiple image sensors. The pixel array to be encoded in system 100 will be associated with pixels of two image sensors from multiple image sensors. The pixels of the pixel array are then typically processed by a horizontal correction transformation of the pixel data and the stitching and blending of the pixel data to eliminate or reduce any visible effects of the first boundary between the pixels from the two separate image sensors. Further processing of the pixel array may also have been performed before acquiring the pixel array in system 100. If such processing is performed separately (usually in parallel) in two image processing circuits, the pixel data must be transmitted between the two image processing circuits. In addition, in some cases, the first boundary between the pixel data of the pixel array processed in different ones of the two image processing circuits may be tilted relative to the pixel array. Figure 4 An example of a configuration of a first image sensor 410, a second image sensor 420, a third image sensor 430, and a fourth image sensor 440 is shown. The second and third image sensors 420, 430 are arranged in the middle without any mutual tilt, while the first and fourth image sensors 410, 440 are arranged to be tilted at an angle u relative to the second and third image sensors 420, 430, respectively. For example, for a pixel array including pixel data associated with the first image sensor 410 and the second image sensor 420 to be processed in the system 100, after processing associated with stitching and any further processing that should be processed by different processing circuits, the first boundary between the pixel data will be tilted at a certain 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 the system 100 processing. In the pixel array associated with the processed image data from the second and third image sensors 420, 430, in addition to the mutual tilt between the image sensors, the tilt of the first boundary may also occur due to other reasons, such as due to a horizontal correction transformation.

[0043] System 100 can also be used for the encoding of large image frames, such as image frames captured using a wide-angle lens, wherein the large image frame has been divided into two or more vertical parts. The pixel array to be encoded in system 100 will be related to the pixels from the two parts of the image frame. Then, before acquiring the pixel array in system 100, the pixels of the pixel array are usually processed. This processing can, for example, include the transformation of the pixel data relative to a spherical or cylindrical projection. When this processing related to splicing and any further processing may have been performed separately (usually in parallel) in two image processing circuits, the pixel data will usually need to be transmitted between the two image processing circuits at this time. In addition, in some cases, the first boundary between the pixel data of the pixel array processed in different one of the two image processing circuits can be tilted relative to the pixel array so that the first boundary is curved, for example due to the transformation of the pixel data relative to a spherical or cylindrical projection. Figure 5 An example of dividing the 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 is shown. For example, when a pixel array to be processed in the system 100 including pixel data associated with the first image portion 510 and the second image portion 520 has been processed in a respective one of two processing circuits, such as including a horizontal correction transform of the pixel data to adjust for lens distortion, a first boundary between the pixel data of the pixel array processed in a different one of the two image processing circuits may be tilted relative to the pixel array such that the first boundary is curved.

[0044] The system 100 includes a first image processing circuit 110, a second image processing circuit 120, a first encoder 112 arranged in the first image processing circuit 110, a second encoder 122 arranged in the second image processing circuit 120, a first buffer 114 arranged in the first image processing circuit 110, and a second buffer 124 arranged in the second image processing circuit 120. The first buffer 114 stores pixel data associated with a first subset of pixels, and the second buffer 124 stores pixel data associated with a second subset of pixels. Each of the first and second processing circuits 110, 120 may include a first and a second processor 116, 126, such as a central processing unit (CPU), a microcontroller, or a microprocessor, respectively. The first and second encoders 112, 122 may be adapted to encode according to H.262, H.265, H.266, AV1, and VP9 video compression standards, for example.

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

[0046] The system 100 may also include a memory 140. The memory 140 may be one or more of a buffer, a flash memory, a hard drive, a removable medium, a volatile memory, a non-volatile memory, a random access memory (RAM), or other suitable devices. In an example arrangement, the memory 130 includes a non-volatile memory for long-term data storage and a volatile memory used as a system memory for the device circuit 130. The memory 140 may exchange data with the device circuit 130 via a data bus. There may also be accompanying control lines and an address bus between the memory 140 and the device circuit 130. Data may be exchanged between the first processing circuit 110 and the second processing circuit 120 via the data bus.

[0047] The functionality of the system 100 may be embodied in the form of executable logic routines (e.g., lines of code, software programs, etc.) that are stored on a non-transitory computer-readable medium (e.g., memory 140) of the system 100 and executed by the circuit 130 (e.g., using the processor 132). In addition, the functionality of the image processing apparatus 100 may be a separate software application or form part of a software application that performs additional tasks associated with the image processing apparatus 100. The described functionality may be considered as a method that a processing unit (e.g., processor 132) of the circuit 130 is configured to perform. In addition, although the described functionality may be implemented in software, such functionality may also be implemented via dedicated hardware or firmware, or some combination of hardware, firmware, and / or software.

[0048] Since the system 100 is intended for scenarios where the first pixel subset and the second pixel subset are separately encoded in the first processing circuit 110 and the second processing circuit 120, respectively, it is desirable to share as little pixel data as possible between the first processing circuit 110 and the second processing circuit 120, because such sharing requires synchronization, including the transmission 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 and second processing circuits 110, 120, such encoding should preferably require the transmission of as little pixel data as possible. Since the encoding will be performed in tiles of slices, the division into slices and tiles should be such that each tile is only or mainly related to pixel data from one of the first pixel subset and the second pixel subset, i.e., some tiles may be related to pixel data mainly from the first pixel subset, while some tiles may be related to pixel data mainly from the second pixel subset. To this end, the circuit 130 is configured to perform a division function to divide the pixel array into slices and tiles based on the tilt angle.

[0049] Specifically, the circuit 130 is configured to perform a first division function 151, which is configured to divide the pixel array into two or more slices. The first division function 151 is configured to divide the pixel array into at least 2 slices, but typically no more than 100 slices, and preferably into 4-16 slices.

[0050] The circuit 130 is further configured to execute a second partitioning function 152 configured to partition each patch into two or more tiles, wherein the two or more tiles of each patch are composed of a first subset of tiles and a second subset of tiles, wherein the first subset of tiles and the second subset of tiles are separate and the first subset of tiles is to be encoded by the first encoder 112 and the second subset of tiles is to be encoded by the second encoder 122. In addition to being separate, the first and second subsets of tiles will each be contiguous and primarily associated with pixels on one side of a first boundary between the first subset of pixels and the second subset of pixels, such that one of the first and second subsets of tiles is associated with pixels on one side of the first boundary between the first subset of pixels and the second subset of pixels and the other is associated with pixels on the other side. The second partitioning function is further configured to set a second boundary between the first subset of tiles and the second subset of tiles at an offset between two adjacent tiles in the two or more patches, wherein the offset is based on the tilt angle. Specifically, the offset is selected so that when the first boundary between the first pixel subset and the second pixel subset is tilted at a tilt angle v relative to the pixel array, the sum of the number of pixels of each slice to be encoded into the first tile subset with pixel data stored in the second buffer and the number of pixels of each slice to be encoded into the second tile subset with pixel data stored in the first buffer is reduced relative to not using the offset. Therefore, the amount of pixel data stored in the second buffer that needs to be transmitted to the first encoder and the amount of pixel data stored in the first buffer that needs to be transmitted to the second encoder are reduced relative to not using the offset. For example, the offset can be set based on the tilt angle by means of an iterative process, so that for different offsets, the sum of the number of pixels of each slice to be encoded into the first tile subset with pixel data stored in the second buffer and the number of pixels of each slice to be encoded into the second tile subset with pixel data stored in the first buffer is determined, and the offset is set to the offset that obtains the lowest sum. Alternatively, an analytical solution can also be used, in which a function of the tilt angle is derived, and the offset can be calculated for the determined tilt angle according to the function. The second partitioning function 152 is configured to partition the pixel array into at least 2 tiles per slice. The number of tiles per slice may be application specific and may be, for example, 10 tiles per slice. The number of tiles per slice may be different in different slices.

[0051] The circuit 130 is also configured to perform a first transfer function 153, which is configured to transfer pixel data of pixels of each slice to be encoded into the first tile subset having pixel data stored in the second buffer to the first encoder, and to perform a second transfer function 154, which is configured to transfer pixel data of pixels of each slice to be encoded into the second tile subset having pixel data stored in the first buffer to the second encoder. The transfer of pixel data from the second buffer to the first encoder and from the first buffer to the second encoder can be performed via a peripheral component interconnect (PCI), which results in slower access to the image data than when the first encoder directly accesses the image data in the first buffer and the second encoder directly accesses the image data in the second image buffer.

[0052] The circuit 130 may also be configured to perform a first indication function 155 configured to instruct the first encoder to encode the first subset of tiles and to perform a second indication function 156 configured to instruct the second encoder to encode the second subset of tiles.

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

[0054] The tilt angle may be constant along a first boundary between the first subset of pixels and the second subset of pixels.Then, the offset between every two adjacent patches may be set to be the same.

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

[0056] If the tilt angles in two adjacent patches of the three or more patches are different, for example when a first boundary between a first pixel subset and a second pixel subset of the pixel array is curved, the local tilt angle in the two adjacent patches may be determined as an average tilt angle in the two adjacent patches.

[0057] If the tilt angle varies so that it is constant in the first horizontal portion of the pixel array and is also constant but different in the second horizontal portion of the pixel array, the first division function 151 can be configured to divide each individual horizontal portion of the pixel array into two or more slices, so that the pixel array is divided into four or more slices. Then, the local tilt angle of two adjacent slices in the same horizontal portion of the pixel array can be determined as the constant tilt angle in the horizontal portion. The local tilt angle of two adjacent slices in different horizontal portions of the pixel array can 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 the slices of each horizontal portion. This will enable the offset of the second boundary in each slice to be set based on the tilt angle of the first boundary in the slice, which results in a reduction in the amount of data for encoding that needs to be transmitted between image processing circuits relative to no offset.

[0058] The sizes of the corresponding tiles of the two or more tiles of each of the two or more slices may be the same or different. In other words, the boundaries between the tiles in the two or more slices may be horizontally aligned or not horizontally aligned. This will depend on whether corresponding tiles of different sizes of different slices can be decoded on the decoder side for the relevant implementation. In addition, having corresponding tiles of the same size for two or more slices can simplify the scheduling of encoding because encoding tiles of the same size will take a similar amount of time. When encoding tiles in one of the two or more slices, having corresponding tiles of the same size for the two or more slices can further enable the image data in the corresponding buffer to be used for corresponding tiles in other slices of the two or more slices.

[0059] In the following, reference will be made to Figure 2 A method 200 for dividing a pixel array into slices and tiles for encoding into an encoded video stream according to the present disclosure is discussed. The method 200 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 tilted at an oblique angle relative to the pixel array, and where the first subset of pixels and the second subset of pixels are processed separately in respective processing circuits, for example so as to enable parallel processing. The method 200 can be performed, for example, for encoding of a large image frame, such as a panoramic image frame constructed by stitching together image frames captured by multiple image sensors, or a large image frame captured, for example, using a wide-angle lens, where the large image frame has been divided into two or more parts, as described with respect to reference. Figure 1 , Figure 4 and Figure 5 The system 100 is described.

[0060] Since the method 200 is intended to be performed in a scenario where the first pixel subset and the second pixel subset are partially encoded separately in the first processing circuit 110 and the second processing circuit 120, respectively, it is desirable to share as little pixel data as possible between the first processing circuit 110 and the second processing circuit 120, because such sharing requires synchronization, including pixel data transfer between the first processing circuit 110 and the second processing circuit 120, which slows down 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 results in slower access to the image data than when the first encoder accesses the image data directly in the first buffer and the second encoder accesses the image data directly in the second image buffer. In addition, having further synchronization steps including pixel data transfer may introduce delays since one of the image processing circuits must wait for the other to receive the image data. Therefore, when encoding pixel data in one of the first and second processing circuits 110, 120, such encoding should preferably require as little pixel data transfer as possible. Since the encoding will be performed in tiles of the slice, the division into slices and tiles should be such that each tile is only or mainly related to pixel data from one of the first pixel subset or the second pixel subset, i.e., some tiles may be related to pixel data mainly from the first pixel subset, and some tiles may be related to pixel data mainly from the second pixel subset. To this end, the pixel array is divided into slices and tiles based on the tilt angle.

[0061] The method 200 includes dividing S210 a pixel array into two or more slices, and dividing S220 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, wherein the first subset of tiles and the second subset of tiles are separate, and the first subset of tiles is to be encoded by a first encoder, and the second subset of tiles is to be encoded by a second encoder. In addition to being separate, the first and second subsets of tiles will each be contiguous and primarily related to pixels on one side of a first boundary between the first subset of pixels and the second subset of pixels, such that one of the first and second subsets of tiles is related to pixels on one side of the first boundary between the first subset of pixels and the second subset of pixels, and the other is related to pixels on the other side. Dividing each slice into S210 two or more tiles includes setting a second boundary between the first subset of tiles and the second subset of tiles at an offset between two adjacent slices in the two or more slices, wherein the offset is based on the tilt angle. Specifically, the offset is selected so that when the first boundary between the first pixel subset and the second pixel subset is tilted at a tilt angle v relative to the pixel array, the sum of the number of pixels of each slice having pixel data stored in the second buffer to be encoded into the first tile subset and the number of pixels of each slice having pixel data stored in the first buffer to be encoded into the second tile subset is reduced relative to not using the offset. Therefore, the amount of pixel data stored in the second buffer that needs to be transmitted to the first encoder and the amount of pixel data stored in the first buffer that needs to be transmitted to the second encoder are reduced relative to not using the offset. For example, the offset can be set based on the tilt angle by means of an iterative process, so that for different offsets, the sum of the number of pixels of each slice having pixel data stored in the second buffer to be encoded into the first tile subset and the number of pixels of each slice having pixel data stored in the first buffer to be encoded into the second tile subset is determined, and the offset is set to the offset that obtains the lowest sum.

[0062] The method 200 and the steps included therein may further be applied in conjunction with Figure 1 The corresponding functional system 100 is described.

[0063] The following will refer to Figure 3An image processing apparatus 300 for dividing a pixel array into slices and tiles according to the present disclosure is discussed. The slices and tiles are intended to be encoded into a coded video stream with the aid of a first encoder arranged in a first image processing circuit and a second encoder arranged in a second image processing circuit. The image processing apparatus 300 is intended to be used in a scenario where the pixel array consists of a first subset of pixels and a second subset of pixels, and a boundary between the first subset of pixels and the second subset of pixels is inclined at an inclined angle relative to the pixel array, and where the first subset of pixels and the second subset of pixels are processed separately, for example so as to enable parallel processing. The image processing apparatus 300 can, for example, be used for encoding of large image frames, such as a panoramic image frame constructed by stitching together image frames captured by multiple image sensors, or a large image frame captured, for example, using a wide-angle lens, where the large image frame has been divided into two or more parts, as described in reference. Figure 1 , Figure 4 and Figure 5 The image processing apparatus 300 may be included in the system, such as the one described above with respect to the system 100. Figure 1 System 100 is described.

[0064] The image processing apparatus 100 further includes a circuit 130. The circuit 130 is configured to perform the functions of the system 100. The circuit 130 may include a processor 122, 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 to perform the functions of the system 100, for example.

[0065] The image processing device 300 may also include a memory 140. The memory 340 may be one or more of a buffer, a flash memory, a hard drive, a removable medium, a volatile memory, a non-volatile memory, a random access memory (RAM), or other suitable devices. In an example arrangement, the memory 140 includes a non-volatile memory for long-term data storage and a volatile memory used as a system memory for the circuit 130. The memory 140 may exchange data with the circuit 130 via a data bus. There may also be accompanying control lines and an address bus between the memory 140 and the circuit 130. Data may be exchanged between the first processing circuit 110 and the second processing circuit 120 via the data bus.

[0066] The functionality of the image processing apparatus 300 may be embodied in the form of an executable logic routine (e.g., a line of code, a software program, etc.) that is stored on a non-transitory computer-readable medium (e.g., memory 140) of the image processing apparatus 300 and executed by the circuit 130 (e.g., using the processor 132). In addition, the functionality of the image processing apparatus 300 may be a separate software application or form part of a software application that performs additional tasks associated with the image processing apparatus 300. The described functionality may be considered as a method that a processing unit (e.g., processor 132) of the circuit 130 is configured to perform. In addition, although the described functionality may be implemented in software, such functionality may also be implemented by dedicated hardware or firmware, or some combination of hardware, firmware, and / or software.

[0067] Since the image processing apparatus 300 is intended for scenes in which the first pixel subset and the second pixel subset are processed separately in the first processing circuit 110 and the second processing circuit 120, respectively, it is desirable to share as little pixel data as possible between the first processing circuit 110 and the second processing circuit 120, because such sharing requires synchronization, including the transmission 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 and second processing circuits 110, 120, such encoding should preferably require the transmission of as little pixel data as possible. Since the encoding will be performed in tiles of slices, the division into slices and tiles should be such that each tile involves pixel data mainly from one of the first pixel subset and the second pixel subset, i.e., some tiles may be related to pixel data mainly from the first pixel subset, while some tiles may be related to pixel data mainly from the second pixel subset. To this end, the circuit 130 is configured to perform a division function to divide the pixel array into slices and tiles based on the tilt angle.

[0068] Specifically, the circuit 130 is configured to perform a first division function 151 configured to divide the pixel array into two or more tiles.

[0069] The circuit 130 is also configured to perform a second partitioning function 152, which is configured to partition each patch into two or more tiles, wherein the two or more tiles of each patch are composed of a first subset of tiles and a second subset of tiles, wherein the first subset of tiles and the second subset of tiles are separate, and the first subset of tiles is to be encoded by a first encoder, and the second subset of tiles is to be encoded by a second encoder. In addition to being separate, the first and second subsets of tiles will each be contiguous and primarily associated with pixels on one side of a first boundary between the first subset of pixels and the second subset of pixels, such that one of the first and second subsets of tiles is associated with pixels on one side of the first boundary between the first subset of pixels and the second subset of pixels, and the other is associated with pixels on the other side. The second partitioning function is also configured to set a second boundary between the first subset of tiles and the second subset of tiles at an offset between two adjacent patches in the two or more patches, wherein the offset is based on the tilt angle. Specifically, the offset is selected so that when the first boundary between the first pixel subset and the second pixel subset is tilted at a tilt angle v relative to the pixel array, the sum of the number of pixels of each slice having pixel data stored in the second buffer to be encoded into the first tile subset and the number of pixels of each slice having pixel data stored in the first buffer to be encoded into the second tile subset is reduced relative to not using the offset. Therefore, the amount of pixel data stored in the second buffer that needs to be transmitted to the first encoder and the amount of pixel data stored in the first buffer that needs to be transmitted to the second encoder are reduced relative to not using the offset. For example, the offset can be set based on the tilt angle by means of an iterative process, so that for different offsets, the sum of the number of pixels of each slice having pixel data stored in the second buffer to be encoded into the first tile subset and the number of pixels of each slice having pixel data stored in the first buffer to be encoded into the second tile subset is determined, and the offset is set to the offset that obtains the lowest sum.

[0070] The image processing device 300 and the functions included therein can be further used as follows: Figure 1 The corresponding functions of the system 100 are described.

[0071] The following five examples will refer to Figure 6 , Figure 7a to Figure 7b , Figures 8a to 8d , Figures 9a to 9d and Figures 10a to 10d , where the pixel array is divided into tiles, or slices and tiles. It should be noted that the absolute and relative sizes of the pixel array, slices, tiles, and tilt angles are chosen for illustrative purposes only and therefore do not necessarily reflect any real scene. Figure 6 , Figure 7a to Figure 7b , Figures 8a to 8d , Figures 9a to 9d and Figures 10a to 10d, each square in a thin solid line and including the number "1" or "2" corresponds to a single pixel or a pixel block containing more than one pixel, each square or rectangle in a thick dashed line corresponds to a tile, and each horizontal thick line represents a fourth boundary between tiles. For example, in Figure 7a In FIG. 7 , the pixel array 700 is divided into eight square tiles, each tile including nine pixels or pixel blocks, but the pixel array 700 is not divided into any slices. Figure 7b In FIG. 7 , the pixel array 700 is divided into two slices, each slice is three pixels or pixel blocks in height, and each slice is divided into three tiles. Four tiles are composed of nine pixels or pixel blocks, and two tiles are composed of eighteen pixels or pixel blocks.

[0072] Reference now Figure 6 , Figure 6 In a first example of dividing the pixel array 600 into tiles, a first boundary B between a first subset of pixels and a second subset of pixels is horizontal, i.e., parallel to the columns in the pixel array. The first subset of pixels consists of squares represented by the number "1", and the second subset of pixels consists of squares represented by the number "2". Each square may correspond to a single pixel or a pixel block including more than one pixel. The pixel array 600 is divided into tiles so that when the first subset of pixels and the second subset of pixels are encoded in the first processing circuit and the second processing circuit, respectively, as little pixel data as possible must be transmitted between the first and second processing circuits to avoid a small amount of pixel data that needs to be transmitted between the first and second circuits. For example, the division into Figure 6 The eight tiles shown would not require the transfer of pixel data.

[0073] Reference now Figure 7a to Figure 7b A second example in which the pixel array 700 is divided into tiles, or slices and tiles, wherein a first boundary B between a first subset of pixels and a second subset of pixels is tilted at a constant tilt angle v. The first subset of pixels consists of squares represented by the number "1", and the second subset of pixels consists of squares represented by the number "2". The first subset of pixels has pixel data buffered in a first buffer of a first processing circuit, and the second subset of pixels has pixel data buffered in a first buffer of the first processing circuit. Each square may correspond to a single pixel or a pixel block including more than one pixel.

[0074] exist Figure 7a In FIG. 7 , according to the prior art method, the pixel array 700 has been divided into eight tiles (four columns of tiles, two tiles per column). The pixels of the four image blocks in the first two columns from the left are encoded by the first encoder in the first processing circuit, and the four image blocks in the last two columns from the left are encoded by the second encoder in the second processing circuit. Figure 7a As shown in , according to the prior art method, after dividing the pixel array 700 into tiles, when the first encoder encodes the four tiles of the first two columns, the pixel data of the pixels corresponding to the nine squares must be transferred from the second processing circuit to the first circuit, and when the second encoder encodes the four tiles of the second two columns, the pixel data of the pixels corresponding to the nine squares must be transferred from the first processing circuit to the second circuit. Therefore, in this example, using the prior art method, a total of pixel data of the pixels corresponding to eight squares must be transferred between the two processing circuits.

[0075] When Figure 7b The first example shown performs the method 200 according to the present disclosure by first dividing the pixel array 700 into two or more slices, and then dividing each slice into two or more tiles, wherein the two or more tiles of each slice are composed of a first tile subset and a second tile subset, wherein the first tile subset and the second tile subset are separate, and the first tile subset is to be encoded by a first encoder, and the second tile subset is to be encoded by a second encoder. When each slice is divided into two or more tiles, a second boundary between the first tile subset and the second tile subset is set at an offset between two adjacent slices in the two or more slices, wherein the offset is based on the tilt angle. In combination Figure 7b The method used to divide into slices and tiles further requires that corresponding tiles in each slice (tiles in the same column of tiles) must have the same size, i.e. the same width. Figure 7bAs shown in , the pixel array 700 is divided into a first sheet S1 and a second sheet S2. The first sheet S1 has been divided into three tiles T1, T2, T3, wherein the first and second tiles T1, T2 belong to a first tile subset, and the third tile T3 belongs to a second tile subset. The first and second tile subsets of the first sheet S1 are separated, i.e. each tile belongs to only one of the first and second tile subsets. Similarly, the second sheet S2 has been divided into three tiles T1, T2, T3, wherein the first tile T1 belongs to the first tile subset, and the second and third tiles T2, T3 belong to the second tile subset. The first and second tile subsets of the second sheet S2 are separated, i.e. each tile belongs to only one of the first and second tile subsets. The second boundary between the first and second tile subsets of the first sheet S1 and the second boundary between the first and second tile subsets of the second sheet S2 are offset relative to each other based on the tilt angle v of the first boundary B. The offset is selected so that when the first boundary B between the first pixel subset and the second pixel subset is tilted at a tilt angle v relative to the pixel array, the sum of the number of pixels having pixel data stored in the second buffer to be encoded in the first tile subset for each slice and the number of pixels having pixel data stored in the first buffer to be encoded in the second tile subset for each slice is reduced relative to not using the offset. Therefore, the amount of pixel data stored in the second buffer that needs to be transmitted to the first encoder and the amount of pixel data stored in the first buffer that needs to be transmitted to the second encoder are reduced relative to not using the offset. For example, the offset can be set based on the tilt angle by means of an iterative process, so that for different offsets, the sum of the number of pixels having pixel data stored in the second buffer to be encoded in the first tile subset for each slice and the number of pixels having pixel data stored in the first buffer to be encoded in the second tile subset for each slice is determined, and the offset is set to the offset that results in the lowest sum.

[0076] like Figure 7bAs shown in , after dividing the pixel array 700 into slices and tiles according to the method of the present disclosure, when encoding the first tile subset, i.e., the first and second tiles T1, T2 of the first slice S1, the pixel data of the pixels corresponding to the two squares must be transmitted from the second processing circuit to the first circuit, and when encoding the second tile subset, i.e., the third tile T3 of the first slice S1, the pixel data of the pixels corresponding to the two squares must be transmitted from the first processing circuit to the second circuit. In addition, when encoding the first tile subset, i.e., the first tile T1 of the second slice S2, the pixel data of the pixels corresponding to the two squares must be transmitted from the second processing circuit to the first circuit, and when encoding the second tile subset, i.e., the second and third tiles T2, T3 of the second slice S2, the pixel data of the pixels corresponding to the two squares must be transmitted from the first processing circuit to the second circuit. Therefore, in this example, using the method 200 of the present disclosure, a total of pixel data of pixels corresponding to eight squares must be transmitted between the two processing circuits.

[0077] Figure 7b The offset in is six squares. If the tilt angle is smaller, the offset will be smaller, and vice versa.

[0078] Reference now Figures 8a to 8d A third example, in which the pixel array 800 is divided into tiles, or slices and tiles, in which a first boundary B between a first subset of pixels and a second subset of pixels is inclined at a varying angle v along the first boundary B. 1 , v 2 The first boundary B has a constant first tilt angle v in the first horizontal portion of the pixel array 800. 1 , and in the second horizontal portion of the pixel array 800, the first boundary B has a constant but first tilt angle v 1 Different second inclination angles v 2 The first subset of pixels consists of squares represented by the number "1", and the second subset of pixels consists of squares represented by the number "2". The first subset of pixels has pixel data buffered in a first buffer of a first processing circuit, and the second subset of pixels has pixel data buffered in a first buffer of the first processing circuit. Each square may correspond to a single pixel or a pixel block including more than one pixel.

[0079] exist Figure 8a In FIG. 8 , according to the prior art method, the pixel array 800 has been divided into sixteen tiles - four columns of tiles, four tiles in each column. The pixels of the eight image blocks in the first two columns from the left are encoded by the first encoder in the first processing circuit, and the eight image blocks in the last two columns from the left are encoded by the second encoder in the second processing circuit. Figure 8aAs shown in , according to the prior art method, after dividing the pixel array 800 into tiles, when the first two columns of eight tiles are encoded by the first encoder, the pixel data of the pixels corresponding to four squares must be transferred from the second processing circuit to the first circuit, and when the second two columns of eight tiles are encoded by the second encoder, the pixel data of the pixels corresponding to twelve squares must be transferred from the first processing circuit to the second circuit. Therefore, in this example, using the prior art method, a total of pixel data of the pixels corresponding to sixteen squares must be transferred between the two processing circuits.

[0080] According to the method 200 of the present disclosure, when Figure 8b When the third example shown is performed, the pixel array 800 is first divided into two or more slices, and then each slice is divided into two or more tiles, wherein the two or more tiles of each slice are composed of a first tile subset and a second tile subset, wherein the first tile subset and the second tile subset are separated, and the first tile subset is to be encoded by a first encoder, and the second tile subset is to be encoded by a second encoder. When each slice is divided into two or more slices, a second boundary between the first tile subset and the second tile subset is set at an offset between two adjacent slices in the two or more slices, wherein the offset is based on the tilt angle v 1 , v 2 . Combined Figure 8b The method used for partitioning into slices and tiles further requires that corresponding tiles in each slice (tiles in the same column of tiles) must have the same size, i.e. the same width. 1 , v 2 is constant, but is different in the two horizontal sections, and the two horizontal sections are divided into two slices. Figure 8bAs shown in , the pixel array 800 is divided into a first sheet S1, a second sheet S2, a third sheet S3 and a fourth sheet S4. The first sheet S1 has been divided into seven tiles T1 to T7, wherein the first to sixth tiles T1 to T6 belong to a first tile subset of the first sheet S1, and the seventh tile T7 belongs to a second tile subset of the first sheet S1. Similarly, the second sheet S2 has been divided into seven tiles T1 to T7, wherein the first to fourth tiles T1 to T4 belong to a first tile subset of the second sheet S2, and the fifth to seventh tiles T5 to T7 belong to a second tile subset of the second sheet S2. The third sheet S3 has been divided into seven tiles T1 to T7, wherein the first to third tiles T1 to T3 belong to a first tile subset of the third sheet S3, and the fourth to seventh tiles T4 to T7 belong to a second tile subset of the third sheet S3. Finally, the fourth patch S4 has been divided into seven tiles T1 to T7, wherein the first and second tiles T1, T2 belong to the first tile subset of the fourth patch S4, and the third to seventh tiles T3 to T7 belong to the second tile subset of the fourth patch S4. The first and second tile subsets of each patch are separated, i.e., each tile belongs to only one of the first and second tile subsets. The second boundary between the first and second tile subsets of the first patch S1 and the second boundary between the first and second tile subsets of the second patch S2 are based on the local tilt angle v of the first boundary B in the horizontal portion of the third and fourth patches S3, S4. 1 The second boundary between the first and second tile subsets of the second sheet S2 and the second boundary between the first and second tile subsets of the third sheet S2 are based on the local tilt angle v of the first boundary B in the horizontal portion of the second and third sheets S2, S3. 1 , v 2 Since the second and third sheets S2, S3 are located in different horizontal sections with different constant tilt angles, the local tilt angles in the second and third sheets S2, S3 can be determined as the first and second tilt angles v 1 , v 2 The second boundary between the first and second tile subsets of the third sheet S3 and the second boundary between the first and second tile subsets of the fourth sheet S4 are based on the local tilt angle v of the first boundary B in the horizontal portion where the third and fourth sheets S3, S4 are located. 2 The corresponding offset between each two adjacent patches is selected so that when the first boundary B between the first subset of pixels and the second subset of pixels is at a varying tilt angle v relative to the pixel array, 1 , v 2When tilting, the sum of the number of pixels having pixel data stored in the second buffer to be encoded in the first tile subset for each slice and the number of pixels having pixel data stored in the first buffer to be encoded in the second tile subset for each slice is reduced relative to not using an offset. Therefore, the amount of pixel data stored in the second buffer that needs to be transmitted to the first encoder and the amount of pixel data stored in the first buffer that needs to be transmitted to the second encoder are reduced relative to not using an offset.

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

[0082] Figure 8b The offset in is two squares between the first and second sheets, one square between the second and third sheets S2, S3, and one square between the third and fourth sheets S3, S4. If the tilt angle in any adjacent sheet is small, the offset between these adjacent sheets is also small, and vice versa.

[0083] Reference now Figure 8c , wherein the third example illustrates dividing the pixel array 800 into slices and tiles according to the present disclosure. Figure 8b Contrary to the division described above, for the combination Figure 8c The method used for partitioning into slices and tiles has no restrictions on the size of tiles in different slices. Therefore, the size and position of tiles in a slice can be set individually. Figure 8c As shown in , the pixel array 800 is divided into first to fourth pieces S1, S2, S3, S4. The first piece S1 has been divided into four tiles, wherein the first three tiles from the left belong to the first tile subset of the first piece S1, and the last tile belongs to the second tile subset of the first piece S1. Similarly, the second piece S2 has been divided into five tiles, wherein the first three tiles belong to the first tile subset of the second piece S2, and the last two tiles belong to the second tile subset of the second piece S2. The third piece S3 has been divided into four tiles, wherein the first two tiles from the left belong to the first tile subset of the third piece S3, and the last two tiles belong to the second tile subset of the third piece S3. Finally, the fourth piece S4 has been divided into five tiles, wherein the first two tiles from the left belong to the first tile subset of the fourth piece S4, and the last three tiles belong to the second tile subset of the fourth piece S4. The first and second tile subsets of each piece are separated, that is, each tile belongs to only one of the first and second tile subsets. The second boundary between the first and second tile subsets of the first sheet S1 and the second boundary between the first and second tile subsets of the second sheet S2 are based on the local tilt angle v of the first boundary B in the horizontal portions of the first and second sheets S1, S2. 1 The second boundary between the first and second tile subsets of the second sheet S2 and the second boundary between the first and second tile subsets of the third sheet S3 are based on the local tilt angle v of the first boundary B in the horizontal portions of the second and third sheets S2, S3. 1 and v 2 Since the second and third sheets S2, S3 are located in different horizontal sections with different constant tilt angles, the local tilt angles in the second and third sheets S2, S3 can be determined as the first and second tilt angles v 1 , v 2 The second boundary between the first and second tile subsets of the third sheet S3 and the second boundary between the first and second tile subsets of the fourth sheet S4 are based on the local tilt angle v of the first boundary B in the horizontal parts of the third and fourth sheets S3, S4. 2 The corresponding offset between each two adjacent patches is selected so that when the first boundary B between the first subset of pixels and the second subset of pixels is at an inclination angle v relative to the pixel array, 1 or v 2 Tilt, or at a varying angle v1 , v 2 When tilting, the sum of the number of pixels having pixel data stored in the second buffer to be encoded into the first tile subset for each slice and the number of pixels having pixel data stored in the first buffer to be encoded into the second tile subset for each slice is reduced. Therefore, the amount of pixel data stored in the second buffer that needs to be transmitted to the first encoder and the amount of pixel data stored in the first buffer that needs to be transmitted to the second encoder are reduced relative to not using an offset.

[0084] like Figure 8c As shown in, according to the method of the present disclosure, after the pixel array 800 is divided into slices and tiles (wherein the size of the tiles can be set separately in different slices), when the first tile subset of the first slice S1, i.e., the first to third tiles, is encoded, the pixel data of the pixels corresponding to one square must be transmitted from the second processing circuit to the first circuit, and when the second tile subset of the first slice S1, i.e., the fourth tile, is encoded, the pixel data of the pixels corresponding to one square must be transmitted from the first processing circuit to the second circuit. In addition, when the first tile subset of the second slice S2, i.e., the first to third tiles, is encoded, the pixel data of the pixels corresponding to one square must be transmitted from the second processing circuit to the first circuit, and when the second tile subset of the second slice S2, i.e., the fourth and fifth tiles, is encoded, the pixel data of the pixels corresponding to one square must be transmitted from the first processing circuit to the second circuit. In addition, when encoding the first tile subset of the third slice S3, i.e., the first and second tiles, the pixel data of the pixels corresponding to one square must be transferred from the second processing circuit to the first circuit, and when encoding the second tile subset of the third slice S3, i.e., the third and fourth tiles, the pixel data of the pixels corresponding to zero squares must be transferred from the first processing circuit to the second circuit. Finally, when encoding the first tile subset of the fourth slice S4, i.e., the first and second tiles, the pixel data of the pixels corresponding to zero squares must be transferred from the second processing circuit to the first circuit, and when encoding the second tile subset of the fourth slice S4, i.e., the third to fifth tiles, the pixel data of the pixels corresponding to zero squares must be transferred from the first processing circuit to the second circuit. Therefore, in this example, using the method 200 of the present disclosure, the total pixel data of the pixels corresponding to five squares must be transferred between the two processing circuits.

[0085] Figure 8c The offset in is two squares between the first and second sheets S1, S2, one square between the second and third sheets S2, S3, and one square between the third and fourth sheets S3, S4. If the tilt angle in any adjacent sheets is small, the offset between these adjacent sheets is also small, and vice versa.

[0086] It should be noted that even with regard to Figure 8c There is no restriction on the tile sizes in different slices, but each slice has been divided into more than two tiles. Alternatively, each slice may also be divided into two tiles, one on each side of the first boundary. However, dividing a slice into more than two tiles, where the tiles have similar sizes, may simplify the scheduling of encoding, since encoding tiles of similar sizes will take a similar amount of time. Furthermore, this enables image data in a corresponding buffer to be used for corresponding image blocks in other slices of two or more slices.

[0087] As another alternative, Figure 8d The case of partitioning into slices and tiles of the pixel array 800 is shown, wherein the corresponding tiles in each slice (tiles in the same column of tiles) must have the same size, i.e., the same width, except for the tiles of the first boundary B between the first pixel subset and the second pixel subset. It can be seen that most of the corresponding tiles in the slice have the same size. However, the width of the tiles of the first boundary B between the first pixel subset and the second pixel subset in the second slice S2 and the fourth slice S4 has been adjusted and arranged so that the second boundary between the first tile subset and the second tile subset is arranged with an offset relative to their respective adjacent slices, so as to reduce the total amount of pixel data of the pixels that must be transmitted between the two processing circuits compared to the prior art. Specifically, the offset of the second boundary between the first and second slices S1, S2 is two squares, and the offset of the second boundary between the second and third slices S2, S3 is one square, and the offset of the second boundary between the third and fourth slices S3, S4 is one square.

[0088] Reference now Figures 9a to 9d A fourth example in which the pixel array 900 is divided into tiles, or slices and tiles, wherein a first boundary B between a first subset of pixels and a second subset of pixels is tilted at a tilt angle that varies along the first boundary B, so that the first boundary B is curved. The first subset of pixels consists of squares represented by the number "1", and the second subset of pixels consists of squares represented by the number "2". The first subset of pixels has pixel data buffered in a first buffer of a first processing circuit, and the second subset of pixels has pixel data buffered in a first buffer of the first processing circuit. Each square may correspond to a single pixel or a pixel block including more than one pixel.

[0089] and Figures 8a to 8d compared to, Figures 9a to 9d The first boundary B between the first pixel subset and the second pixel subset of the pixel array 900 is also tilted at a varying tilt angle, but is not tilted at a constant tilt angle in two horizontal portions of the pixel array 900, but is curved. However, since the fourth example has been designed so that Figure 9b to Figure 9dThe average inclination angle of the curved first boundary B in the first two sheets S1 and S2 is close to Figure 8b to Figure 8d The first two slices S1, S2 have a constant tilt angle, and Figure 9b to Figure 9d The curved first boundary B in the last two sheets S3 and S4 is close to Figure 8b to Figure 8d The constant tilt angles of the last two sheets S3 and S4 are Figures 9a to 9d Each of them is Figures 8a to 8d , divided into tiles based on the prior art method, and divided into slices and tiles based on the method according to the present disclosure. Figure 9b , Fig.9c and Figure 9d , the position of each tile in each slice in the corresponding one of the first tile subset and the second tile subset is also respectively Figure 8b , Figure 8c and Figure 8d Similarly, using the combination Figure 9a The prior art method requires that the total amount of pixel data of the pixel to be transmitted between the two processing circuits is Figure 8a The same, and use the combination Figure 9b , Fig.9c and Figure 9d According to the method 200 of the present disclosure, the total amount of pixel data of the pixels that must be transmitted between the two processing circuits is respectively Figure 8b , Figure 8c and Figure 8d The same.

[0090] Reference now Figures 10a to 10d A fifth example, in which the pixel array 1000 is divided into tiles, or slices and tiles, wherein a first boundary B between a first subset of pixels and a second subset of pixels is tilted at a tilt angle that varies along the first boundary B, so that the first boundary B is curved. The first subset of pixels consists of squares represented by the number "1", and the second subset of pixels consists of squares represented by the number "2". The first subset of pixels has pixel data buffered in a first buffer of a first processing circuit, and the second subset of pixels has pixel data buffered in a first buffer of the first processing circuit. Each square may correspond to a single pixel or a pixel block including more than one pixel.

[0091] exist Fig.10a In FIG. 1 , according to the prior art method, the pixel array 1000 has been divided into sixteen tiles - that is, four columns of tiles, four tiles in each column. The pixels of the eight image blocks in the first two columns from the left are encoded by the first encoder in the first processing circuit, and the eight image blocks in the last two columns from the left are encoded by the second encoder in the second processing circuit. Fig.10aAs shown in , after dividing the pixel array 1000 into tiles according to the prior art method, when the first two columns of eight tiles are encoded by the first encoder, the pixel data of the pixels corresponding to six squares must be transferred from the second processing circuit to the first circuit, and when the second two columns of eight tiles are encoded by the second encoder, the pixel data of the pixels corresponding to zero squares must be transferred from the first processing circuit to the second circuit. Therefore, in this example, using the prior art method, a total of pixel data of the pixels corresponding to six squares must be transferred between the two processing circuits.

[0092] When the method 200 according to the present disclosure is used Fig.10b In the third example shown, the pixel array 1000 is first divided into two or more slices, and then each slice is divided into two or more tiles, wherein the two or more tiles of each slice are composed of a first tile subset and a second tile subset, wherein the first tile subset and the second tile subset are separate, and the first tile subset is to be encoded by a first encoder, and the second tile subset is to be encoded by a second encoder. When each slice is divided into two or more tiles, a second boundary between the first tile subset and the second tile subset is set at an offset between two adjacent slices in the two or more slices, wherein the offset is based on the tilt angle. In combination Fig.10b The method used for dividing into slices and tiles further requires that corresponding tiles in each slice (tiles in the same column of tiles) must have the same size, i.e. the same width. The tilt angle varies along the first boundary B, so that the first boundary B is curved. Fig.10bAs shown in , the pixel array 1000 is divided into first to fourth patches S1, S2, S3, S4. The first patch S1 has been divided into five tiles T1 to T5, wherein the first to third tiles T1 to T3 belong to a first tile subset of the first patch S1, and the fourth and fifth tiles T4 to T5 belong to a second tile subset of the first patch S1. Similarly, the second patch S2 has been divided into five tiles T1 to T5, wherein the first and second tiles T1, T2 belong to a first tile subset of the second patch S2, and the third to fifth tiles T3 to T5 belong to a second tile subset of the second patch S2. The third patch S3 has been divided into five tiles T1 to T5, wherein the first and second tiles T1, T2 belong to a first tile subset of the third patch S3, and the third to fifth tiles T3 to T5 belong to a second tile subset of the third patch S3. Finally, the fourth sheet S4 has been divided into five tiles T1 to T5, of which the first to third tiles T1 to T3 belong to the first tile subset of the fourth sheet S4, and the fourth and fifth tiles T4, T5 belong to the second tile subset of the fourth sheet S4. The first and second tile subsets of each sheet are separated, i.e. each tile belongs to only one of the first and second tile subsets. The second boundary between the first and second tile subsets of the first sheet S1 and the second boundary between the first and second tile subsets of the second sheet S2 are offset relative to each other based on the local tilt angle of the first boundary B in the horizontal part of the first and second sheets S1, S2. The second boundary between the first and second tile subsets of the second sheet S2 and the second boundary between the first and second tile subsets of the third sheet S3 are offset relative to each other based on the local tilt angle of the first boundary B in the second and third sheets S2, S3. The second boundary between the first and second tile subsets of the third sheet S3 and the second boundary between the first and second tile subsets of the fourth sheet S4 are offset relative to each other based on the local tilt angle of the first boundary B in the third and fourth sheets S3, S4. The local tilt angle in each two adjacent slices can be determined as the average of the tilt angles of the portions of the curved first boundary B in the pair of adjacent slices. The corresponding offset between each two adjacent slices is selected so that when the first boundary B between the first pixel subset and the second pixel subset is tilted at a varying tilt angle relative to the pixel array, the sum of the number of pixels having pixel data stored in the second buffer to be encoded into the first tile subset and the number of pixels having pixel data stored in the first buffer to be encoded into the second tile subset of each slice is reduced relative to not using the offset. Therefore, the amount of pixel data stored in the second buffer that needs to be transmitted to the first encoder and the amount of pixel data stored in the first buffer that needs to be transmitted to the second encoder are reduced relative to not using the offset.

[0093] like Fig.10bAs shown in , after the pixel array 1000 is divided into slices and tiles according to the method of the present disclosure, when the first tile subset of the first slice S1, i.e., the first to third tiles T1 to T3, is encoded, the pixel data of the pixels corresponding to zero squares must be transmitted from the second processing circuit to the first circuit, and when the second tile subset of the first slice S1, i.e., the fourth and fifth tiles T4, T5, is encoded, the pixel data of the pixels corresponding to zero squares must be transmitted from the first processing circuit to the second circuit. In addition, when the first tile subset of the second slice S2, i.e., the first and second tiles T1, T2, is encoded, the pixel data of the pixels corresponding to zero squares must be transmitted from the second processing circuit to the first circuit, and when the second tile subset of the second slice S2, i.e., the third to fifth tiles T3 to T5, is encoded, the pixel data of the pixels corresponding to zero squares must be transmitted from the first processing circuit to the second circuit. Furthermore, when encoding the first tile subset of the third slice S3, i.e., the first to second tiles T1 to T2, the pixel data of the pixels corresponding to zero squares must be transferred from the second processing circuit to the first circuit, and when encoding the second tile subset of the third slice S3, i.e., the third to fifth tiles T3 to T5, the pixel data of the pixels corresponding to zero squares must be transferred from the first processing circuit to the second circuit. Finally, when encoding the first tile subset of the fourth slice S4, i.e., the first to third tiles T1 to T3, the pixel data of the pixels corresponding to zero squares must be transferred from the second processing circuit to the first circuit, and when encoding the second tile subset of the fourth slice S4, i.e., the fourth and fifth tiles T4, T5, the pixel data of the pixels corresponding to zero squares must be transferred from the first processing circuit to the second circuit. Thus, in this example, using the method 200 of the present disclosure, pixel data of no pixels in total must be transferred between the two processing circuits.

[0094] Fig.10b The offset in is one square between the first and second pieces S1, S2, zero squares between the second and third pieces S2, S3, and one square between the third and fourth pieces S3, S4. If the tilt angle in any adjacent piece is small, the offset between these adjacent pieces is also small, and vice versa.

[0095] Reference now Fig.10c , wherein the third example illustrates dividing the pixel array 1000 into slices and tiles according to the present disclosure. Fig.10b The opposite of the division described is for the combination Fig.10c The method used is divided into slices and tiles, with corresponding tiles in each slice, and no restrictions on the size of tiles in different slices. Therefore, the size and position of tiles in slices can be set individually. So, for example Fig.10cAs shown in , the pixel array 1000 is divided into first to fourth pieces S1, S2, S3, S4. The first piece S1 has been divided into four tiles, wherein the first two tiles from the left belong to the first tile subset of the first piece S1, and the last two tiles belong to the second tile subset of the first piece S1. The second piece S2 has been divided into five tiles, wherein the first two tiles belong to the first tile subset of the second piece S2, and the last three tiles belong to the second tile subset of the second piece S2. The third piece S3 has been divided into five tiles, wherein the first two tiles from the left belong to the first tile subset of the third piece S3, and the last three tiles belong to the second tile subset of the third piece S3. Finally, the fourth piece S4 has been divided into four tiles, wherein the first two tiles from the left belong to the first tile subset of the fourth piece S4, and the last two tiles belong to the second tile subset of the fourth piece S4. The first and second tile subsets of each piece are separated, that is, each tile belongs to only one of the first and second tile subsets. The second boundary between the first and second tile subsets of the first sheet S1 and the second boundary between the first and second tile subsets of the second sheet S2 are offset relative to each other based on the local tilt angle of the first boundary B in the horizontal portion of the first and second sheets S1, S2. The second boundary between the first and second tile subsets of the second sheet S2 and the boundary between the first and second tile subsets of the third sheet S3 are offset relative to each other based on the local tilt angle of the first boundary B in the second and third sheets S2, S3. The second boundary between the first and second tile subsets of the third sheet S3 and the second boundary between the first and second tile subsets of the fourth sheet S4 are offset relative to each other based on the local tilt angle of the first boundary B in the third and fourth sheets S3, S4. The local tilt angle in each two adjacent sheets can be determined as the average value of the tilt angles of the portions of the curved first boundary B in the pair of adjacent sheets. The corresponding offset between each two adjacent tiles is selected so that when a first boundary B between the first pixel subset and the second pixel subset is tilted at a varying tilt angle relative to the pixel array, the sum of the number of pixels having pixel data stored in the second buffer to be encoded into the first tile subset for each tile and the number of pixels having pixel data stored in the first buffer to be encoded into the second tile subset for each tile is reduced relative to not using the offset. Therefore, the amount of pixel data stored in the second buffer that needs to be transmitted to the first encoder and the amount of pixel data stored in the first buffer that needs to be transmitted to the second encoder are reduced relative to not using the offset.

[0096] like Fig.10cAs shown in , after dividing the pixel array 1000 into slices and tiles according to the method of the present disclosure, wherein the size of the tiles can be set separately in different slices, when encoding the first tile subset of the first slice S1, i.e., the first and second tiles, the pixel data of the pixels corresponding to zero squares must be transmitted from the second processing circuit to the first circuit, and when encoding the second tile subset of the first slice S1, i.e., the third and fourth tiles, the pixel data of the pixels corresponding to zero squares must be transmitted from the first processing circuit to the second circuit. In addition, when encoding the first tile subset of the second slice S2, i.e., the first and second tiles, the pixel data of the pixels corresponding to zero squares must be transmitted from the second processing circuit to the first circuit, and when encoding the second tile subset of the second slice S2, i.e., the third to fifth tiles, the pixel data of the pixels corresponding to zero squares must be transmitted from the first processing circuit to the second circuit. In addition, when encoding the first tile subset of the third slice S3, i.e., the first and second tiles, the pixel data of the pixels corresponding to zero squares must be transferred from the second processing circuit to the first circuit, and when encoding the second tile subset of the third slice S3, i.e., the third to fifth tiles, the pixel data of the pixels corresponding to zero squares must be transferred from the first processing circuit to the second circuit. Finally, when encoding the first tile subset of the fourth slice S4, i.e., the first and second tiles, the pixel data of the pixels corresponding to zero squares must be transferred from the second processing circuit to the first circuit, and when encoding the second tile subset of the fourth slice S4, i.e., the third and fourth tiles, the pixel data of the pixels corresponding to zero squares must be transferred from the first processing circuit to the second circuit. Therefore, in this example, using the method 200 of the present disclosure, no pixel data in total must be transferred between the two processing circuits.

[0097] Fig.10c The offset in is one square between the first and second pieces S1, S2, zero squares between the second and third pieces S2, S3, and one square between the third and fourth pieces S3, S4. If the tilt angle in any adjacent piece is small, the offset between these adjacent pieces is also small, and vice versa.

[0098] As another alternative, Fig.10dThe partitioning into slices and tiles of the pixel array 1000 is shown, wherein it is required that the corresponding tiles in each slice (tiles in the same column of tiles) must have the same size, i.e., the same width, except for the tiles of the first boundary B between the first pixel subset and the second pixel subset. It can be seen that most of the corresponding tiles in the slices have the same size. However, the tile widths of the first boundary B between the first pixel subset and the second pixel subset in the second slice S2 and the third slice S3 have been adjusted and arranged so that the second boundary between the first tile subset and the second tile subset is arranged relative to the offset of their respective adjacent slices, so as to reduce the total amount of pixel data of the pixels that must be transmitted between the two processing circuits compared to the prior art. Specifically, the offset of the second boundary between the first and second slices S1, S2 is one square, and the offset of the second boundary between the second and third slices S2, S3 is zero squares, and the offset of the second boundary between the third and fourth slices S3, S4 is one square.

[0099] Those skilled in the art will recognize that the present invention is not limited to the above-described embodiments. On the contrary, within the scope of the appended claims, multiple modifications and variations are possible. By studying the drawings, the disclosure, and the appended claims, those skilled in the art can understand and implement these modifications and variations when practicing the claimed invention.

[0100] For example, all examples are described for tiles of equal size, i.e., equal height in number of pixels / pixel blocks. However, tiles of different sizes may be used. For example, for varying tilt angles along the first border, partitioning into tiles of different sizes may be advantageous at different horizontal portions of the pixel array.

Claims

1. A method for dividing a pixel array into slices and tiles, wherein: The slices and tiles are used to encode the pixel array into an encoded video stream by means of a first encoder arranged in a first image processing circuit and a second encoder arranged in a second image processing circuit, wherein the pixels of the pixel array are arranged at regular intervals in a vertical direction and a horizontal direction, wherein each slice is separated from a corresponding adjacent slice by a straight horizontal line across the entire width of the pixel array and is encoded without accessing image data related to other slices, and each tile is separated from a corresponding adjacent tile in the same slice by a straight vertical line across the entire height of the slice and is encoded without accessing image data related to other tiles, wherein the pixel array is composed of a first subset of pixels and a second subset of pixels, the first subset of pixels having pixel data stored in a first buffer arranged in the first image processing circuit, and the second subset of pixels having pixel data stored in a second buffer arranged in the second image processing circuit, wherein a first boundary between the first subset of pixels and the second subset of pixels is inclined at an inclined angle relative to the pixel array, and the method comprises: dividing the pixel array into two or more tiles; and dividing each patch into two or more tiles, wherein the two or more tiles of each patch consist of a first subset of tiles and a second subset of tiles, wherein the first subset of tiles and the second subset of tiles are separate and the first subset of tiles are to be encoded by the first encoder and the second subset of tiles are to be encoded by the second encoder, Wherein, the action of dividing each tile into two or more tiles includes: setting a second boundary between the first tile subset and the second tile subset at an offset along the horizontal direction between two adjacent tiles in the two or more tiles, so that the second boundary between the first tile subset and the second tile subset in two adjacent tiles are not aligned along the horizontal direction, wherein the offset is based on the tilt angle, so that the sum of the number of pixels of each tile to be encoded into the first tile subset with pixel data stored in the second buffer and the number of pixels of each tile to be encoded into the second tile subset with pixel data stored in the first buffer is reduced relative to not using an offset.

2. The method according to 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 method according to claim 1, wherein: The tilt angle varies along the first boundary between the first subset of pixels and the second subset of pixels, wherein the act of dividing the pixel array into two or more slices comprises dividing the pixel array into three or more slices, Wherein the act of dividing each patch into two or more tiles comprises: for every two adjacent patches of the three or more patches, setting the second boundary between the first tile subset and the second tile subset of each patch of the two adjacent patches at an offset, wherein the offset is based on a local tilt angle of the first boundary between the first pixel subset and the second pixel subset in the two adjacent patches.

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

5. The method according to claim 3, wherein: The first boundary between the first subset of pixels and the second subset of pixels is tilted at constant but separate tilt angles in separate horizontal portions of the pixel array.

6. The method according to claim 5, wherein: The act of dividing the pixel array into three or more tiles includes dividing the pixel array into four or more tiles by dividing each individual horizontal portion of the pixel array into two or more tiles such that, for every two adjacent horizontal portions, a third boundary between the two adjacent horizontal portions is aligned with a fourth boundary between the two tiles.

7. The method according to 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 patches is determined as an average tilt angle in the two adjacent patches.

8. The method according to claim 1, wherein: Sizes of corresponding tiles of the two or more tiles of each of the two or more sheets are the same in each of the two or more sheets.

9. The method according to claim 1, further comprising: transmitting pixel data of pixels of each slice to be encoded into the first tiled subset having pixel data stored in the second buffer to the first encoder; encoding the first subset of tiles with the aid of the first encoder; transmitting pixel data of pixels of each slice to be encoded into the second tile subset having pixel data stored in the first buffer to the second encoder; as well as The second subset of tiles is encoded by means of the second encoder.

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

11. An image processing apparatus for dividing a pixel array into slices and tiles to encode the pixel array into an encoded video stream by means of a first encoder arranged in a first image processing circuit and a second encoder arranged in a second image processing circuit, wherein: The pixels of the pixel array are arranged at regular intervals in the vertical direction and the horizontal direction, wherein each patch is separated from a corresponding adjacent patch by a straight horizontal line across the entire width of the pixel array and is encoded without accessing image data related to other patches, and each tile is separated from a corresponding adjacent tile in the same patch by a straight vertical line across the entire height of the patch and is encoded without accessing image data related to other tiles, wherein the pixel array is composed of a first subset of pixels and a second subset of pixels, the first subset of pixels having pixel data stored in a first buffer arranged in the first image processing circuit, and the second subset of pixels having pixel data stored in a second buffer arranged in the second image processing circuit, wherein a first boundary between the first subset of pixels and the second subset of pixels is inclined at an inclined angle relative to the pixel array, and the image processing device includes a circuit configured to perform the following operations: a first partitioning function configured to partition the pixel array into two or more tiles; and a second partitioning function configured to partition each patch into two or more tiles, wherein the two or more tiles of each patch consist of a first subset of tiles and a second subset of tiles, wherein the first subset of tiles and the second subset of tiles are separate and the first subset of tiles are to be encoded by the first encoder and the second subset of tiles are to be encoded by the second encoder, Wherein, the second partitioning function is further configured to: set the second boundary between the first tile subset and the second tile subset at an offset along the horizontal direction between two adjacent tiles in the two or more tiles, so that the second boundary between the first tile subset and the second tile subset in two adjacent tiles are not aligned along the horizontal direction, wherein the offset is based on the tilt angle, so that the sum of the number of pixels of each tile to be encoded into the first tile subset with pixel data stored in the second buffer and the number of pixels of each tile to be encoded into the second tile subset with pixel data stored in the first buffer is reduced relative to not using the offset.

12. The image processing device according to claim 11, wherein: 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, and The second partitioning function is configured to, for every two adjacent tiles among the three or more tiles, set the second boundary between the first tile subset and the second tile subset of each of the two adjacent tiles at an offset, wherein the offset is based on a local tilt angle of the first boundary between the first pixel subset and the second pixel subset in the two adjacent tiles.

13. The image processing apparatus according to claim 12, wherein: The first boundary between the first subset of pixels and the second subset of pixels is tilted at constant but separate tilt angles in separate horizontal portions of the pixel array, The second division function is configured to divide each individual horizontal portion of the pixel array into two or more slices such that for every two adjacent horizontal portions, a third boundary between the two adjacent horizontal portions is aligned with a fourth boundary between two adjacent slices.

14. The image processing device according to claim 12 or 13, wherein: The second partitioning 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 patches as an average tilt angle in the two adjacent patches.

15. A system for encoding a pixel array into an encoded video stream, wherein: The pixels of the pixel array are arranged at regular intervals in the vertical direction and the horizontal direction, wherein the pixel array consists of a first pixel subset and a second pixel subset, and a first boundary between the first pixel subset and the second pixel subset is inclined at an inclined angle relative to the pixel array, and the system comprises: a first image processing circuit; a second image processing circuit; A first encoder, arranged in the first image processing circuit; a second encoder, arranged in the second image processing circuit; a first buffer, disposed in the first image processing circuit, the first buffer storing pixel data of the first subset of pixels; a second buffer disposed in the second image processing circuit, the second buffer storing pixel data of the second subset of pixels; A circuit configured to: a first partitioning function configured to partition the pixel array into two or more tiles, wherein each tile is separated from a respective adjacent tile by a straight horizontal line spanning the entire width of the pixel array and is encoded without accessing image data associated with other tiles; a second partitioning function configured to partition each patch into two or more tiles, wherein each tile is separated from a corresponding adjacent tile in the same patch by a straight vertical line spanning the entire height of the patch and is encoded without accessing image data associated with other tiles, wherein the two or more tiles of each patch consist of a first subset of tiles and a second subset of tiles, wherein the first subset of tiles and the second subset of tiles are separate and the first subset of tiles is to be encoded by the first encoder and the second subset of tiles is to be encoded by the second encoder, wherein the second partitioning function is further configured to: set a second boundary between the first tile subset and the second tile subset at an offset along the horizontal direction between two adjacent tiles of the two or more slices, such that the second boundary between the first tile subset and the second tile subset in two adjacent tiles are not aligned along the horizontal direction, wherein the offset is based on the tilt angle, such that a sum of a number of pixels of each tile to be encoded into the first tile subset having pixel data stored in the second buffer and a number of pixels of each tile to be encoded into the second tile subset having pixel data stored in the first buffer is reduced relative to not using an offset; a first transfer function configured to transfer pixel data of pixels of the first tiled subset of each slice having pixel data stored in the second buffer to the first encoder; and a second transfer function configured to transfer pixel data of pixels of a second tiled subset of each slice having pixel data stored in the first buffer to the second encoder; wherein 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.

Citation Information

Patent Citations

  • A video mosaic method based on large scene and multi-GPU mode

    CN109040701A

  • Method and device for encoding a plurality of image frames

    CN111294597A