최적의 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 (또는 비슷한 기능) 기능을 제공합니다.
아마도이 튜토리얼은 openCV로 스테레오 이미징에 관한 도움이 될 것입니다. http://opencv-python-tutroals.readthedocs.org/en/latest/py_tutorials/py_calib3d/py_epipolar_geometry/py_epipolar_geometry.html – Micka
감사합니다. RGB 대신 HSV를 사용하는 임시 해결책이 있고 지금까지 완벽하게 작동하는 것 같습니다. 고마워요 tho! – Navles