Beier neely图像在python中变形,需要有关numpy / image数组的帮助

时间:2017-11-29 12:51:22

标签: python numpy image-processing python-imaging-library

所以基本的算法或其中的一部分是

for all pixles X in an image
   calculate u,v,X'
   destinationImage(X) = SourceImage(X')

此部分的代码到现在为止:

from PIL import Image, ImageDraw
from math import sqrt
import numpy

im = Image.open('1a.png')
imArray = numpy.array(im)

xi = input("enter initial position of inputline, x coordinate ")
yi = input("enter initial position of inputline, y coordinate ")

xif = input("enter final position of inputline, x coordinate ")
yif = input("enter final position of inputline, y coordinate ")

xt = input("enter initial position of targetline, x coordinate ")
yt = input("enter initial position of targetline, y coordinate ")

xtf = input("enter final position of targetline, x coordinate ")
ytf = input("enter final position of targetline, y coordinate ")

P = numpy.mgrid[xi:yi]
Q = numpy.mgrid[xif:yif]

Po= numpy.mgrid[xt:yt]
Qo= numpy.mgrid[xtf:ytf]

width = im.size[0]
height = im.size[1]

#draw = ImageDraw.Draw(im)
#draw.line((100,200, 150,200),fill=128,width=3)
#im.show()

vec = [xi,yi]
vec1 = [xif,yif]

vec2 = [xt,yt]
vec3 = [xtf,ytf]

perp = numpy.cross(vec,vec1)
perp1 = numpy.cross(vec2,vec3)

for i in range(width+1):
        for j in range(height+1):
                    X=numpy.mgrid[i:j]
                    u = numpy.dot((X-P),(Q-P))/pow((numpy.sqrt((Q-P).dot(Q-P))),2)
                    #v = numpy.dot((X-P),(numpy.cross((Q-P)))/numpy.sqrt((Q-p).dot(Q-P)))
                    v = numpy.dot((X-P),(perp))/numpy.sqrt((Q-p).dot(Q-P)))
                    X1 = Po + numpy.dot(Qo-Po) + numpy.dot(v,perp1)/numpy.sqrt((Qo-Po).dot(Qo-Po))

我现在遇到的问题是我应该怎样做最后一个算法行,destinationImage(X)= sourceImage(X')

我想有必要进行一些更改来创建新的图像数组并显示但该怎么做?

0 个答案:

没有答案