精华内容
下载资源
问答
  • 正则化方法是近年来流行的图像复原算法。研究了周期边界条件下Tikhonov正则化的预处理共轭梯度算法,提出了新的预处理矩阵和变化正则化参数的方法。正则化参数先取较大值,抑制复原图像中的噪声,得出收敛的结果来...
  • 考虑到contourlet变换的多尺度多方向性以及对二维图像具有比小波变换更好的稀疏表示特性,提出了一种基于contourlet变换的图像复原算法。算法采用边界优化的方法,通过类期望最大化算法在contourlet域进行迭代计算,并...
  • 任务书 1 课程设计目的 1 提高分析 问题解决问题的能力进一步巩固数字图像 处理系统中的基本原理与方法 2 熟悉掌握一门计算机语言可以进行数字图像应用处理 的开发设计 2 课程设计的题目运动模糊 图像复原算法实现及...
  • 常见图像复原算法与python-opencv实现概述算法介绍及实现数字图像处理中的主要数学知识傅立叶变换运动模糊传统算法无约束复原算法有约束复原算法评价函数引申:基于深度学习方法的图像复原的算法举例Dark Channel ...

    概述

    本项目根据ZJU《计算机视觉》课程内容整理了目前常见的图像复原算法(包括传统算法和深度学习的方法)并利用Python-Opencv实现模型复现;利用主流的图像修复评价函数(MSE、PSNR以及SSIM)实现复原算法效果的客观定量评价。

    图像复原的过程可以主要分为:

    1. 确定参考图,作为图像退化/复原模型的评估标准;
    2. 设计图像退化算法:引入运动模糊和白噪声;
    3. 传统算法的原理及编程实现;
    4. 评价函数的设计及编程实现;
    5. 过程评估和结果分析。

    算法介绍及实现

    数字图像处理中的主要数学知识

    傅立叶变换

    参考博文
    图像的频率是表征图像中灰度变化剧烈程度的指标,是灰度在平面空间上的梯度。因此图像的傅立叶变换表示了(灰度)分布的剧烈程度。

    如下图所示,对参考图进行快速傅立叶变换(FFT),其中白色区域表示梯度变换明显部分,黑色区域表示梯度变换缓慢的部分。 左图为没有谱中心处理的结果,四角表示低频部分,中心表示高频部分;经过谱中心化之后,区域进行了变换,四角表示高频部分,中心表示低频部分。fft

    import matplotlib.pyplot as plt
    import numpy as np
    from numpy import fft
    import math
    import cv2
    import math
    
    plt.figure(figsize=(15, 9))
    
    img = plt.imread(path)
    plt.subplot(231),plt.imshow(img),plt.title('picture')
     
    #根据公式转成灰度图
    img = 0.2126 * img[:,:,0] + 0.7152 * img[:,:,1] + 0.0722 * img[:,:,2]
     
    #显示灰度图
    plt.subplot(232),plt.imshow(img,'gray'),plt.title('original')
     
    #进行傅立叶变换,并显示结果
    fft2 = np.fft.fft2(img)
    plt.subplot(233),plt.imshow(np.abs(fft2),'gray'),plt.title('fft2')
     
    #将图像变换的原点移动到频域矩形的中心,并显示效果
    shift2center = np.fft.fftshift(fft2)
    plt.subplot(234),plt.imshow(np.abs(shift2center),'gray'),plt.title('shift2center')
     
    #对傅立叶变换的结果进行对数变换,并显示效果
    log_fft2 = np.log(1 + np.abs(fft2))
    plt.subplot(235),plt.imshow(log_fft2,'gray'),plt.title('log_fft2')
     
    #对中心化后的结果进行对数变换,并显示结果
    log_shift2center = np.log(1 + np.abs(shift2center))
    plt.subplot(236),plt.imshow(log_shift2center,'gray'),plt.title('log_shift2center')
    plt.show()
    

    运动模糊

    图像f(x,y)在图像面上移动并且图像f(x,y)除移动外不随时间变化。令x0(t)和y0(t)分别代表位移的x分量和y分量,那么在快门开启的时间T内,胶片上某点的总曝光量是图像在移动过程中一系列相应像素的亮度对该点作用之总和。
    也就是说,运动模糊图像是由同一图像在产生距离延迟后与原图像想叠加而成。如果快门开启与关闭的时间忽略不计,则有:
    g(x,y)=0Tf[xx0(t)),yy0(t))]dtg(x,y)=\int_{0}^{T}f[x-x_{0}(t)), y-y_{0}(t))]dt
    本文设计实现运动模糊的模型函数motion_process(image_size,motion_angle)motion\_process(image\_size,motion\_angle),它包含两个参数:图像的尺寸大小image_size以及运动的角度motion_angle。当运动位移为9、运动角度为45度时,则该模型函数的构建过程如下:
    首先是创建与图像同等大小的全0矩阵,然后找到全0矩阵的中心行数center_position,再计算出运动角度的tan值与cot值,算出运动的偏移量offset。 再令α45°\alpha\leq45°时,
    PSF[int(centerposition+offset)PSF[int(center_position+offset),
    int(centerpositionoffset)]=1int(center_position-offset)]=1
    α45°\alpha\ge45°时,
    PSF[int(centerpositionoffset)PSF[int(center_position-offset),
    int(centerposition+offset)]=1int(center_position+offset)]=1则该模型对应的图像如下图所示:psf

    # 生成卷积核和锚点
    def genaratePsf(length, angle):
        half = length/2
        EPS = np.finfo(float).eps
        alpha = (angle - math.floor(angle / 180) * 180) / 180 * math.pi
        cosalpha = math.cos(alpha)
        sinalpha = math.sin(alpha)
        if cosalpha < 0:
            xsign = -1
        elif angle == 90:
            xsign = 0
        else:
            xsign = 1
        psfwdt = 1;
        # 模糊核大小
        sx = int(math.fabs(length * cosalpha + psfwdt * xsign - length * EPS))
        sy = int(math.fabs(length * sinalpha + psfwdt - length * EPS))
        psf1 = np.zeros((sy, sx))
        # psf1是左上角的权值较大,越往右下角权值越小的核。
        # 这时运动像是从右下角到左上角移动
        for i in range(0, sy):
            for j in range(0, sx):
                psf1[i][j] = i * math.fabs(cosalpha) - j * sinalpha
                rad = math.sqrt(i * i + j * j)
                if rad >= half and math.fabs(psf1[i][j]) <= psfwdt:
                    temp = half - math.fabs((j + psf1[i][j] * sinalpha) / cosalpha)
                    psf1[i][j] = math.sqrt(psf1[i][j] * psf1[i][j] + temp * temp)
                psf1[i][j] = psfwdt + EPS - math.fabs(psf1[i][j]);
                if psf1[i][j] < 0:
                    psf1[i][j] = 0
        # 运动方向是往左上运动,锚点在(0,0)
        anchor = (0, 0)
        # 运动方向是往右上角移动,锚点一个在右上角    #同时,左右翻转核函数,使得越靠近锚点,权值越大
        if angle < 90 and angle > 0:
            psf1 = np.fliplr(psf1)
            anchor = (psf1.shape[1] - 1, 0)
        elif angle > -90 and angle < 0:  # 同理:往右下角移动
            psf1 = np.flipud(psf1)
            psf1 = np.fliplr(psf1)
            anchor = (psf1.shape[1] - 1, psf1.shape[0] - 1)
        elif anchor < -90:  # 同理:往左下角移动
            psf1 = np.flipud(psf1)
            anchor = (0, psf1.shape[0] - 1)
        psf1 = psf1 / psf1.sum()
        return psf1, anchor
    
    

    传统算法

    无约束复原算法

    逆滤波是一种无约束的图像复原算法,其目标是找到最优估计图像,即最小化J(f^)=n2=gHf^2J(\hat{f})=\left \| n\right\|^2=\left \| g-H\hat{f}\right\|^2。如果已知退化图像的傅立叶变换和系统冲激响应函数(“滤被” 传递函数),则可以求得原图像的傅立叶变换,经傅立叶反变换就可以求得原始图像 f(x,y)f(x, y),其中 退化图像的傅立叶变换G(u,v)G(u, v) 除以点扩散函数的傅立叶变换结果 H(u,v)H(u, v) 起到了反向滤波的作用。
    f(x,y)=F1[F(u,v)]=F1[G(u,v)H(u,v)]f(x, y)=F^{-1}[F(u, v)]=F^{-1}\left[\frac{G(u, v)}{H(u, v)}\right]
    由上式可得,当H(u,v)H(u, v)很小时,F^(u,v)\hat{F}(u, v)极大,出现病态性质。因此在分母引入修正项k,使得其不会趋近于0。但是仍会对噪声具有放大作用,因此无约束复原方法不适合复原含有噪声的图像。

    def inverse(input, PSF, eps):  # 逆滤波
        input_fft = fft.fft2(input)
        PSF_fft = fft.fft2(PSF) + eps # 噪声功率,这是已知的,考虑epsilon
        result = fft.ifft2(input_fft / PSF_fft) # 计算F(u,v)的傅里叶反变换
        result = np.abs(fft.fftshift(result))
        return result
    

    有约束复原算法

    有约束图像复原技术是指除了要求了解关于退化系统的传递函数之外,还需要了解的噪声的先验知识,并采用不同的约束条件。复原

    其目标函数为J(f^)=Qf^2+α(gHf^2n2)J(\hat{f})=\left \| Q\hat{f}\right\|^2 + \alpha(\left \| g-H\hat{f}\right\|^2-\left \| n\right\|^2),其中QQff的线性算子。选用不同的变换矩阵QQ得到不同物理意义的约束复原算法。

    1. 能量约束:Q=IQ=I,其物理意义是:当有若干个可能的解时,能量最小的解为最佳解,此时约束条件最小。
    2. 特征约束:Q=[121242121]Q=\left[ \begin{array}{ccc} 1 & -2 & 1\\ -2 & 4 & -2\\ 1 & -2 & 1 \end{array} \right ],为拉普拉斯算子,表示在垂直方向和水平方向都取二阶差分,则此时的解是在所有解中二阶差分最小的解(图像平滑)。
    3. 功率谱约束:即维纳滤波,是使原始图像 f(x,y)f(x, y) 与其恢复图像 f^(x,y)\hat{f}(x, y)之间的均方误差最小的复原方法。QQ选用图像ff和噪声nn的自相关矩阵RfR_fRnR_n表示。
    def wiener(input,PSF,eps,K=0.01):  # 维纳滤波
        input_fft=fft.fft2(input)
        PSF_fft=fft.fft2(PSF) +eps
        PSF_fft_1=np.conj(PSF_fft) /(np.abs(PSF_fft)**2 + K)
        result=fft.ifft2(input_fft * PSF_fft_1)
        result=np.abs(fft.fftshift(result))
        return result
    
    

    评价函数

    图像修复模型的好坏需要对结果品质进行评价,衡量图像修复的指标主要有以下三种:

    1. Visually:即人对修复效果的主观鉴别,最符合人视觉感官的评价,但无法标准化。
    2. Visibility of Errors:
      计算图像degrade后的质量,即比较degrade后的图像与真实图像(distortion-free)之间的差剖面,即可视误差,通过 visibility of errors 评价图像质量,如均方差MSE、峰值信噪比PSNR。
    3. 基于人类视觉系统(Human Visual System,HVS)设计客观可量化的评价函数,代表有SSIM。

    MSE:均方差,两点之间数值差异。

    def mse(img1, img2):
        mse = np.mean( (img1/255. - img2/255.) ** 2)
        return mse
    

    PSNR:峰值信噪比,即峰值信号的能量与噪声的平均能量之比。定义式如下:PSNR=10×log10MaxValue2MSEPSNR = 10\times\log_{10} \frac{MaxValue^2}{MSE} ,其中MaxValue2MaxValue^2表示为存储最大位数2bits12^{bits}-1。PSNR指标越高,说明图像质量越好。

    def psnr(img1, img2):
        mse = np.mean((img1/1.0 - img2/1.0) ** 2 )
        if mse < 1.0e-10:
            return 100
        return 10 * math.log10(255.0**2/mse)
    

    SSIM:上述基于像素的差剖面的计算不符合人类视觉系统(Human Visual System,HVS)的评价结果,因此需要对评价方式进行重新考量。 从自然图像高度结构化的特征出发,通过亮度(luminance)、对比度(contrast)和结构(structure)三个方面估计感知结构信息的变化。

    # 方法1
    import numpy as np
    from PIL import Image
    from scipy.signal import convolve2d
     
    def matlab_style_gauss2D(shape=(3,3),sigma=0.5):
    #     2D gaussian mask - should give the same result as MATLAB's
    #     fspecial('gaussian',[shape],[sigma])
    
        m,n = [(ss-1.)/2. for ss in shape]
        y,x = np.ogrid[-m:m+1,-n:n+1]
        h = np.exp( -(x*x + y*y) / (2.*sigma*sigma) )
        h[ h < np.finfo(h.dtype).eps*h.max() ] = 0
        sumh = h.sum()
        if sumh != 0:
            h /= sumh
        return h
     
    def filter2(x, kernel, mode='same'):
        return convolve2d(x, np.rot90(kernel, 2), mode=mode)
     
    def compute_ssim(im1, im2, k1=0.01, k2=0.03, win_size=11, L=255):
     
        if not im1.shape == im2.shape:
            raise ValueError("Input Imagees must have the same dimensions")
        if len(im1.shape) > 2:
            raise ValueError("Please input the images with 1 channel")
    
        M, N = im1.shape
        C1 = (k1*L)**2
        C2 = (k2*L)**2
        window = matlab_style_gauss2D(shape=(win_size,win_size), sigma=1.5)
        window = window/np.sum(np.sum(window))
    
        if im1.dtype == np.uint8:
            im1 = np.double(im1)
        if im2.dtype == np.uint8:
            im2 = np.double(im2)
    
        mu1 = filter2(im1, window, 'valid')
        mu2 = filter2(im2, window, 'valid')
        mu1_sq = mu1 * mu1
        mu2_sq = mu2 * mu2
        mu1_mu2 = mu1 * mu2
        sigma1_sq = filter2(im1*im1, window, 'valid') - mu1_sq
        sigma2_sq = filter2(im2*im2, window, 'valid') - mu2_sq
        sigmal2 = filter2(im1*im2, window, 'valid') - mu1_mu2
    
        ssim_map = ((2*mu1_mu2+C1) * (2*sigmal2+C2)) / ((mu1_sq+mu2_sq+C1) * (sigma1_sq+sigma2_sq+C2))
    
        return np.mean(np.mean(ssim_map))
    
    
    # 方法2:skimage
    import cv2
    from skimage import metrics
    
    ssim_i = metrics.structural_similarity(image, result_i)
    ssim_w = metrics.structural_similarity(image, result_w)
    
    # ssim_in = measure.compare_ssim(image, result_in)
    # ssim_wn = measure.compare_ssim(image, result_wn)
    print(ssim_i, ssim_w)
    

    下面可视地评价复原结果:复原结果2

    使用上述三种指标评价复原结果:
    表格
    分析:从之前实验看到,MSE的表现有差别,PSNR表现类似的result_in和result_wn,实际从人的主管感觉来说差别是很大的。这里SSIM中,认为contrast的stretch,以及均值的偏移,即整体上明暗变化,基本上并不会影响人类对图像的内容的理解。因此应该让这样的图片得到的质量值更高。原因在于我们可以把original information近乎完全的恢复出来,只需要做pixel-wise的映射即可。而像比如blur,JPEG compression等,许多结构信息已经永久丢失了,因此应该相似度低。

    引申:基于深度学习方法的图像复原的算法举例

    Dark Channel Prior

    《Single Image Haze Removal Using Dark Channel Prior》
    基于暗通道先验的去雾算法实际上是一种统计意义上的算法,作者总结了大量的室外无雾的图像,发现了在无雾图像中局部区域存在一些像素,这些像素中至少有一个颜色通道的亮度值非常非常低(低亮度值区域不包括天空区域)。由大量雾霾data获得视差图,用于对输入的去雾霾处理。

    暗通道

    Blind Image Deconvolution

    《Removing camera shake from a single photograph》
    与去雾霾方法类似,提供统计方法估计模糊核,以此复原清晰图LLB=K×L+NB = K \times L+N。算法主要分为两步:1、根据输入图像估计模糊核,以由粗到精的方式避免局部极小值。2、利用估计的模糊核,采用标准的去卷积算法估计清晰图像。

    首先需要提供四个输入:1、模糊图像B;2、模糊图像的一个矩形块;3、模糊核的大小上限值(像素);4、关于模糊核方向的初步猜测,除此之外,我们需要在处理之前将图像B转换到一个线性的色彩空间,利用反伽玛校正(inverse gamma-correction),γ\gamma的值为2.2。根据用户指定的块,将原始图像的所有颜色通道联合一起产生灰度模糊块P。

    展开全文
  • 基于Fourier神经网络的图像复原算法
  • 针对传统神经网络图像复原算法在复原过程中模糊图像边缘,收敛速度慢等不足,提出一种基于调和模型的快速神经网络图像复原算法。在该算法中,图像复原模型的正则化项采用调和模型,并在每次网络状态更新时引入最陡...
  • 基于Matlab的最大熵模糊图像复原算法
  • 在图像获取过程中,存在很多造成图像退化的因素,因此需要对图像进行复原。本文对现有的典型复原方法进行了综合分析。...对当前的一些复原算法进行了总结。对图像复原技术未来的发展方向进行了预测。
  • 为了在不精确知道图像的点扩展函数的情况下,去除图像的离焦模糊,提出了基于高维空间几何理论的图像复原算法。依据同源连续性原理,通过分析高维空间中向量的方向和点的位置关系来研究模糊图像与原图像的空间关系,...
  • 在图像复原方法中,维纳滤波方法是最常使用的一种图像复原算法,这种方法需要系统的实际点扩展函数作为参数。然而对于一个大口径的光学稀疏孔径成像系统,其实际点扩展函数往往难以测量。相反,根据子望远镜的阵列排布...
  • 基于改进约束最小二乘方法的图像复原算法钱春强;王继成【期刊名称】《计算机技术与发展》【年(卷),期】2007(017)006【摘要】约束最小二乘方法(约束最小二乘方滤波器)在图像复原的应用过程中普遍只要求噪声方差和均值...

    基于改进约束最小二乘方法的图像复原算法

    钱春强

    ;

    王继成

    【期刊名称】

    《计算机技术与发展》

    【年

    (

    ),

    期】

    2007(017)006

    【摘要】

    约束最小二乘方法

    (

    约束最小二乘方滤波器

    )

    在图像复原的应用过程中

    普遍只要求噪声方差和均值的知识

    ,

    对处理的每一幅图像都能产生最优效果

    ,

    因而

    得到了广泛应用

    .

    文中提出的图像复原算法就是基于约束最小二乘方法的

    ,

    并对其

    进行了改进

    .

    通过实验证明

    ,

    用该改进的图像复原处理方法复原的图像比用维纳滤

    波方法复原的图像更加平滑

    ,

    复原图像的信噪比也更大

    .

    另一方面

    ,

    改进的约束最

    小二乘方法复原的图像比平滑约束最小平方法复原的图像具有更加突出的边缘

    ,

    而且同样具有更高的信噪比

    .

    适当应用该方法

    ,

    能够体现出维纳滤波和平滑约束最

    小平方滤波这两种基本的约束最小二乘方滤波相结合的效果优势

    .

    【总页数】

    4

    (9-11,14)

    【关键词】

    退化模型

    ;

    图像复原

    ;

    约束最小二乘

    ;

    信噪比

    【作者】

    钱春强

    ;

    王继成

    【作者单位】

    同济大学

    ,

    电子与信息工程学院

    ,

    上海

    ,200331;

    同济大学

    ,

    电子与信

    息工程学院

    ,

    上海

    ,200331

    【正文语种】

    中文

    【中图分类】

    TN911.73

    【相关文献】

    1.

    几种约束最小二乘方图像复原算法的比较研究

    [J],

    李永宁

    2.

    基于小波去噪的平滑约束最小二乘图像复原法

    [J],

    赵东杰

    ;

    周辉

    展开全文
  • 针对传统暗通道先验易在高亮度区域失真和产生光晕效应的不足,提出一种基于补偿透射率和自适应雾浓度系数的雾天图像复原算法。首先利用高斯函数拟合有雾和无雾图像间的衰减关系,通过修正透射率对高亮区域进行补偿。...
  • 基于Matlab的图像复原算法的研究
  • 基于遗传算法的BP神经网络图像复原算法研究pdf 简单的中文
  • 反卷积图像复原算法

    2018-07-11 15:41:53
    图像在摄取、传输、储存的过程中不可避免地引起图像质量的下降(图像退化),图像恢复就是试图利用退化过程的先验知识使已退化的图像恢复本来面貌,即根据退化的原因,分析引起退化的环境因素,建立相应的数学模型,...
  • -1 - SQL Server2005(含SSAS组件和VS2005Oracle数据库保存从ETL服务器抽取的数据库表VS2005提供开发环境,调用SQL Server2005的SSAS组件,读取Oracle中的数据表,组织成多维架构的数据立方体,并存入SQL Server 2....
  • 提出了一种将小波变换和自适应正则化方法相结合的盲图像复原算法。该算法先对退化后的图像进行小波分解,得到图像在不同子频段的信息;然后针对各个子频段内图像的频率和方向特性,使用不同的自适应正则化复原方法,在...
  • 维纳滤波复原法维纳滤波就是最小二乘滤波,它是使原始图像与其恢复图像之间的均方误差最小的复原方法,对图像进行维纳滤波主要是为了消除图像中的噪声。示例:利用维纳滤波器进行复原处理编写对应的m文件如下:clear...

    维纳滤波复原法

    维纳滤波就是最小二乘滤波,它是使原始图像与其恢复图像之间的均方误差最小的复原方法,对图像进行维纳滤波主要是为了消除图像中的噪声。

    示例:利用维纳滤波器进行复原处理

    编写对应的m文件如下:

    clear all;

    clc;

    I=zeros(800,800);

    I(300:500,500:600)=1;

    noise=0.1*randn(size(I));

    PSF=fspecial('motion',21,11);

    Blurred=imfilter(I,PSF,'circular');

    Blurrednoise=im2uint8(Blurred+noise);

    NSR=sum(noise(:).^2)/sum(I(:).^2);%%信噪比倒数%%

    NP=abs(fftn(noise)).^2;

    NPOW=sum(NP(:))/prod(size(noise));

    NCORR=fftshift(real(ifftn(NP)));

    IP=abs(fftn(I)).^2;

    IPOW=sum(IP(:))/prod(size(I));

    ICORR=fftshift(real(ifftn(IP)));

    ICORR1=ICORR(:,ceil(size(I,1)/2));

    NSR=NPOW/IPOW;

    subplot(2,2,1)

    imshow(Blurrednoise,[]);

    title('Blurred and noise图像');

    subplot(2,2,2)

    imshow(deconvwnr(Blurrednoise,PSF,NSR),[]);

    title('deconvwnr(A,PSF,NSR)图像');

    subplot(2,2,3)

    imshow(deconvwnr(Blurrednoise,PSF,NCORR,ICORR),[]);

    title('deconvwnr(A,PSF,NCORR,ICORR)图像');

    subplot(2,2,4)

    imshow(deconvwnr(Blurrednoise,PSF,NPOW,ICORR1),[]);

    title('deconvwnr(A,PSF,NPOW,ICORR1)图像');

    程序运行结果如下图:

    展开全文
  • 旋转运动模糊图像复原,复原效果佳,可以很好的提高图像质量,和图像信噪比
  • 两种基于模糊路径的旋转模糊图像复原算法—维纳滤波和对角加载.
  • 针对雾霾和沙尘天气下图像降质,提出一种光补偿色彩复原和逐像素透射率估计的单幅图像可见度复原算法。沙尘颗粒对蓝光吸收导致图像偏黄,利用光补偿方法可以消除偏色现象并转换为雾图。以最小颜色通道与其高斯函数的...
  • 为了快速准确地复原湍流退化图像,采用了一种基于时域相关特性的频域多帧迭代解卷积算法算法将时域特性和Tichonov正则化引入到代价函数,同时对点扩展函数(PSF)施加非负支持域约束、带宽约束和能量约束。采用二阶...
  • 采用频域多帧循环迭代解卷积算法(CIBD),针对提高复原图像的准确性和快速性两个方面进行研究。以退化序列中任意帧作为起始帧,逐次增加迭代帧,确保更多的观测帧参与循环迭代解卷积以增加复原的准确性;通过图像间的...
  • 用真实的PSF函数和噪声强度作为参数进行图像复原
  • 太赫兹共焦扫描成像中,由于太赫兹激光器不可能恒定输出和采集信号微弱等原因,成像质量有待...图像处理结果表明,对所考察图像应用所确定的滤波参数时,MNLM滤波稍好于NLM滤波,NLM滤波稍好于BM3D,中值滤波效果较差。
  • 根据暗原色先验理论对来自煤矿井下无雾图像数据库进行统计,建立了煤矿井下图像成像的物理模型,利用该模型估算介质传播函数和井下光线照度,再由去雾尘模型复原得到清晰化的图像。试验结果表明,该算法有效恢复了场景的...
  • 由于退化图像的点扩散函数难以准确确定,提出一种基于Fourier正交基函数的前向神经网络图像复原模型,该模型以一组Fourier正交基为隐层神经元的激励函数,根据误差传递算法进行权值修正,达到收敛目标。给出Fourier...
  • 对模糊的成像结果进行图像复原,采用高斯函数作为点扩展函数,应用于三维逆滤波和维纳滤波算法中,改进了这两种算法。实验结果证明,改进后的维纳滤波算法复原三维序列的结果比改进后逆滤波算法得到的结果更好。此外...
  • 有段时间需要做图像复原的研究,就用了平时用的比较多的MATLAB平台。利用的是MATLAB的工具箱,但各个参数的设置我都研究了一段时间,也参考了萨冈雷斯的关于图像处理的著作。程序前半部分不含噪声用了四种滤波法,后...
  • 图像复原领域,当噪声较为复杂时,频域滤波方法因为难以计算得到噪声的频域模型,不能合理地去除噪声干扰,空间域方法就容易多了,因此空间域滤波方法占有很重要的地位。 图像复原问题的重要步骤是建立合理的图像...

    背景

    研究空间域滤波方法是图像处理领域的重要内容。相比频域滤波,空间域滤波直接在图像空间上进行操作,除了传统的滤波外,还能加入各种直观的空间域操作,可扩展性和可理解性都比较强。在图像复原领域,当噪声较为复杂时,频域滤波方法因为难以计算得到噪声的频域模型,不能合理地去除噪声干扰,空间域方法就容易多了,因此空间域滤波方法占有很重要的地位。

    图像复原问题的重要步骤是建立合理的图像退化模型。假设退化图像,即观测图像为H,原图为W,点扩散函数(可以理解为模糊卷积核)为S,噪声为N,*为卷积符号,则退化模型为H=WS+NH=W*S+N,所求为W。若假设图像误差满足高斯概率分布,那么可以用最小二乘思想来优化解决上述退化模型,模型为argmin12(WSH)2argmin \frac{1}{2}(W*S-H)^2,现有方法比如维纳滤波、最小二乘空间域滤波都适用。不过如果要把退化模型推广到任意概率分布,就要寻找另外的更鲁棒的方法框架。

    LR算法

    Lucy-Richardson图像复原方法(LR方法或者RL方法)是一种基于贝叶斯思想的空间域上的图像复原方法。该算法从贝叶斯理论出发推导了图像迭代复原的基本框架。本文根据Richardson W H. 1972. 给出一个简单的例子。

    我们知道光学图像中,由于成像时光线有散射等情况,导致图像中某个像素的像素值,由本身像素点的强度和邻近像素点的光线干扰组成。设原始图像第i个像素点为WiW_i,观测图像第k个像素点为HkH_kWiW_iHkH_k的像素值贡献可以表示为Si,kS_{i,k}

    如果把图像归一化,像素值当作概率值,那么整个图像辨成一个概率图,WiW_i等价于P(Wi)P(W_i)Si,kS_{i,k}等价于P(HkWi)P(H_k|W_i),那么反过来已知观测图像,潜在的原始图像分布概率为(1)P(WiHk)=P(HkWi)P(Wi)jP(HkWj)P(Wj)P(W_i|H_k)=\frac{P(H_k|W_i)P(W_i)}{\sum_j{P(H_k|W_j)P(W_j)}} \tag{1},其中j代表点扩散函数S的作用范围;P(HkWi)P(H_k|W_i) 表示点扩散函数,可写作P(Si,k)P(S_{i,k})。注意这里,归一化图像等效为概率图,并不是说某个像素值出现的概率服从某个概率分布。实际上是用贝叶斯原理等效解决图像空间域的问题。

    设原图为P(Wi)P(W_i),写出一个取巧的联合分布公式(2)P(Wi)=kP(Wi,Hk)=kP(WiHk)P(Hk)P(W_i)=\sum_k{P(W_i,H_k)}=\sum_k{P(W_i|H_k)P(H_k)} \tag{2}右侧是贝叶斯公式转变而来的。联合公式(1)(2)可得:(3)P(Wi)=kP(HkWi)P(Wi)P(Hk)jP(HkWj)P(Wj)P(W_i) = \sum_k{\frac{P(H_k|W_i)P(W_i)P(H_k)}{\sum_j{P(H_k|W_j)P(W_j)}}} \tag{3}注意内外求和符号中,求和的对象是j和k。(3)中左右两侧都有P(Wi)P(W_i),联系牛顿下降法的推导,可以得到一个迭代公式:(4)Pr+1(Wi)=kP(HkWi)P(Hk)Pr(Wi)jP(HkWj)Pr(Wj)P^{r+1}(W_i) = \sum_k{\frac{P(H_k|W_i)P(H_k)P^r(W_i)}{\sum_j{P(H_k|W_j)P^r(W_j)}}} \tag{4}

    现将(4)应用到真实图像复原场景中去。Richardson W H. 1972. 设定P(Wi)=Wi/WP(W_i)= W_i/WWW是归一化系数,对其他项也是同样的。(4)中各项概率值可以直接等效为像素值,其中归一化系数在上下分式中被舍弃:(5)Wir+1=kSi,kHkWirjSj,kWjrW_i^{r+1} = \sum_k{\frac{S_{i,k}H_kW^r_i}{\sum_j{S_{j,k}W^r_j}}} \tag{5}

    现将(5)扩展到二维图像复原。首先必须注意到内外求和公式中求和项分别是k和j。(5)中外面的求和项中,i是当前像素点,是当前处理区域中心点;而在内部下方的求和中,j是可变的,k才是中心点。因此图像复原公式为:Wr+1=WrSflipHSWrW^{r+1}=W^r\frac{S^{flip}*H}{S*W^r}

    实例

    实际应用中,观测图像、点扩散函数是已知的。本文对lena图像进行了11x11的高斯滤波,并就加入高斯噪声、盐噪声进行了测试。
    高斯滤波+高斯噪声
    高斯滤波+高斯噪声
    高斯去卷积
    高斯滤波+高斯噪声的复原效果,细节还原还好,振铃效应显著,需要改进的LR算法。

    在这里插入图片描述
    高斯滤波+5%盐噪声
    在这里插入图片描述
    高斯滤波+5%盐噪声的复原结果,效果很差,说明原始LR算法对噪声是很敏感的。
    在这里插入图片描述
    对观测图像(高斯滤波+5%盐噪声)进行3x3中值滤波之后的复原结果,效果比直接用LR复原要好得多。

    代码

    Wk = np.ones_like(blur)
    Wk =Wk / np.sum(Wk)
    W = np.ones_like(blur) 
    W = W/ np.sum(W)
    #median = cv2.medianBlur(blur,3)
    #H = median / np.sum(median)
    H = blur / np.sum(blur)
    S=gkernel
    ST =np.flip(S)
    
    for i in range(0,100):
        W=Wk*cv2.filter2D(H/(cv2.filter2D(
            Wk,ddepth = -1,kernel = ST)),ddepth = -1,kernel = S) 
        Wk = W
    

    [1] Richardson W H . Bayesian-Based Iterative Method of Image Restoration*[J]. Journal of the Optical Society of America (1917-1983), 1972, 62(1):55-59.

    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 519
精华内容 207
关键字:

图像复原算法