-1

Что будет лучшим способом получить точное местоположение случайно помещенный объекта, как один на картинке ниже:Признавать случайно расположенный объект с такой же формой

enter image description here

Я хочу построить роботизированное приложение Су, что робот способна собирать такие случайные места из металлических деталей из коробки. Таким образом, у нас есть коробка с множеством упомянутых частей, случайно помещенных в эту коробку. Робот должен собирать эти предметы и помещать их в другую пустую коробку.

Спасибо всем за ответы!

+1

что лучшая пицца? – Piglet

+0

Ответ Piglet правильный, но я немного уточню, что вы можете использовать SIFT, чтобы найти такую ​​часть, и если вам очень повезло, вы можете выбрать часть деталей из корзины, но выбор случайных бинов - чрезвычайно сложная проблема, которая считается не полностью решенной. Если вы студент, сначала попробуйте сначала решить проблему сбора деталей с поверхности самолета. – Rethunk

ответ

0

Предполагая, что в сравнении изображения будут иметь одинаковый масштаб:

// read template and convert it to polar coordinates 
int radius = 100; 
Mat target = imread("target.jpg); 

Mat template; 
cvLinearPolar(target, template, Point(target.cols/2, target.rows/2), ...); 

// read src 
Mat src = imread("src.jpg); 

// initialize values to store best match 
double best_score = DBL_MAX; 
double best_x = -1; 
double best_y = -1; 
double best_angle = -1; 

for (x=0;x<src.width;x++) 
    for (y=0;y<src.height;y++) { 
    Mat polar; 
    cvLinearPolar(src, polar, Point(x,y), ...); 

    ... calculate the best rotation angle that produces smallest difference 
    ... between matched template and a calculated polar image 

    if (min_difference < best_score) { 
     ... update score, x, y, angle ... 
    } 
} 

... best_x, best_y, best_angle should now store the best object location 
+0

Для случайного выбора бункера детали не будут иметь одинаковую шкалу. – Rethunk