2014-05-25 5 views
1

내가 내 기본 행렬 계산과 MATLAB에서 에피 폴라 라인 심각한 문제가 교차하지 않습니다. 당신이 볼 수 있듯이, 점과 선 사이의 변화가 어떻게 든이 Matlab issueMATLAB : 에피 폴라 선은 점 (기본 매트릭스)

: 현재 결과 사진을 볼 수 있습니다. 두 이미지 사이에서 검출보다는 수동으로 선택한 점 또한 MATLAB 함수 (epipolarline)와 : 난 다음 코드보다 다른 방법을 시도하는 것이 정확해야한다. 또한 수동으로 기본 행렬을 계산 (F_8 = 전치 (INV (M_B)) * 성 *의 INV (M_A);)하지만 아무것도 변경하지 않았다.

그것은 해당 이미지 포인트 권리를 포함하지 에피 폴라 라인 어쨌든 연결되지해야합니까? 빠른 모양을하고 나를 도울 수 있다면 정말 감사 할 것입니다. 여기 내 코드는 다음과 같습니다.

% 8 point algorithm % 
    points_A = detectHarrisFeatures(rgb2gray(imgA)); 
    points_B = detectHarrisFeatures(rgb2gray(imgB)); 
    [featuresA, valid_pointsA] = extractFeatures(rgb2gray(imgA), points_A); 
    [featuresB, valid_pointsB] = extractFeatures(rgb2gray(imgB), points_B); 
    indexes = matchFeatures(featuresA,featuresB, 'MaxRatio', 0.65); 
    matchedPointsA = valid_pointsA(indexes(:, 1), :); 
    matchedPointsB = valid_pointsB(indexes(:, 2), :); 

    F_8 = estimateFundamentalMatrix(matchedPointsA, matchedPointsB,'Method','Norm8Point'); 

    % Epipolar lines % 
    figure() 
    imgB = imread('asanB.jpg'); 
    imshow(imgB); 
    hold on; 

    for i = 1:size(image_points_B,1) 
     line = F_8'*[matchedPointsB.Location(i,:),1]'; 

     points_x = [0,size(imgB,2)]; 
     points_y = [(-points_x(1)*line(1)-line(3))/line(2)... 
      (-points_x(2)*line(1)-line(3))/line(2)]; 

     plot(matchedPointsB.Location(i,1),matchedPointsB.Location(i,2),'r.','MarkerSize',20)       
     plot(points_x,points_y); 
    end; 

    hold off 

답변

0

이것은 정상입니다. 기본 행렬의 추정은 잡음에 민감하기 때문에 대응하는 점은 거의 epipolar 선으로 끝나지 않습니다. 일반적으로, 대응하는 에피 폴라 라인과 너무 멀어지는 불량 일치를 제거하기 위해 허용 한계 값을 도입합니다.

당신은 더 좋은 경기 함께 시작하여 더 나은 결과를 얻을 수 있습니다. 다른 관심 지점 탐지기 및/또는 다른 설명자를 시도 할 수 있습니다. extractFeatures은 기본적으로 해리스 모서리가있는 FREAK 설명자를 사용합니다. 'Method'매개 변수를 설정하여 다른 설명자를 사용할 수 있습니다.