Я пытаюсь реализовать однородное преобразование из изображения несоответствия в изображение виртуального несоответствия, следуя статье Suganuma et. и др. "Метод извлечения препятствий с использованием виртуального несоответствия Изображение". После выполнения матричных вычислений, описанных в статье, я получаю глобальную однородную матрицу преобразования, которая описывает только перевод -27.7 в направлении v, что имеет смысл.Loop для создания виртуального изображения несоответствия в MATLAB
Теперь, чтобы сделать эту трансформацию, я осуществил цикл в MATLAB:
virtual_disparity=zeros(size(disparityMap));
%Homogeneous vector of a point of the disparityMap U=[u/d v/d 1/d 1]' (4x1)
U = zeros(4,1);
U_v = zeros(4,1);
for i=1:size(disparityMap,1) %Rows-->y
for j=1:size(disparityMap,2) %Cols-->x
d = disparityMap(i, j); % (i,j)-->(cols,rows)-->(y,x)
U = [j/d i/d 1/d 1]'; % [u/d v/d 1/d 1]'
U_v = B*U; % B is the whole homogeneous transform
U_v = U_v./U_v(4);
u_v_x = U_v(1); %u_v_j
u_v_y = U_v(2); %u_v_i
if((u_v_x>1) && (u_v_x<=size(virtual_disparity, 2)) && (u_v_y>1) && (u_v_y<=size(virtual_disparity, 1)))
virtual_disparity(round(u_v_y), round(u_v_x)) = disparityMap(i, j);
end
end
end
Теперь проблема заключается в том, что виртуальное неравенство, что я получаю не имеет никакого смысла, так как это не даже соответствует преобразованию, описанному в B, который, как я сказал это:
1.0000 0 0.0000 0
0 1.0000 0.0000 -27.7003
0 0 1.0000 0
0 0 0 1.0000
это несоответствие и виртуальный разрыв соответственно:
Я перепроверка в течение всего дня, и я не нахожу ошибку.
Я никогда не слышал о «виртуальном несоответствии», поэтому я допускаю, что это попытка, но я думаю о однородных координатах. Я думаю, что ваша трансформация B должна применяться к трехмерной однородной координате, которая должна быть как «[X, Y, Z, 1]», а не «уже нормализованная форма» [X/Z, Y/Z, 1, 1/Z] (как вы видите, если вы нормализуете «перед чем-то другим», последнее значение не может быть 1). Если я говорю о совершенно другом, пожалуйста, будьте добры и объясните мне это: я любезен! – marcoresk
@marcoresk Я не нормализую его, так как я не делю последний элемент, который остается 1: 'U = [j/di/d 1/d 1] ';' Просто метод использует эти координаты, который включает в себя информацию из пикселя изображения и несоответствие (обратно пропорционально расстоянию. Я уже нашел то, что неправильно, что связано, но в конечных координатах. Спасибо в любом случае. Мне нужно идти, я отправлю ответ сегодня;) – agregorio