Glossary ======== This part briefly explains the concepts behind the library. The rest of documentation will refer to this page as a knowledge base. .. contents:: Table of Contents :local: :depth: 2 Steganographic design --------------------- *TODO: To be completed* Embedding simulation -------------------- Modern steganography consists of distortion calculation, followed by coding, e.g., using syndrome-trellis codes (STC), low-density generator-matrix (LDGM), wet-paper codes, codes, Hamming codes, etc. In research, the coding step is usually replaced by simulating the embedding changes. The advantages of simulation over true message coding are - faster runtime, - easier implementation, and - ethical code publishing. Mutually independent (MI) simulator ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ A simple simulator assumes mutual independence (MI) between elements. For each element of index :math:`i`, the MI simulator performs two steps, - converting distortion :math:`\rho_i` into probability :math:`p_i`; and - simulating the embedding change from Bernoulli or Multinoulli distribution, parameterized by the probability :math:`p_i`. The probability conversion is done using a Boltzmann-Gibbs distribution, .. math:: p_i^{(v)} = 1 / Z * \text{exp}( - \lambda \rho_i^{(v)}), where :math:`p_i^{(v)}` is the probability of change :math:`v`, :math:`\rho_i^{(v)}` is the distortion associated with the change :math:`v`, :math:`\lambda` is the parameter encorporating required message size, and :math:`Z` is a normalization constant. MI simulator for ternary embedding """""""""""""""""""""""""""""""""" For the common case of ternary embedding with :math:`+1` and :math:`-1` changes, and :math:`\rho^{(0)}=0`, which is also implemented in the `conseal` package, the equation above can be written as follows. .. math:: p_i^{(+1)} &= \frac{\text{exp}( - \lambda \rho_i^{(+1)})}{1+\text{exp}(-\lambda \rho_i^{(+1)})+\text{exp}(-\lambda \rho_i^{(-1)})} \\ p_i^{(-1)} &= \frac{\text{exp}( - \lambda \rho_i^{(-1)})}{1+\text{exp}(-\lambda \rho_i^{(+1)})+\text{exp}(-\lambda \rho_i^{(-1)})} \\ Sublattice simulator ^^^^^^^^^^^^^^^^^^^^ *Will be added in the future* Cost functions -------------- F5 and non-shrinkage F5 (nsF5) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ F5 is an LSB steganography for DCT domain. It performs "*permutative straddling*", when the message is spreaded over the non-zero DCT AC coefficients of the cover. F5 reembeds message bit, whenever 1 or -1 are turned into 0. This causes a detectable artifact, later improved in non-shrinkage F5 (nsF5) by introducing wet-paper codes. Entropy Block Stego (EBS) cost ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ *TODO: To be completed* Uniform Embedding Revisited (UERD) cost ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ *TODO: To be completed* Wavelet Obtained Weights (WOW) cost ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ *TODO: To be completed* Spatial Universal Wavelet Relative (S-UNIWARD) cost ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ *TODO: To be completed* JPEG Universal Wavelet Relative (J-UNIWARD) cost ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ *TODO: To be completed* EBS was used in ALASKA 1 and as a benchmark against the SI-UNIWARD. HIgh-Low-Low (HILL) cost ^^^^^^^^^^^^^^^^^^^^^^^^ *TODO: To be completed* Minimizing the Power of Optimal Detector (MiPOD) cost ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ *TODO: To be completed* JPEG and DCT ------------ JPEG is a lossy image format. Because of its popularity, it is a good target for steganography, typically done on top of DCT coefficients. To read coefficients from JPEG and write them back, we encourage you to use our other project, `jpeglib `__. In its `glossary `__, you can find a lot of details on JPEG specifically.