高斯模糊的逆滤波器

Inverse Filter for Gaussian Blur

我最近使用高斯卷积来模糊图像。它运作良好,事实上它运作良好。但是,现在我正试图将其反转,而我的逆向过滤器使 运行ning 陷入问题。过滤器应该 运行 遵循以下原则:

G(x, y) / H(x, y) = F(x, y) 其中G(x, y)是模糊图像的傅里叶变换,H(x, y)是傅里叶F(x, y) 是模糊函数的变换,F(x, y) 是原图的傅立叶变换。

目前,生成的图像看起来与原始图像完全一样。我的算法如下:

from PIL import Image
import math
import cmath
import numpy as np

def reverseGaussianBlur(picture, r):
    rs = int(math.ceil(r * 2.57)                  # Calculate significant radius
    w, h = picture.size
    pixels = list(picture.getdata())              # Image's pixels as list
    fft_pixels = runFourier(pixels, False)        # Run FFT
    temp_picture = []
    for u in range(0, h):
        for v in range(0, w):
            val = [0] * 3
            wsum = 0
            for iy in range(u - rs, u + rs + 1):
                y = min(h - 1, max(0, iy))
                for ix in range(v - rs, v + rs + 1):
                    x = min(w - 1, max(0, ix))
                    weight = (2 * math.pi) ** 0.5 * cmath.exp(-r * r * ((ix - v) * 
                        (ix - v) + (iy - u) * (iy - u)) / 2)
                    if (weight.real > 1e-5):
                        val = [n + p / weight for n, p in zip(val, fft_pixels[y * w + x])]
                    wsum += weight
            temp_picture.append(tuple([v * wsum for v in val]))
    return_picture = [tuple(int(round(p)) for p in pixel) for pixel in 
        runFourier(temp_picture, True)]           # Run Inverse FFT
    return return_picture

无论如何,我不太确定哪里出了问题,如果有任何帮助就更好了。

模糊图像时,基本上是在去除高频成分。他们走了。没有反向过滤器。 如果你应用了一个 "filter" 来获取每个像素并将其替换为纯白色,你不会期望有一个反向过滤器,因为所有细节(原始图像的大小除外)都是丢失。模糊也是一样,只是你失去了高频成分。