2014-09-14 2 views
0

У меня 5 изображений с 5 различными источниками света. Исходя из этого, я создал матрицу с нормалями каждого пикселя, которая является матрицей N X 3. Мне нужно использовать quiver3 для отображения нормалей поверхности. Я не знаю, как заполнить колчан3. Могу ли я использовать нормали? С чем связаны ссылки x, y, z? Изображение? А так как изображение x, y, откуда я знаю z?Использование quiver3 при выполнении фотометрической стереофонической функции 3D

ответ

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 пикселей или около того.

+0

Я вычислил массив высоты 2D, который я вставил, как вы предложили. Я получаю жалобы, что Z и U - не одно и то же измерение. – Cassie

+0

@ user4039874 Каковы размеры ваших 'x',' y', 'z' и' nor'? – Shai

+0

Использование size(): x = [1 1], y = [1 1], z = [512 512], normal = [512 512 3] – Cassie