Я пытаюсь реализовать карту смещения на клочковом изображении.Вот моя реализация.
def displaceImage(img,displacementMap,distance=10,angle=45):
"""
NOTE: If displacementMap is smaller than img, then everthing out of bounds
is not displaced!
"""
angle=math.radians(angle)
img=numpyArray(img)
displacementMap=numpyArray(displacementMap)
if len(displacementMap.shape)>2:
# convert displacement map to grayscale
displacementMap=colorSpaces.grayscale(displacementMap)
def dissp(point):
"""
Called for each point in the array. Returns a same shaped tuple where it should go.
"""
if point[0]<displacementMap.shape[0] and point[1]<displacementMap.shape[1]:
delta=displacementMap[point[0],point[1]]*distance
toX=point[0]+delta*math.sin(angle)
toY=point[1]-delta*math.cos(angle)
if len(point)>2: # array is (w,h,rgb)
point=(toX,toY,point[2])
else: # array is (w,h) -- aka grayscale
point=(toX,toY)
return point
img=scipy.ndimage.geometric_transform(img,dissp,mode="nearest")
return img
И ниже я пытаюсь использовать черно-белый перлин-шум для смещения в верхний левый квадрант изображения.Как вы можете видеть из центральной области листьев / неба, кажется, что она делает то, что и следовало ожидать.Проблема, конечно же, в случайных пикселях повсюду.Мысли?