рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░ред рдореИрдВ OpenCV рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рдорд╛рдиреНрдпрддрд╛ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ VMK рдорд╛рд╕реНрдХреЛ рд╕реНрдЯреЗрдЯ рдпреВрдирд┐рд╡рд░реНрд╕рд┐рдЯреА рдореЗрдВ рдХрдВрдкреНрдпреВрдЯрд░ рд╡рд┐рдЬрд╝рди рдХреА рдкреНрд░рдпреЛрдЧрд╢рд╛рд▓рд╛ рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рдорд┐рд▓рд╛, рдФрд░ рдореИрдВ рдХрдВрдкреНрдпреВрдЯрд░ рд╡рд┐рдЬреНрдЮрд╛рди рдХреА рдЗрд╕ рд╢рд╛рдЦрд╛ рдХреЗ рдЬреНрдЮрд╛рди рдореЗрдВ рдереЛрдбрд╝рд╛ рдШреБрд╕ рдЧрдпрд╛ред рдХрд╛рд░реНрдп, рдЬрд┐рд╕реЗ рдореИрдВ рдпрд╣рд╛рдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реВрдВрдЧрд╛, рдУрдкрдирдХреЙрд╡ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдкреИрдХреЗрдЬ рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдореЗрдВ рд╕реЗ рдПрдХ рд╡рд┐рдХреНрдЯрд░ рдЗрд░реБрдЦрд┐рдореЛрд╡ рдХреА рд╕рдВрдЧреЛрд╖реНрдареА рдореЗрдВ
рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ рдХрдВрдкреНрдпреВрдЯрд░ рд╡рд┐рдЬрди рд╕реНрдХреВрд▓ рдорд╛рд╕реНрдХреЛ 2011 рдореЗрдВ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд▓рдЧрднрдЧ рдЙрд╕реА рд░реВрдк рдореЗрдВ, рдкреНрд░рд╢реНрди рдореЗрдВ рдХреЛрдб OpenCV 2.4 рдбреЗрдореЛ рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдХрд╛рд░реНрдп рдХреА рдФрдкрдЪрд╛рд░рд┐рдХрддрд╛
рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ: рдПрдХ рдирд┐рдпрдорд┐рдд рдпреВрдПрд╕рдмреА рдХреИрдорд░рд╛ рд╕реЗ рджреГрд╢реНрдп рдХреА рдЫрд╡рд┐ рдФрд░ рд▓рдХреНрд╖реНрдп рдлреНрд▓реИрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рдЫрд╡рд┐ (рдЬреИрд╕реЗ рдкреБрд╕реНрддрдХ) рдЗрдирдкреБрдЯ рд╣реИрдВред рдХрд╛рд░реНрдп рджреГрд╢реНрдп рдЫрд╡рд┐ рдореЗрдВ рд▓рдХреНрд╖реНрдп рд╡рд╕реНрддреБ рдвреВрдВрдврдирд╛ рд╣реИред
рдЪрд▓реЛ рдХреИрдорд░реЗ рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо h. core.hpp рдФрд░ opencv.hpp рдлрд╛рдЗрд▓реЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ opencv рдФрд░ features2d.hpp рдмреЗрд╕ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИрдВ, рдЬреЛ рд╡рд┐рднрд┐рдиреНрди рдбрд┐рдЯреЗрдХреНрдЯрд░реЛрдВ рдФрд░ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ (рд╣рдо SURF рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ) рдХреА рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВред
#include <iostream> #include "opencv2/opencv.hpp" #include "opencv2/core/core.hpp" #include "opencv2/nonfree/features2d.hpp" #include <vector> using namespace std; using namespace cv; void readme(string &message) { cout << message << endl; }
рдЕрдЧрд▓рд╛, рдореБрдЦреНрдп рдирд┐рдХрд╛рдп рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ рдореЗрдВ 1 рдкреИрд░рд╛рдореАрдЯрд░ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рдирдореВрдирд╛ (рдлреНрд▓реИрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ) рдХреА рддрд╕реНрд╡реАрд░ рдХрд╛ рдорд╛рд░реНрдЧред VideoCapture рдХреНрд▓рд╛рд╕ рдХрд╛ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдбрд┐рд╡рд╛рдЗрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ (рдХреИрдорд░рд╛) рдХреЛ рдЗрдирдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ, 0 - рдбрд┐рдлреЙрд▓реНрдЯ рдбрд┐рд╡рд╛рдЗрд╕ (рд╢рд╛рдпрдж рдмрд┐рд▓реНрдЯ-рдЗрди рдХреИрдорд░рд╛)ред рдЗрд╕рдХреЗ рдмрд╛рдж, рд▓рдХреНрд╖реНрдп рдЫрд╡рд┐ img_object рдореЗрдВ рдкрдврд╝реА рдЬрд╛рддреА рд╣реИред
int main( int argc, char** argv ) { if(argc != 2) { string message = ": ./cv_test <img_object>"; readme(message); return -1; } VideoCapture cap(1);
рдПрдХ рдЕрдирдВрдд рд▓реВрдк рдореЗрдВ, рд╣рдо рдбрд┐рд╡рд╛рдЗрд╕ рд╕реЗ рдЕрдЧрд▓рд╛ рдлреНрд░реЗрдо рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗ, рдпрд╣ рдЙрд╕ рджреГрд╢реНрдп рдХреА рдЗрдирдкреБрдЯ рдЫрд╡рд┐ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЖрдкрдХреЛ рд▓рдХреНрд╖реНрдп рд╡рд╕реНрддреБ рдЦреЛрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
for(;;) { Mat frame; cap >> frame;
рдХреБрдВрдЬреА рдЕрдВрдХ рдвреВрдБрдврдирд╛
рдЕрдм рдЖрдЗрдП рд╡рд╕реНрддреБ рдХреЛ рдкрд╣рдЪрд╛рдирдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВред рдкрд╣рд▓реА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЫрд╡рд┐ рдореЗрдВ рдкреНрд░рдореБрдЦ рдмрд┐рдВрджреБрдУрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рд╣реИред рд╕рд░рд▓реАрдХреГрдд рд░реВрдк рд╕реЗ, рд╣рдо рдорд╛рди рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпреЗ x рдФрд░ y (рдХреЛрдиреЗ рд╡рд╛рд▓реЗ рдмрд┐рдВрджреБ) рдХреЗ рд╕рд╛рде рдЫрд╡рд┐ рдореЗрдВ рддреЗрдЬ рдврд╛рд▓ рд╡рд╛рд▓реЗ рд╕реНрдерд╛рдиреЛрдВ рдХреЗ рдмрд┐рдВрджреБ рд╣реИрдВред рдЙрдирдХреЗ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд╛ рд╕рд┐рджреНрдзрд╛рдВрдд рдПрдХ рдЖрдЯреЛрдХреНрд▓реЗрд░рд░реЗрд╢рди рдореИрдЯреНрд░рд┐рдХреНрд╕ рдФрд░ рдПрдХ рдЫрд╡рд┐ рдкрд┐рд░рд╛рдорд┐рдб (рд╕реНрдХреЗрд▓ рдЗрдиреНрд╡рд░реНрдЯрд┐рд╕ рдХреЗ рд▓рд┐рдП) рдХреЗ рдЙрдкрдпреЛрдЧ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред рдЖрдЯреЛрдХреНрд▓реЗрд░рд░реЗрд╢рди рдореИрдЯреНрд░рд┐рдХреНрд╕ рдореЗрдВ рдЫрд╡рд┐ I рдореЗрдВ x рдФрд░ y рдХрд╛ рдбреЗрд░рд┐рд╡реЗрдЯрд┐рд╡ рд╣реЛрддрд╛ рд╣реИред

рдЕрд░реНрде рдпрд╣ рд╣реИ рдХрд┐ рдореЗрдЯреНрд░рд┐рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рд▓реИрдореНрдмреНрдбрд╛ рдИрдЬреЗрдирд╡реЗрд▓реНрдпреВрдЬрд╝ рд╣реИрдВ, det рдПрдХ рдирд┐рд░реНрдзрд╛рд░рдХ рд╣реИ, рдЯреНрд░реЗрд╕ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХрд╛ рдПрдХ рдЯреНрд░реЗрд╕ рд╣реИ, рдЕрд▓реНрдлрд╛ рдПрдХ рд╕реНрдерд┐рд░рд╛рдВрдХ рд╣реИ)

рдЖрдк рдХреЛрдиреЗ рдмрд┐рдВрджреБрдУрдВ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрди рдмрд┐рдВрджреБрдУрдВ рдкрд░ рдПрдХреНрд╕ рдФрд░ рд╡рд╛рдИ рдХреЗ рд╕рд╛рде рдЧреНрд░реЗрдбрд┐рдПрдВрдЯреНрд╕ рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЕрдВрддрд░ рд╣реЛрдЧрд╛, рдФрд░ рдЖрд░ рдПрдХ рд╕реНрдерд╛рдиреАрдп рдЕрдзрд┐рдХрддрдо рдкрд░ рд╣реЛрдЧрд╛ред рдорд┐рдирд╣реЗрд╕рд┐рдпрди рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗрдЯ рдХрд░рдХреЗ, рд╣рдо рдЙрд╕ рд╕реАрдорд╛ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рдореБрдЦ рдмрд┐рдВрджреБ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдпрд╛ рдирд╣реАрдВред
рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░реНрд╕ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛
рдЕрдЧрд▓рд╛, рдЖрдкрдХреЛ рдПрдХ рд╡рд┐рд╡рд░рдгрдХ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, - рдПрдХ рд╡реЗрдХреНрдЯрд░ рдПрдХ рдмрд┐рдВрджреБ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдПрдХ рд╕реНрдерд╛рдиреАрдп рдкрдбрд╝реЛрд╕ рдХреА рдЬреНрдпрд╛рдорд┐рддрд┐ рдХреЛ рдПрдиреНрдХреЛрдбрд┐рдВрдЧред рдпрд╣ рдЖрдорддреМрд░ рдкрд░ SIFT (SURF рдПрдХ рддреЗрдЬ SIFT рд╣реИ) рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред рдпрд╣рд╛рдБ рд╕рд┐рджреНрдзрд╛рдВрдд рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:

рдЗрд╕ рдмрд┐рдВрджреБ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдХреЗ рдкреИрдЪ рдХреЛ рдирд┐рдпрддрд╛рддреНрдордХ рдмреНрд▓реЙрдХреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдкреНрд░рддреНрдпреЗрдХ рдмреНрд▓реЙрдХ рдореЗрдВ рдкреНрд░рдореБрдЦ рдврд╛рд▓ рджрд┐рд╢рд╛ рдХреА рдЧрдгрдирд╛ рдХреА рдЬрд╛рддреА рд╣реИ рдФрд░ рдкрд░рд┐рдорд╛рдг + рдХреЛ рдкреНрд░рдореБрдЦ рджрд┐рд╢рд╛ рдХреА рдУрд░ рдШреБрдорд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рд░реЛрдЯреЗрд╢рди рдХреЗ рд▓рд┐рдП рд╡рд┐рдкрд░реАрдд)ред рдпрд╣ "рдврд╛рд▓ рдкреИрдЯрд░реНрди" рдПрдХ рд╕реНрдерд╛рдиреАрдп рдкреИрдЪ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред
рд╡рд░реНрдгрдирд╛рддреНрдордХ рддреБрд▓рдирд╛
рдЕрдЧрд▓реЗ рдЪрд░рдг рдореЗрдВ, рд╣рдореЗрдВ рд╡рд░реНрдгрдирдХрд░реНрддрд╛ рд╡реИрдХреНрдЯрд░ рдХреЛ "рд╣реБрдХ" рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЕрд░реНрдерд╛рдд рд▓рдХреНрд╖реНрдп рдкрд░ рдФрд░ рджреГрд╢реНрдп рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рдмрд┐рдВрджреБ рдЦреЛрдЬреЗрдВред рдЗрд╕ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП, рдЖрдк FlannBasedMatcher рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреНрд░рдореБрдЦ рдмрд┐рдВрджреБрдУрдВ рдХреЗ рдмрдбрд╝реЗ рд╕реЗрдЯ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП) рдпрд╛ BruteForceMatcher (рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд)ред рдЗрд╕рдХреЗ рдмрд╛рдж, рд╣рдо рдХреЗрд╡рд▓ 3 * min_dist рдХреА рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рджреВрд░реА рд╡рд╛рд▓реЗ рдЙрди рд╕рднреА рдмрд┐рдВрджреБрдУрдВ рд╕реЗ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдБ min_dist рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдХреЗ рдмреАрдЪ рдХреА рдиреНрдпреВрдирддрдо рджреВрд░реА рд╣реИред
рд╣реЛрдореЛрдЧреНрд░рд╛рдлреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
рдХрдВрдкреНрдпреВрдЯрд░ рджреГрд╖реНрдЯрд┐ рдореЗрдВ, рдЕрдВрддрд░рд┐рдХреНрд╖ рдореЗрдВ рдПрдХ рд╣реА рд╕рдкрд╛рдЯ рд╡рд╕реНрддреБ рдХреА рдХреЛрдИ рднреА рджреЛ рдЫрд╡рд┐рдпрд╛рдВ рд╣реЛрдореЛрдЧреНрд░рд╛рдлреА рд╕реЗ рдЬреБрдбрд╝реА рд╣реЛрддреА рд╣реИрдВ (рдпрджрд┐ рд╣рдо рдХреИрдорд░реЗ рдХреЗ рдкрд┐рди-рд╣реЛрд▓ рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ)ред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдпрд╣ рдкрд░рд┐рд╡рд░реНрддрди рдПрдХ рд╡рд┐рдорд╛рди рд╣реИ - рдПрдХ рд╡рд┐рдорд╛рдиред рдпрд╛рдиреА рд▓рдХреНрд╖реНрдп рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░ рдмрд┐рдВрджреБрдУрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рдФрд░ рджреГрд╢реНрдп рдореЗрдВ рдЕрдВрдХреЛрдВ рдХрд╛ рдПрдХ рд╕рдорд╛рди рд╕реЗрдЯ рд╣реЛрдиреЗ рдкрд░, рд╣рдо рд╣реЛрдореЛрдЧреНрд░рд╛рдлреА рдореИрдЯреНрд░рд┐рдХреНрд╕ рдПрдЪ (рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдХреНрд░рдорд╢рдГ) рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдирдХреЗ рдмреАрдЪ рдПрдХ рдкрддреНрд░рд╛рдЪрд╛рд░ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдкрд░рд┐рд╡рд░реНрддрди
RANSAC рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рдЬреЛ рдмреЗрддрд░рддреАрдм рдврдВрдЧ рд╕реЗ рдЪрдпрдирд┐рдд рдмрд┐рдВрджреБрдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреБрдирд░рд╛рд╡реГрддреНрдд рд╣реЛрдореЛрдЧреНрд░рд╛рдлреА рдЕрдиреБрдорд╛рди рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ (рдЫрд╡рд┐ рдореЗрдВ 4 рдФрд░ рджреГрд╢реНрдп рдореЗрдВ 4)ред
рдЕрдЧрд▓рд╛, рдЖрдкрдХреЛ рд▓рдХреНрд╖реНрдп рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдХрд┐рдирд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде 4 рдЕрдВрдХ рд▓реЗрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рджреГрд╢реНрдп рдЫрд╡рд┐ рдкрд░ рдкрд╛рдП рдЧрдП рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдо рджреГрд╢реНрдп рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рдмрд╛рдЙрдВрдбрд┐рдВрдЧ рдмреЙрдХреНрд╕ рдкрд╛рдПрдВрдЧреЗред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЬрдм рд░реЗрдЦрд╛рдПрдБ рдЦреАрдВрдЪрддреА рд╣реИрдВ, рддреЛ рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рдмрд┐рдВрджреБ рдкрд░ Point2f (img_object.cols, 0) рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ Img_matches рдЫрд╡рд┐ рд▓рдХреНрд╖реНрдп рдЫрд╡рд┐ (рдмрд╛рдПрдВ) рдФрд░ рджреГрд╢реНрдп (рджрд╛рдПрдВ) рдХреЗ рдЖрд╕рдиреНрди рдкреНрд▓реЗрд╕рдореЗрдВрдЯ рдХреЛ рдорд╛рдирддреА рд╣реИред
рд╕рд╛рд░рд╛рдВрд╢
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдХрдВрдкреНрдпреВрдЯрд░ рджреГрд╖реНрдЯрд┐ рдХреЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдХрдИ рд▓реЛрдЧреЛрдВ рдХреА рдкреНрд░рддреНрдпрд╛рд╢рд╛ рдЕрддреНрдпрд╛рдзреБрдирд┐рдХ рд╕реЗ рдХреБрдЫ рдмреЗрд╣рддрд░ рд╣реИред рдореИрдВрдиреЗ рдЗрд╕ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдЪреЙрдХрд▓реЗрдЯ рдкрд╣рдЪрд╛рди рдХреЗ рдЙрджрд╛рд╣рд░рдг рдкрд░ рдХрд┐рдпрд╛ред рдореБрдЭреЗ рдЕрдкрдиреЗ рд╣рд╛рдереЛрдВ рдореЗрдВ рдЪреЙрдХрд▓реЗрдЯ рдмрд╛рд░ рдХреЛ рдореЛрдбрд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдпрд╣ рдорд╣рд╕реВрд╕ рдХрд░рдирд╛ рдкрдбрд╝рд╛ рдХрд┐ рдЗрд╕рдХреА рд╕реНрдерд┐рд░ рдкрд╣рдЪрд╛рди рдХреА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреА рд╕реАрдорд╛рдПрдБ рдХреНрдпрд╛ рд╣реИрдВред рдЙрддреНрдкрдиреНрди рд╣реЛрдиреЗ рд╡рд╛рд▓реА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреА рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓рддрд╛ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдорд╛рдиреНрдпрддрд╛ рд╕реНрдерд┐рд░рддрд╛ рдПрдХ рдирдВрдмрд░ 1 рд╕рд┐рд░рджрд░реНрдж рд╣реИред рдлрд┐рд░ рднреА, рдпрд╣ рдЙрджрд╛рд╣рд░рдг рдмреБрдирд┐рдпрд╛рджреА рд╣реИ рдФрд░ рдЗрд╕реЗ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд╕рд╛рд╣рд┐рддреНрдп
1.
www.vision.ee.ethz.ch/~surf/eccv06.pdf2.
www.sci.utah.edu/~gerig/CS6640-F2010/tutorial2-homographies.pdf3.
Engineering.purdue.edu/kak/courses-i-teach/ECE661.08/solution/hw4_s1.pdf