快速像素混合插值

用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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章