'''MakeConvolutionFormula.py ''' def makeConvolutionFormula(kernel): nrows = len(kernel) ncols = len(kernel[0]) midx = ncols / 2 # (midx, midy) is the origin of the kernel. midy = nrows / 2 f = "" # The formula starts out empty. dy = - midy # Starting displacement for y for row in kernel: # Loop over rows. signdy = sign(dy) dx = - midx # Starting displacement for x for elt in row: # Loop over columns. signdx = sign(dx) if dx==0: dxExpression = "" else: dxExpression = signdx+str(abs(dx)) if dy==0: dyExpression = "" else: dyExpression = signdy+str(abs(dy)) if elt==0: continue # if elt is 0, don't even # include the pixel expression. pixelExpression = "S1(x"+dxExpression+",y"+dyExpression+")" if elt==1: coefficientExpression = "+" elif elt == -1: coefficientExpression = "-" else: coefficientExpression = sign(elt)+str(abs(elt))+"*" f += coefficientExpression + pixelExpression dx += 1 dy += 1 if f[0]=='+': return f[1:] else: return f def sign(n): if n < 0.0: return '-' else: return '+' def test(): sampleInput =\ [[-1, -2, -1],\ [ 0, 0, 0],\ [ 1, 2, 1]] formula = makeConvolutionFormula(sampleInput) print "The formula is:" print formula test()