An optical system and method for encoding a computer generated holography diffraction pattern

By grouping pixels and jointly encoding them into codewords, the method enhances encoding/decoding throughput and compression ratios in WSS modules, addressing bandwidth and storage challenges in WSS modules.

WO2025223639A1PCT designated stage Publication Date: 2025-10-30HUAWEI TECH CO LTD +1
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
PCT/EP2024/061027
Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
Filing Date
2024-04-23
Publication Date
2025-10-30

AI Technical Summary

Technical Problem

Conventional Wavelength Selective Switch (WSS) modules in optical networks face challenges with high IO bandwidth requirements, frame storage needs, and limited applicability of image compression formats due to digital pixel architecture, which affects encoding and decoding throughput and compression ratios.

Method used

A method of encoding Computer Generated Holography Diffraction Patterns (CGHDP) by grouping pixels into sets and jointly encoding their values into codewords, utilizing difference encoding modes and run length encoding to reduce redundancy and enhance compression efficiency.

Benefits of technology

This approach reduces IO bandwidth, minimizes frame storage requirements, and improves encoding/decoding throughput and compression ratios, while maintaining image fidelity.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure EP2024061027_30102025_PF_FP_ABST
    Figure EP2024061027_30102025_PF_FP_ABST
Patent Text Reader

Abstract

The disclosure relates to optical communication and compressing a Computer Generated Holography diffraction pattern (CGHDP). The disclosure proposes an optical system configured to encode the CGHDP and a corresponding method for encoding the CGHDP. The method comprises assigning each pixel in a set of pixels of the CGHDP to a pixel group of a set of pixel groups, each pixel group respectively comprising a plurality of pixels that are in a same column and in directly adjacent rows. Further, the method comprises encoding the set of pixel groups into a set of codewords, wherein each pixel group is encoded into one codeword of the set of codewords by jointly encoding at least the values of the plurality of pixels of said pixel group.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] AN OPTICAL SYSTEM AND METHOD FOR ENCODING A COMPUTER GENERATED HOLOGRAPHY DIFFRACTION PATTERN

[0002] TECHNICAL FIELD

[0003] The present disclosure relates to optical communication and compressing a Computer Generated Holography diffraction pattern (CGHDP). The disclosure proposes an optical system configured to encode the CGHDP and a corresponding method for encoding the CGHDP. The CGHDP is encoded in a new kind of way.

[0004] BACKGROUND

[0005] A Wavelength Division Multiplexed (WDM) optical network with Reconfigurable Optical Add / Drop Multiplexer (ROADM) switches, such as Wavelength Selective Switches (WSSs) are conventionally deployed as core routing technology.

[0006] An electrical system of a Wavelength Selective Switch WSS module typically consist of a software configurable Field Programmable Gate Array (FPGA), which drives a Spatial Light Modulator (SLM) utilizing a Liquid Crystal on Silicon device (LCoS) backplane, together with a memory storage sub-system (SDRAM) as framebuffer for computer-generated holograms (CGH), i.e. diffraction patterns to aide optical beam steering between optical input and output (IO) ports. A need for multiple frame storage arises from contingent rerouting of the network should a fault occur.

[0007] A conventional Wavelength Selective Switch WSS module is hermetically sealed, wherein dependencies on air, temperature, pressure, and humidity are controlled to ensure optical stability and reliability of sealed components. An electrical interfacing port to drive a LCoS is thus limited by the cost of such a module.

[0008] LCoS design parameters are mainly determined by the choice of pixel type, i.e., Digital or Analog, which serves as the basis of its architecture. Generally, a smaller pixel pitch is achieved with a digital pixel architecture, increasing spatial resolution per given area, reducing quantization related issues, and improving alignment with conventional complementary metal-oxide semiconductor (CMOS) process scaling.

[0009] However, the adoption of digital pixels comes with a penalty of high IO bandwidth, as pixel modulation is performed via an image frame decomposition into a multitude of IBit sub-frames denoted as bitplanes, i.e. a type of pulse width modulated encoding scheme. This bitplane formatting is however necessary to tune out another artifact known as phase flicker, unique to the application of LCoS for Phase Modulation (as in WSS), caused by the bi-level switching of a digital pixel.

[0010] SUMMARY

[0011] In view of the above, an objective of this disclosure is to improve the encoding method of a CGHDP. Another objective is to improve an encoding / decoding throughput and / or a compression ratio. A further objective is to reduce the requirements of frame storage for a WSS. Another objective is to reduce the interfacing IO bandwidth for a digital pixel WSS.

[0012] These and other objectives are achieved by this disclosure as described in the independent claims. Advantageous implementations are further defined in the dependent claims.

[0013] The solutions of this disclosure are based on the following considerations. Conventional WSSs rely on the integration of on-chip framebuffers within the LCoS backplane. Thus, pixel data can be transmitted as binary weighted presentation; i.e., before a bitplane (BP) decomposition. This significantly reduces the interfacing IO bandwidth of a digital pixel LCoS.

[0014] One constraint is the die area that is imposed for each pixel, wherein additional area must exist alongside the pixel active area; i.e. each pixel is occupied by its storage element and the driving circuitry to its mirror electrode. The benefits obtained from a process shrink can only be extended to accommodate a framebuffer that is practical, for, for example, additional fabrication process steps to include higher density embedded-DRAM at an incurred cost.

[0015] Notably, human vision allows for degradation in natural images before losses become visually perceptible. Thus, conventional compression formats of images may not be directly applicable to the compression of CGHDPs.

[0016] Thus, an improved image compression scheme should be obtained to reduce required frame storage and provide an improved lossless compression scheme, wherein the fidelity of the CGH has to be retained.

[0017] A first aspect of this disclosure provides a method of encoding a CGHDP for a Wavelength Selective Switch WSS, wherein the CGHDP comprises a set of pixels, wherein each pixel has a value and is associated with a channel, wherein the pixels of the set of pixels are arranged in a plurality of rows and a plurality of columns, and wherein the method comprises: assigning each pixel in the set of pixels to a pixel group of a set of pixel groups, each pixel group respectively consisting of or comprising a plurality of pixels that are in the same column of the plurality of columns and in directly adjacent rows of the plurality of rows, and encoding the set of pixel groups into a set of codewords, wherein each pixel group is encoded into one codeword of the set of codewords by jointly encoding at least the values of the plurality of pixels of said pixel group.

[0018] In this disclosure the term “jointly encoding” may refer to encoding multiple values together, for example, simultaneously and / or collectively, into one codeword such that the encoded values or representations of the multiple values are included in said codeword.

[0019] In general, jointly encoding may refer to a process of collectively processing and encoding multiple pixel values as a unified entity or set, rather than treating them as separate, individual units.

[0020] Jointly encoding may leverage the inherent relationships, patterns, or correlations between the pixels to enhance the encoding efficiency, accuracy, or meaningful representation of the information contained within the pixel data. By considering the pixel values together the encoding method may achieve outcomes such as reduced data redundancy, improved compression rates, enhanced quality post-compression, or more effective information capture for analysis. The term “jointly” may emphasize the collective rather than isolated treatment of pixel data.

[0021] For example, a pixel group may comprise or consist of multiple pixels that are in directly adjacent rows and / or in the same column.

[0022] Each pixel group of the set of pixel groups may or may not consist of the same number of pixels.

[0023] The method may further comprise assigning each pixel group of the set of pixel groups to one or more, for example, two or more, pixel group rows, each comprising the pixels of two or more rows of the plurality of rows. Each pixel group row may comprise at least a subset of pixel groups of the set of pixel groups. The number of pixels in the plurality of pixels of each pixel group in the same pixel group row may be the same.

[0024] For example, each pixel of CGHDP or the set of pixels may have an 8-bit value.

[0025] The method of the first aspect may be performed by a first processer.

[0026] The pixel groups of the set of pixel groups may be encoded sequentially and / or iteratively one-pixel group after the other. The method may comprise assigning, for example, with the first processor, an encoding mode to each pixel group of the set of pixel groups. Assigning an encoding mode to each pixel group of the set of pixel groups may be performed sequentially and / or iteratively one-pixel group of the set of pixel groups after the other.

[0027] Said assigning may be performed before the encoding of the pixel groups.

[0028] In this disclosure, the term “previously encoded pixel group” may refer to pixel groups that were already encoded during said sequential encoding and / or that were already assigned an encoding mode during said sequential assigning.

[0029] Sequential encoding and / or assigning may be performed along the plurality of rows, for example, and along the plurality of rows from one end to the other end of the plurality of rows, and along the plurality of columns, for example, along the plurality of columns from one end to the other end of the plurality of columns.

[0030] In this disclosure, the term “current pixel group” may refer to pixel groups that have not been encoded during said sequential encoding and / or that have not been assigned an encoding mode during said sequential assigning.

[0031] In this disclosure, the term “current pixel group” may refer to pixel groups that are the next pixel groups that will be encoded during said sequential encoding and / or that have will be assigned an encoding mode during said sequential assigning.

[0032] For example, if a direction of encoding is from left to right along the plurality of rows and / or from above / top to below / bottom along the plurality of columns, the term “previously encoded pixel group” may refer to any pixel group that is respectively left and / or above the current pixel group.

[0033] For example, if a direction of encoding is from right to left along the plurality of rows and / or from below / bottom to above / top along the plurality of columns, the term “previously encoded pixel group” may refer to any pixel group that is respectively right and / or below the current pixel group.

[0034] The set of codewords may be included in and / or form an encoded CGHDP. For example, the method may comprise generating the encoded CGHDP comprising the set of codewords.

[0035] For at least some pixel groups of the set of pixel groups, the plurality of pixels of the at least some pixel groups may respectively consist of an even number of pixels.

[0036] Further, in this disclosure, the phrase “encoding values of pixels” may refer to directly encoding said values or encoding a representation of said values, for example, by encoding differences between at least said values. For example, said differences may be stored in one or more codewords, wherein said differences represent the values of the pixels. At least some pixel groups of the set of pixel groups may respectively consist of a number of pixels that is unequal to three pixels. For example, the plurality of pixels may be unequal to three pixels.

[0037] In an implementation form of the first aspect, at least some pixel groups of the set of pixel groups respectively consist of an even number of pixels, for example, two or four pixels.

[0038] For example, the plurality of pixels of the at least some pixel groups may consist of an even number of pixels.

[0039] In another example, the at least some pixel groups of the set of pixel groups may consist of three pixels.

[0040] A higher number of pixels in the plurality of pixels may increase the encoding and / or decoding throughput, as more pixels can be jointly encoded. A lower number of pixels in the plurality of pixels, for example, two pixels, may improve the encoding and / or decoding throughput, as the probability of being able to employ an efficient encoding mode can be increased.

[0041] In a further implementation form of the first aspect, the jointly encoding is performed in at least one or more difference encoding modes that respectively comprise: determining one or more differences between the values of the plurality of pixels of a respective pixel group and the values of the pixels of a directly adjacent pixel group, and if the determined one or more differences are within a range or one or more corresponding ranges of a set of ranges, encoding the values of the plurality of pixels of the respective pixel group by using the determined differences.

[0042] The term “directly adjacent” may refer to two elements being directly adjacent in terms of rows and / or columns.

[0043] Each encoding mode may use a subset of one or more ranges of the set of ranges. For each encoding mode, the size of a respective range or which range may be used for which pixel may be determined based on the number of information bits in a codeword associated with the encoding mode that are available for encoding the determined one or more differences. For example, a larger number of information bits in the codeword of the encoding mode may enable a larger size of the respective range.

[0044] Different pixels in a current pixel group that are in different rows may be encoded using the same difference encoding mode but a different respective range of the set of ranges.

[0045] Different pixels that are in different columns but in the same row may be encoded using the same respective range of the set of ranges, for example, if said pixels are encoded based on the same encoding mode.

[0046] For example, the one or more difference encoding modes may comprise at least one of the following encoding modes: OP_UP, OP_DIFF, OP_SDIFF, and OP_WDIFF.

[0047] Each range of the set of ranges may be associated with / correspond to a particular row and a particular encoding mode. A corresponding range may correspond to a particular pixel or a particular row of the plurality of rows and a particular encoding mode.

[0048] For each pixel the determined difference associated with that pixel, the method may comprise determining if said determined difference is in the range that is associated with the pixel and the encoding mode for which the difference was determined.

[0049] One range may or may not be used for all pixel groups. The values of the pixels of the respective pixel group may be encoded by using the determined differences and storing and / or encoding the determined differences. For example, a codeword may comprise information representing the determined differences. Thus, said codeword may not directly but indirectly comprise information representing the values of the pixels.

[0050] In a further implementation form of the first aspect, the one or more difference encoding modes comprise one or more horizontal difference encoding modes, wherein the one or more horizontal difference encoding modes respectively comprise: determining, for each pixel of a respective pixel group, a difference between said pixel and the value of a pixel that is in the same row and in a directly adjacent pixel group, and if the determined differences are within a range or one or more corresponding ranges of a set of ranges, encoding the values of the pixels of the respective pixel group by using the determined differences.

[0051] For a respective pixel group, a directly adjacent pixel group of said respective pixel group may be selected. For example, said directly adjacent pixel group may be a previously encoded pixel group that is directly adjacent pixel group of the respective pixel group.

[0052] For example, the determining may comprise, for each pixel of the respective pixel group, determining a difference between said pixel and the value of a pixel that is in the same row and in the selected directly adjacent pixel group.

[0053] For example, a first row may comprise a first pixel, and a second pixel. A second row may comprise a third pixel and a fourth pixel. The first pixel and the third pixel may be included in a first column. The second pixel and the fourth pixel may be included in a second column. A first pixel group may comprise the first pixel and the third pixel. A second pixel group may comprise the second pixel and the fourth pixel. For example, the first pixel group was previously encoded and the second pixel group is the current pixel group that is to be encoded.

[0054] For example, determining if the differences between the respective values of the current pixel group and the values of the corresponding pixels in the previously encoded directly adjacent pixel group are within a respective range of the one or more ranges, may include determining a first difference between the value of the first pixel and the value of the second pixel, and a second difference between the value of the third pixel and value of the fourth pixel. If the first difference is within a first range of the one or more ranges, and the second difference is within a second range of the one or more ranges, said differences may be encoded and the encoding mode for which said differences were determined may be used to perform said encoding.

[0055] For example, the one or more horizontal difference encoding modes may comprise at least one of the following encoding modes: OP_DIFF, OP_SDIFF, and OP_WDIFF.

[0056] In a further implementation form of the first aspect, the one or more horizontal difference encoding modes comprise a first horizontal difference encoding mode and / or a second horizontal difference encoding mode, wherein the first horizontal difference encoding mode encodes the respective pixel group into a N-byte long codeword, wherein N is a positive integer, and / or wherein the second horizontal difference encoding mode encodes the respective pixel group into a M-byte long codeword, wherein M is a positive integer, wherein M is larger than N.

[0057] Thus, the encoding / decoding throughput and / or compression ratio may be improved.

[0058] In a further implementation form of the first aspect, the method further comprises at least one of: (i) if the respective pixel group has two pixels, the first horizontal difference encoding mode encodes the respective pixel group into a 1-byte long codeword; (ii) if the respective pixel group has two pixels, the second horizontal difference encoding mode, if present, encodes the respective pixel group into a 2 -byte long codeword; (iii) if the respective pixel group has four pixels, the first horizontal difference encoding mode encodes the respective pixel group into a 3-byte long codeword; and (iv) if the respective pixel group has four pixels, the second horizontal difference encoding mode, if present, encodes the respective pixel group into a 4-byte long codeword.

[0059] Thus, the encoding / decoding throughput and / or compression ratio may be improved.

[0060] By encoding the current pixel group into a longer codeword more information bits can be used for encoding the values of the current pixel group into the codeword. If more information bits are available in a codeword of a difference encoding mode, the corresponding range of the one or more ranges can be extended. Thus, more pixel groups of the set of pixel groups can be encoded with a particular horizontal difference encoding mode.

[0061] In a further implementation form of the first aspect, the one or more horizontal difference encoding modes further comprise a third horizontal difference encoding mode.

[0062] In a further implementation form of the first aspect, the one or more horizontal difference encoding modes further comprise a third horizontal difference encoding mode, and, if a pixel group has four pixels, the third horizontal difference encoding mode encodes the respective pixel group into a 2-byte long codeword.

[0063] In a further implementation form of the first aspect, the one or more difference encoding modes comprise a vertical difference encoding mode, which comprises: sequentially calculating for each pixel of the respective pixel group a multi-order vertical difference value of the pixel by using a multi-order difference function, the value of the pixel, and the values of two or more other pixels that are in sequence directly adjacent to the pixel, wherein the two or more other pixels are included in the respective pixel group and / or the directly adjacent pixel group, and wherein the pixels of the respective pixel group and the directly adjacent pixel group are in the same column of the plurality of columns; and if the calculated multi-order vertical difference values, for example, the determined differences, are within a range or one or more corresponding ranges of a set of ranges, encoding the values of the pixels of the respective pixel group by using the calculated multi-order vertical difference values.

[0064] The determined differences for the vertical difference encoding mode may be determined based on calculating at least some multi-order vertical difference values of said multi-order vertical difference values. For example, the determined differences may comprise or be said multi-order vertical difference values.

[0065] For example, the vertical difference encoding mode may comprise the encoding mode OP_UP.

[0066] In a further implementation form of the first aspect, the vertical difference encoding mode encodes the current pixel group into a L-byte long codeword, wherein L is a positive integer.

[0067] In a further implementation form of the first aspect, if the respective pixel group has two pixels, the vertical difference encoding mode encodes the respective pixel group into a l-byte long codeword, and / or wherein, if the respective pixel group has four pixels, the vertical difference encoding mode encodes the respective pixel group into a 2-byte long codeword.

[0068] Thus, the encoding / decoding throughput and / or compression ratio may be improved.

[0069] By encoding the current pixel group into a longer codeword more information bits can be used for encoding the values of the current pixel group into the codeword. If more information bits are available in a codeword of a difference encoding mode, the respective range of the one or more ranges can be extended. Thus, more pixel groups of the set of pixel groups can be encoded with a particular vertical difference encoding mode.

[0070] In a further implementation form of the first aspect, the multi-order difference function is a second-order difference function, wherein the two or more other pixels are two other pixels comprising a first other pixel that is directly adjacent to the pixel and a second other pixel that is directly adjacent to the first other pixel, and wherein the multi-order difference function comprises adding the value of the pixel, subtracting two times the value of the first other pixel, and adding the value of the second other pixel.

[0071] In a further implementation form of the first aspect, the multi-order difference function comprises subtracting, for each pixel of the respective pixel group, a respective offset median.

[0072] In a further implementation form of the first aspect, the jointly encoding is performed in at least a run length encoding mode.

[0073] The run length encoding mode may be based on adjacent pixel groups that have matching values.

[0074] In a further implementation form of the first aspect, the jointly encoding is performed in at least a run length encoding mode, which comprises: determining a sequence of pixel groups that are directly adjacent to each other and wherein the respective pixels of the adjacent pixel groups have matching values, and encoding the values of the pixels of the sequence of pixel groups by encoding at least the combined length of the sequence of the pixel groups.

[0075] For example, the run length encoding mode may comprise the encoding mode OP_RUN.

[0076] In a further implementation form of the first aspect, the jointly encoding is performed in at least a particular encoding mode, wherein a tag of codewords that are generated by the run length encoding mode, if present, is one bit larger than a tag of codewords that are generated by the particular encoding mode, and / or wherein a tag of codewords generated by the vertical difference encoding mode, if present, or the third horizontal difference encoding mode, if present, is one bit larger than the tag of codewords generated by the particular encoding mode.

[0077] For example, the particular encoding mode may be any one of the encoding modes mentioned above or another encoding mode.

[0078] In a further implementation form of the first aspect, the set of pixel groups comprises a first subset of pixel groups and a second subset of pixel groups, wherein each pixel group of the first subset consists of a first number of pixels, and each pixel group of the second subset consists of a second number of pixels, and wherein the second number of pixels is different from the first number of pixels.

[0079] The size of pixel groups may be flexibly assigned for different pixel groups. Thus, the compression ratio and / or the encoding / decoding throughput may be flexibly configured. For example, pixel groups that comprise more pixels lead to an increased compression ratio or more compression.

[0080] In a further implementation form of the first aspect, the CGHDP further comprises another set of pixels, and wherein the method comprises: compressing the CGHDP into a compressed CGHDP having a predefined size by encoding the set of pixel groups into the set of codewords, wherein the compressed CGHDP comprises the set of codewords and the uncompressed value of each pixel of the another set of pixels. For example, the another set of pixels may not be encoded. Thus, the compressed CGHDP may comprise the values of the another set of pixels in an unencoded form.

[0081] Thus, the compression ratio and / or the encoding / decoding throughput may be flexibly configured.

[0082] For example, the compressed CGHDP may be the encoded CGHDP.

[0083] The CGHDP may comprise the first set of pixels and the second set of pixels.

[0084] Each pixel of the second set of pixels may have a value and be associated with a channel, wherein the pixels of the second set of pixels may be arranged in another plurality of rows and another plurality of columns. For example, each pixel of the second set of pixels may have an 8-bit value.

[0085] In a further implementation form of the first aspect, each column of the plurality of columns is associated to be parallel to a beam steering axis of a beam steering array of the WSS, wherein each row of the plurality of rows is associated to be parallel to a diffraction grating dispersion axis of a diffraction grating of the WSS.

[0086] For example, the CGHDP may comprise, for example, consist of, one axis formed by the demultiplexing of a WDM input signal to a plurality of carrier wavelengths, and a second axis associated with the beam steering axis of an input(s) to output(s) optical multiplexer with respect to each carrier wavelength.

[0087] In a further implementation form of the first aspect, the respective value of each pixel of the set of pixels is represented by 8- bits.

[0088] The value of each pixel of the set of pixels may represent the information of the CGHPD in said pixel.

[0089] The method of the first aspect may have implementation forms that correspond to the implementation forms of the optical system of the fourth aspect. The method of the first aspect and its implementation forms achieve the advantages and effects described below for the optical system of the fourth aspect and its respective implementation forms.

[0090] A second aspect of this disclosure provides a computer program comprising a program code for performing, when the program code is executed on a computer, the method according to the first aspect or any of its implementation forms.

[0091] A third aspect of this disclosure provides a computer-readable medium comprising instructions which, when executed by a computer, cause the computer to carry out the method according to the first aspect or any of its implementation forms.

[0092] A fourth aspect of this disclosure provides an optical system comprising an encoding device, wherein the encoding device is configured to obtain a computer-generated holography diffraction pattern, CGHDP, comprising a set of pixels, wherein each pixel is associated with a channel and has a value, wherein the pixels of the set of pixels are arranged in a plurality of rows and a plurality of columns, and wherein the encoding device comprises a first processor configured to: assign each pixel in the set of pixels to a pixel group of a set of pixel groups, each pixel group respectively consisting of or comprising a plurality of pixels that are in the same column of the plurality of columns and in directly adjacent rows of the plurality of rows; and encode the set of pixel groups into a set of codewords, wherein each pixel group is encoded into one codeword of the set of codewords by jointly encoding at least the values of the plurality of pixels of said pixel group.

[0093] For example, the set of codewords may be included in and / or form an encoded CGHDP. The optical system may be for a WSS.

[0094] The system of the fourth aspect may have implementation forms that correspond to the implementation forms of the method of the first aspect. The system of the fourth aspect and its implementation forms achieve the advantages and effects described above for the method of the first aspect and its respective implementation forms.

[0095] In an implementation form of the fourth aspect, the optical system further comprises a WSS, wherein the WSS comprises a diffraction grating, a beam steering array, and a second processor, wherein the WSS is configured to obtain the set of codewords from the encoding device, wherein the second processor is configured to decode the set of codewords to obtain the CGHDP, wherein the diffraction grating is configured to receive an input beam, diffract the input beam, and provide the diffracted input beam to the beam steering array, and wherein the beam steering array is configured to receive the diffracted input beam and modulate the diffracted input beam according to the CGHDP.

[0096] For example, the WSS may be configured to obtain the encoded CGHDP from the encoding device, wherein the second processor may be configured to decode the encoded CGHDP to obtain the CGHDP.

[0097] “Above“, „below“, “left”, and “right”, as used herein, are defined with respect to a „body-fixed“ reference frame / coordinate system, i.e. a reference frame that is fixed to the CGHDP and rotates with the latter in case the latter is rotated.

[0098] Further, in this disclosure, the phrase “vertical” may refer to a direction that is parallel to each of the plurality of columns.

[0099] Further, in this disclosure, the phrase “horizontal” may refer to a direction that is parallel to each of the plurality of rows.

[0100] Further, in this disclosure, the phrase “above” and “upper” may be used interchangeably. For example, a pixel or pixel group above another pixel or another pixel group may be considered to be an upper pixel or upper pixel group of another pixel or another pixel group.

[0101] In this disclosure, the term „encoding a pixel or pixel group” may refer to “compressing the pixel or pixel group”. Notably, it would be apparent to one skilled in the art that some encoding modes, for example, the OP_RG encoding mode, may not compress the values of the pixel or pixel group, for example, may have a compression ratio that is smaller than 1.

[0102] Further, in this disclosure, a first element, a second element, and a third element are considered to be different elements, if not explicitly mentioned otherwise.

[0103] It has to be noted that all devices, elements, units and means described in the disclosure could be implemented in the software or hardware elements or any kind of combination thereof. All steps which are performed by the various entities described in the disclosure as well as the functionalities described to be performed by the various entities are intended to mean that the respective entity is adapted to or configured to perform the respective steps and functionalities.

[0104] Even if, in the following description of specific embodiments, a specific functionality or step to be performed by external entities is not reflected in the description of a specific detailed element of that entity which performs that specific step or functionality, it should be clear for a skilled person that these methods and functionalities can be implemented in respective software or hardware elements, or any kind of combination thereof. BRIEF DESCRIPTION OF DRAWINGS

[0105] The above described aspects and implementation forms will be explained in the following description of specific embodiments in relation to the enclosed drawings, in which:

[0106] FIG. 1 shows an optical system according to this disclosure.

[0107] FIG. 2 shows an optical system according to this disclosure.

[0108] FIG. 3 shows a method according to this disclosure.

[0109] FIG. 4 shows an exemplary transfer function curve according to this disclosure.

[0110] FIG. 5 shows codewords of the QOI format.

[0111] FIG. 6 shows assigning every three adjacent rows of 1 -channel greyscale pixels of the plurality of rows to a respective 3-channel row comprising a plurality of 3-channel pixel groups according to this disclosure.

[0112] FIG. 7 shows assigning every two adjacent rows of 1 -channel greyscale pixels of the plurality of rows to a respective 2-channel row comprising a plurality of 2-channel pixel groups according to this disclosure.

[0113] FIG. 8 shows an array of adjacent pixels or pixel groups according to this disclosure.

[0114] FIG. 9 shows codewords of a 3-channel QOI approach and codewords of a modified 2-channel QOI approach according to this disclosure.

[0115] FIG. 10 shows an exemplary sub-hologram of a CGHDP according to this disclosure.

[0116] FIG. 11 shows exemplary calculations based on a multi-order difference function according to this disclosure.

[0117] FIG. 12 shows an exemplary codeword format for encoding multi-order differences according to this disclosure.

[0118] FIG. 13 shows an exemplary horizontal difference encoding mode according to this disclosure.

[0119] FIG. 14 shows an exemplary 3-channel QOI encoding format and an exemplary 2-channel Modified QOI encoding format according to this disclosure.

[0120] FIG. 15 shows encoding formats according to this disclosure.

[0121] FIG. 16 shows an example of encoding a current pixel based on a difference encoding mode according to this disclosure.

[0122] FIG. 17 shows exemplary first-in first-out (FIFO) buffering data being read from an SRAM (Framebuffer) according to this disclosure. FIG. 18 shows an exemplary encoding format for 4-channel encoding according to this disclosure.

[0123] FIG. 19 shows an exemplary encoding format for 4-channel encoding according to this disclosure.

[0124] FIG. 20 shows the exemplary compression of input data to a predefined size according to this disclosure.

[0125] FIG. 21 shows an exemplary encoding format for 4-channel encoding that includes an encoding mode for bypassing encode / decode according to this disclosure.

[0126] DETAILED DESCRIPTION OF EMBODIMENTS

[0127] FIG. 1 shows an optical system 200 according to this disclosure. The optical system 200 comprises an encoding device 201. The encoding device 201 comprises a first processor 206.

[0128] The encoding device 201 is configured to obtain a CGHDP 103 comprising a set of pixels 104, wherein each pixel 105 is associated with a channel and has a value, wherein the pixels 105 of the set of pixels 104 are arranged in a plurality of rows 106 and a plurality of columns 107.

[0129] The first processor 206 is configured to assign each pixel 105 in the set of pixels 104 to a pixel group 108 of a set of pixel groups 108, each pixel group 108 respectively consisting of or comprising a plurality of pixels 105 that are in the same column of the plurality of columns 107 and in directly adjacent rows of the plurality of rows 106; and encode the set of pixel groups 108 into a set of codewords 207, wherein each pixel group 108 is encoded into one codeword of the set of codewords 207 by jointly encoding at least the values of the plurality of pixels 105 of said pixel group 108. FIG. 1 exemplary shows four pixels 105 included in the CGHDP 103 being assigned to two different pixel groups 108 by the first processor 206.

[0130] FIG. 2. shows an optical system 200 according to this disclosure. FIG. 2 shows the optical system 200 shown in FIG.l, which may further comprise a WSS 202. The WSS 202 may comprise a diffraction grating 203, a beam steering array 204, and a second processor 205.

[0131] The WSS 202 may be configured to obtain the set of codewords 207 from the encoding device 201, wherein the second processor 205 may be configured to decode the set of codewords 207 to obtain the CGHDP 103.

[0132] The diffraction grating 203 may be configured to receive an input beam 208, diffract the input beam 208, and provide the diffracted input beam 209 to the beam steering array 204. The beam steering array 204 may be configured to receive the diffracted input beam 209 and modulate the diffracted input beam 209 according to the CGHDP 103. The diffracted input beam 209 being modulated according to the CGHDP 103 is indicated in FIG. 2 by the dashed line that represents the CGHDP 103 and points towards the diffracted input beam 209 in the beam steering array 204.

[0133] The encoding device 201 and the WSS 202 may be arranged together or separately from each other. The encoding device 201 and the WSS 202 may or may not be electronically connected to provide the set of codewords 207 from the encoding device 201 to the WSS 202.

[0134] The diffraction grating 203 may be positioned within the WSS 202 to receive the input beam 209. The diffraction grating 203 may separate the input beam 209 into various wavelength components. The beam steering array 204 may comprise multiple beam steering elements that may individually or collectively adjust the direction of the diffracted input beam 209. The modulation of the diffracted input beam 209 may include altering the beam's phase, amplitude, or direction to achieve the desired output signal routing or conditioning.

[0135] The beam steering array 204 may be optically connected to the diffraction grating 203 to provide the diffracted input beam 209 from the diffraction grating 203 to the beam steering array 204.

[0136] The second processor 205 may reverse the encoding of the CGHDP 103 that was performed with the first processor 206 in the encoding device 201. The second processor 205 may ensure that the modulation of the diffracted input beam by the beam steering array meets specific operational requirements of the optical system. Thus, the system's efficiency and functionality in optical signal routing may be enhanced.

[0137] An encoding algorithm for encoding the CGHDP may be described using a Hardware Description Language, for example, Verilog Hardware Description Language (VerilogHDL), or may take the form of high-level synthesis using, for example, at least one of C, C++, Python programming languages.

[0138] FIG. 3 shows a method 100 according to this disclosure. The method 100 is a method 100 of encoding a CGHDP 103 for a WSS 202, wherein the CGHDP 103 comprises a set of pixels 104, wherein each pixel 105 has a value and is associated with a channel, wherein the pixels 105 of the set of pixels 104 are arranged in a plurality of rows 106 and a plurality of columns 107. The encoding device 201 may perform the method 100 shown in FIG. 3 by using the first processor 206.

[0139] The method 100 comprises a step 101 of assigning each pixel 105 in the set of pixels 104 to a pixel group 108 of a set of pixel groups 108, each pixel group 108 respectively consisting of or comprising a plurality of pixels 105 that are in the same column of the plurality of columns 107 and in directly adjacent rows of the plurality of rows 106. Further, the method 100 comprises a step 102 of encoding the set of pixel groups 108 into a set of codewords 207, wherein each pixel group 108 is encoded into one codeword of the set of codewords 207 by jointly encoding at least the values of the plurality of pixels 105 of said pixel group 108.

[0140] Embodiments of this disclosure can provide improved lossless compression, for example, given the constrained degrees of freedom exhibited by the nature of a hologram, for example a WSS hologram, and its likely compressibility.

[0141] Additionally or alternatively, embodiments of this disclosure may reduce the reliance on a SDRAM memory sub-system, and reduce the IO bandwidth interfacing the LCoS backplane within a sealed module, as the digital LCoS migrates to a smaller process node.

[0142] Some embodiments may be optimized for a contextual solution that is designed for sequential data stream (i.e. raster scan) with inductive inferencing (i.e. pixel data prediction) and may not need to be restricted to encode / decode operations with a pixel macro block (i.e. data processing granularity).

[0143] In the following embodiments, for convenience, a pseudo pixel 108 or a pixel group 108 may be represented as a chromatic pixel 108 of colour images (for e.g. RG RGB RGBY etc.). However in actuality, a pixel group 108 may or may not represent a chromatic pixel 108 of an image. A value of a pixel 105 may be represented as a greyscale value. However in actuality, the value of the pixel 105 may or may not represent a greyscale value of an image. The encoding / decoding algorithm may assign adjacent rows of 1 -channel greyscale pixels (of CGH) to be encoded as multiplechannel pseudo pixels 108 or pixel groups 108.

[0144] Run-length encoding (RLE) and / or a dictionary coder may be used (Indexing, i.e., an encoder / decoder maintains a referencing data structure for indexed substitution).

[0145] Pixel data may be expressed in spatial context, registering differences in adjacent pixels 105 instead of a degree of depth (e.g. an 8bit greyscale value).

[0146] The method 100 of encoding may be tuned to the nature of WSS 202 CGH images, for example, the orthogonal basis of demultiplexed WDM channels and the IO ports switching axis.

[0147] A diffraction grating may be or be represented in the form of periodic blazed gratings.

[0148] Operation code words (OpCode) may be optimized and, for example, implemented as having less than or equal to 1-byte length for encode / decode operations. For example, a sequence of RGB pseudo pixels 108, with each ‘colour’ having 8bit depth, and each pixel 105 having 3byte (24bit), may be compressed to a single byte length if it were encoded as a run length. Each OpCode may have a defined CR (N’ / M’) in terms of unit byte length, N’ input bytes, M’ output bytes.

[0149] The method 100 of encoding may provide ease of implementation in terms of logic operation.

[0150] The method 100 may provide improved image compression ratios on CGHs compared to QOI and other image compression standards, such as JPEG-LS, JPEG-2000, JPEG, and may demonstrate improved or comparable compression ratio compared to PNG.

[0151] The method 100 may be suitable for lossless compression and decompression, and may be associated with a lower complexity of implementation, providing ease of encoding and decoding compared to other lossless compression formats. Further, the required storage / buffer size can be significantly smaller.

[0152] For functional emphasis, the “images” being processed for lossless compression may be presented in greyscale (of a degree of depth, defined in the form of a numerical digit) represented by an Electrical-to-Optical transfer function curve, in relationship to exercise control of phase shift in radians (or temporal delay) of the wavefront of an incident light source.

[0153] FIG. 4 shows an exemplary transfer function curve according to this disclosure. A CGHDP 103 may be encoded based upon a transfer curve, for example, the transfer curve shown in FIG. 4.

[0154] FIG. 4 shows a transfer function representing the mapping of phase values, for example, within approximately 2K radians, to a channel with a range of pixel values, for example, with approximately less than 9-bit depth. The pixel values may be referred to as light intensity levels or greyscale levels.

[0155] The method 100 may be applied, for example, in systems based on LCoSs or Micro-Electro-Mechanical System (MEMS) piston mirror arrays that are used as Spatial Light Modulators (SLM). A MEMS piston mirror pixel relies on generating an analog electric field voltage to displace a mirror element (with respect to the wavelength of light), as such imposes a driving voltage span that does not readily suit the device scaling of an integrated circuit fabrication.

[0156] A conventional reconfigurable WDM optical switching systems comprises a set of arrays of optical beam IO connections, with the optical input to receive a WDM input optical signal.

[0157] For example, a diffractive element (e.g. a GRISM) may demultiplex said input to disperse it spatially along a 1-dimension (ID) axis (horizontal axis), in alignment to the horizontal axis of the LCoS 2-dimensional (2D) active area. A vertical axis orthogonal to the ID axis may comprise the reconfigurable sub-holograms serving defined spectral bands. Thus, a full frame hologram can be obtained, presented by the LCoS 2D array of quantized pixels 105, with the sub-hologram defined by alignment, into sub-sectioned rows and columns, and exhibiting a constrained spatial structure.

[0158] An analogy for comparison may be a continuous time varying signal which is bandwidth limited but may nevertheless be completely represented by a finite number of sequences of discrete samples, capturing all its information (e.g. a Pulse-code modulation signal). A hologram may be considered spatially and structurally limited by degrees of freedom, which infers redundancies in its content.

[0159] Standards setting bodies, for example, the International Telecommunication Union Telecommunication Standardization Sector (ITU-T) (see ITU-T G.694.1), outline the spectral content of optical transmission mediums for WDM, defining the frequency grid (its nominal central wavelength) and the bandwidth spacing for an associated band of spectrum.

[0160] The Quite OK Image (QOI) format is a lossless compression format for images of 8bit colour depth with RGB (each pixel consisting of 8bit RGB values) or RGBA colour channels that encodes into byte length.

[0161] Pixels can be encoded with the QOI format in a raster scan based on:

[0162] • A run length encoding of previous pixels (Identifier: QOI_OP_RUN).

[0163] • An index into an array of previously seen pixels, maintained with a hash function, f(R,G,B) = index position (QOI_OP_INDEX).

[0164] • A difference to a previous pixel value in R, G and B (QOI_OP_DIFF, QOI_OP_LUMA) (spatial context).

[0165] • Full RGB or RGBA values (QOI_OP_RGB)

[0166] The Compression Ratio (CR) is defined as CR = Input / Output, wherein larger values, e.g. >1, represent more compression.

[0167] The encoding efficiency of an RGB888 pixel based on the QOI format may be determined according to the following: QOI_OP_RUN: N*3 Byte input, where N’ > 1 to < 62 repeating pixels 1 Byte output (CR = N’*3) QOI_OP_RGB: 3 Bytes input 4 Bytes output (wherein expansion occurs, CR = 0.75) QOI_OP_INDEX: 3 Byte input, where addressable index size = 2" -> I Bytes output (CR = 3)

[0168] QOI_OP_DIFF: 3 Byte input 1 Bytes output (CR = 3)

[0169] QOI_OP_LUMA: 3 Bytes input 2 Bytes output (CR = 1.5)

[0170] FIG. 5 shows codewords of the QOI format.

[0171] For natural images, the QOI format provides a good balance between the compression ratio and the ease of hardware implementation. QOI does not support greyscale images as it is encoded based on 8Bit RGB channel values of a pixel. To implement QOI for CGHDP 103, for example, every three adjacent rows of 1-channel greyscale pixels 105 may be assigned to be encoded as a 3-channel pseudo pixel 108, wherein each 3-channel pseudo pixel 108 forms a pixel group 108.

[0172] FIG. 6 shows assigning every three adjacent rows of 1-channel greyscale pixels 105 of the plurality of rows 106 to a respective 3-channel row comprising a plurality of 3-channel pixel groups 108 according to this disclosure.

[0173] For the number of rows that does not result in factor of 3, corresponding padding rows may be added to the CGHDP 103. Thereafter, the native QOI algorithm may be applied on the pseudo 3-channel image.

[0174] QOI and various lossless image compression format including PNG, JPEG-LS, JPEG-XR, JPEG-2000 were tested on target images or CGHDPs 103. Generally, PNG and QOI provided the best performance out of the above 5 compression methods 100, wherein QOI provides a simpler and faster algorithm.

[0175] In another example, a 2-channel approach may be used by combining every two adjacent rows of 1-byte pixels 105 to a respective 2-channel row comprising two or more pseudo 2-channel pixels 108.

[0176] FIG. 7 shows assigning every two adjacent rows of 1-channel greyscale pixels 105 of the plurality of rows 106 to a respective 2-channel row comprising a plurality of 2-channel pixel groups 108 according to this disclosure.

[0177] Generally, a multi-channel approach may be used by to generate two or more pseudo multi-channel pixels 108. Every N” adjacent rows of 1-channel greyscale pixels 105 may be assigned to a respective N”-channel row comprising a plurality of N”-channel pixel groups 108, wherein N” is an integer larger than 1.

[0178] In the following a CGHDP 103 is represented in greyscale format. Two adjacent rows may be translated to 2-channel rows comprising 2-channel “color” or pseudo pixels 108.

[0179] A modified 2-channel QOI may provide an improved encoding approach.

[0180] An improvement in compression ratio arises from a higher probability for a pseudo pixel 108 to be compressed in spatial context, for example, based on differences in values of adjacent pixels 105.

[0181] FIG. 8 shows an array of adjacent pixels 105 or pixel groups 108 according to this disclosure. In this example, the array may comprise a current pixel 105, for example, a pixel 105 that is currently encoded, an upper pixel 105 that is above the current pixel 105, a left pixel 105 that is left to the current pixel 105, and an upper left pixel 105 that is left to the upper pixel 105 and above the left pixel 105.

[0182] The upper pixel 105 and the current pixel 105 may be in a second column of the plurality of columns 107. The upper left pixel 105 and the left pixel 105 may be in a first column of the plurality of columns 107. The left pixel 105 and the current pixel 105 may be in a second row of the plurality of rows 106. The upper left pixel 105 and the upper pixel 105 may be in a first row of the plurality of rows 106. The first row and the second row may be directly adjacent. The first column and the second column may be directly adjacent.

[0183] Alternatively, the array may represent pixel groups 108. The array may comprise a current pixel group 108, for example, a pixel group 108 that is currently encoded, an upper pixel group 108 that is above the current pixel group 108, a left pixel group 108 that is left to the current pixel group 108, and an upper left pixel group 108 that is left to the upper pixel group 108 and above the left pixel group 108.

[0184] The upper pixel group 108 and the current pixel group 108 may be in a second column of the plurality of columns 107. The upper left pixel group 108 and the left pixel group 108 may be in a first column of the plurality of columns 107. The left pixel group 108 and the current pixel group 108 may be in a second-row group. The upper left pixel group 108 and the upper pixel group 108 may be in a first-row group. The first-row group and the second-row group may be directly adjacent. The first column and the second column may be directly adjacent.

[0185] In this disclosure, the term “above” and “below” may refer to opposite directions along any particular column. In this disclosure, the term “left” and “right” may refer to opposite directions along any particular row.

[0186] For example, if P(E) is the probability of an event that the difference in value of two adjacent pixels 105 is within an integer interval [-2..1], then for the 3-channel QOI approach, the probability of this event for a pseudo pixel 108 encoded in QOI_OP_DIFF is P(E)3.

[0187] However, for the 2-channel QOI approach, the range of the event may be expanded to, for example, [-4..3], Thus, the probability of an event that the difference in value of two adjacent pixels 105 is within the expanded range would be 2P(E), and 4P(E)2for a pseudo pixel 108 encoded with the modified 2-channel QOI_OP_DIFF according to this disclosure, which generally is significantly higher.

[0188] For a LCoS backplane to decode a CGH pixel 105 in raster scan order, when using pseudo 3-channel QOI encoding, would result in three rows being decoded at the same time. Thus, it would be required to buffer 3 rows of pixel 105 values. By reducing the 3-channel QOI formatting to 2-channel, the size of the buffer is reduced by 1 / 3.

[0189] For the modified 2-channel QOI, the QOI_OP_RUN and QOI_OP_INDEX may be retained from the 3-channel QOI. Further, QOI_OP_DIFF may be used with an expanded range, for example, [-4..3], Since QOI_OP_LUMA is not applicable, another code word may be used instead.

[0190] FIG. 9 shows codewords of a 3-channel QOI approach and codewords of a modified 2-channel QOI approach according to this disclosure.

[0191] A blazed grating is a type of diffraction grating 203 optimized for maximum efficiency in a given diffraction order, such grating exhibit periodicity with tilted line structures forming a blazed angle which determine the direction where the maxima is achieved.

[0192] A CGH blazed grating may exhibit the following characteristic:

[0193] • Periodicity (in accordance to beam steering angle for relay optics)

[0194] • Varying degree of slope angle (in accordance to adjustment of optical signal strength)

[0195] A person having ordinary skill in the art would appreciate that various compensation measures may be included for imperfections of the angle of, for example, a blazed grating, generated using a LCoS. For example, imperfections may be based on pixel 105 crosstalk due to the influence of the electric field of adjacent pixels 105 upon each other. A SLM may display or generate a holographic pattern to manipulate light according to a desired transmission function with a phase only modulation (of a unit circle in a complex plane) to a full amplitude and phase response.

[0196] Another code word may encode the spatial context between a current pixel 105 and the pixel 105 above (U and P).

[0197] FIG. 10 shows an exemplary sub-hologram of a CGHDP 103 according to this disclosure.

[0198] Unlike a horizontal difference (between L and P), the variability of the blazed angle is a parameter of control that may be required for WSS 202 operation. However, a property of an ideal blazed grating is that its geometry, for example, the tilted line, tends to be straight, thus its second order derivative likely lies around zero. For example, the second order derivative may be equal to zero if linear or otherwise a small value, if compensated in practice.

[0199] In the following an array x is defined as x = [r’, g’, r, g], where r and g are the 2 channel values for the current pseudo pixel 108, r’ and g’ are the 2 channel values for the pseudo pixel 108 ‘Upper’. A multi-order difference function may be defined, for example, a second order difference function Diff(i), wherein:

[0200] Diff(i) = x[i+2] - 2x[i+l] + x[i] for i = [0,1]

[0201] Diff(0) = r - 2g’ + r’ for i = 0

[0202] Diff(l ) = g - 2r + g’ for i = 1

[0203] The 2 values of Diff(i) may be stored, and if r’ and g’ is known, for example, by being previously decoded, r and g can be recovered. The above equations may be equivalently represented in a matrix form, wherein Diff[i] for i= [0,1] are denoted as dr, dg.

[0204] FIG. 11 shows exemplary calculations based on a multi-order difference function according to this disclosure.

[0205] Additionally, a statistic weighting may be extracted from the CGH to provide for an optimal offset median (m) for dr and dg.

[0206] Thus, encoding and decoding may be determined as follows:

[0207] Encode: Similar to the 2-channel OP_SDIFF, 3 bits each may be used to encode the multi-order vertical differences, for example, second order vertical differences, that are in the range [-4..3], By replacing the original OQI_OP_LUMA with this encoding mode, the compression ratio of the encoding method 100 can be improved.

[0208] FIG. 12 shows an exemplary codeword format for encoding multi-order differences according to this disclosure.

[0209] However, based on the heatmap of the CHG images, a limiting factor of the encoding method 100 may be the number of pixels 105 that are encoded with the OP_RG encoding mode, which is a size expanding mode. This primarily appears at the boundaries between the WSS 202 channels and the periodic steps in the blazed gratings, due to a large difference between the pixel 105 values, and it cannot be encoded using any one of the other encoding modes.

[0210] To reduce the ratio of pixels 105 or pseudo pixels 108 that are encoded with the size expanding mode (OP_RG), a new horizontal difference mode may be used, for example, to replace the QOI_OP_LUMA encoding mode. For example, a new horizontal difference mode may encode a wider range, for example, a range of [-64, 63], which is 16 times wider than the range in OP_SDIFF. The codeword of the new horizontal difference mode may be denoted OP_WDIFF.

[0211] FIG. 13 shows an exemplary horizontal difference encoding mode according to this disclosure.

[0212] Although the horizontal difference encoding mode OP_WDIFF may not be a compressing mode since it encodes a 2-byte pixel values to a 2-byte codeword (CR=1), it can significantly decrease the number of pixels encoded in the OP_RG encoding mode.

[0213] FIG. 14 shows an exemplary 3-channel QOI encoding format and an exemplary 2-channel Modified QOI encoding format according to this disclosure.

[0214] A 2-channel Modified QOI as shown in FIG. 14 may demonstrate a higher CR then a naive 3-channel QOI.

[0215] However, this scheme does not include the vertical spatial encoding OP_UP discussed above. An encoding method 100, for example, the 2-channel Modified QOI, may further include the OP_UP encoding mode.

[0216] For example, the average run-length may be approximately 4, and the majority of the run-length may be less than 10.

[0217] Based on a statistically weighted approach, the run-length bit representation may be truncated or reduced, for example, reduced from 6 to 5.

[0218] The truncation will affect CR of images with very long run-length, but it may have less effect on the high CR these images already produced. However, the size of the framebuffer needed to store the input byte-stream is primarily affected by worst case scenarios.

[0219] An additional bit may be available for a new mode tag due to the truncation of the run-length bit representation. Thus, an additional encoding mode may be accommodated for the encoding method 100, and the vertical difference mode OP_UP can be included.

[0220] Adding this additional mode, another modified encoding method 100 may be obtained, which may be an optimized encoding method 100 for, for example, 2 rows to 2 channels encoding. FIG. 15 shows encoding formats according to this disclosure.

[0221] FIG. 15a shows a conventional QOI encoding format for 3-channel encoding.

[0222] FIG. 15b shows a modified encoding format for 2-channel encoding.

[0223] FIG. 15c shows another modified encoding format for 2-channel encoding including the OP_UP encoding mode and the OP_WDIFF encoding mode.

[0224] FIG. 16 shows an example of encoding a current pixel 105 based on a difference encoding mode according to this disclosure. For example, FIG. 16 shows which adjacent pixels 105 of a current pixel 105 may be used when encoding the current pixel 105 based on the difference encoding mode.

[0225] For example, encoding a current pixel group 108 with a vertical difference encoding mode may be based on the pixels 105 of the current pixel group 108 and the pixels 105 of an upper pixel group 108.

[0226] For example, encoding a current pixel 105 of a current pixel group 108 with a horizontal difference encoding mode may be based on another pixel 105 in a left pixel group 108, wherein said another pixel 105 is directly adjacent to the current pixel 105 and in the same row of the plurality of rows 106 as the current pixel 105.

[0227] The conventional QOI format is designed for 8bit (byte) processing such that the data is byte aligned.

[0228] For modified QOI formats, for example, the modified 2-Channel QOI and the another modified 2-Channel QOI, only the identifier byte may be aligned and the data fields (payload) may have overlapping byte widths due to the format of the codewords.

[0229] FIG. 17 shows exemplary first-in first-out (FIFO) buffering data being read from an SRAM (Framebuffer), along with, e.g., a sequence of encoded OpCodes according to this disclosure. FIG. 17 represents the SRAM (static random access memory) read with Mem_addr (memory) address and Mem_data (memory data).

[0230] Alternatively or additionally, a 4-channel encoding approach may be used to generate two or more pseudo 4-channel pixels 108. Every four adjacent rows of 1-channel greyscale pixels 105 may be assigned to a respective 4-channel row comprising a plurality of 4-channel pixel groups 108.

[0231] For convenience, in this disclosure the 4-channels are referred to as Red, Green, Blue, and Yellow (RGBY).

[0232] The decoding of a codeword for the 2-channel format and 4-channel format can be performed at the same rate (see FIFO operation). Therefore, an increase from 2-channel encoding to a 4-channel encoding would double the pixel data throughput (when accounting for appropriate data processing bus width and accommodation of buffering).

[0233] In 4-channel encoding formats, OP_RUN, OP_INDEX and OP_RGBY may provide rudimentary encoding. The vertical and horizontal modes may be retained. However, there may be overlaps between said modes, for example, pixels that can be encoded with either mode. The horizontal differences may be larger than the vertical differences. Thus, a 4-byte codeword may be assigned for the OP_WDIFF encoding mode, and a 3-byte codeword may be assigned for the QOI_OP_SDIFF encoding mode, and a 2 -byte codeword may be assigned for the QOI_OP_UP encoding mode.

[0234] The (data field) range may not need to be evenly divided. There may be some channels with an encoding range that is larger than others.

[0235] FIG. 18 shows an exemplary encoding format for 4-channel encoding according to this disclosure.

[0236] Alternatively, the vertical difference encoding mode OP_UP may be replaced. The vertical difference encoding mode may have memory overhead, for example, based on Upper pixel storage, as a constraint. The OP_UP encoding mode may be replaced with an OP_DIFF encoding mode.

[0237] FIG. 19 shows an exemplary encoding format for 4-channel encoding according to this disclosure.

[0238] An input image or CGHDP 103 may be compressed to a predetermined size.

[0239] Assuming an input image with a normalized size (= 1 ). An image partition x of the input image may be compressed or encoded and a partition y of the input image may not be compressed. Thus, x + y = 1, where y = 1 -x.

[0240] A compression factor for a predefined resulting image size that is desired to be obtained may be denoted as C. A series of different images may be compressed to the same size by using different compression factors. Thus, a fixed storage size per image frame may be defined. Additionally or alternatively, encode / decode operations may be bypassed to gain power efficiency.

[0241] For example, a compression factor may be: C = (x ’ + y) / (x + y), corresponding to a compression Ratio of 1 / C. The compression factor for partition x may be denoted as C ’, wherein C ’ = x 7x, which may be derived in real-time during the encoding process. Thus. .14" + y = C and.v = (C-1) / (C’-1).

[0242] FIG. 20 shows the exemplary compression of input data to a predefined size according to this disclosure.

[0243] For example, the a compressed CGHDP may be generated comprising the set of codewords 207 and an uncompressed portion.

[0244] An additional OpCode (OP_BYPASS) can be included to bypass encode / decode and pixel 105 data reverts to raw values.

[0245] FIG. 21 shows an exemplary encoding format for 4-channel encoding that includes an encoding mode for bypassing encode / decode according to this disclosure.

[0246] The first processor 206 and / or the second processor 205 may be implemented in various ways: it may be designed as Register- Transfer Level (RTL) hardware, specifying the data flow and control logic in digital circuits, or it may be realized through compiled code, designed to run on various microarchitectures.

[0247] Generally, the second processor 205 may be configured to perform, conduct or initiate the various operations of the WSS 202 described herein. The second processor 205 may comprise hardware and / or may be controlled by software. The hardware may comprise analog circuitry or digital circuitry, or both analog and digital circuitry. The digital circuitry may comprise components such as application-specific integrated circuits (ASICs), field-programmable arrays (FPGAs), digital signal processors (DSPs), or multi-purpose processors. The WSS 202 may further comprise memory circuitry, which stores one or more instruction(s) that can be executed by the second processor 205, in particular under control of the software. For instance, the memory circuitry may comprise a non-transitory storage medium storing executable software code which, when executed by the second processor 205, causes the various operations of the WSS 202 to be performed. In one embodiment, the WSS 202 may comprises one or more second processors 205 and a non-transitory memory connected to the one or more second processors 205. The non-transitory memory may carry executable program code which, when executed by the one or more second processors 205, causes the WSS 202 to perform, conduct or initiate the operations or methods 100 described herein.

[0248] Generally, the first processor 206 may be configured to perform, conduct or initiate the various operations of the encoding device 201 described herein. The first processor 206 may comprise hardware and / or may be controlled by software. The hardware may comprise analog circuitry or digital circuitry, or both analog and digital circuitry. The digital circuitry may comprise components such as application-specific integrated circuits (ASICs), field-programmable arrays (FPGAs), digital signal processors (DSPs), or multi-purpose processors. The encoding device 201 may further comprise memory circuitry, which stores one or more instruction(s) that can be executed by the first processor 206, in particular under control of the software. For instance, the memory circuitry may comprise a non-transitory storage medium storing executable software code which, when executed by the first processor 206, causes the various operations of the encoding device 201 to be performed. In one embodiment, the encoding device 201 may comprises one or more first processors 206 and a non-transitory memory connected to the one or more first processors 206. The non-transitory memory may carry executable program code which, when executed by the one or more first processors 206, causes the encoding device 201 to perform, conduct or initiate the operations or methods 100 described herein.

[0249] The disclosure has been described in conjunction with various embodiments as examples as well as implementations. However, other variations can be understood and effected by those persons skilled in the art and practicing the claimed matter, from the studies of the drawings, this disclosure and the independent claims. In the claims as well as in the description the word “comprising” does not exclude other elements or steps and the indefinite article “a” or “an” does not exclude a plurality. A single element or other unit may fulfill the functions of several entities or items recited in the claims. The mere fact that certain measures are recited in the mutual different dependent claims does not indicate that a combination of these measures cannot be used in an advantageous implementation.

Claims

CLAIMS1. A method (100) of encoding a computer generated holography diffraction pattern, CGHDP (103), for a wavelength selective switch, WSS (202), wherein the CGHDP (103) comprises a set of pixels (104), wherein each pixel (105) has a value and is associated with a channel, wherein the pixels (105) of the set of pixels (104) are arranged in a plurality of rows (106) and a plurality of columns (107), and wherein the method (100) comprises: assigning (101) each pixel (105) in the set of pixels (104) to a pixel group (108) of a set of pixel groups (108), each pixel group (108) respectively comprising a plurality of pixels (105) that are in the same column of the plurality of columns (107) and in directly adjacent rows of the plurality of rows (106), and encoding (102) the set of pixel groups (108) into a set of codewords (207), wherein each pixel group (108) is encoded into one codeword of the set of codewords (207) by jointly encoding at least the values of the plurality of pixels (105) of said pixel group (108).

2. The method (100) according to claim 1, wherein at least some pixel groups (108) of the set of pixel groups (108) respectively consist of an even number of pixels (105).

3. The method (100) according to any one of the preceding claims, wherein the jointly encoding is performed in at least one or more difference encoding modes that respectively comprise: determining one or more differences between the values of the plurality of pixels (105) of a respective pixel group (108) and the values of the pixels (105) of a directly adjacent pixel group (108), and if the determined one or more differences are within a range of a set of ranges, encoding the values of the plurality of pixels (105) of the respective pixel group (108) by using the determined differences.

4. The method (100) according to claim 3, wherein the one or more difference encoding modes comprise one or more horizontal difference encoding modes, wherein the one or more horizontal difference encoding modes respectively comprise: determining, for each pixel (105) of a respective pixel group (108), a difference between said pixel (105) and the value of a pixel (105) that is in the same row and in a directly adjacent pixel group (108), and if the determined differences are within a range of a set of ranges, encoding the values of the pixels (105) of the respective pixel group (108) by using the determined differences.

5. The method (100) according to claim 4, wherein the one or more horizontal difference encoding modes comprise a first horizontal difference encoding mode and / or a second horizontal difference encoding mode,wherein the first horizontal difference encoding mode encodes the respective pixel group (108) into a N-byte long codeword, wherein N is a positive integer, and / or wherein the second horizontal difference encoding mode encodes the respective pixel group (108) into a M-byte long codeword, wherein M is a positive integer, wherein M is larger than N.

6. The method (100) according to any one of the claims 3 to 5, wherein the one or more difference encoding modes comprise a vertical difference encoding mode, which comprises: sequentially calculating for each pixel (105) of the respective pixel group (108) a multi-order vertical difference value of the pixel (105) by using a multi-order difference function, the value of the pixel (105), and the values of two or more other pixels (105) that are in sequence directly adjacent to the pixel (105), wherein the two or more other pixels (105) are included in the respective pixel group (108) and / or the directly adjacent pixel group (108), and wherein the pixels (105) of the respective pixel group (108) and the directly adjacent pixel group (108) are in the same column of the plurality of columns (107); and, if the calculated multi-order vertical difference values are within a range of a set of ranges, encoding the values of the pixels (105) of the respective pixel group (108) by using the calculated multi-order vertical difference values.

7. The method (100) according to claim 6, wherein, if the respective pixel group (108) has two pixels (105), the vertical difference encoding mode encodes the respective pixel group (108) into a 1-byte long codeword, and / or wherein, if the respective pixel group (108) has four pixels (105), the vertical difference encoding mode encodes the respective pixel group (108) into a 2 -byte long codeword.

8. The method (100) according to claim 6 or 7, wherein the multi-order difference function is a second-order difference function, wherein the two or more other pixels (105) are two other pixels (105) comprising a first other pixel (105) that is directly adjacent to the pixel (105) and a second other pixel (105) that is directly adjacent to the first other pixel (105), and wherein the multi-order difference function comprises adding the value of the pixel (105), subtracting two times the value of the first other pixel (105), and adding the value of the second other pixel (105).

9. The method (100) according to any one of the preceding claims, wherein the jointly encoding is performed in at least a run length encoding mode, which comprises: determining a sequence of pixel groups (108) that are directly adjacent to each other and wherein the respective pixels (105) of the adjacent pixel groups (108) have matching values, and encoding the values of the pixels (105) of the sequence of pixel groups (108) by encoding at least the combined length of the sequence of the pixel groups (108).

10. The method (100) according to any one of the claims 6 to 9, wherein the jointly encoding is performed in at least a particular encoding mode, wherein a tag of codewords that are generated by the run length encoding mode, if present, is one bit larger than a tag of codewords that are generated by the particular encoding mode, and / or wherein a tag of codewords generated by the vertical difference encoding mode, if present, or the third horizontal difference encoding mode, if present, is one bit larger than the tag of codewords generated by the particular encoding mode.

11. The method (100) according to any one of the preceding claims, wherein the set of pixel groups (108) comprises a first subset of pixel groups (108) and a second subset of pixel groups (108), wherein each pixel group (108) of the first subset consists of a first number of pixels (105), and each pixel group (108) of the second subset consists of a second number of pixels (105), and wherein the second number of pixels (105) is different from the first number of pixels (105).

12. The method (100) according to any one of the preceding claims, wherein the CGHDP (103) further comprises another set of pixels (104), and wherein the method (100) comprises: compressing the CGHDP (103) into a compressed CGHDP (103) having a predefined size by encoding the set of pixel groups (108) into the set of codewords (207), wherein the compressed CGHDP (103) comprises the set of codewords (207) and the uncompressed value of each pixel (105) of the another set of pixels (104).

13. A computer-readable medium comprising instructions which, when executed by a computer, cause the computer to carry out the method (100) according to any one of the claims 1 to 12.

14. An optical system (200) comprising an encoding device (201 ), wherein the encoding device (201) is configured to obtain a computer-generated holography diffraction pattern, CGHDP (103), comprising a set of pixels (104), wherein each pixel (105) is associated with a channel and has a value, wherein the pixels (105) of the set of pixels (104) are arranged in a plurality of rows (106) and a plurality of columns (107), and wherein the encoding device (201) comprises a first processor (206) configured to: assign each pixel (105) in the set of pixels (104) to a pixel group (108) of a set of pixel groups (108), each pixel group (108) respectively comprising a plurality of pixels (105) that are in the same column of the plurality of columns (107) and in directly adjacent rows of the plurality of rows (106); and encode the set of pixel groups (108) into a set of codewords (207), wherein each pixel group (108) is encoded into one codeword of the set of codewords (207) by jointly encoding at least the values of the plurality of pixels (105) of said pixel group (108).

15. The optical system (200) of claim 14 further comprising a wavelength selective switch, WSS (202), wherein the WSS (202) comprises a diffraction grating (203), a beam steering array (204), and a second processor (205), wherein the WSS (202) is configured to obtain the set of codewords (207) from the encoding device (201), wherein the second processor (205) is configured to decode the set of codewords (207) to obtain the CGHDP (103), wherein the diffraction grating (203) is configured to receive an input beam (208), diffract the input beam (208), and provide the diffracted input beam (209) to the beam steering array (204), and wherein the beam steering array (204) is configured to receive the diffracted input beam (209) and modulate the diffracted input beam (209) according to the CGHDP (103).