Posicionamento bi-objetivo baseado em MATLAB
1. Ferramentas e dispositivos usados
1. Câmera binocular (OV9732)
2. MATLAB2018a
3. pycharm
4. Mapa de grade (xadrez e grade de xadrez)
5. O computador vem com uma câmera
2. Coleta e pré-processamento de imagens
(1) Aquisição de imagem
1. Imprima a imagem da grade de xadrez e cartas abaixo e corrija-a.
2. Conecte a câmera ao computador através de um cabo USB.
3. Ajuste a resolução para 2560 720, 1280 480, 640*240
. Ajuste a posição e tire 10 mais fotos, um total de 40 fotos (pode ser um pouco mais)
(2) Processamento de imagem
1. Nomenclatura
Abra o pycharm e nomeie as fotos coletadas uniformemente (claro, você também pode nomeá-las uma a uma, mas será problemático)
import os
class BatchRename():
def __init__(self):
self.path = r'F:\asd'
def rename(self):
filelist = os.listdir(self.path)
total_num = len(filelist)
i = 0
for item in filelist:
if item.endswith('.jpg'):
src = os.path.join(os.path.abspath(self.path), item)
dst = os.path.join(os.path.abspath(self.path), (str(i)) + '.jpg')
try:
os.rename(src, dst)
print('converting %s to %s ...' % (src, ('pyp.' + dst)))
i = i + 1
except:
continue
print('total %d to rename & converted %d jpgs' % (total_num, i))
if __name__ == '__main__':
demo = BatchRename()
demo.rename()
O objetivo é nomear uniformemente, para facilitar o corte e processamento de imagens posteriormente
2. Corte
Primeiro, crie duas pastas, uma chamada à esquerda, outra à direita, abra o MATLAB para escrever o código para o corte da imagem
clc;
for i=0:39 %40张照片,根据我自己的命名的方法从0到39
C=strcat('F:\asd\',num2str(i),'.jpg');
A=imread(C);
[m ,n,~]=size(A);
n1=n/2;
p_1=zeros(m,n1,3);
p_2=zeros(m,n1,3);
p_1=A(:,1:n1,:);
p_2=A(:,n1+1:n,:);
a=num2str(i);
cd('F:\asdzong\left');
imwrite(p_1,strcat(a,'_l.jpg'));
cd('F:\asdzong\right');
imwrite(p_2,strcat(a,'_r.jpg'));
end
As renderizações são as seguintes:
3. Calibração
1. Abra o APP no matlab, localize stereoCameraCalibrator e execute-o
. 2. Clique em AddImages no canto superior esquerdo e insira os endereços das pastas esquerda e direita , respectivamente. Preencha o tamanho da grade (comprimento lateral) da grade quadriculada atrás de Tamanho de quadrado do tabuleiro de damas , clique em OK e aguarde. A seguinte imagem aparece
3. Em seguida, clique em Calibrate para exibir a seguinte imagem:
4. Remova os dados com erro grande:
5. Obtenha o resultado final:
6. Imprima o resultado da calibração (Export Camera Parameters):
7. Saia do stereoCameraCalibrator e salve o resultado para gerar um mat
e, em seguida, você pode usar os resultados da calibração para corrigir e obter o mapa de profundidade, que será apresentado no artigo de acompanhamento