nsf5stego
Copyright 2026 Yukinoshita-lin

This product includes software developed by Yukinoshita-lin.

Licensed under the Apache License, Version 2.0 (the "License"); you may not
use this file except in compliance with the License. You may obtain a copy
of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
License for the specific language governing permissions and limitations
under the License.

================================================================================
Third-Party Software Notices and Attributions
================================================================================

This project includes or depends on the following third-party software,
which are licensed under their respective open-source licenses. The full
license texts are available in the upstream project repositories.

--------------------------------------------------------------------------------

1. NumPy
   - Version: >= 1.20
   - License: BSD-3-Clause
   - URL:    https://numpy.org
   - Used for: array operations, DCT, image statistics.

2. Pillow (PIL Fork)
   - Version: >= 9.0
   - License: HPND (Historical Permission Notice and Disclaimer)
   - URL:    https://python-pillow.org
   - Used for: image I/O, LANCZOS resizing, format conversion.

3. matplotlib
   - Version: >= 3.5
   - License: BSD-3-Clause / PSF-based
   - URL:    https://matplotlib.org
   - Used for: code-family / embedding-efficiency plots in the GUI.

4. scikit-learn
   - Version: >= 1.0
   - License: BSD-3-Clause
   - URL:    https://scikit-learn.org
   - Used for: GroupKFold CV, calibration, ML stego classifier.

5. pandas
   - Version: >= 1.3
   - License: BSD-3-Clause
   - URL:    https://pandas.pydata.org
   - Used for: dataset CSV loading and feature columns.

6. joblib
   - Version: >= 1.0
   - License: BSD-3-Clause
   - URL:    https://joblib.readthedocs.io
   - Used for: model serialization (.joblib).

7. LightGBM (optional, only for LGB-tuned classifiers)
   - Version: >= 3.3
   - License: MIT
   - URL:    https://lightgbm.readthedocs.io
   - Used for: gradient-boosted tree classifier (default model).

8. XGBoost (optional, only for XGB-tuned classifiers)
   - Version: >= 1.5
   - License: Apache-2.0
   - URL:    https://xgboost.readthedocs.io
   - Used for: gradient-boosted tree classifier (backup model).

9. PyTorch (optional, only for the GPU pipeline `gpu/`)
   - Version: >= 1.10
   - License: BSD-3-Clause
   - URL:    https://pytorch.org
   - Used for: GPU-accelerated batch feature extraction.

================================================================================
Bundled Sub-Projects
================================================================================

The author maintains a sibling Python package, distributed separately
(published on PyPI), which is NOT part of this repository or of any release
archived from it:

  yccstego — JPEG-compression-domain nsF5 on the Y (luma) channel of YCbCr
  with a self-contained DCT + Huffman codec.
    Copyright 2026 Yukinoshita-lin
    License: Apache-2.0
    Source: https://pypi.org/project/yccstego/

The two packages are independent: each has its own LICENSE and NOTICE, and
each carries its own copyright.

================================================================================
Reference Implementations and Algorithms
================================================================================

The algorithms implemented in this project are based on the following
public-domain academic references. No source code was copied; only the
published specifications were followed.

  - J. Fridrich, T. Pevný, J. Kodovský, "Statistically undetectable
    JPEG steganography: dead ends, challenges, and possible alternatives",
    Information Hiding Workshop (IH), 2007.
  - J. Fridrich, "Steganography in Digital Media: Principles, Algorithms,
    and Applications", Cambridge University Press, 2009.
  - J. Fridrich, M. Goljan, "Practical steganalysis of digital images —
    state of the art", Security and Watermarking of Multimedia Contents
    IV, SPIE, 2002.
  - A. Westfeld, A. Pfitzmann, "Attacks on steganographic systems —
    Breaking HUGO", Information Hiding Workshop (IH), 1999.
  - J. Kodovský, J. Fridrich, "Steganalysis of JPEG images using rich
    features", Journal of Electronic Imaging, 2012.

================================================================================
Training Datasets
================================================================================

Models bundled in this repository (`models/*.joblib`) were trained on:

  - Campus photos collected by the authors (data/campus_jpg/, 414 JPGs).
    No third-party content.
  - BOSSbase 1.01 (Break Our Steganographic System, 2008). Used in early
    experiments only; not redistributed in the model weights and not
    required at runtime. The dataset must be obtained separately from
    its original distributor for any reproduction.

================================================================================
Trademark Notice
================================================================================

"Apache" is a registered trademark of the Apache Software Foundation.
The Apache License, Version 2.0 is published by the Apache Software
Foundation; this project is NOT affiliated with or endorsed by the
Apache Software Foundation.
