Я изучал реализацию дескриптора ORB в opencv. Я изучил код 0rb.cpp, и у меня мало сомнений относительно кода.
1. Если мы находим новые координаты использования угла для патча 31x31 (
x = pattern [idx] .x a - pattern [idx] .y b;
y = шаблон [idx] .x b + шаблон [idx] .y a;
) тогда может быть случай, когда новые кординаты могут лежать вне памяти изображения (я имел в виду, что иногда значения x и y могут быть больше 15). Как мы справляемся с этим в opencv.
2. при поиске центра
const uchar * center = & imagePyramid.at (cvRound (kpt.pt.y scale) + layer.y,
cvRound (kpt.pt.x scale) + layer.x);
почему были добавлены layer.y и layer.x?