как сгруппировать один и тот же вектор нормали в изображении (python) - PullRequest
0 голосов
/ 29 ноября 2018

Я хочу отделить стену и пол.Теперь у меня есть изображение глубины и я нахожу изображение поверхности нормальным по глубине.Я хочу сгруппировать один и тот же вектор нормали и преобразовать изображение в двоичное.

    d_im = depth_image.astype("float64")

    zy, zx = np.gradient(d_im)  
    normal = np.dstack((-zx, -zy, np.ones_like(d_im)))

    n = np.linalg.norm(normal, axis=2)

    normal[:, :, 0] /= n
    normal[:, :, 1] /= n
    normal[:, :, 2] /= n

    # offset and rescale values to be in 0-255
    normal += 1
    normal /= 2

    cv2.imshow("Normal Image", normal[:, :, ::-1])

Я хочу получить нормальный вектор со стены.Как я могу сделать ?Большое спасибо

файл глубины_изображения:

http://www.wikiupload.com/20D8UHUU58FTP2S

Как получить вектор z в программе?

1 Ответ

0 голосов
/ 29 ноября 2018

Простое наивное решение состояло бы в том, чтобы использовать компонент z в векторе нормалей с некоторым порогом, поскольку нормальный вектор нормализован, компонент z этажа будет иметь значение, близкое к 1, в то время как для стены будет иметь значение, близкое к 0, поэтомупорог 0,5 может дать хороший старт, возможно, после этого вам понадобится шумоподавляющий метод

...