2014-11-18 2 views
1

안녕하세요 Stackoverflowers,OpenCv - 깊이 맵

내 현재 할당은 금속 빌릿 (로그)이 하나 또는 두 부분으로 만들어 졌는지 확인하는 것을 포함합니다. 이 첫 번째 시도는 두 개의 로그를 구분하는 검정색 세로선을 검색했습니다. 내가 별거를 찾지 못하면 내가 한 조각이라고 결론을 내린다. .... 어두운 colloured 빌렛이 따라 올 때까지

enter image description here

이 프로그램은 ... 흠 일 enter image description here

그래서 내가는 항상 알고 다른 하나 개의 매개 변수를 사용하기로 결정 진실하고 깊이가있다. 항상 빌릿과 간격이 다른 깊이가있을 것입니다.

그래서 저는 두 대의 카메라를 서로 평행하게 설치하려고 노력했습니다. 누군가이 포인터를 올바르게 설정하는 방법이 있습니까?

아니면 다른 사람이 내 작업을 수행하는 다른 방법을 알고 있습니까?

미리 감사드립니다.

+0

아마도이 튜토리얼은 openCV로 스테레오 이미징에 관한 도움이 될 것입니다. http://opencv-python-tutroals.readthedocs.org/en/latest/py_tutorials/py_calib3d/py_epipolar_geometry/py_epipolar_geometry.html – Micka

+0

감사합니다. RGB 대신 HSV를 사용하는 임시 해결책이 있고 지금까지 완벽하게 작동하는 것 같습니다. 고마워요 tho! – Navles

답변

0

최적의 IMO 작동 : 공구/하드웨어 샵에서 저렴한 레이저 라인 (약 20 $)을 사용하여 이미지의 레이저를 검색하십시오. 선들이 하나의 조각 인 전체 빌릿 위에 뻗어 있습니다. 선이 끊어 지거나 강한 붕괴가있을 경우 2 개의 벙어리가 있습니다.

내 생각 다음 빌렛 충분히 멀리 떨어져있는 경우

glm::vec3 laserColor(1,0,0); //red 
glm::vec3 currentColor; 
float maximum_color_distance = 0.1; 
for(int a = 0; a < image.rows;a++) 
{ 
    for(int b = 0; b < image.rows;b++) 
    { 
     currentColor = image.at(a,b); 
     float current_distance = glm::distance(laserColor, currentColor); 
     if(current_distance > maximum_color_distance) 
     { 
      image.at(a,b) = 0; 
     } 
    } 
} 

glm::vec2 leftPixel = getMostLeftLaserPixel(image); 
glm::vec2 rightPixel = getMostRightLaserPixel(image); 

Line line = calculateLine (leftPixel,rightPixel); 

line.hasHoles(image, laserColor); //checks for 3x3 pxiel blocks which are on the line, returns false if all pixels in a 3x3 block have an other color then the laser. 3x3 to take small erros to serious 

어쩌면 당신이 바로 그 거리에 KINECT를 사용할 수 있습니다. 스테레오 이미지는 에피 폴라 라인에서 대부분의 시간 블록 매칭을 사용합니다. 즉, 3x3 픽셀을 사용하고 왼쪽에서 오른쪽으로 이동하여 유사하게 보이는 3x3 픽셀을 찾습니다. 금속을 사용하면 문제가 될 수 있습니다. 먼저 패턴을 반복합니다. 두 번째로는 반사음이 있습니다. 각 카메라마다보기 각도가 약간 다르기 때문에 반사도가 다릅니다.

키 넥트도하지만 반복 패턴 금속 reflectness과 같은 문제가있을 수있다 :.

"그것은 개체를 만드는 데 사용되는 재료에 따라 달라 객체가 금속으로 이루어진 경우, 유리이거나 반짝 거리면 깊이 카메라가 이미지를 정확하게 캡처하는 데 어려움을 겪습니다. "

OpenCV는 2 대의 카메라를 사용할 때 많은 도움이되는 rectifyStereoIamge (또는 비슷한 기능) 기능을 제공합니다.

+0

첫 번째로,이 상세한 설명을 쓰는 데 시간을내어 주셔서 감사합니다. 나는 현재 RGB 대신 HSV를 사용하여 작업하게했다. 하지만 이미 5 개의 Bosch 라인 레이저를 주문했습니다. 나는이 방법을 내일 테스트하기 시작할 것이다. 그러나 그것에 대해 생각하면 완벽한 해결책 인 것 같다. 다시 한번 고마워요! 어떻게 작동하는지 알려 드리겠습니다. – Navles

+0

나는 이것이 잘되기를 바란다, 나는 단지 학생이다. (내 이름이 말한 것처럼),하지만 나는 그것이 잘되어야한다고 생각한다. :) – stupidstudent

관련 문제