用python实现的一个象素插值demo程序,象素混合累积差插值,和QQ上一个朋友聊图像拼接时,写的演示程序。
确切地说,并未用到图像学的知名算法,实际效果还行,理论效果有待验证。
主要原理是图形学中累积缓存差+计算机网络中的二元指数退避。
#-*-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