Пиксельные аномалии с scipy.ndimage.geometric_transform - PullRequest
0 голосов
/ 01 января 2019

Я пытаюсь реализовать карту смещения на клочковом изображении.Вот моя реализация.

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

И ниже я пытаюсь использовать черно-белый перлин-шум для смещения в верхний левый квадрант изображения.Как вы можете видеть из центральной области листьев / неба, кажется, что она делает то, что и следовало ожидать.Проблема, конечно же, в случайных пикселях повсюду.Мысли?

resultant image

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...