2011-09-21 3 views
4

PIL 파이썬 라이브러리의 im.transform 메소드에 문제가 있습니다. 그러나 매개 변수의 논리를 알아 냈다고 생각했는데, A에서 F까지, 결과 이미지는 잘못된 방향으로 회전하고 잘라 내기 함수로 계산 된 네 모퉁이가 올바른 양수 값을 갖지만 잘립니다.PIL 파이썬에서 affine 변환

누구나 두 좌표계에서 세 개의 동일한 점에서 아핀 매개 변수 (A ~ F)를 계산하는 공식을 제공 할 수 있습니까?

def tran (x_pic, y_pic, A, B, C, D, E, F): 
    X = A * x_pic + B * y_pic + C 
    Y = D * x_pic + E * y_pic + F 
    return X, Y 

답변

8

변환이 제대로 작동합니다. 예를 들어, 선택적인 스케일링과 변환을 통해 (0,0)이 아닌 다른 중심으로 이미지를 회전시켜 새로운 중심으로 옮깁니다. 다음은 변환을 사용하여 수행하는 방법입니다.

def ScaleRotateTranslate(image, angle, center = None, new_center = None, scale = None,expand=False): 
    if center is None: 
     return image.rotate(angle) 
    angle = -angle/180.0*math.pi 
    nx,ny = x,y = center 
    sx=sy=1.0 
    if new_center: 
     (nx,ny) = new_center 
    if scale: 
     (sx,sy) = scale 
    cosine = math.cos(angle) 
    sine = math.sin(angle) 
    a = cosine/sx 
    b = sine/sx 
    c = x-nx*a-ny*b 
    d = -sine/sy 
    e = cosine/sy 
    f = y-nx*d-ny*e 
    return image.transform(image.size, Image.AFFINE, (a,b,c,d,e,f), resample=Image.BICUBIC) 

희망이 있습니다. 그렇지 않으면 알려주세요.

Cheers, Philipp.

+0

그동안 나는 그것을 알아 냈습니다. 나는 또한 당신의 모범을 시험해 볼 것입니다. 고마워 – Matej