Skip to content
 
 

Repository files navigation

Исследование методов Blind Image Deconvolution

Руководитель проекта

Участники проекта

Описание проекта

Данный проект посвящен исследованию методов слепой деконволюции (blind deconvolution) с интегрированной системой автоматической оптимизации гиперпараметров. Основное внимание уделяется разработке и сравнению алгоритмов, способных восстанавливать исходное изображение без априорной информации о функции искажения. Проект обеспечивает комплексное исследование алгоритмов с систематической оценкой качества восстановления и подбором оптимальных гиперпараметров.

Цель исследования

Разработка, сравнительный анализ предельных возможностей методов слепой деконволюции и выявление наиболее эффективных подходов для восстановления изображений, искаженных различными типами размытия и шумов.

Основные задачи

  • Разработка системы автоматического подбора гиперпараметров для методов слепой деконволюции
  • Разработка пайплайна генерации реалистичных искажений изображений
  • Реализация и сравнение классических и современных методов восстановления
  • Построение многомерных Парето-фронтов для анализа компромиссов между качеством и производительностью
  • Систематическая оценка устойчивости алгоритмов к шумам и смазам

Функциональность фреймворка

Обработка изображений

  • Поддержка монохромных и цветных изображений (JPEG, BMP, PNG)
  • Пакетная обработка групп изображений
  • Автоматизация экспериментального конвейера

Генерация искажений

  • Типы размытия:
    • Расфокус (2D гауссово ядро)
    • Motion blur (1D линейное ядро)
    • Комбинированные смазы (B-spline траектории)
  • Типы шумов:
    • Гауссов шум
    • Пуассонов шум
    • Импульсный шум (salt & pepper)

Методы восстановления

  • Классические алгоритмы (blind deconvolution) и регуляризационные подходы
  • Оценка ядра размытия (kernel estimation): слепые методы оценки PSF
  • Non-blind deconvolution: восстановление с известным ядром

Система оценки

  • Метрики качества: PSNR, SSIM
  • Производительность: время выполнения

Автоматическая оптимизация гиперпараметров

Методы оптимизации

  • Байесовская оптимизация c Gаussіаn Рrосеssеs
  • Эвoлюциoнныe aлгopитмы (Gеnеtіс Аlgоrіthms)
  • Случайный поиск с адаптивным распределением

Оптимизируемые параметры

Для каждого алгоритма определено пространство поиска гиперпараметров:

  • Регуляризационные параметры
  • Количество итераций и пороги сходимости
  • Размеры ядер размытия
  • Параметры шумоподавления

Визуализация

Многомерные Парето-фронты

  • 3D визуализация: качество, сложность смаза, уровень шума
  • Сравнительный анализ производительности алгоритмов
  • Анализ чувствительности параметров к различным типам искажений

Установка

  1. Установить последнюю версию пакета:
pip install git+https://github.com/PavelYurov/blind_deconvolution.git

Будут установлен пакет blinddeconv и остальные зависимости (numpy, scipy, opencv-python, scikit-image, и др.)

import blinddeconv
  1. Установка с дополнительными зависимостями:

Включает инструменты для тестирования, линтинга и интерактивной работы (pytest, flake8, ipython, setuptools)

pip install "git+https://github.com/PavelYurov/blind_deconvolution.git[dev]"

Необходимо для генерации документации через Sphinx (sphinx, sphinx-rtd-theme)

pip install "git+https://github.com/PavelYurov/blind_deconvolution.git[docs]"

Тестирования и документация вместе:

pip install "git+https://github.com/PavelYurov/blind_deconvolution.git[dev,docs]"

Удаление

pip uninstall blinddeconv

Интерактивное развертывание окружения

Интеракративный установщик зависимостей (install.py)

Скрипт обеспечивает автоматизированную настройку рабочего окружения. Основные функции:

  • создает и настраивает виртуальное окружение (по умолчанию .venv);
  • проверяет совместимость версии Python и наличие системных библиотек;
  • разрешает зависимости указанного профиля из pyproject.toml (секция [tool.preflight.profiles]);
  • устанавливает недостающие пакеты и регистрирует их в файле состояния .dependency_state.json.

Показать доступные профили:

python install.py list-profiles

Проверить статус зависимостей (без установки):

python install.py check base

Установить зависимости профиля (интерактивно):

python install.py install base

Автоматический режим (без запросов подтверждения):

python install.py install base -y

Указание пути к виртуальному окружению: Скрипт автоматически использует указанное окружение (создает его при отсутствии).

python install.py --venv my_env install base

Интерактивное удаление зависимостей (uninstall.py)

Скрипт выполняет безопасное удаление пакетов, опираясь на историю установок (.dependency_state.json). Алгоритм учитывает пересечения зависимостей между профилями:

  • удаляет пакеты, относящиеся только к выбранному профилю;
  • сохраняет пакеты, которые используются другими активными профилями;
  • поддерживает полную очистку окружения.

Удалить зависимости конкретного профиля:

python uninstall.py base

Пример: если пакет numpy используется и в профиле base, и в профиле dev, то при удалении base пакет numpy останется в системе.

Полная очистка (сброс проекта): Удаляет каталог виртуального окружения и файл истории установок.

python uninstall.py --clean-all

Структура проекта

Подробнее об алгоритмах: Путеводитель по алгоритмам

blind_deconvolution/
├── src/                               # Исходники Python-пакета
│   └── blinddeconv/                   # Python-пакет `blinddeconv`
│       ├── algorithms/                # Алгоритмы и обёртки
│       │   ├── base.py                # DeconvolutionAlgorithm
│       │   ├── blind_deconvolution/
│       │   │   ├── implementations/   # Собственные реализации
│       │   │   │   ├── bayesian/
│       │   │   │   ├── classic/
│       │   │   │   ├── sparse/
│       │   │   │   └── variational/
│       │   │   └── external/          # Внешние реализации (много подпроектов)
│       │   │       └── ...
│       │   ├── kernel_estimation/
│       │   │   └── ...
│       │   ├── nonblind_deconvolution/
│       │   │   └── ...
│       │   ├── octave/                # Octave/Matlab-обвязка
│       │   │   └── ...
│       │   ├── unsorted/              # Экспериментальные/черновые алгоритмы (много подпроектов)
│       │   │   └── ...
│       │   ├── README.md              # Путеводитель по алгоритмам
│       │   └── __init__.py
│       ├── filters/                   # Генерация искажений (blur/noise/denoise)
│       │   ├── blur.py
│       │   ├── noise.py
│       │   ├── denoise.py
│       │   ├── distributions.py
│       │   ├── colored_noise.py
│       │   ├── smooth.py
│       │   └── __init__.py
│       ├── processing/                # Основной функционал пайплайна
│       │   ├── core.py
│       │   ├── reader.py
│       │   ├── restorepipeline.py
│       │   ├── metrics.py
│       │   ├── tables.py
│       │   ├── utils.py
│       │   └── ...
│       ├── scripts/                   # Вспомогательные скрипты
│       │   ├── dataset_generator.py
│       │   ├── kernel_generator.py
│       │   └── __init__.py
│       └── __init__.py
│
├── docs/                              # Документация (Sphinx)
│   ├── source/
│   │   ├── conf.py
│   │   └── index.rst
│   └── tools/
│       └── build_docs.py
├── images/                            # Примеры изображений/артефакты
│   ├── dataset_bind.json
│   ├── distorted/
│   │   └── ...
│   └── ...
├── references/                        # PDF-материалы/статьи
│   └── *.pdf
├── tests/                             # Тестовые данные/выходы прогонов
│   └── ...
├── utils/                             # Вспомогательные утилиты
│   └── preflight/
│       ├── __main__.py
│       ├── config.py
│       ├── report.py
│       └── checks/
│           ├── python.py
│           └── packages.py
│
├── requirements.txt
├── pyproject.toml
├── setup.cfg
└── README.md

Качество кода

В проекте настроен линтер flake8 для проверки стиля и качества Python-кода. Конфигурация находится в файле setup.cfg.

Локальная работа:

  1. Установите зависимости: pip install flake8 pre-commit
  2. Для ручного запуска проверки выполните в корне проекта: flake8
  3. Для автоматической проверки перед каждым коммитом выполните: pre-commit install

Интеграция с IDE: Настройте свою среду разработки на использование виртуального окружения проекта и чтение setup.cfg, чтобы видеть предупреждения линтера прямо в редакторе.

На сервере (CI): При каждом push в репозиторий CI-система запускает те же проверки flake8, чтобы поддерживать основную ветку (main/master) в чистоте.

Документация

HTML-документация проекта генерируется с помощью Sphinx и публикуется по ссылке

Структура документации

  • docs/source/ — исходники Sphinx (.rst, conf.py)
  • docs/tools/build_docs.py — скрипт сборки (генерация API + сборка HTML)
  • docs/_build/html/ — результат локальной сборки (появляется после первого билда)

Документация в основном строится из docstrings Python-модулей (автодокументация).

Требования

В активном окружении Python должны быть доступны утилиты:

  • sphinx-build
  • sphinx-apidoc

Опционально: тема sphinx_rtd_theme (если не установлена, используется fallback alabaster).

Локальная сборка (рекомендуемый способ)

python docs/tools/build_docs.py

Скрипт делает два шага:

  1. генерирует .rst для API (через sphinx-apidoc) в docs/source/;
  2. собирает HTML в docs/_build/html/.

Открывайте результат: docs/_build/html/index.html.

Ручная сборка (если нужен контроль шагов)

Из корня репозитория:

sphinx-apidoc -o docs/source .
sphinx-build -b html docs/source docs/_build/html

Полезные замечания

  • docs/tools/build_docs.py удаляет все docs/source/*.rst, кроме index.rst, и генерирует заново — не храните важные ручные правки в авто-генерируемых .rst.
  • Если sphinx-build/sphinx-apidoc не найдены, установите Sphinx в активное окружение Python (например, в venv проекта).

About

Blind Image Deconvolution, Deblurring, Denoising, Noise Estimation, Super-Resolution

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages