ЗМП-51
Python-реализация метода наименее значащих битов (LSB) для скрытого встраивания данных в 8-битные полутоновые BMP-изображения. Проект включает CLI-инструмент, модули визуализации битовых плоскостей, расчёта метрик качества (PSNR, MSE, SSIM) и статистического анализа с доверительными интервалами.
Разработан в рамках исследовательской работы по сравнительному анализу пригодности различных типов изображений (естественные сцены, медицинские рентгенограммы, научные астрофизические снимки) для LSB-стеганографии.
.
├── code/ # Исходный код и вспомогательные скрипты
│ ├── steg_tool.py # Основной CLI-инструмент (embed / extract-msg / extract-plane)
│ ├── visualize_bitplanes.py # Массовая визуализация 8 битовых плоскостей (сетка 2×4)
│ ├── analyze_bitplanes.py # Расчёт бинарной энтропии плоскостей
│ ├── step_c_metrics.py # Внедрение в k=1,2,3 + расчёт PSNR/MSE/SSIM
│ ├── step_d_histograms.py # Построение гистограмм яркости (Original vs Stego)
│ ├── step_e_table.py # Сводная сравнительная таблица метрик
│ ├── calc_ci.py # Расчёт 95% доверительных интервалов (PSNR, дисперсия)
│ └── secret.bin # Тестовое секретное сообщение (~32 Кб)
├── data/ # Наборы данных-контейнеров (512×512, 8-bit BMP)
│ ├── bmp_boss/ # BOSSbase 1.01 (естественные сцены, 100 файлов)
│ ├── bmp_med/ # Medical X-Ray (рентгенограммы, 100 файлов)
│ └── bmp_other/ # SOHO/EIT Solar Images (научные снимки, 100 файлов)
├── results/ # Результаты экспериментов
│ ├── research/ # Визуализации плоскостей, гистограммы, тестовые stego
│ ├── stego_examples/ # Примеры внедрения во все контейнеры
│ ├── tables/ # CSV-таблицы метрик и доверительных интервалов
│ └── figures/ # Графики PSNR CI, boxplot, примеры плоскостей
├── requirements.txt # Зависимости Python
└── README.md # Документация проекта
- Клонируйте репозиторий:
git clone https://github.com/DaisyRo/Steganography.git cd Steganography Создайте виртуальное окружение и установите зависимости: python3 -m venv venv
source venv/bin/activate pip install -r requirements.txt Основной инструмент (code/steg_tool.py)
python3 code/steg_tool.py --mode embed
--image data/bmp_boss/1.bmp
--k 1
--message code/secret.bin
--output results/stego_examples/test_k1.bmp
python3 code/steg_tool.py --mode extract-msg
--image results/stego_examples/test_k1.bmp
--k 1
--output results/extracted_test.bin
python3 code/steg_tool.py --mode extract-plane
--image data/bmp_boss/1.bmp
--k 3
--output results/figures/plane_k3.bmp
| Скрипт | Назначение |
|---|---|
visualize_bitplanes.py |
Генерация сеток 2×4 с плоскостями |
analyze_bitplanes.py |
Расчёт бинарной энтропии плоскостей |
step_c_metrics.py |
Внедрение в |
step_d_histograms.py |
Построение гистограмм яркости (Original vs Stego |
calc_ci.py |
Статистический анализ всех 300 изображений: 95% ДИ для PSNR и дисперсии битов |
| Параметр | Значение / Вывод |
|---|---|
| Ёмкость контейнера | 262 144 бит на плоскость (512×512 пикселей) |
| Встраиваемый объём | до 32 004 байт (32 Кб + 4-байтный заголовок длины) |
| Качество при |
PSNR ≈ 51.25 дБ, SSIM > 0.98, визуальные искажения отсутствуют |
| Динамика искажений | При переходе ~6.02 дБ (теоретическое соответствие подтверждено на 300 изображениях) |
| Статистическая надёжность | 95% ДИ для PSNR: ±0.002 дБ — высокая стабильность метода across всех типов контейнеров |
| Влияние типа контейнера | • Естественные сцены (BOSS): • Медицинские/научные: |
Все таблицы, графики и визуализации сохранены в папке results/.