Исходный код blinddeconv.algorithms.base

"""
Базовый класс для алгоритмов деконволюции.
"""

import abc
import numpy as np
from typing import Any, Dict, List, Tuple
import json


[документация] class DeconvolutionAlgorithm(abc.ABC): """ Абстрактный базовый класс для алгоритмов деконволюции. Attributes ---------- name : str Название алгоритма. timer : float Время выполнения последнего вызова process() в секундах. """ name = 'default' param = None
[документация] def __init__(self, name: str) -> None: """ Инициализация алгоритма деконволюции. Parameters ---------- name : str Название алгоритма (должно быть уникальным). """ super().__init__() self.name = name self.timer = -1
[документация] @abc.abstractmethod def change_param(self, param: Dict[str, Any]) -> None: """ Изменение гиперпараметров алгоритма. Parameters ---------- param : dict Словарь с параметрами для изменения. """ pass
[документация] @abc.abstractmethod def process(self, image: np.ndarray) -> Tuple[np.ndarray, np.ndarray]: """ Обработка изображения с использованием алгоритма деконволюции. Parameters ---------- image : np.ndarray Входное размытое изображение. Returns ------- restored : np.ndarray Восстановленное изображение. kernel : np.ndarray Оценённое ядро размытия (PSF). """ pass
[документация] @abc.abstractmethod def get_param(self) -> List[Tuple[str, Any]]: """ Получение текущих гиперпараметров алгоритма. Returns ------- params : list of tuple Список кортежей (название_параметра, значение). """ pass
[документация] def get_name(self) -> str: """ Получение названия алгоритма. Returns ------- name : str Название алгоритма. """ return self.name
[документация] def get_timer(self) -> float: """ Получение времени работы алгоритма. Returns ------- timer : float Время выполнения в секундах (-1 если не запускался). """ return self.timer
[документация] def import_param_from_file(self, file: str) -> None: """ Загрузка параметров из JSON-файла. Parameters ---------- file : str Путь к JSON-файлу с параметрами. """ with open(file, 'r', encoding='utf-8') as f: data = json.load(f) self.change_param(data)