2012-03-25 77 views
2

我正在研究一个基本的CS类,并且在其中我们有一个项目,我们必须在Python中为2D卷积编写代码。我已经把我写下面的代码:python中的2D卷积

def Convolve2D(image1, K, image2): 
    #iterate over all rows (ignore 1-pixel borders) 
    for v in range(1, image2.getHeight()-1): 
     graphics.update() # this updates the output for each row 
     # for every row, iterate over all columns (again ignore 1-pixel borders) 
     for u in range(1, image2.getWidth()-1): 
      # for every pixel, iterate over region of overlap between 
      # input image and 3x3 kernel centered at current pixel 
      for i in range (0, 3): 
       for j in range (0, 3):                        
        # compute output image pixel 
        image2.setPixel(u,v,graphics.color_rgb((image2.getPixel(u,v)[0] + image1.getPixel(u-1+i,v-1+j)[0]*K[i][j]), 
            (image2.getPixel(u,v)[1] + image1.getPixel(u-1+i,v-1+j)[1]*K[i][j]), (image2.getPixel(u,v)[2]+image1.getPixel(u-1+i,v-1+j)[2]*K[i][j]))) 

为最后一步我必须钳位和设置输出图像。通过钳位,我被要求使用之前定义的钳位功能:

def Clamp(pix): 
    pix = abs(pix) 
    if pix > 255: 
     pix = 255 
    return pix 

但我无法获得最后一步的工作。任何意见,将不胜感激。

+1

也许我错过了它。我没有看到你叫'Clamp()'的地方。你有什么错误吗?如果是这样,请发布完整的回溯。谢谢。 – bernie 2012-03-25 00:19:37

+0

我每次尝试使用钳位都遇到错误。 – Kristen 2012-03-25 00:21:45

+0

@KirstenLuethy发布实际错误将有所帮助 – prelic 2012-03-25 00:24:35

回答

1

正如prelic说的那样,当你需要一个数字时,你传递一个字符串给Clamp。