2017-02-10 1 views
0

이미지가 픽셀 값의 배열인데, 보통 5000x5000이라고 할 수 있습니다 (일반적인 크기 임). 이제 10kx10k로 2 배 확대하고 싶습니다. (0,0) 픽셀 값의 값은 확장 된 이미지의 (0,0), (0,1), (1,0), (1,1)로 이동합니다.이미지를 파이썬으로 더 빨리 리사이즈하는 방법

는 그 후 나는

다음 나는 다시 원래이 10kx10k 배열의 크기를 조정해야합니다 (I 내 배열의 크기에 대해,이보다 더 빠른 방법이 없다는 생각) scipy.interpolate.rotate를 사용하여 확장 된 이미지를 회전하고 크기 즉 5kx5k. 이렇게하려면 확장 된 이미지에서 (0,0), (0,1), (1,0), (1,1)의 평균 픽셀 값을 가져 와서 (0,0)의 새로운 이미지.

그러나이 모든 것이 값 비싼 절차 인 것으로 밝혀졌습니다. 배열의 크기가 주어진다면 많은 시간이 걸립니다. 더 빠른 방법이 있습니까? 나는 원본 이미지 유사한 방법은 회전 후 원래 크기로 이미지를 축소하는 데 사용됩니다

#Assume the original image is already given 
largeImg=np.zeros((10000,10000), dtype=np.float32) 
for j in range(5000): 
    for k in range(5000): 
      pixel_value=original_img[j][k] 
      for x in range((2*k), (2*(k+1))): 
       for y in range((2*j), (2*(j+1))): 
        largeImg[y][x] = pixel_value 

를 확장하려면 다음 코드를 사용하고 있습니다.

답변

4

사용할 수 repeat :

large_img = original_img.repeat(2, axis=1).repeat(2, axis=0) 

final_img = 0.25 * rotated_img.reshape(5000,2,5000,2).sum(axis=(3,1)) 

scipy.ndimage.zoom. 이렇게하면 numpy 메소드보다 더 매끄러운 결과를 얻을 수 있습니다.

관련 문제