Comprehensive image processing and computer vision library for Python with algorithms for filtering, morphology, segmentation, and feature detection
—
Image restoration algorithms for recovering images from various types of degradation including noise, blur, and missing data. Includes denoising, deconvolution, and inpainting methods.
def denoise_tv_chambolle(image, weight=0.1, eps=2e-4, max_num_iter=200, multichannel=False, channel_axis=None):
"""
Apply total variation denoising using Chambolle algorithm.
Parameters:
image : array_like
Input noisy image
weight : float, optional
Denoising weight parameter
eps : float, optional
Convergence tolerance
max_num_iter : int, optional
Maximum iterations
multichannel : bool, optional
Whether last axis is channels (deprecated)
channel_axis : int, optional
Axis for color channels
Returns:
ndarray
Denoised image
"""
def denoise_bilateral(image, win_size=None, sigma_color=None, sigma_spatial=1, bins=10000, mode='constant', cval=0, multichannel=False, channel_axis=None):
"""
Apply bilateral filtering for edge-preserving denoising.
Parameters:
image : array_like
Input noisy image
win_size : int, optional
Window size for filtering
sigma_color : float, optional
Color similarity standard deviation
sigma_spatial : float, optional
Spatial standard deviation
bins : int, optional
Number of bins for color quantization
mode : str, optional
Boundary condition mode
cval : float, optional
Constant value for boundaries
multichannel : bool, optional
Whether last axis is channels (deprecated)
channel_axis : int, optional
Axis for color channels
Returns:
ndarray
Denoised image
"""
def denoise_wavelet(image, method='BayesShrink', mode='soft', wavelet_levels=None, wavelet='db1', sigma=None, multichannel=False, convert2ycbcr=False, channel_axis=None, rescale_sigma=True):
"""
Perform wavelet denoising.
Parameters:
image : array_like
Input noisy image
method : str, optional
Denoising method ('BayesShrink', 'VisuShrink')
mode : str, optional
Thresholding mode ('soft' or 'hard')
wavelet_levels : int, optional
Number of wavelet decomposition levels
wavelet : str, optional
Wavelet to use
sigma : float, optional
Noise standard deviation
multichannel : bool, optional
Whether last axis is channels (deprecated)
convert2ycbcr : bool, optional
Convert to YCbCr color space
channel_axis : int, optional
Axis for color channels
rescale_sigma : bool, optional
Rescale sigma for multichannel
Returns:
ndarray
Denoised image
"""
def denoise_nl_means(image, patch_size=7, patch_distance=11, h=0.1, multichannel=False, fast_mode=True, sigma=0.0, preserve_range=False, channel_axis=None):
"""
Apply non-local means denoising.
Parameters:
image : array_like
Input noisy image
patch_size : int, optional
Size of patches for comparison
patch_distance : int, optional
Maximum distance for patch search
h : float, optional
Cut-off distance for patch comparison
multichannel : bool, optional
Whether last axis is channels (deprecated)
fast_mode : bool, optional
Use fast approximation
sigma : float, optional
Noise standard deviation
preserve_range : bool, optional
Keep original data range
channel_axis : int, optional
Axis for color channels
Returns:
ndarray
Denoised image
"""def wiener(image, psf, balance, reg=None, is_real=True, clip=True):
"""
Apply Wiener deconvolution filter.
Parameters:
image : array_like
Input degraded image
psf : array_like
Point spread function
balance : float
Regularization parameter
reg : array_like, optional
Regularization operator
is_real : bool, optional
Whether to enforce real output
clip : bool, optional
Clip output to input range
Returns:
ndarray
Deconvolved image
"""
def richardson_lucy(image, psf, num_iter=50, clip=True, filter_epsilon=None):
"""
Apply Richardson-Lucy deconvolution.
Parameters:
image : array_like
Input degraded image
psf : array_like
Point spread function
num_iter : int, optional
Number of iterations
clip : bool, optional
Clip output to input range
filter_epsilon : float, optional
Regularization parameter
Returns:
ndarray
Deconvolved image
"""
def unsupervised_wiener(image, psf, reg=None, user_params=None, is_real=True, clip=True):
"""
Apply unsupervised Wiener deconvolution.
Parameters:
image : array_like
Input degraded image
psf : array_like
Point spread function
reg : array_like, optional
Regularization operator
user_params : dict, optional
User-defined parameters
is_real : bool, optional
Whether to enforce real output
clip : bool, optional
Clip output to input range
Returns:
ndarray
Deconvolved image
"""def inpaint_biharmonic(image, mask, multichannel=False, channel_axis=None):
"""
Inpaint missing regions using biharmonic equation.
Parameters:
image : array_like
Input image with missing regions
mask : array_like
Binary mask of missing regions
multichannel : bool, optional
Whether last axis is channels (deprecated)
channel_axis : int, optional
Axis for color channels
Returns:
ndarray
Inpainted image
"""def estimate_sigma(image, average_sigmas=False, multichannel=False, channel_axis=None):
"""
Estimate noise standard deviation from image.
Parameters:
image : array_like
Input image
average_sigmas : bool, optional
Return average sigma across channels
multichannel : bool, optional
Whether last axis is channels (deprecated)
channel_axis : int, optional
Axis for color channels
Returns:
float or ndarray
Estimated noise standard deviation
"""from typing import Optional, Union
from numpy.typing import NDArray
import numpy as np
# Restoration parameters
PSF = NDArray[np.floating]
NoiseVariance = Union[float, NDArray[np.floating]]
RegularizationParam = float
InpaintingMask = NDArray[np.bool_]
# Restoration results
DenoisedImage = NDArray[np.floating]
DeconvolvedImage = NDArray[np.floating]
InpaintedImage = NDArray[np.floating]Install with Tessl CLI
npx tessl i tessl/pypi-scikit-image