2014-02-16 4 views
0

저는 OpenCV를 Python 인터페이스를 통해 익숙하게 사용하고 있지만, 이미지 정확도를 요구하는 다소 비표준적인 문제에 이미지 보간 기능을 사용하면서 결과에 예상치 못한 부정확성이 있음을 발견했습니다. 아래 코드는 내 문제를 설명합니다. 어떤 아이디어? 그 설계 정확도 밖에서 보간기를 사용하려고합니까?Python OpenCV 이미지 보간 부정확함

import numpy as np 
import cv2 
import matplotlib.pyplot as plt 

# Source gradient image from 0 to 255 
src = np.atleast_2d(np.linspace(0,255,10)); 

# Set up to interpolate from first pixel value to last pixel value 
map_x_32 = np.linspace(0,9,101) 
map_x_32 = np.atleast_2d(map_x_32).astype('float32') 
map_y_32 = map_x_32*0 

# Interpolate using OpenCV 
output = cv2.remap(src, map_x_32, map_y_32, cv2.INTER_LINEAR) 

# Truth 
output_truth = np.atleast_2d(np.linspace(0,255,101)); 

interp_error = output - output_truth 

plt.plot(interp_error[0]) 

답변

0

나는 동일한 부정확성을 경험했습니다. scipy.ndimage.map_coordinates은 훨씬 정확하지만 제 경우에는 5 배 느립니다.

당신은이 경우에 그것을 사용할 수 있습니다

# Interpolate using Scipy 
xy = np.vstack((map_y_32[np.newaxis,:,:], map_x_32[np.newaxis,:,:])) 
output_scipy = scipy.ndimage.map_coordinates(src, xy, order=1)