给定像素和高斯滤波器,应用高斯模糊

时间:2014-02-21 02:57:34

标签: python

我试图将高斯滤镜应用于图像。我的过滤器是一个n×n square maxtrix,表示为列表列表。我已将我的图像转换为R,G和B的3个独立的2d数组,因此调用B[x][y]会在x,y处给出该像素的蓝色值。

我很难想到应用模糊的方法。例如,如果我有过滤器[[1,1,1],[1,1,1],[1,1,1]]B[x][y]处的模糊结果应为

1*B[x-1][y-1] + 1*B[x-1][y] + 1*B[x-1][y+1] +
1*B[x][y-1] + 1*B[x][y] + 1* B[x][y+1] +
1*B[x+1][y-1] + 1*R[x+1][y] + 1*B[x+1][y+1]

我想到使用嵌套循环遍历每个颜色2d数组(R,G和B),但我不知道从那个点开始做什么,因为x和x的值y在每个地方都在变化。

给定x,y处的红/绿/蓝像素,如何将大小为n x n的高斯滤波器应用到该像素上?

3 个答案:

答案 0 :(得分:-1)

从这里开始:http://campar.in.tum.de/twiki/pub/Chair/TeachingSs04ImageSeg/VL_Segmentierung_kap8.pdf

调整等式中的变量将极大地影响您看到的边缘的清晰度。

答案 1 :(得分:-1)

在计算每个新像素时,您应该复制图像像素平面作为未更改的原始图像:

def blur( P ):
    T = list( P )
    for x ...
        P[x][y] = 1*T[x-1][y-1] + 1*T[x-1][y] + 1*T[x-1][y+1] +
           1*T[x][y-1] + 1*T[x][y] + 1* T[x][y+1] +
           1*T[x+1][y-1] + 1*T[x+1][y] + 1*T[x+1][y+1]

答案 2 :(得分:-1)

枕头会为你做这件事。 http://pillow.readthedocs.org/en/latest/reference/ImageFilter.html 如果你的目标是完成高斯模糊而不是自己动手。 还有其他图像操作。