У меня 5 изображений с 5 различными источниками света. Исходя из этого, я создал матрицу с нормалями каждого пикселя, которая является матрицей N X 3. Мне нужно использовать quiver3 для отображения нормалей поверхности. Я не знаю, как заполнить колчан3. Могу ли я использовать нормали? С чем связаны ссылки x, y, z? Изображение? А так как изображение x, y, откуда я знаю z?Использование quiver3 при выполнении фотометрической стереофонической функции 3D
0
A
ответ
0
Поскольку вы еще не восстановили форму, ваше значение глубины z
равно нулю. После восстановления формы у вас будут нетривиальные значения для z
.
Основываясь на вашем comment, nor
представляет собой массив 512 на 512-на-3, и я предполагаю, что изображение имеет тот же размер. Затем
sz = size(nor(:,:,1));
[y x] = ndgrid(1:sz(1), 1:sz(2)); %// values for x and y should be of size [512 512]
z = zeros(size(x));
figure;
imshow(img); hold on;
quiver3(x, y, z, nor(:,:,1), nor(:,:,2), nor(:,:,3));
Скорее всего, результирующее векторное поле будет слишком плотным. вы можете рассмотреть возможность отображения нормального вектора каждые 5 пикселей или около того.
Я вычислил массив высоты 2D, который я вставил, как вы предложили. Я получаю жалобы, что Z и U - не одно и то же измерение. – Cassie
@ user4039874 Каковы размеры ваших 'x',' y', 'z' и' nor'? – Shai
Использование size(): x = [1 1], y = [1 1], z = [512 512], normal = [512 512 3] – Cassie