1. Breve descrição
Através do estudo da dissertação de mestrado, compreendo os vários algoritmos de correspondência estéreo, agora o matlab é usado para obter correspondência estéreo binocular.
Link de estudo da tese: Projeto de graduação da visão binocular Zynq FPGA (6) Resumo do estudo da tese de mestrado
2. Código-fonte
Atualmente, a busca epipolar é utilizada, ou seja, a busca é realizada apenas na direção horizontal, e o erro é relativamente grande. A fim de reduzir a dificuldade de implementação em FPGA, não planejamos usar a agregação de vários caminhos, portanto, você deve implementá-los.
Este código-fonte é apenas a parte correspondente, basta adicionar essa parte do algoritmo ao meu código-fonte compartilhado anterior e fazer uma conexão.
Portal: Projeto de graduação de visão binocular Zynq FPGA (5) realização de algoritmo de correção de linha polar matlab
%Census
[B, A, C] = size(new_image_L)
windowsize = 9;
win = (windowsize -1)/2;
D_min = 0;
D_max = 50;
for b = win+1 : B-win
for a = win+1 : (A-win-D_max)
%左图census变换
var_r = zeros(1,windowsize^2);
parallax = D_min; hamm_data =10000; hamm=0;
for m = -win : 1 : win
for n = -win : 1: win
if(new_image_R(b+m,a+n) <= new_image_R(b,a))
var_r(1,9*n+m+41) = 1;
else
var_r(1,9*n+m+41) = 0;
end
end
end
%对右图进行变换
for d = D_min : 1 : D_max
var_l = zeros(1,windowsize^2);
hamm_value = 0;
for m = -win : 1 : win
for n = -win : 1: win
if(new_image_L(b+m,d+a+n) <= new_image_L(b,d+a))
var_l(1,9*n+m+41) = 1;
else
var_l(1,9*n+m+41) = 0;
end
end
end
%汉明距离计算
hamm = xor(var_l,var_r);
hamm_value = sum(hamm(:) == 1);
if(hamm_data > hamm_value)
hamm_data = hamm_value;
parallax = d;%得到视差值
end
end
parallax_image(b-win,a-win)= parallax;
end
end
dispMap = mat2gray(parallax_image);
B=medfilt2(dispMap,[5 5]);%中值滤波,滤波器窗口[9 9]
3. Efeito
O efeito não é muito bom, o principal motivo é que apenas a direção horizontal é usada para pesquisar a correspondência, e o erro é grande. Em segundo lugar, pode-se ver no diagrama do efeito da correção da linha polar que a correção não é muito boa, o que está relacionado ao problema da placa de calibração e ao problema de calibração do matlab, que será ajustado posteriormente. Existe também o gráfico de calibração utilizado, que não consegue destacar a distância do objeto, quando a nova prancha chegar, colete algumas fotos para testar.
Nota: O operador sobel extrai recursos de borda da imagem para reduzir as informações de pixel e também reduz alguns erros. Você também pode combinar diretamente as imagens corrigidas em estéreo sem sobel.