確切地說,並未用到圖像學的知名算法,實際效果還行,理論效果有待驗證。
主要原理是圖形學中累積緩存差+計算機網絡中的二元指數退避。
#-*-coding:gbk-*-
import math
import Image
#兩張圖
imageA = Image.open(r"a.jpg")
imageB = Image.open(r"b.jpg")
#最大半徑
rMax = 2
#原點X,Y座標
originX = 10
originY = 10
origin = (originX,originY)
#象素字節長,RGB=3
pixelSize = 3
#結果
C = [0,0,0]
for x in range(-rMax,rMax+1):
for y in range(-rMax,rMax+1):
distance = math.sqrt(abs(x+y))
if distance > rMax:
continue
pixelA = imageA.getpixel((originX+x,originY+y))
pixelB = imageB.getpixel((originX+x,originY+y))
for i in range(pixelSize):
delta = (float(pixelA[i]) + float(pixelB[i]) - 2*float(C[i])) / (2**distance)
C[i] += delta
for i in range(pixelSize):
if C[i] < 0:
C[i] = 0
else:
C[i] = int(C[i]) % 255
print "A圖象素:",imageA.getpixel(origin)
print "B圖象素:",imageB.getpixel(origin)
print "插值後象素:",C