我试图将高斯滤镜应用于图像。我的过滤器是一个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的高斯滤波器应用到该像素上?
答案 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 如果你的目标是完成高斯模糊而不是自己动手。 还有其他图像操作。