{"id":472530,"date":"2025-08-29T03:00:12","date_gmt":"2025-08-29T03:00:12","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=472530"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=472530","title":{"rendered":"<span>\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u043d\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0438: \u043a\u0430\u043a \u043d\u0430\u0439\u0442\u0438 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u043e\u0431\u044a\u0435\u043a\u0442\u0430, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f OpenCV<\/span>"},"content":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440!<\/p>\n<p>\u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u0411\u0440\u0438\u0441\u043a\u0438\u043d\u0434\u043e\u0432 \u041b\u0435\u043e\u043d\u0438\u0434, \u044f \u0448\u043a\u043e\u043b\u044c\u043d\u0438\u043a, \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a \u0441\u043e\u0440\u0435\u0432\u043d\u043e\u0432\u0430\u043d\u0438\u0439 \u0438 \u043e\u043b\u0438\u043c\u043f\u0438\u0430\u0434 \u043f\u043e\u00a0\u0440\u043e\u0431\u043e\u0442\u043e\u0442\u0435\u0445\u043d\u0438\u043a\u0435 \u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e. \u041d\u0435\u0440\u0435\u0434\u043a\u043e \u0434\u043b\u044f\u00a0\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u0447 \u0442\u0430\u043a\u0438\u0445 \u043e\u043b\u0438\u043c\u043f\u0438\u0430\u0434 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0434\u043e\u0441\u0442\u0443\u043f \u043a\u00a0\u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u043a\u0430\u043c\u0435\u0440\u0435, \u0441\u043d\u0438\u043c\u0430\u044e\u0449\u0435\u0439 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0435 \u043f\u043e\u043b\u0435, \u043d\u0430\u00a0\u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u044b \u0440\u043e\u0431\u043e\u0442\u044b. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0437\u0430\u0434\u0430\u0447\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0432\u00a0\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435 \u043f\u043e\u00a0\u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044e, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u043c\u0443 \u0441\u00a0\u043a\u0430\u043c\u0435\u0440\u044b. \u0412\u00a0\u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u0438 \u0440\u0430\u0437\u0431\u0435\u0440\u0451\u043c, \u043a\u0430\u043a\u00a0\u0440\u0435\u0448\u0430\u0442\u044c \u0442\u0430\u043a\u0443\u044e \u0437\u0430\u0434\u0430\u0447\u0443, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 OpenCV.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/530\/4d7\/426\/5304d742603af46d34a4b5e7b97484d1.jpg\" width=\"1920\" height=\"1080\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/530\/4d7\/426\/5304d742603af46d34a4b5e7b97484d1.jpg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/530\/4d7\/426\/5304d742603af46d34a4b5e7b97484d1.jpg 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>OpenCV\u00a0\u2014 \u043a\u0440\u043e\u0441\u0441\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u0430\u044f open\u2011source \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0434\u043b\u044f\u00a0\u0440\u0430\u0431\u043e\u0442\u044b \u0441\u00a0\u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430\u043c\u0438 \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0433\u043e \u0437\u0440\u0435\u043d\u0438\u044f. \u0414\u0430\u043d\u043d\u0430\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u044f\u0437\u044b\u043a\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f (Python, C++, Java \u0438 \u0434\u0440\u0443\u0433\u0438\u0435). \u0421\u0442\u0430\u0442\u044c\u044f \u0431\u0443\u0434\u0435\u0442 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u0430 \u0434\u043b\u044f\u00a0\u043b\u044e\u0431\u043e\u0433\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043e\u0434\u043d\u0430\u043a\u043e \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u043a\u043e\u0434 \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u043d\u0430\u00a0Python \u0432\u00a0\u0441\u0432\u044f\u0437\u043a\u0435 \u0441\u00a0\u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u043e\u0439 NumPy. <\/p>\n<p><em>\u041f\u0435\u0440\u0435\u0434 \u043d\u0430\u0447\u0430\u043b\u043e\u043c \u043e\u0442\u043c\u0435\u0447\u0443, \u0447\u0442\u043e\u00a0\u0434\u0430\u043b\u0435\u0435 \u0431\u0443\u0434\u0443\u0442 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0442\u044c\u0441\u044f \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430\u00a0\u0441\u0442\u0430\u0442\u044c\u0438 <\/em><a href=\"https:\/\/habr.com\/ru\/users\/Ilya12c\/\" rel=\"noopener noreferrer nofollow\"><em>@Ilya12c<\/em><\/a><em>, \u0432\u00a0\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043e\u043d \u043f\u043e\u0432\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043e\u00a0\u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0430\u0441\u043f\u0435\u043a\u0442\u0430\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e. \u041e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u0435\u043c\u0443 \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u00a0\u043e\u0442\u043b\u0438\u0447\u043d\u044b\u0439 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b!<\/em><\/p>\n<h2>\u041e\u0433\u043b\u0430\u0432\u043b\u0435\u043d\u0438\u0435<\/h2>\n<ol>\n<li>\n<p>\u041a\u0440\u0430\u0442\u043a\u0430\u044f \u043f\u0430\u043c\u044f\u0442\u043a\u0430 \u043f\u043e\u00a0\u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0439 \u0430\u043b\u0433\u0435\u0431\u0440\u0435<\/p>\n<ol>\n<li>\n<p>\u0421\u043a\u0430\u043b\u044f\u0440<\/p>\n<\/li>\n<li>\n<p>\u041c\u0430\u0442\u0440\u0438\u0446\u0430<\/p>\n<\/li>\n<li>\n<p>\u0412\u0435\u043a\u0442\u043e\u0440<\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u0438 \u0441\u043a\u0430\u043b\u044f\u0440\u0430 (\u0447\u0438\u0441\u043b\u0430)<\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u0438 \u043c\u0430\u0442\u0440\u0438\u0446\u044b<\/p>\n<\/li>\n<li>\n<p>\u041d\u0430\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0439 \u043c\u0430\u0442\u0440\u0438\u0446\u044b<\/p>\n<\/li>\n<li>\n<p>\u041e\u0434\u043d\u043e\u0440\u043e\u0434\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442<\/p>\n<\/li>\n<\/ol>\n<\/li>\n<li>\n<p>\u0424\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f<\/p>\n<ol>\n<li>\n<p>\u041a\u0430\u043c\u0435\u0440\u0430\u2011\u043e\u0431\u0441\u043a\u0443\u0440\u0430<\/p>\n<\/li>\n<\/ol>\n<\/li>\n<li>\n<p>\u041c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0430 \u043a\u0430\u043c\u0435\u0440\u044b<\/p>\n<ol>\n<li>\n<p>\u0412\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f (\u0444\u0440\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u0430\u044f) \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u044c<\/p>\n<\/li>\n<li>\n<p>\u0421\u0438\u0441\u0442\u0435\u043c\u044b \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0438 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u043d\u044b\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430<\/p>\n<\/li>\n<li>\n<p>\u0412\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043a\u0430\u043c\u0435\u0440\u044b \u0438 \u043a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u043a\u0430<\/p>\n<\/li>\n<li>\n<p>\u041c\u043e\u0434\u0435\u043b\u044c \u043a\u0430\u043c\u0435\u0440\u044b\u2011\u043e\u0431\u0441\u043a\u0443\u0440\u044b<\/p>\n<\/li>\n<li>\n<p>\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 (\u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438)<\/p>\n<\/li>\n<li>\n<p>\u0417\u0430\u0434\u0430\u0447\u0430 Perspective\u2011n\u2011Point (PnP)<\/p>\n<\/li>\n<\/ol>\n<\/li>\n<li>\n<p>\u041d\u0430\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0432\u00a0\u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u043a\u0430\u043c\u0435\u0440\u044b<\/p>\n<\/li>\n<li>\n<p>\u0427\u0430\u0441\u0442\u043d\u044b\u0435 \u0441\u043b\u0443\u0447\u0430\u0438 \u0437\u0430\u0434\u0430\u0447\u0438<\/p>\n<ol>\n<li>\n<p>\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0442\u043e\u0447\u043a\u0438, \u043f\u0440\u0438\u00a0\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e\u0439 Zc<\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u00a0\u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0439 Zw \u0434\u043b\u044f\u00a0\u0438\u0441\u043a\u043e\u043c\u043e\u0439 \u0442\u043e\u0447\u043a\u0438<\/p>\n<\/li>\n<li>\n<p>\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 A \u0432\u00a0\u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 B<\/p>\n<\/li>\n<li>\n<p>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0447\u0430\u0441\u0442\u043d\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u0435\u0432<\/p>\n<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<h2>\u041a\u0440\u0430\u0442\u043a\u0430\u044f \u043f\u0430\u043c\u044f\u0442\u043a\u0430 \u043f\u043e \u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0439 \u0430\u043b\u0433\u0435\u0431\u0440\u0435<\/h2>\n<p>\u0414\u043b\u044f\u00a0\u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u043d\u0438\u0436\u0435\u0438\u0437\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0433\u043e \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043e\u00a0\u0431\u0430\u0437\u043e\u0432\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u0445\u00a0\u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0439 \u0430\u043b\u0433\u0435\u0431\u0440\u044b. \u041e\u0431\u044b\u0447\u043d\u043e \u044d\u0442\u043e\u0442 \u043f\u0440\u0435\u0434\u043c\u0435\u0442 \u0438\u0437\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0432 <abbr class=\"habraabbr\" title=\"\u0412\u044b\u0441\u0448\u0438\u0445 \u0443\u0447\u0435\u0431\u043d\u044b\u0445 \u0437\u0430\u0432\u0435\u0434\u0435\u043d\u0438\u044f\u0445\" data-title=\"&lt;p&gt;\u0412\u044b\u0441\u0448\u0438\u0445 \u0443\u0447\u0435\u0431\u043d\u044b\u0445 \u0437\u0430\u0432\u0435\u0434\u0435\u043d\u0438\u044f\u0445&lt;\/p&gt;&lt;p&gt;&lt;\/p&gt;\" data-abbr=\"\u0412\u0423\u0417\">\u0412\u0423\u0417\u0430\u0445<\/abbr> \u0438 \u043a\u043e\u043b\u043b\u0435\u0434\u0436\u0430\u0445, \u0442\u0430\u043a \u0447\u0442\u043e\u00a0\u0435\u0441\u043b\u0438 \u0432\u044b \u0443\u0436\u0435 \u0432\u043b\u0430\u0434\u0435\u0435\u0442\u0435 \u0434\u0430\u043d\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439, \u0442\u043e \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442\u044c \u043a\u00a0\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c\u0443 \u0440\u0430\u0437\u0434\u0435\u043b\u0443.<\/p>\n<p>\u0412\u00a0\u0434\u0430\u043d\u043d\u043e\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e\u00a0\u0440\u0430\u0431\u043e\u0442\u0435 \u0441\u00a0\u043c\u0430\u0442\u0440\u0438\u0446\u0430\u043c\u0438 \u0438 \u0432\u0435\u043a\u0442\u043e\u0440\u0430\u043c\u0438 \u0432\u00a0\u0443\u043f\u0440\u043e\u0449\u0451\u043d\u043d\u043e\u0439 \u0444\u043e\u0440\u043c\u0435.\u00a0\u041b\u0438\u043d\u0435\u0439\u043d\u0443\u044e \u0430\u043b\u0433\u0435\u0431\u0440\u0443 \u043d\u0435\u00a0\u0432\u044b\u0443\u0447\u0438\u0442\u044c \u043f\u043e\u00a0\u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u043a\u0435 \u0432\u00a0\u0441\u0442\u0430\u0442\u044c\u0435 \u043d\u0430\u00a0\u0425\u0430\u0431\u0440\u0435, \u043d\u043e\u00a0\u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b \u043d\u0430\u043c \u043f\u0440\u0438\u0433\u043e\u0434\u044f\u0442\u0441\u044f \u0432\u00a0\u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043c\u043e\u0436\u043d\u043e \u0443\u0437\u043d\u0430\u0442\u044c \u0432\u00a0\u0443\u0447\u0435\u0431\u043d\u0438\u043a\u0430\u0445 \u043f\u043e\u00a0\u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0439 \u0430\u043b\u0433\u0435\u0431\u0440\u0435, \u0430\u00a0\u0442\u0430\u043a\u0436\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u0441\u0435\u0440\u0438\u044e \u0440\u043e\u043b\u0438\u043a\u043e\u0432 \u043f\u043e\u00a0\u043e\u0441\u043d\u043e\u0432\u0430\u043c\u00a0\u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0439 \u0430\u043b\u0433\u0435\u0431\u0440\u044b \u043e\u0442 <a href=\"https:\/\/www.youtube.com\/watch?v=fNk%5C_zzaMoSs&amp;list=PLZHQObOWTQDPD3MizzM2xVFitgF8hE%5C_ab\" rel=\"noopener noreferrer nofollow\">3Blue1Brown<\/a>.<\/p>\n<h3>\u0421\u043a\u0430\u043b\u044f\u0440<\/h3>\n<p><strong>\u0421\u043a\u0430\u043b\u044f\u0440 <\/strong>\u2014 \u044d\u0442\u043e \u0432\u0435\u043b\u0438\u0447\u0438\u043d\u0430, \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0437\u0443\u044e\u0449\u0430\u044f\u0441\u044f \u043e\u0434\u043d\u0438\u043c \u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c:<\/p>\n<p><img decoding=\"async\" class=\"formula\" source=\"\\displaystyle x \\in \\mathbb{R}\" alt=\"\\displaystyle x \\in \\mathbb{R}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/f\/fa\/fad\/fad7e476b8f18518e08924b1853656a0.svg\" width=\"40\" height=\"16\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/f\/fa\/fad\/fad7e476b8f18518e08924b1853656a0.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/f\/fa\/fad\/fad7e476b8f18518e08924b1853656a0.svg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<p><img decoding=\"async\" class=\"formula\" source=\"x=7\" alt=\"x=7\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/d\/da\/dad\/dad1533ece96bb22f10da231df9680a5.svg\" width=\"40\" height=\"12\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/d\/da\/dad\/dad1533ece96bb22f10da231df9680a5.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/d\/da\/dad\/dad1533ece96bb22f10da231df9680a5.svg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<h3>\u041c\u0430\u0442\u0440\u0438\u0446\u0430<\/h3>\n<p><strong>\u041c\u0430\u0442\u0440\u0438\u0446\u0430 <\/strong>\u2014 \u044d\u0442\u043e \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043e\u0431\u044a\u0435\u043a\u0442, \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c\u044b\u0439 \u0432\u00a0\u0432\u0438\u0434\u0435 \u043f\u0440\u044f\u043c\u043e\u0443\u0433\u043e\u043b\u044c\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0447\u0438\u0441\u0435\u043b (\u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0442\u0440\u043e\u043a \u0438 \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432 \u0437\u0430\u0434\u0430\u0451\u0442 \u0440\u0430\u0437\u043c\u0435\u0440 \u0442\u0430\u0431\u043b\u0438\u0446\u044b\u00a0\u2014<img decoding=\"async\" class=\"formula inline\" source=\"m \\times n  \" alt=\"m \\times n  \" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/d59\/61c\/243\/d5961c243e3df59e4d7334127971d39d.svg\" width=\"52\" height=\"13\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/d59\/61c\/243\/d5961c243e3df59e4d7334127971d39d.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/d59\/61c\/243\/d5961c243e3df59e4d7334127971d39d.svg 781w\" loading=\"lazy\" decode=\"async\"\/>), \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0449\u0438\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430:<\/p>\n<p><img decoding=\"async\" class=\"formula\" source=\"A=\\begin{bmatrix}a_{ij}\\end{bmatrix} \\text{, \u0438\u043b\u0438 }  A=\\begin{Vmatrix}a_{ij}\\end{Vmatrix} \\text{, \u0438\u043b\u0438 } A=\\begin{pmatrix}a_{ij}\\end{pmatrix} \\text {; \u0433\u0434\u0435:} \\\\ A \\text { \u2014 \u043c\u0430\u0442\u0440\u0438\u0446\u0430 (\u0441 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435\u043c \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u0438 }\\underset{m \\times n}{A} \\text{), } \\\\ a_{ij} \\text { \u2014 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043c\u0442\u0440\u0438\u0446\u044b} \\text{, }  \\\\ i \\text { \u2014 \u043d\u043e\u043c\u0435\u0440 \u0441\u0442\u0440\u043e\u043a\u0438, } j \\text {\u2014 \u043d\u043e\u043c\u0435\u0440 \u0441\u0442\u043e\u043b\u0431\u0446\u0430}\" alt=\"A=\\begin{bmatrix}a_{ij}\\end{bmatrix} \\text{, \u0438\u043b\u0438 }  A=\\begin{Vmatrix}a_{ij}\\end{Vmatrix} \\text{, \u0438\u043b\u0438 } A=\\begin{pmatrix}a_{ij}\\end{pmatrix} \\text {; \u0433\u0434\u0435:} \\\\ A \\text { \u2014 \u043c\u0430\u0442\u0440\u0438\u0446\u0430 (\u0441 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435\u043c \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u0438 }\\underset{m \\times n}{A} \\text{), } \\\\ a_{ij} \\text { \u2014 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043c\u0442\u0440\u0438\u0446\u044b} \\text{, }  \\\\ i \\text { \u2014 \u043d\u043e\u043c\u0435\u0440 \u0441\u0442\u0440\u043e\u043a\u0438, } j \\text {\u2014 \u043d\u043e\u043c\u0435\u0440 \u0441\u0442\u043e\u043b\u0431\u0446\u0430}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/805\/4a9\/9d8\/8054a99d81656f3373a3db0e80ae9f7f.svg\" width=\"697\" height=\"115\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/805\/4a9\/9d8\/8054a99d81656f3373a3db0e80ae9f7f.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/805\/4a9\/9d8\/8054a99d81656f3373a3db0e80ae9f7f.svg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<p><img decoding=\"async\" class=\"formula\" source=\" A=\\begin{bmatrix}\\ 7\\ 4\\ 0\\ \\\\ 0\\ 3\\ 4\\\\ 0\\ 0\\ 5\\end{bmatrix}\" alt=\" A=\\begin{bmatrix}\\ 7\\ 4\\ 0\\ \\\\ 0\\ 3\\ 4\\\\ 0\\ 0\\ 5\\end{bmatrix}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/382\/718\/060\/3827180605cdcb52bb64cc2e866eed70.svg\" width=\"120\" height=\"76\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/382\/718\/060\/3827180605cdcb52bb64cc2e866eed70.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/382\/718\/060\/3827180605cdcb52bb64cc2e866eed70.svg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<p>\u041c\u0430\u0442\u0440\u0438\u0446\u044b \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u0435 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430. <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%9F%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B8%D0%B2%D0%BD%D0%BE%D0%B5%5C_%D0%BF%D1%80%D0%B5%D0%BE%D0%B1%D1%80%D0%B0%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5\" rel=\"noopener noreferrer nofollow\">\u041f\u0440\u043e\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0435 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435<\/a>\u00a0\u2014 \u0432\u0437\u0430\u0438\u043c\u043d\u043e\u2011\u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u043e\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 \u043d\u0430\u00a0\u0441\u0435\u0431\u044f, \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044e\u0449\u0435\u0435 \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u043f\u043e\u0440\u044f\u0434\u043a\u0430 \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e \u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u0432\u0441\u0435\u0445 \u043f\u043e\u0434\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432. \u0423\u043f\u0440\u043e\u0449\u0430\u044f, \u044d\u0442\u043e \u0442\u0430\u043a\u0438\u0435 \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430, \u043f\u043e\u0441\u043b\u0435 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043b\u044e\u0431\u044b\u0435 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u043f\u0440\u044f\u043c\u044b\u0435 \u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f \u043f\u0440\u044f\u043c\u044b\u043c\u0438. \u0412\u00a0\u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0431\u0443\u0434\u0435\u043c \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%90%D1%84%D1%84%D0%B8%D0%BD%D0%BD%D0%BE%D0%B5%5C_%D0%BF%D1%80%D0%B5%D0%BE%D0%B1%D1%80%D0%B0%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5\" rel=\"noopener noreferrer nofollow\">\u0430\u0444\u0438\u043d\u043d\u044b\u0435<\/a> \u0438 <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%9B%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D0%BE%D0%B5%5C_%D0%BE%D1%82%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5\" rel=\"noopener noreferrer nofollow\">\u043b\u0438\u043d\u0435\u0439\u043d\u044b\u0435 <\/a>\u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f.<\/p>\n<p>\u041d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0451\u043d\u043d\u044b\u0435 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f: \u043c\u0430\u0442\u0440\u0438\u0446\u0435\u0439 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043c\u0430\u0442\u0440\u0438\u0446\u0435\u0439 \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u0430 \u0438 \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u043c \u0441\u0434\u0432\u0438\u0433\u0430 (\u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u044f)\u00a0\u2014 \u0441\u043c. <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%9C%D0%B0%D1%82%D1%80%D0%B8%D1%86%D0%B0%5C_%D0%BF%D0%B5%D1%80%D0%B5%D1%85%D0%BE%D0%B4%D0%B0\" rel=\"noopener noreferrer nofollow\">\u0432\u0438\u043a\u0438<\/a> \u043f\u043e\u00a0\u043c\u0430\u0442\u0440\u0438\u0446\u0430\u043c \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430.<\/p>\n<p>\u0414\u043b\u044f\u00a0\u043a\u0432\u0430\u0434\u0440\u0430\u0442\u043d\u044b\u0445 (m=n) \u043c\u0430\u0442\u0440\u0438\u0446 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0441\u043a\u0430\u043b\u044f\u0440\u043d\u0430\u044f \u0432\u0435\u043b\u0438\u0447\u0438\u043d\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0437\u0443\u0435\u0442 \u0441\u0430\u043c\u0443 \u043c\u0430\u0442\u0440\u0438\u0446\u0443 \u0438 \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u0440\u0430\u0441\u0442\u044f\u0436\u0435\u043d\u0438\u0435\/\u0441\u0436\u0430\u0442\u0438\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430, \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c\u043e\u0435 \u0435\u0439\u00a0\u2014 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c (\u0434\u0435\u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043d\u0442): <\/p>\n<p><img decoding=\"async\" class=\"formula\" source=\"\\det A \\text { \u0438\u043b\u0438 } |A|\" alt=\"\\det A \\text { \u0438\u043b\u0438 } |A|\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9\/99\/993\/9936afeab83f577403ebf452b040a9ea.svg\" width=\"104\" height=\"16\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9\/99\/993\/9936afeab83f577403ebf452b040a9ea.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9\/99\/993\/9936afeab83f577403ebf452b040a9ea.svg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<p>\u0414\u0435\u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043d\u0442 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u043f\u043e\u00a0\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u043c \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u043c, \u043d\u043e\u00a0\u0432\u00a0\u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438, \u0435\u0433\u043e \u0431\u0443\u0434\u0435\u043c \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 NumPy:<\/p>\n<pre><code class=\"python\">np.linalg.det(a)    # a - \u043c\u0430\u0442\u0440\u0438\u0446\u0430, \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u0430\u044f \u0432 \u043c\u0430\u0441\u0441\u0438\u0432<\/code><\/pre>\n<h3>\u0412\u0435\u043a\u0442\u043e\u0440<\/h3>\n<p><strong>\u0412\u0435\u043a\u0442\u043e\u0440 <\/strong>\u2014 \u044d\u0442\u043e \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043e\u0431\u044a\u0435\u043a\u0442, \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0437\u0443\u044e\u0449\u0438\u0439\u0441\u044f \u0432\u0435\u043b\u0438\u0447\u0438\u043d\u043e\u0439 \u0438 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c. \u0412\u0435\u043a\u0442\u043e\u0440 \u0432\u00a0n\u2011\u043c\u0435\u0440\u043d\u043e\u043c \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435 \u043c\u043e\u0436\u0435\u0442\u00a0\u0431\u044b\u0442\u044c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u043c\u0438 \u0438\u043b\u0438\u00a0\u043c\u0430\u0442\u0440\u0438\u0446\u0435\u0439, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0435\u0439 \u043e\u0434\u0438\u043d \u0441\u0442\u043e\u043b\u0431\u0435\u0446\/\u0441\u0442\u0440\u043e\u043a\u0443:<\/p>\n<p><img decoding=\"async\" class=\"formula\" source=\"\\displaystyle x \\in \\mathbb{R}^n\" alt=\"\\displaystyle x \\in \\mathbb{R}^n\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/1\/18\/18c\/18c79ead739d327e756828574b856594.svg\" width=\"48\" height=\"16\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/1\/18\/18c\/18c79ead739d327e756828574b856594.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/1\/18\/18c\/18c79ead739d327e756828574b856594.svg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<p><img decoding=\"async\" class=\"formula\" source=\" \\overrightarrow{x}(7; 4; 3) \\text{ \u0438\u043b\u0438 } x=\\begin{bmatrix}7\\\\4\\\\3\\end{bmatrix} \" alt=\" \\overrightarrow{x}(7; 4; 3) \\text{ \u0438\u043b\u0438 } x=\\begin{bmatrix}7\\\\4\\\\3\\end{bmatrix} \" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/97b\/b10\/a1c\/97bb10a1c40241235edfdf6ae22281f8.svg\" width=\"196\" height=\"76\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/97b\/b10\/a1c\/97bb10a1c40241235edfdf6ae22281f8.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/97b\/b10\/a1c\/97bb10a1c40241235edfdf6ae22281f8.svg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<p>\u0412\u0435\u043a\u0442\u043e\u0440, \u043a\u0430\u043a\u00a0\u043c\u0430\u0442\u0440\u0438\u0446\u0430, \u043c\u043e\u0436\u0435\u0442 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f, \u0430\u00a0\u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0442\u043e\u0447\u043a\u0438 \u0432\u00a0\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435. \u041a\u0430\u043a\u00a0\u043e\u0442\u043c\u0435\u0447\u0430\u043b\u043e\u0441\u044c \u0432\u044b\u0448\u0435 \u043f\u043e\u0432\u043e\u0440\u043e\u0442 \u043c\u043e\u0436\u0435\u0442\u00a0\u0431\u044b\u0442\u044c \u043e\u043f\u0438\u0441\u0430\u043d (\u043a\u0432\u0430\u0434\u0440\u0430\u0442\u043d\u043e\u0439) \u043c\u0430\u0442\u0440\u0438\u0446\u0435\u0439, \u043e\u0434\u043d\u0430\u043a\u043e \u0432\u00a0\u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u0442\u0430\u043a\u0436\u0435 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0442\u0435\u0440\u043c\u0438\u043d \u00ab\u0432\u0435\u043a\u0442\u043e\u0440 \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u0430\u00bb, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 \u0432 <a href=\"https:\/\/docs.opencv.org\/4.12.0\/d9\/d0c\/group%5C_%5C_calib3d.html#ga61585db663d9da06b68e70cfbf6a1eac\" rel=\"noopener noreferrer nofollow\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 OpenCV<\/a>, <abbr class=\"habraabbr\" title=\"\u041d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432 \u0444\u043e\u0440\u043c\u0443\u043b\u0435 \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u0430 \u0420\u043e\u0434\u0440\u0438\u0433\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u043e\u0441\u0438 \u0438 \u0443\u0433\u043e\u043b \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u0430.\" data-title=\"&lt;p&gt;\u041d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432 \u0444\u043e\u0440\u043c\u0443\u043b\u0435 \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u0430 \u0420\u043e\u0434\u0440\u0438\u0433\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u043e\u0441\u0438 \u0438 \u0443\u0433\u043e\u043b \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u0430.&lt;\/p&gt;&lt;p&gt;&lt;\/p&gt;\" data-abbr=\"\u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0439\">\u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0439<\/abbr> \u0441 <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%A4%D0%BE%D1%80%D0%BC%D1%83%D0%BB%D0%B0%5C_%D0%BF%D0%BE%D0%B2%D0%BE%D1%80%D0%BE%D1%82%D0%B0%5C_%D0%A0%D0%BE%D0%B4%D1%80%D0%B8%D0%B3%D0%B0\" rel=\"noopener noreferrer nofollow\">\u0444\u043e\u0440\u043c\u0443\u043b\u043e\u0439 \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u0430 \u0420\u043e\u0434\u0440\u0438\u0433\u0430<\/a>, \u0438 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0449\u0438\u0439 \u0431\u043e\u043b\u0435\u0435 \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u043e\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u0430 \u0432\u00a0\u0432\u0438\u0434\u0435 \u0432\u0435\u043a\u0442\u043e\u0440\u0430. \u0414\u043b\u044f\u00a0\u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0430 \u0432\u0435\u043a\u0442\u043e\u0440\u0430 \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u0430 \u0432\u00a0\u043c\u0430\u0442\u0440\u0438\u0446\u0443 \u0432\u0440\u0430\u0449\u0435\u043d\u0438\u044f (\u0438 \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442) \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043c\u0435\u0442\u043e\u0434 OpenCV:<\/p>\n<pre><code class=\"python\">cv2.Rodrigues(src) # src - \u0432\u0435\u043a\u0442\u043e\u0440\/\u043c\u0430\u0442\u0440\u0438\u0446\u0430 \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u0430, \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u0430\u044f \u0432 \u043c\u0430\u0441\u0441\u0438\u0432<\/code><\/pre>\n<p><strong>\u0414\u0430\u043b\u0435\u0435 \u0440\u0430\u0437\u0431\u0435\u0440\u0451\u043c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437\u00a0\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 <\/strong><em>(\u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u044f\u0442\u0441\u044f \u0432\u00a0\u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435)<\/em> \u043d\u0430\u0434 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c\u0438 \u0438 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u043d\u0438 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442.<\/p>\n<h3>\u041f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u0438 \u0441\u043a\u0430\u043b\u044f\u0440\u0430 (\u0447\u0438\u0441\u043b\u0430)<\/h3>\n<p><img decoding=\"async\" class=\"formula\" source=\"B=k \\cdot A \\text{, } A=[a_{ij}] \\text{; \u0442\u043e\u0433\u0434\u0430:} \\\\B = [k \\cdot a_{ij}]\" alt=\"B=k \\cdot A \\text{, } A=[a_{ij}] \\text{; \u0442\u043e\u0433\u0434\u0430:} \\\\B = [k \\cdot a_{ij}]\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/8\/89\/898\/8989006509d80119b3e09daa7746e6c2.svg\" width=\"216\" height=\"40\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/8\/89\/898\/8989006509d80119b3e09daa7746e6c2.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/8\/89\/898\/8989006509d80119b3e09daa7746e6c2.svg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<p><img decoding=\"async\" class=\"formula\" source=\"2 \\cdot \\begin{bmatrix}7\\\\4\\\\3\\end{bmatrix} = \\begin {bmatrix} 14 \\\\ 8 \\\\ 6 \\end {bmatrix} \" alt=\"2 \\cdot \\begin{bmatrix}7\\\\4\\\\3\\end{bmatrix} = \\begin {bmatrix} 14 \\\\ 8 \\\\ 6 \\end {bmatrix} \" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/2a7\/986\/cfe\/2a7986cfed50611d6529cd699b24d2b6.svg\" width=\"142\" height=\"76\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/2a7\/986\/cfe\/2a7986cfed50611d6529cd699b24d2b6.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/2a7\/986\/cfe\/2a7986cfed50611d6529cd699b24d2b6.svg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<p>\u0422\u0430\u043a\u043e\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0440\u0430\u0432\u043d\u043e\u043c\u0435\u0440\u043d\u043e\u0435 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435.<\/p>\n<h3>\u041f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u0438 \u043c\u0430\u0442\u0440\u0438\u0446\u044b <\/h3>\n<p><img decoding=\"async\" class=\"formula\" source=\"C=A \\cdot B \\text{, }\\ \\underset{m \\times k}{A} \\text{, }\\ \\underset{k \\times n}{B} \\text{; \u0442\u043e\u0433\u0434\u0430:} \\\\ \\underset{m \\times n}{C} \\text {, \u043f\u0440\u0438\u0447\u0451\u043c } c_{ij} = \\sum_{s=1}^{k} {a_{is} b_{sj}}\" alt=\"C=A \\cdot B \\text{, }\\ \\underset{m \\times k}{A} \\text{, }\\ \\underset{k \\times n}{B} \\text{; \u0442\u043e\u0433\u0434\u0430:} \\\\ \\underset{m \\times n}{C} \\text {, \u043f\u0440\u0438\u0447\u0451\u043c } c_{ij} = \\sum_{s=1}^{k} {a_{is} b_{sj}}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/5d0\/2f4\/f85\/5d02f4f85d2c794952d79ea973d60475.svg\" width=\"697\" height=\"96\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/5d0\/2f4\/f85\/5d02f4f85d2c794952d79ea973d60475.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/5d0\/2f4\/f85\/5d02f4f85d2c794952d79ea973d60475.svg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<p>\u0414\u0440\u0443\u0433\u0438\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438 \u043a\u0430\u0436\u0434\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0434\u0432\u0443\u0445 \u043c\u0430\u0442\u0440\u0438\u0446 \u0440\u0430\u0432\u0435\u043d \u0441\u0443\u043c\u043c\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0439 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 i\u2011\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u043f\u0435\u0440\u0432\u043e\u0439 \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u0438 j\u2011\u0433\u043e \u0441\u0442\u043e\u043b\u0431\u0446\u0430 \u0432\u0442\u043e\u0440\u043e\u0439 \u043c\u0430\u0442\u0440\u0438\u0446\u044b.<\/p>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<p><img decoding=\"async\" class=\"formula\" source=\"\\begin{bmatrix}1 \\ 2 \\ 3\\\\4 \\ 5\\ 6\\\\7 \\ 8\\ 9\\end{bmatrix} \\cdot  \\begin{bmatrix}1\\ 2\\\\3 \\ 4\\\\5\\ 6\\end{bmatrix} =  \\begin{bmatrix}1 \\cdot 1 + 2 \\cdot 3 + 3 \\cdot 5 \\ \\space 1 \\cdot 2 + 2\\cdot4+3\\cdot6 \\\\4\\cdot1+5\\cdot3+6\\cdot5 \\ \\space 4\\cdot2+5\\cdot4+6\\cdot6\\\\7\\cdot1+8\\cdot3+9\\cdot5 \\ \\space 7\\cdot2+8\\cdot4+9\\cdot6\\end{bmatrix} = \\begin{bmatrix} 22 \\ 28 \\\\49 \\ 64 \\\\ 76 \\ 100 \\end{bmatrix}\" alt=\"\\begin{bmatrix}1 \\ 2 \\ 3\\\\4 \\ 5\\ 6\\\\7 \\ 8\\ 9\\end{bmatrix} \\cdot  \\begin{bmatrix}1\\ 2\\\\3 \\ 4\\\\5\\ 6\\end{bmatrix} =  \\begin{bmatrix}1 \\cdot 1 + 2 \\cdot 3 + 3 \\cdot 5 \\ \\space 1 \\cdot 2 + 2\\cdot4+3\\cdot6 \\\\4\\cdot1+5\\cdot3+6\\cdot5 \\ \\space 4\\cdot2+5\\cdot4+6\\cdot6\\\\7\\cdot1+8\\cdot3+9\\cdot5 \\ \\space 7\\cdot2+8\\cdot4+9\\cdot6\\end{bmatrix} = \\begin{bmatrix} 22 \\ 28 \\\\49 \\ 64 \\\\ 76 \\ 100 \\end{bmatrix}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/114\/732\/fa5\/114732fa52b013c533f84fb3b1229eb1.svg\" width=\"612\" height=\"76\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/114\/732\/fa5\/114732fa52b013c533f84fb3b1229eb1.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/114\/732\/fa5\/114732fa52b013c533f84fb3b1229eb1.svg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<p>\u041f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432\u0435\u043a\u0442\u043e\u0440\u0430 \u0438 \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 <strong>\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f<\/strong>, \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c\u043e\u0433\u043e \u043c\u0430\u0442\u0440\u0438\u0446\u0435\u0439, \u043a\u00a0\u0432\u0435\u043a\u0442\u043e\u0440\u0443. \u041f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u0438 \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u044e (\u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435) \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0439 \u044d\u0442\u0438\u0445 \u043c\u0430\u0442\u0440\u0438\u0446.<\/p>\n<p>\u0412\u00a0\u043a\u043e\u0434\u0435 \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u044f \u0438\u0437\u00a0\u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 NumPy:<\/p>\n<pre><code class=\"python\">np.dot(a, b)    # a, b - \u043c\u0430\u0442\u0440\u0438\u0446\u044b, \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u0432 \u043c\u0430\u0441\u0441\u0438\u0432<\/code><\/pre>\n<h3>\u041d\u0430\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0439 \u043c\u0430\u0442\u0440\u0438\u0446\u044b<\/h3>\n<p><strong>\u041e\u0431\u0440\u0430\u0442\u043d\u0430\u044f \u043c\u0430\u0442\u0440\u0438\u0446\u0430<\/strong>\u00a0\u2014 \u044d\u0442\u043e \u0442\u0430\u043a\u0430\u044f \u043c\u0430\u0442\u0440\u0438\u0446\u0430, \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0441\u00a0\u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0439 \u043c\u0430\u0442\u0440\u0438\u0446\u0435\u0439 \u0432\u00a0\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0434\u0430\u0451\u0442 \u0435\u0434\u0438\u043d\u0438\u0447\u043d\u0443\u044e \u043c\u0430\u0442\u0440\u0438\u0446\u0443 (\u0432\u0441\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0440\u0430\u0432\u043d\u044b 0, \u043a\u0440\u043e\u043c\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0434\u0438\u0430\u0433\u043e\u043d\u0430\u043b\u0438 \u043e\u0442\u00a0\u0432\u0435\u0440\u0445\u043d\u0435\u0433\u043e \u043b\u0435\u0432\u043e\u0433\u043e \u0443\u0433\u043b\u0430 \u043a\u00a0\u043d\u0438\u0436\u043d\u0435\u043c\u0443 \u043f\u0440\u0430\u0432\u043e\u043c\u0443, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0430\u0432\u043d\u044b 1):<\/p>\n<p><img decoding=\"async\" class=\"formula\" source=\"A^{-1} \\text {, \u043f\u0440\u0438} \\det A \\neq 0\" alt=\"A^{-1} \\text {, \u043f\u0440\u0438} \\det A \\neq 0\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/f\/fc\/fca\/fca04266d18ab8212144556036991cb0.svg\" width=\"144\" height=\"16\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/f\/fc\/fca\/fca04266d18ab8212144556036991cb0.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/f\/fc\/fca\/fca04266d18ab8212144556036991cb0.svg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<p>\u041e\u0431\u0440\u0430\u0442\u043d\u0430\u044f \u043c\u0430\u0442\u0440\u0438\u0446\u0430 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0435 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435.<\/p>\n<p>\u041e\u0431\u0440\u0430\u0442\u043d\u0443\u044e \u043c\u0430\u0442\u0440\u0438\u0446\u0443 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u044c \u043f\u043e\u00a0\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u043c \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u043c, \u043d\u043e\u00a0\u0432\u00a0\u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438, \u0435\u0451 \u0431\u0443\u0434\u0435\u043c \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0442\u044c, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 NumPy:<\/p>\n<pre><code class=\"python\">np.linalg.inv(a)    # a - \u043c\u0430\u0442\u0440\u0438\u0446\u0430, \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u0430\u044f \u0432 \u043c\u0430\u0441\u0441\u0438\u0432<\/code><\/pre>\n<h3>\u041e\u0434\u043d\u043e\u0440\u043e\u0434\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442<\/h3>\n<p>\u0412\u00a0\u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0434\u043d\u043e\u0440\u043e\u0434\u043d\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043c\u043e\u0436\u043d\u043e \u0443\u0437\u043d\u0430\u0442\u044c \u0432 <a href=\"https:\/\/habr.com\/ru\/companies\/magnus-tech\/articles\/770930\/#:~:text=%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B%20%D0%B2%20%D0%B4%D1%80%D1%83%D0%B3%D1%83%D1%8E.-,%D0%9E%D0%B4%D0%BD%D0%BE%D1%80%D0%BE%D0%B4%D0%BD%D1%8B%D0%B5%20%D0%BA%D0%BE%D0%BE%D1%80%D0%B4%D0%B8%D0%BD%D0%B0%D1%82%D1%8B,-%D0%AD%D1%82%D0%BE%20%D0%BA%D0%BE%D0%BD%D1%86%D0%B5%D0%BF%D1%86%D0%B8%D1%8F%20%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D0%BD%D1%8F%D0%B5%D1%82%D1%81%D1%8F\" rel=\"noopener noreferrer nofollow\">\u0441\u0442\u0430\u0442\u044c\u0435<\/a> \u0438\u043b\u0438\u00a0\u043d\u0430 <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%9E%D0%B4%D0%BD%D0%BE%D1%80%D0%BE%D0%B4%D0%BD%D0%B0%D1%8F%5C_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0%5C_%D0%BA%D0%BE%D0%BE%D1%80%D0%B4%D0%B8%D0%BD%D0%B0%D1%82\" rel=\"noopener noreferrer nofollow\">\u0432\u0438\u043a\u0438<\/a>. \u0412\u043a\u0440\u0430\u0442\u0446\u0435, \u0432\u00a0\u043e\u0434\u043d\u043e\u0440\u043e\u0434\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0432\u0435\u043a\u0442\u043e\u0440\u044b \u0438 \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u0438\u043c\u0435\u044e\u0442 \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u044c \u043d\u0430 1\u00a0\u0431\u043e\u043b\u044c\u0448\u0435, \u0447\u0435\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0439, \u0447\u0442\u043e\u00a0\u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u044c \u0438 \u0440\u0430\u0441\u0447\u0451\u0442\u044b \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u0445 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0439 (\u0432\u043a\u043b\u044e\u0447\u0430\u044f \u043f\u0435\u0440\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u0435), \u0430\u00a0\u0442\u0430\u043a\u0436\u0435 \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439 \u0434\u0435\u043a\u0430\u0440\u0442\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442. \u0412\u00a0\u0432\u0435\u043a\u0442\u043e\u0440\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u043f\u043e\u043b\u0435, \u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u044c\u044e, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043e \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u043d\u044b\u043c \u043c\u043d\u043e\u0436\u0438\u0442\u0435\u043b\u0435\u043c (\u043c\u0430\u0441\u0448\u0442\u0430\u0431\u043d\u044b\u043c \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u043e\u043c, \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u043e\u043c \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0430, \u0432\u0435\u0441\u043e\u0432\u044b\u043c \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u043e\u043c) <img decoding=\"async\" class=\"formula inline\" source=\"W\" alt=\"W\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ff3\/b84\/6e6\/ff3b846e6be4c83cd1dcda9ff3e73fb2.svg\" width=\"20\" height=\"17\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ff3\/b84\/6e6\/ff3b846e6be4c83cd1dcda9ff3e73fb2.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ff3\/b84\/6e6\/ff3b846e6be4c83cd1dcda9ff3e73fb2.svg 781w\" loading=\"lazy\" decode=\"async\"\/>. \u041f\u0435\u0440\u0435\u0432\u043e\u0434 \u043e\u0434\u043d\u043e\u0440\u043e\u0434\u043d\u044b\u0445 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0432\u00a0\u0434\u0435\u043a\u0430\u0440\u0442\u043e\u0432\u044b \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043d\u044b\u043c \u0434\u0435\u043b\u0435\u043d\u0438\u0435\u043c \u043d\u0430 <img decoding=\"async\" class=\"formula inline\" source=\"W\" alt=\"W\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/eea\/718\/c9e\/eea718c9e378cff0899017d3734097d3.svg\" width=\"20\" height=\"17\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/eea\/718\/c9e\/eea718c9e378cff0899017d3734097d3.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/eea\/718\/c9e\/eea718c9e378cff0899017d3734097d3.svg 781w\" loading=\"lazy\" decode=\"async\"\/>. \u041f\u0440\u0438\u0447\u0451\u043c:<\/p>\n<ul>\n<li>\n<p>\u041c\u0430\u0442\u0440\u0438\u0446\u044b \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0439 \u043d\u0430\u0434 \u043e\u0434\u043d\u043e\u0440\u043e\u0434\u043d\u044b\u043c\u0438 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u043c\u0438 \u0442\u0430\u043a\u0436\u0435 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u044e\u0442 \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u044c \u043d\u0430 1, \u0438 \u043d\u0438\u0436\u043d\u044e\u044e \u0441\u0442\u0440\u043e\u043a\u0443 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u0432\u0435\u043a\u0442\u043e\u0440 \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u0439 (\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0430 \u043f\u043e\u00a0\u043e\u0441\u044f\u043c, \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0435 \u043e\u0442 <img decoding=\"async\" class=\"formula inline\" source=\"W\" alt=\"W\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b16\/c0e\/7b9\/b16c0e7b952076fb2af80a5303d13b91.svg\" width=\"20\" height=\"17\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b16\/c0e\/7b9\/b16c0e7b952076fb2af80a5303d13b91.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b16\/c0e\/7b9\/b16c0e7b952076fb2af80a5303d13b91.svg 781w\" loading=\"lazy\" decode=\"async\"\/>) \u0438 <img decoding=\"async\" class=\"formula inline\" source=\"W\" alt=\"W\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1d8\/b39\/499\/1d8b394993b7a7b331b83c348cd5cab6.svg\" width=\"20\" height=\"17\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1d8\/b39\/499\/1d8b394993b7a7b331b83c348cd5cab6.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1d8\/b39\/499\/1d8b394993b7a7b331b83c348cd5cab6.svg 781w\" loading=\"lazy\" decode=\"async\"\/>.<\/p>\n<\/li>\n<li>\n<p>\u041d\u0430\u00a0\u043f\u0435\u0440\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u0438 \u0442\u0440\u0451\u0445\u043c\u0435\u0440\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 \u043d\u0430\u00a0\u0434\u0432\u0443\u043c\u0435\u0440\u043d\u0443\u044e \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0441\u043f\u0440\u043e\u0435\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 <img decoding=\"async\" class=\"formula inline\" source=\"XY\" alt=\"XY\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/6f2\/f4e\/bb3\/6f2f4ebb3ada60083f16553221edc771.svg\" width=\"31\" height=\"17\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/6f2\/f4e\/bb3\/6f2f4ebb3ada60083f16553221edc771.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/6f2\/f4e\/bb3\/6f2f4ebb3ada60083f16553221edc771.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u043f\u043e\u0440\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e <img decoding=\"async\" class=\"formula inline\" source=\"W=Z\" alt=\"W=Z\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/5c1\/723\/794\/5c17237949fc9c46e59fc265e2ed954c.svg\" width=\"60\" height=\"17\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/5c1\/723\/794\/5c17237949fc9c46e59fc265e2ed954c.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/5c1\/723\/794\/5c17237949fc9c46e59fc265e2ed954c.svg 781w\" loading=\"lazy\" decode=\"async\"\/>.<\/p>\n<\/li>\n<\/ul>\n<p>\u0414\u043b\u044f\u00a0\u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u043c\u0430\u0442\u0440\u0438\u0446\u0435\u0439<img decoding=\"async\" class=\"formula inline\" source=\"4\\times4\" alt=\"4\\times4\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1d7\/7a0\/5a1\/1d77a05a14e19727e4e62e387348ead9.svg\" width=\"43\" height=\"17\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1d7\/7a0\/5a1\/1d77a05a14e19727e4e62e387348ead9.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1d7\/7a0\/5a1\/1d77a05a14e19727e4e62e387348ead9.svg 781w\" loading=\"lazy\" decode=\"async\"\/>, \u043a\u00a0\u0432\u0435\u043a\u0442\u043e\u0440\u2011\u0441\u0442\u043e\u043b\u0431\u0446\u0443 <img decoding=\"async\" class=\"formula inline\" source=\"4\\times1\" alt=\"4\\times1\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/962\/333\/426\/9623334262c510b5d4acfa30e49c9ac6.svg\" width=\"43\" height=\"17\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/962\/333\/426\/9623334262c510b5d4acfa30e49c9ac6.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/962\/333\/426\/9623334262c510b5d4acfa30e49c9ac6.svg 781w\" loading=\"lazy\" decode=\"async\"\/>(\u0432 \u0442\u0440\u0451\u0445\u043c\u0435\u0440\u043d\u043e\u043c \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435) \u0432\u00a0\u043e\u0434\u043d\u043e\u0440\u043e\u0434\u043d\u044b\u0445 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u0445, \u043f\u0440\u0438 <img decoding=\"async\" class=\"formula inline\" source=\"W=1\" alt=\"W=1\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/fae\/22f\/84d\/fae22f84d0b9c9a683671060ee19a330.svg\" width=\"56\" height=\"17\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/fae\/22f\/84d\/fae22f84d0b9c9a683671060ee19a330.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/fae\/22f\/84d\/fae22f84d0b9c9a683671060ee19a330.svg 781w\" loading=\"lazy\" decode=\"async\"\/>(\u0431\u0435\u0437 \u043f\u0440\u043e\u0435\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f\/\u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f). \u041c\u0430\u0442\u0440\u0438\u0446\u0430 <img decoding=\"async\" class=\"formula inline\" source=\"A\" alt=\"A\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/d41\/e63\/b04\/d41e63b04fd71b6b20bdec5b9b599678.svg\" width=\"14\" height=\"17\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/d41\/e63\/b04\/d41e63b04fd71b6b20bdec5b9b599678.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/d41\/e63\/b04\/d41e63b04fd71b6b20bdec5b9b599678.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0438 \u0432\u0435\u043a\u0442\u043e\u0440 <img decoding=\"async\" class=\"formula inline\" source=\"B\" alt=\"B\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/449\/ab2\/983\/449ab2983fccb9d8f636adbeeb7a624c.svg\" width=\"15\" height=\"17\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/449\/ab2\/983\/449ab2983fccb9d8f636adbeeb7a624c.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/449\/ab2\/983\/449ab2983fccb9d8f636adbeeb7a624c.svg 781w\" loading=\"lazy\" decode=\"async\"\/>:<\/p>\n<p><img decoding=\"async\" class=\"formula\" source=\" A = \\begin{bmatrix}r_{11} \\ r_{12} \\ r_{13} \\ t_{x} \\\\ r_{21} \\ r_{22} \\ r_{23} \\ t_{y}  \\\\ r_{31} \\ r_{32} \\ r_{33} \\ t_{z} \\\\ a \\space\\space\\space \\ b \\space\\space\\space \\ c \\space\\space\\ W \\end{bmatrix} \\text {; }\\ B = \\begin{bmatrix}X\\\\Y\\\\Z\\\\W \\end{bmatrix}\\\\\" alt=\" A = \\begin{bmatrix}r_{11} \\ r_{12} \\ r_{13} \\ t_{x} \\\\ r_{21} \\ r_{22} \\ r_{23} \\ t_{y}  \\\\ r_{31} \\ r_{32} \\ r_{33} \\ t_{z} \\\\ a \\space\\space\\space \\ b \\space\\space\\space \\ c \\space\\space\\ W \\end{bmatrix} \\text {; }\\ B = \\begin{bmatrix}X\\\\Y\\\\Z\\\\W \\end{bmatrix}\\\\\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b6c\/ee1\/b7b\/b6cee1b7be32599fd6814a1dcda02bf8.svg\" width=\"685\" height=\"113\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b6c\/ee1\/b7b\/b6cee1b7be32599fd6814a1dcda02bf8.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b6c\/ee1\/b7b\/b6cee1b7be32599fd6814a1dcda02bf8.svg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<p>\u0412\u00a0\u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0438\u0437\u00a0\u043c\u0430\u0442\u0440\u0438\u0446\u044b <img decoding=\"async\" class=\"formula inline\" source=\"A\" alt=\"A\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/206\/743\/113\/2067431137bef6d94f32055ad78364dd.svg\" width=\"14\" height=\"17\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/206\/743\/113\/2067431137bef6d94f32055ad78364dd.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/206\/743\/113\/2067431137bef6d94f32055ad78364dd.svg 781w\" loading=\"lazy\" decode=\"async\"\/>: <img decoding=\"async\" class=\"formula inline\" source=\"r_{11}\u2212r_{33}\" alt=\"r_{11}\u2212r_{33}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1ae\/040\/9c8\/1ae0409c838639e706cec87b4d6d6af3.svg\" width=\"72\" height=\"18\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1ae\/040\/9c8\/1ae0409c838639e706cec87b4d6d6af3.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1ae\/040\/9c8\/1ae0409c838639e706cec87b4d6d6af3.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u043c\u0430\u0442\u0440\u0438\u0446\u0430 \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u0430\u2011\u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f; <img decoding=\"async\" class=\"formula inline\" source=\"tx\u2212tz\" alt=\"tx\u2212tz\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/527\/ccb\/526\/527ccb5266cd75e4e4ed63ef943b007c.svg\" width=\"58\" height=\"17\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/527\/ccb\/526\/527ccb5266cd75e4e4ed63ef943b007c.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/527\/ccb\/526\/527ccb5266cd75e4e4ed63ef943b007c.svg 781w\" loading=\"lazy\" decode=\"async\"\/>\u0432\u0435\u043a\u0442\u043e\u0440 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u044f. \u0412\u00a0\u043e\u0431\u044b\u0447\u043d\u044b\u0445 \u043c\u0430\u0442\u0440\u0438\u0446\u0430\u0445 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430, \u043f\u0440\u0438\u00a0\u0440\u0430\u0441\u0447\u0451\u0442\u0430\u0445 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f\u0445 \u0442\u0440\u0451\u0445\u043c\u0435\u0440\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430: <img decoding=\"async\" class=\"formula inline\" source=\"a,b,c=0\" alt=\"a,b,c=0\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/5ee\/e15\/0f7\/5eee150f7ea19cc2295702aa5c114744.svg\" width=\"79\" height=\"20\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/5ee\/e15\/0f7\/5eee150f7ea19cc2295702aa5c114744.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/5ee\/e15\/0f7\/5eee150f7ea19cc2295702aa5c114744.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0438 <img decoding=\"async\" class=\"formula inline\" source=\"W=1\" alt=\"W=1\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/76a\/731\/b36\/76a731b360883a79121e7e3906da152b.svg\" width=\"56\" height=\"17\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/76a\/731\/b36\/76a731b360883a79121e7e3906da152b.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/76a\/731\/b36\/76a731b360883a79121e7e3906da152b.svg 781w\" loading=\"lazy\" decode=\"async\"\/>.<\/p>\n<p>\u0412\u00a0\u0432\u0435\u043a\u0442\u043e\u0440\u0435 <img decoding=\"async\" class=\"formula inline\" source=\"B\" alt=\"B\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c56\/779\/200\/c56779200a90f615707199efe53170c4.svg\" width=\"15\" height=\"17\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c56\/779\/200\/c56779200a90f615707199efe53170c4.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c56\/779\/200\/c56779200a90f615707199efe53170c4.svg 781w\" loading=\"lazy\" decode=\"async\"\/>: <img decoding=\"async\" class=\"formula inline\" source=\"X,Y,Z\" alt=\"X,Y,Z\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1ef\/b2e\/74a\/1efb2e74a931491674744014b4300838.svg\" width=\"62\" height=\"20\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1ef\/b2e\/74a\/1efb2e74a931491674744014b4300838.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1ef\/b2e\/74a\/1efb2e74a931491674744014b4300838.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u0432\u0435\u043a\u0442\u043e\u0440.<\/p>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 <img decoding=\"async\" class=\"formula inline\" source=\"C\" alt=\"C\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/0cc\/de4\/bfc\/0ccde4bfcb24f46509a8b11f1cdf342c.svg\" width=\"15\" height=\"17\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/0cc\/de4\/bfc\/0ccde4bfcb24f46509a8b11f1cdf342c.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/0cc\/de4\/bfc\/0ccde4bfcb24f46509a8b11f1cdf342c.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f:<\/p>\n<p><img decoding=\"async\" class=\"formula\" source=\"C = A \\cdot B\" alt=\"C = A \\cdot B\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/b\/b0\/b08\/b08cfde7559b0f092f5506122ac3a955.svg\" width=\"72\" height=\"16\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/b\/b0\/b08\/b08cfde7559b0f092f5506122ac3a955.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/b\/b0\/b08\/b08cfde7559b0f092f5506122ac3a955.svg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<h2>\u0424\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f  <\/h2>\n<p>\u0412\u00a0\u0434\u0430\u043d\u043d\u043e\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043f\u0440\u0438\u043d\u0446\u0438\u043f \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0432\u00a0\u043a\u0430\u043c\u0435\u0440\u0435. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0432 <a href=\"https:\/\/habr.com\/ru\/companies\/magnus-tech\/articles\/770930\/#:~:text=%D0%9C%D0%BE%D0%B4%D0%B5%D0%BB%D1%8C%20%D0%BA%D0%B0%D0%BC%D0%B5%D1%80%D1%8B%20%D1%81%20%D1%82%D0%BE%D1%87%D0%B5%D1%87%D0%BD%D0%BE%D0%B9%20%D0%B4%D0%B8%D0%B0%D1%84%D1%80%D0%B0%D0%B3%D0%BC%D0%BE%D0%B9\" rel=\"noopener noreferrer nofollow\">\u0441\u0442\u0430\u0442\u044c\u0435<\/a> \u0438\u043b\u0438\u00a0\u043d\u0430 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Pinhole%5C_camera\" rel=\"noopener noreferrer nofollow\">\u0432\u0438\u043a\u0438<\/a>.<\/p>\n<p>\u0414\u043b\u044f\u00a0\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 (\u0438 \u0432\u00a0\u0446\u0435\u043b\u043e\u043c \u0432\u00a0\u043c\u0430\u0448\u0438\u043d\u043d\u043e\u043c \u0437\u0440\u0435\u043d\u0438\u0438) \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u0435 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f, \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c\u044b\u0435 \u043c\u043e\u0434\u0435\u043b\u044c\u044e \u043a\u0430\u043c\u0435\u0440\u044b \u0441\u00a0\u0442\u043e\u0447\u0435\u0447\u043d\u043e\u0439 \u0434\u0438\u0430\u0444\u0440\u0430\u0433\u043c\u043e\u0439, \u043e\u043d\u0430\u00a0\u0436\u0435 \u043c\u043e\u0434\u0435\u043b\u044c \u043a\u0430\u043c\u0435\u0440\u044b\u2011\u043e\u0431\u0441\u043a\u0443\u0440\u044b, \u043e\u043d\u0430\u00a0\u0436\u0435 \u043c\u043e\u0434\u0435\u043b\u044c \u043f\u0438\u043d\u0445\u043e\u043b \u043a\u0430\u043c\u0435\u0440\u044b (pinhole camera). \u041c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u043a\u0430\u043c\u0435\u0440\u044b\u2011\u043e\u0431\u0441\u043a\u0443\u0440\u044b \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432\u00a0\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u0435, \u0430\u00a0\u043f\u043e\u043a\u0430 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043f\u0440\u0438\u043d\u0446\u0438\u043f \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u0430\u043c\u043e\u0439 \u043a\u0430\u043c\u0435\u0440\u044b\u2011\u043e\u0431\u0441\u043a\u0443\u0440\u044b.<\/p>\n<h3>\u041a\u0430\u043c\u0435\u0440\u0430-\u043e\u0431\u0441\u043a\u0443\u0440\u0430  <\/h3>\n<p>\u041f\u0440\u0438\u043d\u0446\u0438\u043f \u0440\u0430\u0431\u043e\u0442\u044b \u043a\u0430\u043c\u0435\u0440\u044b\u2011\u043e\u0431\u0441\u043a\u0443\u0440\u044b \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432\u00a0\u0442\u043e\u043c, \u0447\u0442\u043e\u00a0\u0441\u0432\u0435\u0442, \u043e\u0442\u0440\u0430\u0436\u0451\u043d\u043d\u044b\u0439 \u043e\u0442\u00a0\u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432, \u043f\u0440\u043e\u043d\u0438\u043a\u0430\u0435\u0442 \u0432\u043d\u0443\u0442\u0440\u044c \u043a\u0430\u043c\u0435\u0440\u044b \u0447\u0435\u0440\u0435\u0437 \u0443\u0437\u043a\u043e\u0435 \u043e\u0442\u0432\u0435\u0440\u0441\u0442\u0438\u0435, \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u044f \u043d\u0430\u00a0\u043c\u0430\u0442\u0440\u0438\u0446\u0435 \u043a\u0430\u043c\u0435\u0440\u044b \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435. \u0412\u00a0\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043d\u0430\u00a0\u043c\u0430\u0442\u0440\u0438\u0446\u0435 \u043f\u0440\u043e\u0435\u0446\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043e\u0442\u0437\u0435\u0440\u043a\u0430\u043b\u0435\u043d\u043d\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432. <\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/2c9\/deb\/40e\/2c9deb40e7642a85e06f442da2ae0adb.jpg\" alt=\"\u0421\u0445\u0435\u043c\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u043a\u0430\u043c\u0435\u0440\u044b\u2011\u043e\u0431\u0441\u043a\u0443\u0440\u0430\" title=\"\u0421\u0445\u0435\u043c\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u043a\u0430\u043c\u0435\u0440\u044b\u2011\u043e\u0431\u0441\u043a\u0443\u0440\u0430\" width=\"612\" height=\"384\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/2c9\/deb\/40e\/2c9deb40e7642a85e06f442da2ae0adb.jpg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/2c9\/deb\/40e\/2c9deb40e7642a85e06f442da2ae0adb.jpg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0421\u0445\u0435\u043c\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u043a\u0430\u043c\u0435\u0440\u044b\u2011\u043e\u0431\u0441\u043a\u0443\u0440\u0430<\/figcaption><\/div>\n<\/figure>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/da3\/2cd\/893\/da32cd893ef3754abfda001af9e960a2.jpg\" alt=\"\u0412\u043d\u0443\u0442\u0440\u0438 \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0433\u043e \u0441\u0442\u0435\u043d\u0434\u0430: \u043e\u0442\u0432\u0435\u0440\u0441\u0442\u0438\u0435, \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u0441\u0432\u0435\u0442, \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u044e\u0449\u0438\u0439 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435; \u0431\u0435\u043b\u044b\u0439\u00a0\u043b\u0438\u0441\u0442 \u0431\u0443\u043c\u0430\u0433\u0438, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0449\u0438\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u043a\u0430\u043c\u0435\u0440\u044b, \u043d\u0430\u00a0\u043d\u0451\u043c \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435; USB\u2011\u043a\u0430\u043c\u0435\u0440\u0430 \u0434\u043b\u044f\u00a0\u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0441\u00a0\u043b\u0438\u0441\u0442\u0430 \u0431\u0443\u043c\u0430\u0433\u0438.\" title=\"\u0412\u043d\u0443\u0442\u0440\u0438 \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0433\u043e \u0441\u0442\u0435\u043d\u0434\u0430: \u043e\u0442\u0432\u0435\u0440\u0441\u0442\u0438\u0435, \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u0441\u0432\u0435\u0442, \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u044e\u0449\u0438\u0439 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435; \u0431\u0435\u043b\u044b\u0439\u00a0\u043b\u0438\u0441\u0442 \u0431\u0443\u043c\u0430\u0433\u0438, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0449\u0438\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u043a\u0430\u043c\u0435\u0440\u044b, \u043d\u0430\u00a0\u043d\u0451\u043c \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435; USB\u2011\u043a\u0430\u043c\u0435\u0440\u0430 \u0434\u043b\u044f\u00a0\u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0441\u00a0\u043b\u0438\u0441\u0442\u0430 \u0431\u0443\u043c\u0430\u0433\u0438.\" width=\"346\" height=\"600\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/da3\/2cd\/893\/da32cd893ef3754abfda001af9e960a2.jpg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/da3\/2cd\/893\/da32cd893ef3754abfda001af9e960a2.jpg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0412\u043d\u0443\u0442\u0440\u0438 \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0433\u043e \u0441\u0442\u0435\u043d\u0434\u0430: \u043e\u0442\u0432\u0435\u0440\u0441\u0442\u0438\u0435, \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u0441\u0432\u0435\u0442, \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u044e\u0449\u0438\u0439 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435; \u0431\u0435\u043b\u044b\u0439\u00a0\u043b\u0438\u0441\u0442 \u0431\u0443\u043c\u0430\u0433\u0438, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0449\u0438\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u043a\u0430\u043c\u0435\u0440\u044b, \u043d\u0430\u00a0\u043d\u0451\u043c \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435; USB\u2011\u043a\u0430\u043c\u0435\u0440\u0430 \u0434\u043b\u044f\u00a0\u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0441\u00a0\u043b\u0438\u0441\u0442\u0430 \u0431\u0443\u043c\u0430\u0433\u0438.<\/figcaption><\/div>\n<\/figure>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/6d5\/f55\/2bc\/6d5f552bce564635abb839e0c4432147.jpg\" alt=\"\u0414\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u044f: \u0432\u00a0\u043a\u0440\u0443\u0433\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0441\u00a0\u043b\u0438\u0441\u0442\u0430 (\u043c\u0430\u0442\u0440\u0438\u0446\u044b \u043a\u0430\u043c\u0435\u0440\u044b), \u0437\u0435\u043b\u0451\u043d\u044b\u043c\u0438\u00a0\u043b\u0438\u043d\u0438\u044f\u043c\u0438 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u044b \u043f\u0443\u0442\u0438 \u0441\u0432\u0435\u0442\u0430 \u043e\u0442\u00a0\u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0447\u0435\u0440\u0435\u0437 \u043e\u0442\u0432\u0435\u0440\u0441\u0442\u0438\u0435.\" title=\"\u0414\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u044f: \u0432\u00a0\u043a\u0440\u0443\u0433\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0441\u00a0\u043b\u0438\u0441\u0442\u0430 (\u043c\u0430\u0442\u0440\u0438\u0446\u044b \u043a\u0430\u043c\u0435\u0440\u044b), \u0437\u0435\u043b\u0451\u043d\u044b\u043c\u0438\u00a0\u043b\u0438\u043d\u0438\u044f\u043c\u0438 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u044b \u043f\u0443\u0442\u0438 \u0441\u0432\u0435\u0442\u0430 \u043e\u0442\u00a0\u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0447\u0435\u0440\u0435\u0437 \u043e\u0442\u0432\u0435\u0440\u0441\u0442\u0438\u0435.\" width=\"1300\" height=\"650\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/6d5\/f55\/2bc\/6d5f552bce564635abb839e0c4432147.jpg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/6d5\/f55\/2bc\/6d5f552bce564635abb839e0c4432147.jpg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0414\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u044f: \u0432\u00a0\u043a\u0440\u0443\u0433\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0441\u00a0\u043b\u0438\u0441\u0442\u0430 (\u043c\u0430\u0442\u0440\u0438\u0446\u044b \u043a\u0430\u043c\u0435\u0440\u044b), \u0437\u0435\u043b\u0451\u043d\u044b\u043c\u0438\u00a0\u043b\u0438\u043d\u0438\u044f\u043c\u0438 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u044b \u043f\u0443\u0442\u0438 \u0441\u0432\u0435\u0442\u0430 \u043e\u0442\u00a0\u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0447\u0435\u0440\u0435\u0437 \u043e\u0442\u0432\u0435\u0440\u0441\u0442\u0438\u0435.<\/figcaption><\/div>\n<\/figure>\n<p>\u0412\u00a0\u0432\u0438\u0434\u0435\u043e\u0430\u043f\u043f\u0430\u0440\u0430\u0442\u0443\u0440\u0435, \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0439 \u043d\u0430\u00a0\u0434\u0430\u043d\u043d\u043e\u043c \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435, \u0447\u0430\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u044b\u00a0\u043b\u0438\u043d\u0437 \u0438 \u0437\u0435\u0440\u043a\u0430\u043b, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0449\u0438\u0445 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438: \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u0435 \u0441\u0431\u043e\u0440\u0430 \u0441\u0432\u0435\u0442\u0430, \u0440\u0435\u0433\u0443\u043b\u0438\u0440\u043e\u0432\u043a\u0430 \u0444\u043e\u043a\u0443\u0441\u0430 \u0438 \u0442. \u0434,\u00a0\u2014 \u043e\u0434\u043d\u0430\u043a\u043e \u0442\u0430\u043a\u0436\u0435 \u043e\u043d\u0438 \u043c\u043e\u0433\u0443\u0442 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0438\u0441\u043a\u0430\u0436\u0435\u043d\u0438\u0435 (\u0434\u0438\u0441\u0442\u043e\u0440\u0441\u0438\u044e) \u043a\u00a0\u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044e.<\/p>\n<h2>\u041c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0430 \u043a\u0430\u043c\u0435\u0440\u044b <\/h2>\n<h3>\u0412\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f (\u0444\u0440\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u0430\u044f) \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u044c  <\/h3>\n<p>\u0414\u043b\u044f\u00a0\u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0431\u0435\u0437\u00a0\u043e\u0442\u0437\u0435\u0440\u043a\u0430\u043b\u0438\u0432\u0430\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0443\u0441\u043b\u043e\u0432\u043d\u043e\u0435 \u043f\u0440\u043e\u0435\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u043a\u0440\u0443\u0436\u0430\u044e\u0449\u0438\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u043d\u0435\u00a0\u0447\u0435\u0440\u0435\u0437 \u0434\u0438\u0430\u0444\u0440\u0430\u0433\u043c\u0443 (\u043f\u0438\u043d\u0445\u043e\u043b) \u043d\u0430\u00a0\u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f (\u043c\u0430\u0442\u0440\u0438\u0446\u044b \u043a\u0430\u043c\u0435\u0440\u044b), \u0430\u00a0\u043d\u0430\u00a0\u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0443\u044e (\u0444\u0440\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u0443\u044e) \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u0434 \u0434\u0438\u0430\u0444\u0440\u0430\u0433\u043c\u043e\u0439, \u043f\u0440\u0438\u0447\u0451\u043c \u0438 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u0438 \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043d\u0430\u00a0\u043c\u0430\u0442\u0440\u0438\u0446\u0435 \u043a\u0430\u043c\u0435\u0440\u044b \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u043d\u0430\u00a0\u0440\u0430\u0432\u043d\u043e\u043c \u0444\u043e\u043a\u0443\u0441\u043d\u043e\u043c <img decoding=\"async\" class=\"formula inline\" source=\"f\" alt=\"f\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/815\/0d3\/eff\/8150d3eff10d5349e2b9f44349f7f0ca.svg\" width=\"11\" height=\"20\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/815\/0d3\/eff\/8150d3eff10d5349e2b9f44349f7f0ca.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/815\/0d3\/eff\/8150d3eff10d5349e2b9f44349f7f0ca.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u043e\u0442\u00a0\u0434\u0438\u0430\u0444\u0440\u0430\u0433\u043c\u044b, \u0430\u00a0\u043e\u043f\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043e\u0441\u044c \u043f\u0435\u0440\u0435\u0441\u0435\u043a\u0430\u0435\u0442 \u0438\u0445 \u0432\u00a0\u043f\u0440\u043e\u0435\u043a\u0446\u0438\u044f\u0445 \u043e\u0434\u043d\u043e\u0439 \u0438 \u0442\u043e\u0439\u00a0\u0436\u0435 \u0442\u043e\u0447\u043a\u0438:<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/9a2\/c16\/f9a\/9a2c16f9acbe6de60861df817d0161b4.png\" alt=\"\u0412\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0441\u00a0\u0438\u0441\u043a\u043e\u043c\u043e\u0439 \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u0435\u0439  \" title=\"\u0412\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0441\u00a0\u0438\u0441\u043a\u043e\u043c\u043e\u0439 \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u0435\u0439  \" width=\"762\" height=\"380\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/9a2\/c16\/f9a\/9a2c16f9acbe6de60861df817d0161b4.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/9a2\/c16\/f9a\/9a2c16f9acbe6de60861df817d0161b4.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0412\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0441\u00a0\u0438\u0441\u043a\u043e\u043c\u043e\u0439 \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u0435\u0439 <\/figcaption><\/div>\n<\/figure>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0432\u00a0\u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0431\u0443\u0434\u0435\u0442 \u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f. <\/p>\n<h3>\u0421\u0438\u0441\u0442\u0435\u043c\u044b \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0438 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u043d\u044b\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430  <\/h3>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0432\u00a0\u0441\u0442\u0430\u0442\u044c\u0435 \u0431\u0443\u0434\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0441\u043e\u043a\u0440\u0430\u0449\u0435\u043d\u0438\u044f:<\/p>\n<ul>\n<li>\n<p><em>px <\/em>\u2014 \u043f\u0438\u043a\u0441\u0435\u043b\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f<\/p>\n<\/li>\n<li>\n<p><em>\u043c <\/em>\u2014 \u043c\u0435\u0442\u0440. \u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435: \u0434\u0430\u043d\u043d\u0430\u044f \u0435\u0434\u0438\u043d\u0438\u0446\u0430 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f \u0432\u044b\u0431\u0440\u0430\u043d\u0430 \u0432\u00a0\u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438, \u0442\u0430\u043a \u043a\u0430\u043a\u00a0\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0435\u0434\u0438\u043d\u0438\u0446\u0435\u0439 \u0434\u043b\u0438\u043d\u044b \u0432 <abbr class=\"habraabbr\" title=\"\u041c\u0435\u0436\u0434\u0443\u043d\u0430\u0440\u043e\u0434\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0435\u0434\u0438\u043d\u0438\u0446 (\u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u0418\u043d\u0442\u0435\u0440\u043d\u0430\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u0430\u044f)\" data-title=\"&lt;p&gt;\u041c\u0435\u0436\u0434\u0443\u043d\u0430\u0440\u043e\u0434\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0435\u0434\u0438\u043d\u0438\u0446 (\u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u0418\u043d\u0442\u0435\u0440\u043d\u0430\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u0430\u044f)&lt;\/p&gt;&lt;p&gt;&lt;\/p&gt;\" data-abbr=\"\u0421\u0418\">\u0421\u0418<\/abbr>, \u043e\u0434\u043d\u0430\u043a\u043e \u0434\u0430\u043b\u0435\u0435 \u0434\u0430\u043d\u043d\u0430\u044f \u0435\u0434\u0438\u043d\u0438\u0446\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432\u00a0\u0444\u043e\u0440\u043c\u0443\u043b\u0430\u0445 \u0441\u00a0\u043c\u0430\u0441\u0448\u0442\u0430\u0431\u043d\u044b\u043c\u0438 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u0430\u043c\u0438, \u0442\u0430\u043a \u0447\u0442\u043e\u00a0\u0432\u043c\u0435\u0441\u0442\u043e \u043c\u0435\u0442\u0440\u043e\u0432 \u043c\u043e\u0433\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u0440\u0443\u0433\u0438\u0435 \u0435\u0434\u0438\u043d\u0438\u0446\u044b \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f (\u043c\u043c, \u0444\u0443\u0442\u044b \u0438 \u0434\u0440.) <\/p>\n<\/li>\n<\/ul>\n<p>\u0412\u00a0OpenCV \u0432\u00a0\u0446\u0435\u043b\u043e\u043c \u0438 \u0432\u00a0\u043d\u0438\u0436\u0435\u0438\u0437\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0439 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 \u0432\u00a0\u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438, \u0432\u00a0\u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442\u00a0\u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0434\u0440\u0443\u0433\u0438\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\/\u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u043e\u0432, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441\u00a0\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u043e\u0439 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 OpenGL), \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442:<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/990\/715\/b6a\/990715b6abed79fec077a1d11496007f.png\" alt=\"\u0421\u0438\u0441\u0442\u0435\u043c\u044b \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 OpenCV \" title=\"\u0421\u0438\u0441\u0442\u0435\u043c\u044b \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 OpenCV \" width=\"620\" height=\"437\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/990\/715\/b6a\/990715b6abed79fec077a1d11496007f.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/990\/715\/b6a\/990715b6abed79fec077a1d11496007f.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0421\u0438\u0441\u0442\u0435\u043c\u044b \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 OpenCV <\/figcaption><\/div>\n<\/figure>\n<p>\u0413\u0434\u0435:<\/p>\n<ul>\n<li>\n<p><img decoding=\"async\" class=\"formula inline\" source=\"O_{c}\" alt=\"O_{c}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/cc9\/e30\/ecd\/cc9e30ecd00cdb5b5eaa45ee8e23e35d.svg\" width=\"23\" height=\"20\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/cc9\/e30\/ecd\/cc9e30ecd00cdb5b5eaa45ee8e23e35d.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/cc9\/e30\/ecd\/cc9e30ecd00cdb5b5eaa45ee8e23e35d.svg 781w\" loading=\"lazy\" decode=\"async\"\/>\u2014 \u043d\u0430\u0447\u0430\u043b\u043e \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0432\u00a0\u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u043a\u0430\u043c\u0435\u0440\u044b (\u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <img decoding=\"async\" class=\"formula inline\" source=\"F_{c}\" alt=\"F_{c}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/d95\/76e\/5e6\/d9576e5e64234849e481f4991c94023e.svg\" width=\"20\" height=\"20\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/d95\/76e\/5e6\/d9576e5e64234849e481f4991c94023e.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/d95\/76e\/5e6\/d9576e5e64234849e481f4991c94023e.svg 781w\" loading=\"lazy\" decode=\"async\"\/>)<\/p>\n<\/li>\n<li>\n<p><img decoding=\"async\" class=\"formula inline\" source=\"O_{w}\" alt=\"O_{w}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/5e2\/2b0\/438\/5e22b0438855c5285e1f89bb8c13de06.svg\" width=\"26\" height=\"20\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/5e2\/2b0\/438\/5e22b0438855c5285e1f89bb8c13de06.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/5e2\/2b0\/438\/5e22b0438855c5285e1f89bb8c13de06.svg 781w\" loading=\"lazy\" decode=\"async\"\/>\u2014 \u043d\u0430\u0447\u0430\u043b\u043e \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0432\u00a0\u043c\u0438\u0440\u043e\u0432\u043e\u0439 (\u043e\u0431\u044a\u0435\u043a\u0442\u043d\u043e\u0439) \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 (\u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f <img decoding=\"async\" class=\"formula inline\" source=\"O_o, F_w, F_o\" alt=\"O_o, F_w, F_o\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/6d3\/4e9\/9a1\/6d34e99a170e1e674c00847ec2e7fd5e.svg\" width=\"85\" height=\"20\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/6d3\/4e9\/9a1\/6d34e99a170e1e674c00847ec2e7fd5e.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/6d3\/4e9\/9a1\/6d34e99a170e1e674c00847ec2e7fd5e.svg 781w\" loading=\"lazy\" decode=\"async\"\/>)<\/p>\n<\/li>\n<li>\n<p><img decoding=\"async\" class=\"formula inline\" source=\"X_c,Y_c,Z_c\" alt=\"X_c,Y_c,Z_c\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f20\/551\/1af\/f205511af721d2d3a540b0bd636c15f4.svg\" width=\"87\" height=\"20\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f20\/551\/1af\/f205511af721d2d3a540b0bd636c15f4.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f20\/551\/1af\/f205511af721d2d3a540b0bd636c15f4.svg 781w\" loading=\"lazy\" decode=\"async\"\/>\u2014 \u043e\u0441\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u043a\u0430\u043c\u0435\u0440\u044b \/ \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b (<em>\u043c<\/em>) \u0432\u00a0\u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u043a\u0430\u043c\u0435\u0440\u044b \u043f\u043e\u00a0\u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c \u043e\u0441\u044f\u043c<\/p>\n<\/li>\n<li>\n<p><img decoding=\"async\" class=\"formula inline\" source=\"X_{w},Y_{w},Z_{w}\" alt=\"X_{w},Y_{w},Z_{w}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/128\/ee7\/ded\/128ee7ded857889db3721fedc57c8cff.svg\" width=\"93\" height=\"20\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/128\/ee7\/ded\/128ee7ded857889db3721fedc57c8cff.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/128\/ee7\/ded\/128ee7ded857889db3721fedc57c8cff.svg 781w\" loading=\"lazy\" decode=\"async\"\/>\u2014 \u043e\u0441\u0438 \u043c\u0438\u0440\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \/ \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b (<em>\u043c<\/em>) \u0432\u00a0\u043c\u0438\u0440\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u043f\u043e\u00a0\u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c \u043e\u0441\u044f\u043c<\/p>\n<\/li>\n<li>\n<p><img decoding=\"async\" class=\"formula inline\" source=\"u,v\" alt=\"u,v\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/14f\/9e0\/32f\/14f9e032fe01ec171a725e92948695bf.svg\" width=\"29\" height=\"15\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/14f\/9e0\/32f\/14f9e032fe01ec171a725e92948695bf.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/14f\/9e0\/32f\/14f9e032fe01ec171a725e92948695bf.svg 781w\" loading=\"lazy\" decode=\"async\"\/>\u2014 \u043e\u0441\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \/ \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b (<em>px<\/em>) \u0432\u00a0\u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f<\/p>\n<\/li>\n<li>\n<p><img decoding=\"async\" class=\"formula inline\" source=\"x,y,z\" alt=\"x,y,z\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/3f2\/1c7\/bd3\/3f21c7bd3dbf163887e1e84185b2c952.svg\" width=\"47\" height=\"15\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/3f2\/1c7\/bd3\/3f21c7bd3dbf163887e1e84185b2c952.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/3f2\/1c7\/bd3\/3f21c7bd3dbf163887e1e84185b2c952.svg 781w\" loading=\"lazy\" decode=\"async\"\/>\u2014 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u0438\/\u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u044f \u043e\u0441\u0435\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u043a\u0430\u043c\u0435\u0440\u044b \u043d\u0430\u00a0\u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f (<img decoding=\"async\" class=\"formula inline\" source=\"uv\" alt=\"uv\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/53b\/b07\/366\/53bb07366e8c6d652c78708cd3aa646e.svg\" width=\"20\" height=\"12\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/53b\/b07\/366\/53bb07366e8c6d652c78708cd3aa646e.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/53b\/b07\/366\/53bb07366e8c6d652c78708cd3aa646e.svg 781w\" loading=\"lazy\" decode=\"async\"\/>)<\/p>\n<\/li>\n<li>\n<p><img decoding=\"async\" class=\"formula inline\" source=\"c_x,c_y\" alt=\"c_x,c_y\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b8d\/f6d\/d70\/b8df6dd70ccf9e78d3bd48de952f7083.svg\" width=\"44\" height=\"17\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b8d\/f6d\/d70\/b8df6dd70ccf9e78d3bd48de952f7083.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b8d\/f6d\/d70\/b8df6dd70ccf9e78d3bd48de952f7083.svg 781w\" loading=\"lazy\" decode=\"async\"\/>\u2014 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b (px) \u0433\u043b\u0430\u0432\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f. \u0413\u043b\u0430\u0432\u043d\u0430\u044f \u0442\u043e\u0447\u043a\u0430, \u043e\u043d\u0430\u00a0\u0436\u0435 \u043e\u043f\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0446\u0435\u043d\u0442\u0440 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u043e\u043d\u0430\u00a0\u0436\u0435 principal point\u00a0\u2014 \u0442\u043e\u0447\u043a\u0430 \u043f\u0435\u0440\u0435\u0441\u0435\u0447\u0435\u043d\u0438\u044f \u043e\u043f\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043e\u0441\u0438 \u0438 \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f.<\/p>\n<\/li>\n<li>\n<p><img decoding=\"async\" class=\"formula inline\" source=\"f\" alt=\"f\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/bc8\/787\/e23\/bc8787e23af7f584be815f4b17a8bad7.svg\" width=\"11\" height=\"20\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/bc8\/787\/e23\/bc8787e23af7f584be815f4b17a8bad7.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/bc8\/787\/e23\/bc8787e23af7f584be815f4b17a8bad7.svg 781w\" loading=\"lazy\" decode=\"async\"\/>\u2014 \u0444\u043e\u043a\u0443\u0441\u043d\u043e\u0435 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043a\u0430\u043c\u0435\u0440\u044b (<em>px<\/em>) (\u0434\u0430\u043b\u0435\u0435 \u0431\u0443\u0434\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f<img decoding=\"async\" class=\"formula inline\" source=\"f_x\" alt=\"f_x\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/6ec\/8f5\/9bd\/6ec8f59bd5e6f54003f9a997ab120354.svg\" width=\"19\" height=\"20\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/6ec\/8f5\/9bd\/6ec8f59bd5e6f54003f9a997ab120354.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/6ec\/8f5\/9bd\/6ec8f59bd5e6f54003f9a997ab120354.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0438 <img decoding=\"async\" class=\"formula inline\" source=\"f_y\" alt=\"f_y\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/2f4\/e95\/bed\/2f4e95bedffe0400d121aad38e77a504.svg\" width=\"18\" height=\"22\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/2f4\/e95\/bed\/2f4e95bedffe0400d121aad38e77a504.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/2f4\/e95\/bed\/2f4e95bedffe0400d121aad38e77a504.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0434\u043b\u044f\u00a0\u0444\u043e\u043a\u0443\u0441\u043d\u043e\u0433\u043e \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u044f, \u0442. \u043a. \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430, \u043e\u043f\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u044d\u0444\u0444\u0435\u043a\u0442\u044b \u043e\u0431\u044a\u0435\u043a\u0442\u0438\u0432\u0430 \/ \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u043a\u0430\u043c\u0435\u0440\u044b \u0438 \u0440\u0430\u0437\u0431\u0438\u0435\u043d\u0438\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043d\u0430\u00a0\u043f\u0438\u043a\u0441\u0435\u043b\u0438 \u043c\u043e\u0433\u0443\u0442 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442\u044c \u043a\u00a0\u043d\u0435\u0441\u043e\u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u0438 \u0444\u043e\u043a\u0443\u0441\u043d\u043e\u0433\u043e \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043f\u043e\u00a0\u043e\u0441\u044f\u043c; \u043d\u043e\u00a0\u0432\u00a0\u0438\u0434\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u0445 <img decoding=\"async\" class=\"formula inline\" source=\"f_x = f_y\" alt=\"f_x = f_y\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ef8\/174\/eb9\/ef8174eb9f9a78e3d974415bc759507e.svg\" width=\"63\" height=\"22\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ef8\/174\/eb9\/ef8174eb9f9a78e3d974415bc759507e.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ef8\/174\/eb9\/ef8174eb9f9a78e3d974415bc759507e.svg 781w\" loading=\"lazy\" decode=\"async\"\/>)<\/p>\n<\/li>\n<li>\n<p><img decoding=\"async\" class=\"formula inline\" source=\"P_{c}\" alt=\"P_{c}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/9df\/510\/ffb\/9df510ffb6ed9c21d3eb6b8087513d1f.svg\" width=\"20\" height=\"20\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/9df\/510\/ffb\/9df510ffb6ed9c21d3eb6b8087513d1f.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/9df\/510\/ffb\/9df510ffb6ed9c21d3eb6b8087513d1f.svg 781w\" loading=\"lazy\" decode=\"async\"\/>\u0438 <img decoding=\"async\" class=\"formula inline\" source=\"P_{w}\" alt=\"P_{w}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1d1\/c10\/570\/1d1c10570332ede289e38ec58f9a266b.svg\" width=\"24\" height=\"20\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1d1\/c10\/570\/1d1c10570332ede289e38ec58f9a266b.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1d1\/c10\/570\/1d1c10570332ede289e38ec58f9a266b.svg 781w\" loading=\"lazy\" decode=\"async\"\/>\u00a0\u2014 \u0438\u0441\u043a\u043e\u043c\u0430\u044f \u0442\u043e\u0447\u043a\u0430 (<img decoding=\"async\" class=\"formula inline\" source=\"P\" alt=\"P\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/053\/303\/58e\/05330358e6c5cf8d3806458cf4619d10.svg\" width=\"14\" height=\"17\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/053\/303\/58e\/05330358e6c5cf8d3806458cf4619d10.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/053\/303\/58e\/05330358e6c5cf8d3806458cf4619d10.svg 781w\" loading=\"lazy\" decode=\"async\"\/>) \u0432\u00a0\u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u043a\u0430\u043c\u0435\u0440\u044b \u0438 \u043c\u0438\u0440\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e<\/p>\n<\/li>\n<li>\n<p><img decoding=\"async\" class=\"formula inline\" source=\"p\" alt=\"p\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c92\/b3b\/043\/c92b3b043e8a5f11e393108ff80a6849.svg\" width=\"10\" height=\"15\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c92\/b3b\/043\/c92b3b043e8a5f11e393108ff80a6849.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c92\/b3b\/043\/c92b3b043e8a5f11e393108ff80a6849.svg 781w\" loading=\"lazy\" decode=\"async\"\/>\u2014 \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u044f \u0438\u0441\u043a\u043e\u043c\u043e\u0439 \u0442\u043e\u0447\u043a\u0438 (<img decoding=\"async\" class=\"formula inline\" source=\"P\" alt=\"P\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ce6\/7e5\/90b\/ce67e590b6e523474e877f0c62585195.svg\" width=\"14\" height=\"17\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ce6\/7e5\/90b\/ce67e590b6e523474e877f0c62585195.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ce6\/7e5\/90b\/ce67e590b6e523474e877f0c62585195.svg 781w\" loading=\"lazy\" decode=\"async\"\/>) \u043d\u0430\u00a0\u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f (\u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0438\u0437\u00a0\u0441\u0435\u0431\u044f \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0442\u043e\u0447\u043a\u0443 \u043d\u0430\u00a0\u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0438)<\/p>\n<\/li>\n<li>\n<p><img decoding=\"async\" class=\"formula inline\" source=\"^{c}T_{w}\" alt=\"^{c}T_{w}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/05e\/c1c\/a92\/05ec1ca925e499f421214c59dc927c63.svg\" width=\"31\" height=\"20\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/05e\/c1c\/a92\/05ec1ca925e499f421214c59dc927c63.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/05e\/c1c\/a92\/05ec1ca925e499f421214c59dc927c63.svg 781w\" loading=\"lazy\" decode=\"async\"\/>\u2014 \u043c\u0430\u0442\u0440\u0438\u0446\u0430 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 <img decoding=\"async\" class=\"formula inline\" source=\"4\\times4\" alt=\"4\\times4\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/691\/650\/863\/69165086346c094f9339585892bfc3aa.svg\" width=\"43\" height=\"17\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/691\/650\/863\/69165086346c094f9339585892bfc3aa.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/691\/650\/863\/69165086346c094f9339585892bfc3aa.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0438\u0437\u00a0\u043c\u0438\u0440\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0432\u00a0\u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u043a\u0430\u043c\u0435\u0440\u044b (\u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <img decoding=\"async\" class=\"formula inline\" source=\"^{c}T_{o}\" alt=\"^{c}T_{o}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/4d7\/422\/ce3\/4d7422ce3b54622f0c0da590626cd632.svg\" width=\"28\" height=\"20\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/4d7\/422\/ce3\/4d7422ce3b54622f0c0da590626cd632.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/4d7\/422\/ce3\/4d7422ce3b54622f0c0da590626cd632.svg 781w\" loading=\"lazy\" decode=\"async\"\/>)<\/p>\n<\/li>\n<li>\n<p><img decoding=\"async\" class=\"formula inline\" source=\"R,t\" alt=\"R,t\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/606\/393\/9ad\/6063939ad917459109065826cd1de9a0.svg\" width=\"30\" height=\"20\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/606\/393\/9ad\/6063939ad917459109065826cd1de9a0.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/606\/393\/9ad\/6063939ad917459109065826cd1de9a0.svg 781w\" loading=\"lazy\" decode=\"async\"\/>\u2014 \u043c\u0430\u0442\u0440\u0438\u0446\u0430 \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u0430 <img decoding=\"async\" class=\"formula inline\" source=\"3\\times3\" alt=\"3\\times3\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f3a\/7ec\/acc\/f3a7ecacc6120220d5d107aaf1c759fa.svg\" width=\"43\" height=\"16\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f3a\/7ec\/acc\/f3a7ecacc6120220d5d107aaf1c759fa.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f3a\/7ec\/acc\/f3a7ecacc6120220d5d107aaf1c759fa.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0438 \u0432\u0435\u043a\u0442\u043e\u0440 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u044f (\u0441\u0434\u0432\u0438\u0433\u0430), \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0449\u0438\u0435 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u0437\u00a0\u043c\u0438\u0440\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0432\u00a0\u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u043a\u0430\u043c\u0435\u0440\u044b, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e. \u042d\u0442\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0432\u043d\u0435\u0448\u043d\u0438\u043c\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438 \u043a\u0430\u043c\u0435\u0440\u044b.<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u0440\u0438\u0447\u0451\u043c <img decoding=\"async\" class=\"formula inline\" source=\"^{c}T_{w}\" alt=\"^{c}T_{w}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e6f\/ccd\/f9c\/e6fccdf9c38d0497064a09b88e987ffa.svg\" width=\"31\" height=\"20\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e6f\/ccd\/f9c\/e6fccdf9c38d0497064a09b88e987ffa.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e6f\/ccd\/f9c\/e6fccdf9c38d0497064a09b88e987ffa.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u043e\u0440\u043e\u0434\u043d\u044b\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f, \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c\u043e\u0433\u043e \u043a\u043e\u043d\u043a\u0430\u0442\u0435\u043d\u0430\u0446\u0438\u0435\u0439 <img decoding=\"async\" class=\"formula inline\" source=\"[R|t]\" alt=\"[R|t]\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c3e\/45a\/6bb\/c3e45a6bb2baf38d16459369a8f1febb.svg\" width=\"38\" height=\"22\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c3e\/45a\/6bb\/c3e45a6bb2baf38d16459369a8f1febb.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c3e\/45a\/6bb\/c3e45a6bb2baf38d16459369a8f1febb.svg 781w\" loading=\"lazy\" decode=\"async\"\/> (\u0441\u043a\u043b\u0435\u0438\u0432\u0430\u043d\u0438\u044f <img decoding=\"async\" class=\"formula inline\" source=\"R\" alt=\"R\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b2e\/1ef\/d92\/b2e1efd929f13714c1658f681d39211a.svg\" width=\"15\" height=\"17\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b2e\/1ef\/d92\/b2e1efd929f13714c1658f681d39211a.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b2e\/1ef\/d92\/b2e1efd929f13714c1658f681d39211a.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0438 <img decoding=\"async\" class=\"formula inline\" source=\"t\" alt=\"t\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/4c0\/3fb\/4f0\/4c03fb4f0cba65b45534cb03270428ea.svg\" width=\"7\" height=\"16\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/4c0\/3fb\/4f0\/4c03fb4f0cba65b45534cb03270428ea.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/4c0\/3fb\/4f0\/4c03fb4f0cba65b45534cb03270428ea.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0432\u00a0\u043e\u0434\u043d\u0443 \u043c\u0430\u0442\u0440\u0438\u0446\u0443 <img decoding=\"async\" class=\"formula inline\" source=\"3\\times4\" alt=\"3\\times4\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/bee\/ed4\/e47\/beeed4e472dfc761ee02563656568494.svg\" width=\"43\" height=\"17\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/bee\/ed4\/e47\/beeed4e472dfc761ee02563656568494.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/bee\/ed4\/e47\/beeed4e472dfc761ee02563656568494.svg 781w\" loading=\"lazy\" decode=\"async\"\/>), \u0442.\u00a0\u0435. \u0432\u0435\u0440\u0445\u043d\u0438\u0439 \u043b\u0435\u0432\u044b\u0439 \u0443\u0433\u043e\u043b <img decoding=\"async\" class=\"formula inline\" source=\"\\underset{4\\times4}{^{c}T_{w}}  \" alt=\"\\underset{4\\times4}{^{c}T_{w}}  \" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/69a\/b64\/8bc\/69ab648bc504bf6ac84aa8df0b1684b1.svg\" width=\"31\" height=\"34\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/69a\/b64\/8bc\/69ab648bc504bf6ac84aa8df0b1684b1.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/69a\/b64\/8bc\/69ab648bc504bf6ac84aa8df0b1684b1.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442<img decoding=\"async\" class=\"formula inline\" source=\"R\" alt=\"R\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ba0\/127\/e81\/ba0127e81c7ae736ea2c92f886bb90d9.svg\" width=\"15\" height=\"17\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ba0\/127\/e81\/ba0127e81c7ae736ea2c92f886bb90d9.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ba0\/127\/e81\/ba0127e81c7ae736ea2c92f886bb90d9.svg 781w\" loading=\"lazy\" decode=\"async\"\/>, \u043f\u0440\u0430\u0432\u044b\u0439 \u0432\u0435\u0440\u0445\u043d\u0438\u0439 \u0443\u0433\u043e\u043b \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 <img decoding=\"async\" class=\"formula inline\" source=\"t\" alt=\"t\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/4ab\/f90\/cbd\/4abf90cbd6062bb25b79d252ee5b8761.svg\" width=\"7\" height=\"16\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/4ab\/f90\/cbd\/4abf90cbd6062bb25b79d252ee5b8761.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/4ab\/f90\/cbd\/4abf90cbd6062bb25b79d252ee5b8761.svg 781w\" loading=\"lazy\" decode=\"async\"\/>, \u043d\u0438\u0436\u043d\u0438\u0439 \u043f\u0440\u0430\u0432\u044b\u0439 \u0443\u0433\u043e\u043b \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442<img decoding=\"async\" class=\"formula inline\" source=\"1\" alt=\"1\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/588\/e13\/22e\/588e1322e977e26242197c1b34c33ca1.svg\" width=\"10\" height=\"16\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/588\/e13\/22e\/588e1322e977e26242197c1b34c33ca1.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/588\/e13\/22e\/588e1322e977e26242197c1b34c33ca1.svg 781w\" loading=\"lazy\" decode=\"async\"\/>, \u0430\u00a0\u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0440\u0430\u0432\u043d\u044b <img decoding=\"async\" class=\"formula inline\" source=\"0\" alt=\"0\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/830\/a37\/c59\/830a37c59a598cdbdd9af1f6ef3573f6.svg\" width=\"10\" height=\"16\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/830\/a37\/c59\/830a37c59a598cdbdd9af1f6ef3573f6.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/830\/a37\/c59\/830a37c59a598cdbdd9af1f6ef3573f6.svg 781w\" loading=\"lazy\" decode=\"async\"\/>. \u0422\u0430\u043a\u0436\u0435 \u0434\u0430\u043b\u0435\u0435 \u0431\u0443\u0434\u0443\u0442 \u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f <img decoding=\"async\" class=\"formula inline\" source=\"rvec\" alt=\"rvec\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/5de\/2b8\/3cd\/5de2b83cde14f1300f5519b943dd7758.svg\" width=\"35\" height=\"12\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/5de\/2b8\/3cd\/5de2b83cde14f1300f5519b943dd7758.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/5de\/2b8\/3cd\/5de2b83cde14f1300f5519b943dd7758.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0438 <img decoding=\"async\" class=\"formula inline\" source=\"tvec\" alt=\"tvec\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/270\/fbb\/4e8\/270fbb4e88b301e229a7bfd8645993c3.svg\" width=\"34\" height=\"16\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/270\/fbb\/4e8\/270fbb4e88b301e229a7bfd8645993c3.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/270\/fbb\/4e8\/270fbb4e88b301e229a7bfd8645993c3.svg 781w\" loading=\"lazy\" decode=\"async\"\/>, \u0433\u0434\u0435 <img decoding=\"async\" class=\"formula inline\" source=\"rvec\" alt=\"rvec\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/2cb\/bb3\/d26\/2cbbb3d26f0b58ee1638bcc00cfbab1b.svg\" width=\"35\" height=\"12\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/2cb\/bb3\/d26\/2cbbb3d26f0b58ee1638bcc00cfbab1b.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/2cb\/bb3\/d26\/2cbbb3d26f0b58ee1638bcc00cfbab1b.svg 781w\" loading=\"lazy\" decode=\"async\"\/>\u2014 \u0432\u0435\u043a\u0442\u043e\u0440 \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u0430, \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0449\u0438\u0439 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 <img decoding=\"async\" class=\"formula inline\" source=\"R\" alt=\"R\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/cee\/6fb\/65b\/cee6fb65bc68a6f05808df38d2e788e4.svg\" width=\"15\" height=\"17\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/cee\/6fb\/65b\/cee6fb65bc68a6f05808df38d2e788e4.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/cee\/6fb\/65b\/cee6fb65bc68a6f05808df38d2e788e4.svg 781w\" loading=\"lazy\" decode=\"async\"\/>, \u0430 <img decoding=\"async\" class=\"formula inline\" source=\"tvec\" alt=\"tvec\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/9f6\/7ad\/42d\/9f67ad42d4a5ad5b001690a808151593.svg\" width=\"34\" height=\"16\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/9f6\/7ad\/42d\/9f67ad42d4a5ad5b001690a808151593.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/9f6\/7ad\/42d\/9f67ad42d4a5ad5b001690a808151593.svg 781w\" loading=\"lazy\" decode=\"async\"\/>\u2014 \u0442\u043e\u00a0\u0436\u0435 \u0441\u0430\u043c\u043e\u0435, \u0447\u0442\u043e\u00a0\u0438 <img decoding=\"async\" class=\"formula inline\" source=\"t\" alt=\"t\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/501\/292\/4dd\/5012924ddb33ca37928e2a4bee69c15b.svg\" width=\"7\" height=\"16\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/501\/292\/4dd\/5012924ddb33ca37928e2a4bee69c15b.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/501\/292\/4dd\/5012924ddb33ca37928e2a4bee69c15b.svg 781w\" loading=\"lazy\" decode=\"async\"\/>.<\/p>\n<h3>\u0412\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043a\u0430\u043c\u0435\u0440\u044b \u0438 \u043a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u043a\u0430  <\/h3>\n<p>\u041f\u043e\u00a0\u0438\u0442\u043e\u0433\u0443 \u043d\u0430\u00a0\u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435, \u0432\u043b\u0438\u044f\u044e\u0442 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0444\u0430\u043a\u0442\u043e\u0440\u044b: \u0444\u043e\u043a\u0443\u0441\u043d\u043e\u0435 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435, \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0433\u043b\u0430\u0432\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u0438, \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0432\u0438\u0434\u044b \u0438\u0441\u043a\u0430\u0436\u0435\u043d\u0438\u044f (\u0434\u0438\u0441\u0442\u043e\u0440\u0441\u0438\u0438) \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u00a0\u2014 \u0432\u0441\u0451 \u044d\u0442\u043e \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0439 \u043c\u0430\u0442\u0440\u0438\u0446\u0435\u0439 (\u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u043c\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438) \u043a\u0430\u043c\u0435\u0440\u044b \u0438 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u0430\u043c\u0438 (\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438) \u0434\u0438\u0441\u0442\u043e\u0440\u0441\u0438\u0438: <\/p>\n<p><img decoding=\"async\" class=\"formula\" source=\" A = \\begin{bmatrix}f_x \\ \\ 0 \\ \\ c_x \\\\ 0 \\ \\ f_y \\  c_y \\\\ 0 \\ \\ \\ 0 \\ \\ \\ 1 \\end{bmatrix} \\text{; \u0433\u0434\u0435: } \\\\ A\\text{ \u2014 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u044f\u044f \u043c\u0430\u0442\u0440\u0438\u0446\u0430 \u043a\u0430\u043c\u0435\u0440\u044b (\u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f }K\\text{,}\\\\\\text{cameraMatrix)} \\\\ f_x \\text{ \u0438 } f_y \\ \\text{ \u2014 \u0444\u043e\u043a\u0443\u0441\u043d\u043e\u0435 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043f\u043e \u043e\u0441\u044f\u043c (px)} \\\\ c_x \\ \\text{\u0438} \\ c_y \\text{\u2014 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0433\u043b\u0430\u0432\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u0438 (px)}\" alt=\" A = \\begin{bmatrix}f_x \\ \\ 0 \\ \\ c_x \\\\ 0 \\ \\ f_y \\  c_y \\\\ 0 \\ \\ \\ 0 \\ \\ \\ 1 \\end{bmatrix} \\text{; \u0433\u0434\u0435: } \\\\ A\\text{ \u2014 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u044f\u044f \u043c\u0430\u0442\u0440\u0438\u0446\u0430 \u043a\u0430\u043c\u0435\u0440\u044b (\u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f }K\\text{,}\\\\\\text{cameraMatrix)} \\\\ f_x \\text{ \u0438 } f_y \\ \\text{ \u2014 \u0444\u043e\u043a\u0443\u0441\u043d\u043e\u0435 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043f\u043e \u043e\u0441\u044f\u043c (px)} \\\\ c_x \\ \\text{\u0438} \\ c_y \\text{\u2014 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0433\u043b\u0430\u0432\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u0438 (px)}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ab9\/7da\/91e\/ab97da91e9a78a55242f434a0a4baf7b.svg\" width=\"694\" height=\"190\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ab9\/7da\/91e\/ab97da91e9a78a55242f434a0a4baf7b.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ab9\/7da\/91e\/ab97da91e9a78a55242f434a0a4baf7b.svg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<p>\u0422\u0430\u043a\u0436\u0435 <img decoding=\"async\" class=\"formula inline\" source=\"A_{12}\" alt=\"A_{12}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/459\/3e4\/f1a\/4593e4f1ac73204fd6a57c8b2d3f1765.svg\" width=\"30\" height=\"19\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/459\/3e4\/f1a\/4593e4f1ac73204fd6a57c8b2d3f1765.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/459\/3e4\/f1a\/4593e4f1ac73204fd6a57c8b2d3f1765.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u043c\u043e\u0436\u0435\u0442\u00a0\u0431\u044b\u0442\u044c<img decoding=\"async\" class=\"formula inline\" source=\"A_{12}\\neq0\" alt=\"A_{12}\\neq0\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/674\/d63\/7f2\/674d637f25de77ac284a9fff688307fb.svg\" width=\"65\" height=\"21\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/674\/d63\/7f2\/674d637f25de77ac284a9fff688307fb.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/674\/d63\/7f2\/674d637f25de77ac284a9fff688307fb.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0438 \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u0442\u044c \u0441\u043a\u043e\u0441 (<img decoding=\"async\" class=\"formula inline\" source=\" \\gamma \" alt=\" \\gamma \" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/5a6\/b87\/19e\/5a6b8719eb9ca3b4c5f1593ed1ac42d9.svg\" width=\"10\" height=\"16\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/5a6\/b87\/19e\/5a6b8719eb9ca3b4c5f1593ed1ac42d9.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/5a6\/b87\/19e\/5a6b8719eb9ca3b4c5f1593ed1ac42d9.svg 781w\" loading=\"lazy\" decode=\"async\"\/>), \u043e\u0434\u043d\u0430\u043a\u043e \u0434\u0430\u043d\u043d\u044b\u0439 \u0441\u043b\u0443\u0447\u0430\u0439 \u0432\u00a0\u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u043d\u0435\u00a0\u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u043c.<\/p>\n<p>\u0412\u00a0\u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u044b \u0434\u0438\u0441\u0442\u043e\u0440\u0441\u0438\u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0438\u0437\u00a0\u0441\u0435\u0431\u044f \u043d\u0430\u0431\u043e\u0440 \u0441\u043a\u0430\u043b\u044f\u0440\u043e\u0432, \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0449\u0438\u0439 \u0438\u0441\u043a\u0430\u0436\u0435\u043d\u0438\u044f \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 (\u00abundostorting\u00bb) \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u0443\u0431\u0438\u0440\u0430\u044e\u0449\u0435\u0435 \u0438\u0441\u043a\u0430\u0436\u0435\u043d\u0438\u044f, \u043f\u043e\u00a0\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u043c \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u043c (\u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0432 <a href=\"https:\/\/habr.com\/ru\/companies\/magnus-tech\/articles\/772534\/#:~:text=%D0%BF%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D1%83%20%D0%BA%D0%B0%D0%BC%D0%B5%D1%80%D1%8B%20%E2%80%94%20%D0%B4%D0%B8%D1%81%D1%82%D0%BE%D1%80%D1%81%D0%B8%D0%B8.-,%D0%94%D0%B8%D1%81%D1%82%D0%BE%D1%80%D1%81%D0%B8%D1%8F,-%D0%94%D0%B8%D1%81%D1%82%D0%BE%D1%80%D1%81%D0%B8%D1%8F%20(distortion)\" rel=\"noopener noreferrer nofollow\">\u0441\u0442\u0430\u0442\u044c\u0435<\/a>, <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%94%D0%B8%D1%81%D1%82%D0%BE%D1%80%D1%81%D0%B8%D1%8F\" rel=\"noopener noreferrer nofollow\">\u0432\u0438\u043a\u0438<\/a> \u0438 <a href=\"https:\/\/docs.opencv.org\/4.x\/d9\/d0c\/group%5C_%5C_calib3d.html\" rel=\"noopener noreferrer nofollow\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 OpenCV<\/a>). \u041c\u0430\u0441\u0441\u0438\u0432 \u0447\u0438\u0441\u0435\u043b, \u0441\u043e\u0441\u0442\u043e\u044f\u0449\u0438\u0439 \u0438\u0437\u00a0\u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u043e\u0432 \u0434\u0438\u0441\u0442\u043e\u0440\u0441\u0438\u0438, \u043c\u043e\u0436\u0435\u0442 \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u0442\u044c\u0441\u044f \u043a\u0430\u043a <img decoding=\"async\" class=\"formula inline\" source=\"D,\u00a0distCoeffs\" alt=\"D,\u00a0distCoeffs\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/7af\/525\/c49\/7af525c497b19d9f7b7cadd826529558.svg\" width=\"121\" height=\"20\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/7af\/525\/c49\/7af525c497b19d9f7b7cadd826529558.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/7af\/525\/c49\/7af525c497b19d9f7b7cadd826529558.svg 781w\" loading=\"lazy\" decode=\"async\"\/>, \u0430\u00a0\u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u044b \u043c\u043e\u0433\u0443\u0442 \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u0442\u044c\u0441\u044f \u043a\u0430\u043a <img decoding=\"async\" class=\"formula inline\" source=\"k_{i},\u00a0p_{i},\u00a0s_{i}\" alt=\"k_{i},\u00a0p_{i},\u00a0s_{i}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/451\/02c\/f37\/45102cf3794220d842e2306a6aaf0c81.svg\" width=\"66\" height=\"20\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/451\/02c\/f37\/45102cf3794220d842e2306a6aaf0c81.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/451\/02c\/f37\/45102cf3794220d842e2306a6aaf0c81.svg 781w\" loading=\"lazy\" decode=\"async\"\/>\u0438\u00a0\u0442.\u00a0\u0434. \u0432\u00a0\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442\u00a0\u0432\u0438\u0434\u0430 \u0434\u0438\u0441\u0442\u043e\u0440\u0441\u0438\u0438, \u043f\u0440\u0438\u0447\u0451\u043c \u0447\u0430\u0441\u0442\u044c \u0438\u0437\u00a0\u043d\u0438\u0445 \u043c\u043e\u0436\u0435\u0442 \u0440\u0430\u0432\u043d\u044f\u0442\u044c\u0441\u044f <img decoding=\"async\" class=\"formula inline\" source=\"0\" alt=\"0\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f15\/86b\/6eb\/f1586b6eb3637b307f4bebf473ee69fa.svg\" width=\"10\" height=\"16\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f15\/86b\/6eb\/f1586b6eb3637b307f4bebf473ee69fa.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f15\/86b\/6eb\/f1586b6eb3637b307f4bebf473ee69fa.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0438\u043b\u0438\u00a0\u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c. \u0412\u00a0\u0440\u0430\u043c\u043a\u0430\u0445 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438, \u0438\u0437\u0431\u0430\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u043e\u0442\u00a0\u0438\u0441\u043a\u0430\u0436\u0435\u043d\u0438\u044f \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0435\u043c \u0441\u00a0\u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043c\u0435\u0442\u043e\u0434\u043e\u0432 OpenCV:<\/p>\n<pre><code class=\"python\">cv2.undistort(src, cameraMatrix, distCoeffs) # \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043b\u044f \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u0438\u0441\u043a\u0430\u0436\u0435\u043d\u0438\u044f \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f # src - \u0432\u0445\u043e\u0434\u043d\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 NumPy ArrayLike \/ OpenCV MatLike # cameraMatrix - \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u044f\u044f \u043c\u0430\u0442\u0440\u0438\u0446\u0430 \u043a\u0430\u043c\u0435\u0440\u044b, \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u0430\u044f \u0432 \u043c\u0430\u0441\u0441\u0438\u0432 # distCoeffs - \u043c\u0430\u0441\u0441\u0438\u0432 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u043e\u0432 \u0434\u0438\u0441\u0442\u043e\u0440\u0441\u0438\u0438  cv2.fisheye.undistortImage(distorted, K, D, Knew=K) # \u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043b\u044f \u043a\u0430\u043c\u0435\u0440 \u0442\u0438\u043f\u0430 \"\u0440\u044b\u0431\u0438\u0439 \u0433\u043b\u0430\u0437\" (fisheye) # distorted - \u0432\u0445\u043e\u0434\u043d\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435, K - \u043c\u0430\u0442\u0440\u0438\u0446\u0430 \u043a\u0430\u043c\u0435\u0440\u044b, D - \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u044b \u0434\u0438\u0441\u0442\u043e\u0440\u0441\u0438\u0438 # \u0412 \u0446\u0435\u043b\u043e\u043c fisheye \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u044c\u044e \u043a\u0430\u043c\u0435\u0440\u044b, \u043e\u0442\u043b\u0438\u0447\u043d\u043e\u0439 \u043e\u0442 pinhole, \u043e\u0434\u043d\u0430\u043a\u043e # \u043f\u043e\u0441\u043b\u0435 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u0434\u0438\u0441\u0442\u043e\u0440\u0441\u0438\u0438 \u043a \u043d\u0435\u0439 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u044b \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0434\u043b\u044f pinhole \u043c\u043e\u0434\u0435\u043b\u0438.<\/code><\/pre>\n<p>\u0410\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u043e \u043c\u043e\u0433\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u0438 \u043c\u0435\u0442\u043e\u0434\u043e\u0432:<\/p>\n<pre><code class=\"python\">cv2.initUndistortRectifyMap() cv2.remap() cv2.getOptimalNewCameraMatrix() cv2.fisheye.estimateNewCameraMatrixForUndistortRectify() # \u0438 \u0434\u0440\u0443\u0433\u0438\u0435<\/code><\/pre>\n<p>\u0414\u043b\u044f\u00a0\u043d\u0430\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0439 \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u043a\u0430\u043c\u0435\u0440\u044b \u0438 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u043e\u0432 \u0434\u0438\u0441\u0442\u043e\u0440\u0441\u0438\u0438, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0440\u043e\u0432\u0435\u0441\u0442\u0438 \u043a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u043a\u0443 \u043a\u0430\u043c\u0435\u0440\u044b. \u0412\u00a0\u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u043d\u0435\u00a0\u0431\u0443\u0434\u0435\u043c \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u043a\u0438, \u0442\u0430\u043a \u043a\u0430\u043a\u00a0\u043f\u043e\u00a0\u044d\u0442\u043e\u0439 \u0442\u0435\u043c\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043c\u043d\u043e\u0433\u043e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u0441\u043a\u0440\u0438\u043f\u0442 \u0432 <a href=\"https:\/\/docs.opencv.org\/4.x\/dc\/dbb\/tutorial%5C_py%5C_calibration.html\" rel=\"noopener noreferrer nofollow\">\u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0435 \u043f\u043e\u00a0OpenCV<\/a>. \u0422\u0435\u043c \u043d\u0435\u00a0\u043c\u0435\u043d\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e\u00a0\u043a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u043a\u0435 \u043c\u043e\u0436\u043d\u043e \u0443\u0437\u043d\u0430\u0442\u044c \u0432 <a href=\"https:\/\/habr.com\/ru\/companies\/magnus-tech\/articles\/772534\/\" rel=\"noopener noreferrer nofollow\">\u0441\u0442\u0430\u0442\u044c\u0435<\/a>, <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%9A%D0%B0%D0%BB%D0%B8%D0%B1%D1%80%D0%BE%D0%B2%D0%BA%D0%B0%5C_%D0%BA%D0%B0%D0%BC%D0%B5%D1%80%D1%8B\" rel=\"noopener noreferrer nofollow\">\u0432\u0438\u043a\u0438<\/a>, <a href=\"https:\/\/docs.opencv.org\/4.x\/d9\/d0c\/group__calib3d.html#ga687a1ab946686f0d85ae0363b5af1d7b:~:text=%E2%97%86-,calibrateCamera(),-%5B2\/2%5D\" rel=\"noopener noreferrer nofollow\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 OpenCV<\/a>. \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c \u043a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u043a\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u0441\u0442\u0430\u0442\u044c <img decoding=\"async\" class=\"formula inline\" source=\"A,\u00a0D\" alt=\"A,\u00a0D\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/fe6\/3aa\/ce8\/fe63aace8fd5e97dcc99347f38518a60.svg\" width=\"39\" height=\"20\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/fe6\/3aa\/ce8\/fe63aace8fd5e97dcc99347f38518a60.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/fe6\/3aa\/ce8\/fe63aace8fd5e97dcc99347f38518a60.svg 781w\" loading=\"lazy\" decode=\"async\"\/>, \u0430\u00a0\u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u0438\u00a0\u043a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u043a\u0435 \u043a\u0430\u043c\u0435\u0440\u044b \u0441\u00a0\u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u043e\u0447\u043d\u043e\u0433\u043e \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u0430 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0448\u0430\u0445\u043c\u0430\u0442\u043d\u043e\u0439 \u0434\u043e\u0441\u043a\u0438), \u043c\u0430\u0441\u0441\u0438\u0432\u044b \u0438\u0437 <img decoding=\"async\" class=\"formula inline\" source=\"rvec\" alt=\"rvec\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/3\/39\/39c\/39ccd4b8e8f70db11d7b4bcee16c8080.svg\" width=\"32\" height=\"12\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/3\/39\/39c\/39ccd4b8e8f70db11d7b4bcee16c8080.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/3\/39\/39c\/39ccd4b8e8f70db11d7b4bcee16c8080.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0438 <img decoding=\"async\" class=\"formula inline\" source=\"tvec\" alt=\"tvec\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/e\/ea\/eaa\/eaa34aa61bf912b7183a14ada91ebf4c.svg\" width=\"24\" height=\"12\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/e\/ea\/eaa\/eaa34aa61bf912b7183a14ada91ebf4c.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/e\/ea\/eaa\/eaa34aa61bf912b7183a14ada91ebf4c.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0434\u043b\u044f\u00a0\u043a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u043e\u0447\u043d\u043e\u0433\u043e \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u0430. \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e\u00a0\u0443\u0436\u0435 \u043d\u0430\u00a0\u044d\u0442\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u043c\u043e\u0436\u043d\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u043a\u0430\u043c\u0435\u0440\u044b \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u043e\u0447\u043d\u043e\u0433\u043e \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u0430, \u043d\u043e\u00a0\u043c\u044b \u0438\u0449\u0435\u043c \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0438\u0441\u043a\u043e\u043c\u043e\u0439 \u0442\u043e\u0447\u043a\u0438 (\u043e\u0431\u044a\u0435\u043a\u0442\u0430), \u0442\u0430\u043a \u0447\u0442\u043e\u00a0\u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u043c.<\/p>\n<h3>\u041c\u043e\u0434\u0435\u043b\u044c \u043a\u0430\u043c\u0435\u0440\u044b-\u043e\u0431\u0441\u043a\u0443\u0440\u044b <\/h3>\n<p>\u0414\u043b\u044f\u00a0\u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u0432\u00a0\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u0438\u0441\u043a\u0430\u0436\u0435\u043d\u0438\u0439, \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u0430 \u043c\u043e\u0434\u0435\u043b\u044c \u043a\u0430\u043c\u0435\u0440\u044b \u043e\u0431\u0441\u043a\u0443\u0440\u0430 \u0441\u00a0\u043d\u0443\u043b\u0435\u0432\u044b\u043c\u0438 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u0430\u043c\u0438 \u0434\u0438\u0441\u0442\u043e\u0440\u0441\u0438\u0438 (\u0431\u0435\u0437 \u0438\u0441\u043a\u0430\u0436\u0435\u043d\u0438\u0439): <\/p>\n<p><img decoding=\"async\" class=\"formula\" source=\"s\\ p = AP{_c}\\text{ , \u0433\u0434\u0435: } \\\\ s\\text{ \u2014 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u043d\u044b\u0439 \u043c\u043d\u043e\u0436\u0438\u0442\u0435\u043b\u044c (\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f}\\ W \\text{, } \\lambda \\text{;}\\ s=Z_{c} \\text {)} \\\\ p \\ \\text{ \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430 \u0432 \u043e\u0434\u043d\u043e\u0440\u043e\u0434\u043d\u044b\u0445 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u0445}\" alt=\"s\\ p = AP{_c}\\text{ , \u0433\u0434\u0435: } \\\\ s\\text{ \u2014 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u043d\u044b\u0439 \u043c\u043d\u043e\u0436\u0438\u0442\u0435\u043b\u044c (\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f}\\ W \\text{, } \\lambda \\text{;}\\ s=Z_{c} \\text {)} \\\\ p \\ \\text{ \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430 \u0432 \u043e\u0434\u043d\u043e\u0440\u043e\u0434\u043d\u044b\u0445 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u0445}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f5a\/d82\/d0b\/f5ad82d0bb946853cb410028c356b384.svg\" width=\"697\" height=\"74\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f5a\/d82\/d0b\/f5ad82d0bb946853cb410028c356b384.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f5a\/d82\/d0b\/f5ad82d0bb946853cb410028c356b384.svg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<p>\u0415\u0441\u043b\u0438 <img decoding=\"async\" class=\"formula inline\" source=\"P_{c}\" alt=\"P_{c}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/5d8\/5b7\/ac2\/5d85b7ac28283387a7ca8fe1f5a0a7b4.svg\" width=\"20\" height=\"20\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/5d8\/5b7\/ac2\/5d85b7ac28283387a7ca8fe1f5a0a7b4.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/5d8\/5b7\/ac2\/5d85b7ac28283387a7ca8fe1f5a0a7b4.svg 781w\" loading=\"lazy\" decode=\"async\"\/>\u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430 \u0432\u00a0\u043e\u0434\u043d\u043e\u0440\u043e\u0434\u043d\u044b\u0445 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u0445, \u0442\u043e \u0434\u043b\u044f\u00a0\u0441\u043e\u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u0438 <img decoding=\"async\" class=\"formula inline\" source=\"p\" alt=\"p\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/82f\/e39\/bfd\/82fe39bfddff5ffb3cd091834589020d.svg\" width=\"10\" height=\"15\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/82f\/e39\/bfd\/82fe39bfddff5ffb3cd091834589020d.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/82f\/e39\/bfd\/82fe39bfddff5ffb3cd091834589020d.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0438 <img decoding=\"async\" class=\"formula inline\" source=\"P_{c}\" alt=\"P_{c}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f6b\/517\/2f3\/f6b5172f3adc942737caaaf41c19ea27.svg\" width=\"20\" height=\"20\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f6b\/517\/2f3\/f6b5172f3adc942737caaaf41c19ea27.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f6b\/517\/2f3\/f6b5172f3adc942737caaaf41c19ea27.svg 781w\" loading=\"lazy\" decode=\"async\"\/>, \u043f\u0440\u0438\u00a0\u043f\u0435\u0440\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u043c \u043f\u0440\u043e\u0435\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438, \u043c\u043e\u0436\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435<\/p>\n<p><img decoding=\"async\" class=\"formula inline\" source=\"\\Pi = \\begin{bmatrix} 1\\ 0\\ 0\\ 0\\\\ 0\\ 1\\ 0\\ 0\\\\ 0\\ 0\\ 1\\ 0  \\end{bmatrix}  \" alt=\"\\Pi = \\begin{bmatrix} 1\\ 0\\ 0\\ 0\\\\ 0\\ 1\\ 0\\ 0\\\\ 0\\ 0\\ 1\\ 0  \\end{bmatrix}  \" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/992\/b67\/20e\/992b6720e93a88fa7fac4e1e3a99fc49.svg\" width=\"125\" height=\"76\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/992\/b67\/20e\/992b6720e93a88fa7fac4e1e3a99fc49.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/992\/b67\/20e\/992b6720e93a88fa7fac4e1e3a99fc49.svg 781w\" loading=\"lazy\" decode=\"async\"\/>, \u0442\u043e\u0433\u0434\u0430 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0432\u0438\u0434:<\/p>\n<p><img decoding=\"async\" class=\"formula\" source=\"s\\ p = A\\Pi P_{c} \\\\ \\text{(\u0432 } \\underset{4\\times1}{P_{c}} \\text{ \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e } \\Pi \\text{ \u0443\u0431\u0440\u0430\u043b\u0438 \u043d\u0438\u0436\u043d\u044e\u044e \u0441\u0442\u0440\u043e\u043a\u0443, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0443\u044e } 1 \\text{  \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 } \\underset{3\\times1}{P_{c}} \\text{ )}\" alt=\"s\\ p = A\\Pi P_{c} \\\\ \\text{(\u0432 } \\underset{4\\times1}{P_{c}} \\text{ \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e } \\Pi \\text{ \u0443\u0431\u0440\u0430\u043b\u0438 \u043d\u0438\u0436\u043d\u044e\u044e \u0441\u0442\u0440\u043e\u043a\u0443, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0443\u044e } 1 \\text{  \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 } \\underset{3\\times1}{P_{c}} \\text{ )}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/30f\/f9f\/b1c\/30ff9fb1c49e1b453394ab8f10cc015b.svg\" width=\"697\" height=\"61\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/30f\/f9f\/b1c\/30ff9fb1c49e1b453394ab8f10cc015b.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/30f\/f9f\/b1c\/30ff9fb1c49e1b453394ab8f10cc015b.svg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<p>\u041a\u0430\u043a\u00a0\u043f\u043e\u0432\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u0432\u044b\u0448\u0435 <img decoding=\"async\" class=\"formula inline\" source=\"P_{c}\" alt=\"P_{c}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f38\/363\/e11\/f38363e110093567d1e59169a43410e4.svg\" width=\"20\" height=\"20\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f38\/363\/e11\/f38363e110093567d1e59169a43410e4.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f38\/363\/e11\/f38363e110093567d1e59169a43410e4.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0438 <img decoding=\"async\" class=\"formula inline\" source=\"\\underset{4\\times1}{P_{w}}  \" alt=\"\\underset{4\\times1}{P_{w}}  \" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/38a\/fb7\/47d\/38afb747d5aa7594a31ea20571242700.svg\" width=\"24\" height=\"34\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/38a\/fb7\/47d\/38afb747d5aa7594a31ea20571242700.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/38a\/fb7\/47d\/38afb747d5aa7594a31ea20571242700.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0438\u0441\u043a\u043e\u043c\u043e\u0439 \u0442\u043e\u0447\u043a\u0438 <img decoding=\"async\" class=\"formula inline\" source=\"P\" alt=\"P\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/056\/acb\/35b\/056acb35bc32672f25330ab9fa399742.svg\" width=\"14\" height=\"17\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/056\/acb\/35b\/056acb35bc32672f25330ab9fa399742.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/056\/acb\/35b\/056acb35bc32672f25330ab9fa399742.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0432\u00a0\u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u043a\u0430\u043c\u0435\u0440\u044b \u0438 \u043c\u0438\u0440\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0430\u00a0\u043f\u0435\u0440\u0435\u0432\u043e\u0434 \u0438\u0437 <img decoding=\"async\" class=\"formula inline\" source=\"P_w\" alt=\"P_w\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/904\/a3c\/c0a\/904a3cc0a89aa9dc1f7d71dd9aafe017.svg\" width=\"24\" height=\"20\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/904\/a3c\/c0a\/904a3cc0a89aa9dc1f7d71dd9aafe017.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/904\/a3c\/c0a\/904a3cc0a89aa9dc1f7d71dd9aafe017.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0432 <img decoding=\"async\" class=\"formula inline\" source=\"P_c\" alt=\"P_c\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c32\/fa9\/3d0\/c32fa93d0b3307fb91a8d00e8b52e3ec.svg\" width=\"20\" height=\"20\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c32\/fa9\/3d0\/c32fa93d0b3307fb91a8d00e8b52e3ec.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c32\/fa9\/3d0\/c32fa93d0b3307fb91a8d00e8b52e3ec.svg 781w\" loading=\"lazy\" decode=\"async\"\/>\u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c, \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c\u044b\u043c \u043c\u0430\u0442\u0440\u0438\u0446\u0435\u0439 <img decoding=\"async\" class=\"formula inline\" source=\"\\underset{3\\times4}{[R|t]} \" alt=\"\\underset{3\\times4}{[R|t]} \" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1f5\/5ba\/955\/1f55ba955620be772fb0086ec4a83631.svg\" width=\"38\" height=\"37\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1f5\/5ba\/955\/1f55ba955620be772fb0086ec4a83631.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1f5\/5ba\/955\/1f55ba955620be772fb0086ec4a83631.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0438\u043b\u0438\u00a0\u043c\u0430\u0442\u0440\u0438\u0446\u0435\u0439 <img decoding=\"async\" class=\"formula inline\" source=\"\\underset{4\\times4}{^{c}T_{w}}  \" alt=\"\\underset{4\\times4}{^{c}T_{w}}  \" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/77e\/81e\/5a8\/77e81e5a898cbe0ba705674fecd6e65f.svg\" width=\"31\" height=\"34\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/77e\/81e\/5a8\/77e81e5a898cbe0ba705674fecd6e65f.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/77e\/81e\/5a8\/77e81e5a898cbe0ba705674fecd6e65f.svg 781w\" loading=\"lazy\" decode=\"async\"\/>(\u0432 \u043e\u0434\u043d\u043e\u0440\u043e\u0434\u043d\u044b\u0445 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u0445):<\/p>\n<p><img decoding=\"async\" class=\"formula\" source=\"{P_{c}} = [R|t]P_{w} \\ \\text{ \u0438\u043b\u0438 } \\ {P_{c}} =\\ ^{c}T_{w}P_{w}\" alt=\"{P_{c}} = [R|t]P_{w} \\ \\text{ \u0438\u043b\u0438 } \\ {P_{c}} =\\ ^{c}T_{w}P_{w}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/006\/e39\/b6f\/006e39b6f9af805987489c0bbc7c9662.svg\" width=\"260\" height=\"22\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/006\/e39\/b6f\/006e39b6f9af805987489c0bbc7c9662.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/006\/e39\/b6f\/006e39b6f9af805987489c0bbc7c9662.svg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<p>\u0422\u043e\u0433\u0434\u0430 \u0432\u00a0\u043e\u0431\u0449\u0435\u043c \u0432\u0438\u0434\u0435 \u043c\u043e\u0434\u0435\u043b\u044c \u0431\u0443\u0434\u0435\u0442:<\/p>\n<p><img decoding=\"async\" class=\"formula\" source=\"s\\ p = A[R|t]P_{w} \\\\ \\text{\u0438\u043b\u0438} \\\\ s \\ p = A \\Pi\\ ^{c}T_{w} P_{w}\" alt=\"s\\ p = A[R|t]P_{w} \\\\ \\text{\u0438\u043b\u0438} \\\\ s \\ p = A \\Pi\\ ^{c}T_{w} P_{w}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9\/9c\/9c6\/9c60d3c89bb3d07c11ee64c966bdd57e.svg\" width=\"128\" height=\"72\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9\/9c\/9c6\/9c60d3c89bb3d07c11ee64c966bdd57e.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9\/9c\/9c6\/9c60d3c89bb3d07c11ee64c966bdd57e.svg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<p>\u0421\u00a0\u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0434\u0430\u043d\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 \u043c\u044b \u0441\u043c\u043e\u0436\u0435\u043c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0438\u0441\u043a\u043e\u043c\u0443\u044e <img decoding=\"async\" class=\"formula inline\" source=\"P\" alt=\"P\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/4\/44\/44c\/44c29edb103a2872f519ad0c9a0fdaaa.svg\" width=\"12\" height=\"12\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/4\/44\/44c\/44c29edb103a2872f519ad0c9a0fdaaa.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/4\/44\/44c\/44c29edb103a2872f519ad0c9a0fdaaa.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0432\u00a0\u0442\u043e\u0439 \u0438\u043b\u0438\u00a0\u0438\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442.<\/p>\n<h3>\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 (\u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438)  <\/h3>\n<p>\u0417\u0430\u043c\u0435\u0442\u0438\u043c \u0438\u0437\u00a0\u043c\u043e\u0434\u0435\u043b\u0438 \u043a\u0430\u043c\u0435\u0440\u044b\u2011\u043e\u0431\u0441\u043a\u0443\u0440\u044b, \u0447\u0442\u043e\u00a0\u0432\u00a0\u043e\u0431\u0449\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0432\u00a0\u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u043a\u0430\u043c\u0435\u0440\u044b \u043e\u0434\u043d\u043e\u0439 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0432\u0437\u044f\u0442\u043e\u0439 \u0442\u043e\u0447\u043a\u0438, \u0438\u043c\u0435\u044f\u00a0\u043b\u0438\u0448\u044c <img decoding=\"async\" class=\"formula inline\" source=\"p\" alt=\"p\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/9a7\/3bf\/f48\/9a73bff4881c38baf2d72af74ce0d4a4.svg\" width=\"10\" height=\"15\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/9a7\/3bf\/f48\/9a73bff4881c38baf2d72af74ce0d4a4.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/9a7\/3bf\/f48\/9a73bff4881c38baf2d72af74ce0d4a4.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0438 <img decoding=\"async\" class=\"formula inline\" source=\"A\" alt=\"A\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/3f5\/31a\/430\/3f531a430baa773d262c800b0229e9e2.svg\" width=\"14\" height=\"17\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/3f5\/31a\/430\/3f531a430baa773d262c800b0229e9e2.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/3f5\/31a\/430\/3f531a430baa773d262c800b0229e9e2.svg 781w\" loading=\"lazy\" decode=\"async\"\/>:<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b9e\/874\/988\/b9e874988fcdcc195bc5fb026fac0668.gif\" alt=\"\u041f\u0440\u043e\u0435\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0442\u043e\u0447\u0435\u043a \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 \u0432\u00a0\u043e\u0434\u043d\u0443 \u0442\u043e\u0447\u043a\u0443 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f (GIF \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u044f)\" title=\"\u041f\u0440\u043e\u0435\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0442\u043e\u0447\u0435\u043a \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 \u0432\u00a0\u043e\u0434\u043d\u0443 \u0442\u043e\u0447\u043a\u0443 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f (GIF \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u044f)\" width=\"598\" height=\"437\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b9e\/874\/988\/b9e874988fcdcc195bc5fb026fac0668.gif 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b9e\/874\/988\/b9e874988fcdcc195bc5fb026fac0668.gif 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u041f\u0440\u043e\u0435\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0442\u043e\u0447\u0435\u043a \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 \u0432\u00a0\u043e\u0434\u043d\u0443 \u0442\u043e\u0447\u043a\u0443 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f (GIF \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u044f)<\/figcaption><\/div>\n<\/figure>\n<p>\u0412\u00a0\u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0440\u0430\u0437\u0431\u0435\u0440\u0451\u043c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0447\u0430\u0441\u0442\u043d\u044b\u0435 \u0441\u043b\u0443\u0447\u0430\u0438, \u043a\u043e\u0433\u0434\u0430 \u044d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u043d\u043e\u00a0\u043f\u043e\u043a\u0430 \u0431\u0443\u0434\u0435\u043c \u0441\u0447\u0438\u0442\u0430\u0442\u044c, \u0447\u0442\u043e\u00a0\u0434\u043b\u044f\u00a0\u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0439\u0442\u0438 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0432\u00a0\u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442, \u043e\u0442\u043b\u0438\u0447\u043d\u043e\u0439 \u043e\u0442\u00a0\u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0441\u0430\u043c\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430 (\u043c\u0438\u0440\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442), \u043d\u0430\u043c \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043d\u0430\u0431\u043e\u0440 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043f\u0430\u0440 <img decoding=\"async\" class=\"formula inline\" source=\"[P_w;p]\" alt=\"[P_w;p]\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/661\/684\/d49\/661684d49077642761f2d5525714a7d5.svg\" width=\"53\" height=\"22\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/661\/684\/d49\/661684d49077642761f2d5525714a7d5.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/661\/684\/d49\/661684d49077642761f2d5525714a7d5.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0442\u0430\u043a\u0438\u0445, \u0447\u0442\u043e <img decoding=\"async\" class=\"formula inline\" source=\"p\" alt=\"p\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/923\/9cb\/e9f\/9239cbe9feb25eedacf7ecfabf5b9e4d.svg\" width=\"10\" height=\"15\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/923\/9cb\/e9f\/9239cbe9feb25eedacf7ecfabf5b9e4d.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/923\/9cb\/e9f\/9239cbe9feb25eedacf7ecfabf5b9e4d.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0438 <img decoding=\"async\" class=\"formula inline\" source=\"P_w\" alt=\"P_w\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/cd6\/975\/ce8\/cd6975ce81b3e8880f824720e77d3309.svg\" width=\"24\" height=\"20\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/cd6\/975\/ce8\/cd6975ce81b3e8880f824720e77d3309.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/cd6\/975\/ce8\/cd6975ce81b3e8880f824720e77d3309.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0431\u0443\u0434\u0443\u0442 \u043d\u0430\u043c \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b.<\/p>\n<p>\u0412\u00a0\u0441\u0442\u0430\u0442\u044c\u0435 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0447\u0430\u0441\u0442\u044b\u0439 \u0441\u043b\u0443\u0447\u0430\u0439, \u043a\u043e\u0433\u0434\u0430 <img decoding=\"async\" class=\"formula inline\" source=\"p\" alt=\"p\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ba3\/579\/478\/ba3579478d0b487508cc855b5b9edc66.svg\" width=\"10\" height=\"15\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ba3\/579\/478\/ba3579478d0b487508cc855b5b9edc66.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ba3\/579\/478\/ba3579478d0b487508cc855b5b9edc66.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u043f\u043e\u00a0\u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044e \u0441\u00a0\u043a\u0430\u043c\u0435\u0440\u044b, \u0430<img decoding=\"async\" class=\"formula inline\" source=\"P_w\" alt=\"P_w\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b15\/ccc\/37f\/b15ccc37fa1550db17296921d835afc8.svg\" width=\"24\" height=\"20\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b15\/ccc\/37f\/b15ccc37fa1550db17296921d835afc8.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b15\/ccc\/37f\/b15ccc37fa1550db17296921d835afc8.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0437\u0430\u0434\u0430\u0442\u044c \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e (\u0437\u0430\u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u044e), \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0432 \u0438\u0441\u043a\u043e\u043c\u044b\u0435 \u0442\u043e\u0447\u043a\u0438 \u043d\u0430\u00a0\u043c\u043e\u0434\u0435\u043b\u0438, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0447\u0430\u043b\u043e \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442, \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043e\u0441\u0435\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0438 \u0435\u0434\u0438\u043d\u0438\u0446\u044b \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f\u00a0\u0431\u044b\u043b\u0438 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u043c\u0438 \u0434\u043b\u044f\u00a0\u043d\u0430\u0441. \u0417\u0430\u0447\u0430\u0441\u0442\u0443\u044e \u0434\u043b\u044f\u00a0\u044d\u0442\u043e\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u0432\u0441\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u043c\u0430\u0440\u043a\u0435\u0440\u044b, \u043d\u043e\u00a0\u0432\u0430\u0436\u0435\u043d \u0441\u0430\u043c \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u00a0\u2014 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e\u0435 <img decoding=\"async\" class=\"formula inline\" source=\"P_w\" alt=\"P_w\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/08d\/14b\/97b\/08d14b97bc13f30cc98e503667c75940.svg\" width=\"24\" height=\"20\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/08d\/14b\/97b\/08d14b97bc13f30cc98e503667c75940.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/08d\/14b\/97b\/08d14b97bc13f30cc98e503667c75940.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0438 <img decoding=\"async\" class=\"formula inline\" source=\"p\" alt=\"p\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a2c\/fc2\/a98\/a2cfc2a98cce6cef45fd919d6fa54625.svg\" width=\"10\" height=\"15\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a2c\/fc2\/a98\/a2cfc2a98cce6cef45fd919d6fa54625.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a2c\/fc2\/a98\/a2cfc2a98cce6cef45fd919d6fa54625.svg 781w\" loading=\"lazy\" decode=\"async\"\/>\u00a0\u2014 \u0442\u0430\u043a \u0447\u0442\u043e\u00a0\u043c\u043e\u0433\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044b, \u0432\u00a0\u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0435.<\/p>\n<p>\u041d\u043e\u00a0\u0432\u0435\u0440\u043d\u0451\u043c\u0441\u044f \u043a\u00a0\u043c\u0430\u0440\u043a\u0435\u0440\u0430\u043c, \u0438\u0445 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043e\u0433\u0440\u043e\u043c\u043d\u043e\u0435 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/207\/03c\/175\/20703c175e35922633319fbd0b8e72ff.png\" alt=\"\u041c\u0430\u0440\u043a\u0435\u0440\u044b \u0432 \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u043c \u0437\u0440\u0435\u043d\u0438\u0438 \u0438 \u0440\u043e\u0431\u043e\u0442\u043e\u0442\u0435\u0445\u043d\u0438\u043a\u0435\" title=\"\u041c\u0430\u0440\u043a\u0435\u0440\u044b \u0432 \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u043c \u0437\u0440\u0435\u043d\u0438\u0438 \u0438 \u0440\u043e\u0431\u043e\u0442\u043e\u0442\u0435\u0445\u043d\u0438\u043a\u0435\" width=\"1011\" height=\"363\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/207\/03c\/175\/20703c175e35922633319fbd0b8e72ff.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/207\/03c\/175\/20703c175e35922633319fbd0b8e72ff.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u041c\u0430\u0440\u043a\u0435\u0440\u044b \u0432 <a href=\"https:\/\/www.dfki.de\/fileadmin\/user_upload\/import\/7312%5C_Koehler2010%5C_IRTG.pdf\" rel=\"noopener noreferrer nofollow\">\u043c\u0430\u0448\u0438\u043d\u043d\u043e\u043c \u0437\u0440\u0435\u043d\u0438\u0438<\/a> \u0438 <a href=\"https:\/\/www.joydeepb.com\/Publications\/robocup2014%5C_ssl.pdf\" rel=\"noopener noreferrer nofollow\">\u0440\u043e\u0431\u043e\u0442\u043e\u0442\u0435\u0445\u043d\u0438\u043a\u0435<\/a><\/figcaption><\/div>\n<\/figure>\n<p>\u0414\u0430\u043b\u0435\u0435 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c ArUco \u043c\u0430\u0440\u043a\u0435\u0440\u044b (\u0447\u0451\u0440\u043d\u044b\u0435 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u044b \u0441\u00a0\u0431\u0435\u043b\u044b\u043c\u0438 \u043f\u0438\u043a\u0441\u0435\u043b\u044f\u043c\u0438 \u0432\u043d\u0443\u0442\u0440\u0438, \u043a\u043e\u0434\u0438\u0440\u0443\u044e\u0449\u0438\u043c\u0438 \u043d\u043e\u043c\u0435\u0440 \u043c\u0430\u0440\u043a\u0435\u0440\u0430), \u0442\u0430\u043a \u043a\u0430\u043a\u00a0\u0432\u00a0OpenCV \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u043e\u0431\u0448\u0438\u0440\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0434\u043b\u044f\u00a0\u0434\u0435\u0442\u0435\u043a\u0446\u0438\u0438 \u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u00a0\u043d\u0438\u043c\u0438, \u0432\u00a0\u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438 \u043a\u043b\u0430\u0441\u0441 <code>cv2.aruco.ArucoDetector<\/code>. \u041d\u0435\u00a0\u0431\u0443\u0434\u0435\u043c \u0432\u0434\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u0432\u00a0\u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u00a0ArUco \u043c\u0430\u0440\u043a\u0435\u0440\u0430\u043c\u0438 \u0432\u00a0OpenCV, \u0442\u0430\u043a \u043a\u0430\u043a\u00a0\u043f\u043e\u00a0\u044d\u0442\u043e\u0439 \u0442\u0435\u043c\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043c\u043d\u043e\u0433\u043e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438, \u0432\u043a\u043b\u044e\u0447\u0430\u044f <a href=\"https:\/\/docs.opencv.org\/4.x\/d1\/dcb\/tutorial%5C_aruco%5C_faq.html\" rel=\"noopener noreferrer nofollow\">FAQ \u043e\u0442\u00a0OpenCV<\/a> \u0438 <a href=\"https:\/\/docs.opencv.org\/4.12.0\/d2\/d1a\/classcv%5C_1%5C_1aruco%5C_1%5C_1ArucoDetector.html#a0c1d14251bf1cbb06277f49cfe1c9b61\" rel=\"noopener noreferrer nofollow\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e OpenCV<\/a>.<\/p>\n<p>\u041d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c corners\u00a0\u2014 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 (<em>px<\/em>) \u0432\u0435\u0440\u0448\u0438\u043d (\u0443\u0433\u043b\u043e\u0432) ArUco \u043c\u0430\u0440\u043a\u0435\u0440\u043e\u0432 \u043d\u0430\u00a0\u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0438\u00a0\u2014 \u0441\u00a0\u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>detectMarkers<\/code>. \u042d\u0442\u043e \u0438 \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u0448 \u043d\u0430\u0431\u043e\u0440 \u0438\u0437\u00a0\u0447\u0435\u0442\u044b\u0440\u0451\u0445 <img decoding=\"async\" class=\"formula inline\" source=\"p\" alt=\"p\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/8\/83\/838\/83878c91171338902e0fe0fb97a8c47a.svg\" width=\"12\" height=\"12\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/8\/83\/838\/83878c91171338902e0fe0fb97a8c47a.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/8\/83\/838\/83878c91171338902e0fe0fb97a8c47a.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0434\u043b\u044f\u00a0\u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043c\u0430\u0440\u043a\u0435\u0440\u0430.<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043c <img decoding=\"async\" class=\"formula inline\" source=\"P_w\" alt=\"P_w\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/42b\/059\/f03\/42b059f03f337583aad6f6fb5123aa28.svg\" width=\"24\" height=\"20\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/42b\/059\/f03\/42b059f03f337583aad6f6fb5123aa28.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/42b\/059\/f03\/42b059f03f337583aad6f6fb5123aa28.svg 781w\" loading=\"lazy\" decode=\"async\"\/>. \u0423\u00a0ArUco \u043c\u0430\u0440\u043a\u0435\u0440\u043e\u0432 \u0432\u0435\u0440\u0448\u0438\u043d\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442\u0441\u044f \u0432\u00a0\u0441\u0442\u0440\u043e\u0433\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435: \u0432\u00a0\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u043c \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u043c\u0430\u0440\u043a\u0435\u0440\u0430 (\u0431\u0435\u0437 \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u0430) \u043f\u043e\u00a0\u0447\u0430\u0441\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u0435\u043b\u043a\u0435, \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u043e\u0442\u00a0\u0432\u0435\u0440\u0445\u043d\u0435\u0439 \u043b\u0435\u0432\u043e\u0439,\u00a0\u2014 \u0432\u00a0\u0442\u0430\u043a\u043e\u043c\u00a0\u0436\u0435 \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0438\u043c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043a\u0430\u0436\u0434\u043e\u0439 <img decoding=\"async\" class=\"formula inline\" source=\"p\" alt=\"p\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/be1\/206\/9a1\/be12069a14436f4725503d8479c5fb8b.svg\" width=\"10\" height=\"15\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/be1\/206\/9a1\/be12069a14436f4725503d8479c5fb8b.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/be1\/206\/9a1\/be12069a14436f4725503d8479c5fb8b.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0442\u043e\u0447\u043a\u0438 \u0432\u00a0\u043c\u0438\u0440\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442, \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0438\u0432 \u043d\u0430\u0447\u0430\u043b\u043e \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0432\u00a0\u0446\u0435\u043d\u0442\u0440\u0435 \u043c\u0430\u0440\u043a\u0435\u0440\u0430 (\u0442\u0435\u043c\u00a0\u0436\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0432 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043e\u0441\u0435\u0439 \u043c\u0438\u0440\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043c\u0430\u0440\u043a\u0435\u0440\u0430), \u0442\u043e\u0433\u0434\u0430 \u043d\u0430\u0431\u043e\u0440 \u0438\u0437\u00a0\u0447\u0435\u0442\u044b\u0440\u0451\u0445 <img decoding=\"async\" class=\"formula inline\" source=\"P_w\" alt=\"P_w\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/0e9\/f14\/f3d\/0e9f14f3df2449a6f32be4338d32dc10.svg\" width=\"24\" height=\"20\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/0e9\/f14\/f3d\/0e9f14f3df2449a6f32be4338d32dc10.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/0e9\/f14\/f3d\/0e9f14f3df2449a6f32be4338d32dc10.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0431\u0443\u0434\u0435\u0442:<\/p>\n<pre><code class=\"python\">[     [-marker_size \/ 2, marker_size  \/ 2, 0],     [marker_size  \/ 2, marker_size  \/ 2, 0],     [marker_size  \/ 2, -marker_size \/ 2, 0],     [-marker_size \/ 2, -marker_size \/ 2, 0] ] # \u0433\u0434\u0435 marker_size \u0440\u0430\u0437\u043c\u0435\u0440 \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u043c\u0430\u0440\u043a\u0435\u0440\u0430 (\u043c)<\/code><\/pre>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/1e1\/958\/be6\/1e1958be635c91777ccd108452bcfc21.png\" alt=\"{0; 1; 2; 3}\u00a0\u2014 \u0438\u043d\u0434\u0435\u043a\u0441\u044b \u0442\u043e\u0447\u0435\u043a (\u043f\u043e \u0447\u0430\u0441\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u0435\u043b\u043a\u0438 \u043e\u0442\u00a0\u0432\u0435\u0440\u0445\u043d\u0435\u0439 \u043b\u0435\u0432\u043e\u0439), (0; 0; 0)\u00a0\u2014 \u043d\u0430\u0447\u0430\u043b\u043e \u043c\u0438\u0440\u043e\u0432\u043e\u0439 (\u043e\u0431\u044a\u0435\u043a\u0442\u043d\u043e\u0439) \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043e \u0432\u00a0\u0446\u0435\u043d\u0442\u0440\u0435 \u043c\u0430\u0440\u043a\u0435\u0440\u0430  \" title=\"{0; 1; 2; 3}\u00a0\u2014 \u0438\u043d\u0434\u0435\u043a\u0441\u044b \u0442\u043e\u0447\u0435\u043a (\u043f\u043e \u0447\u0430\u0441\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u0435\u043b\u043a\u0438 \u043e\u0442\u00a0\u0432\u0435\u0440\u0445\u043d\u0435\u0439 \u043b\u0435\u0432\u043e\u0439), (0; 0; 0)\u00a0\u2014 \u043d\u0430\u0447\u0430\u043b\u043e \u043c\u0438\u0440\u043e\u0432\u043e\u0439 (\u043e\u0431\u044a\u0435\u043a\u0442\u043d\u043e\u0439) \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043e \u0432\u00a0\u0446\u0435\u043d\u0442\u0440\u0435 \u043c\u0430\u0440\u043a\u0435\u0440\u0430  \" width=\"300\" height=\"300\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/1e1\/958\/be6\/1e1958be635c91777ccd108452bcfc21.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/1e1\/958\/be6\/1e1958be635c91777ccd108452bcfc21.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>{0; 1; 2; 3}\u00a0\u2014 \u0438\u043d\u0434\u0435\u043a\u0441\u044b \u0442\u043e\u0447\u0435\u043a (\u043f\u043e \u0447\u0430\u0441\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u0435\u043b\u043a\u0438 \u043e\u0442\u00a0\u0432\u0435\u0440\u0445\u043d\u0435\u0439 \u043b\u0435\u0432\u043e\u0439), (0; 0; 0)\u00a0\u2014 \u043d\u0430\u0447\u0430\u043b\u043e \u043c\u0438\u0440\u043e\u0432\u043e\u0439 (\u043e\u0431\u044a\u0435\u043a\u0442\u043d\u043e\u0439) \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043e \u0432\u00a0\u0446\u0435\u043d\u0442\u0440\u0435 \u043c\u0430\u0440\u043a\u0435\u0440\u0430 <\/figcaption><\/div>\n<\/figure>\n<p>\u0412\u00a0\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u043d\u0430\u0431\u043e\u0440 \u0438\u0437\u00a0\u0447\u0435\u0442\u044b\u0440\u0451\u0445 \u043f\u0430\u0440<img decoding=\"async\" class=\"formula inline\" source=\"[P_w;p]\" alt=\"[P_w;p]\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/593\/725\/29f\/59372529f9b62484ac09fde63049c355.svg\" width=\"53\" height=\"22\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/593\/725\/29f\/59372529f9b62484ac09fde63049c355.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/593\/725\/29f\/59372529f9b62484ac09fde63049c355.svg 781w\" loading=\"lazy\" decode=\"async\"\/>, \u0432\u00a0\u043a\u043e\u0442\u043e\u0440\u043e\u043c <img decoding=\"async\" class=\"formula inline\" source=\"p\" alt=\"p\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/628\/2a4\/807\/6282a48072af91a81b41693cbe11f88e.svg\" width=\"10\" height=\"15\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/628\/2a4\/807\/6282a48072af91a81b41693cbe11f88e.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/628\/2a4\/807\/6282a48072af91a81b41693cbe11f88e.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u043e\u00a0\u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044e \u0441\u00a0\u043a\u0430\u043c\u0435\u0440\u044b, \u0430 <img decoding=\"async\" class=\"formula inline\" source=\"P_w\" alt=\"P_w\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9\/99\/994\/994063387fe12e8edb0e4c3eefe98676.svg\" width=\"16\" height=\"12\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9\/99\/994\/994063387fe12e8edb0e4c3eefe98676.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9\/99\/994\/994063387fe12e8edb0e4c3eefe98676.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u043c\u044b \u0437\u0430\u0434\u0430\u043b\u0438 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e.<\/p>\n<h3>\u0417\u0430\u0434\u0430\u0447\u0430 Perspective-n-Point (PnP)<\/h3>\n<p><a href=\"https:\/\/en.wikipedia.org\/wiki\/Perspective-n-Point\" rel=\"noopener noreferrer nofollow\">Perspective\u2011n\u2011Point<\/a> (PnP)\u00a0\u2014 \u044d\u0442\u043e \u0437\u0430\u0434\u0430\u0447\u0430 \u043e\u0446\u0435\u043d\u043a\u0438 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043a\u0430\u043c\u0435\u0440\u044b (\u043e\u0431\u044b\u0447\u043d\u043e \u043e\u0442\u043a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439) \u0432\u00a0\u043c\u0438\u0440\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 (\u043f\u043e\u0432\u043e\u0440\u043e\u0442\u0430 \u0438 \u0441\u0434\u0432\u0438\u0433\u0430 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043e\u0442\u0441\u0447\u0451\u0442\u0430) \u043f\u043e\u00a0\u043d\u0430\u0431\u043e\u0440\u0443 \u0438\u0437 <img decoding=\"async\" class=\"formula inline\" source=\"n\\in\\mathbb{N}\" alt=\"n\\in\\mathbb{N}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/d\/d8\/d8f\/d8f14f3ca822e2e1e0a747981bf63a9a.svg\" width=\"40\" height=\"16\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/d\/d8\/d8f\/d8f14f3ca822e2e1e0a747981bf63a9a.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/d\/d8\/d8f\/d8f14f3ca822e2e1e0a747981bf63a9a.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0442\u043e\u0447\u0435\u043a \u0441\u00a0\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e\u0439 \u043f\u043e\u0437\u0438\u0446\u0438\u0435\u0439 \u0432\u00a0\u043c\u0438\u0440\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0438 \u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u044f\u043c \u043d\u0430\u00a0\u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0438. \u0414\u0440\u0443\u0433\u0438\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438 \u0437\u043d\u0430\u044f <img decoding=\"async\" class=\"formula inline\" source=\"n\" alt=\"n\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/400\/f44\/a4d\/400f44a4d33001ae7f1223f87c437958.svg\" width=\"12\" height=\"12\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/400\/f44\/a4d\/400f44a4d33001ae7f1223f87c437958.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/400\/f44\/a4d\/400f44a4d33001ae7f1223f87c437958.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u043f\u0430\u0440 <img decoding=\"async\" class=\"formula inline\" source=\"[P_w;p]\" alt=\"[P_w;p]\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/68f\/bbf\/9a0\/68fbbf9a023f508e4355dbe10f8603c1.svg\" width=\"53\" height=\"22\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/68f\/bbf\/9a0\/68fbbf9a023f508e4355dbe10f8603c1.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/68f\/bbf\/9a0\/68fbbf9a023f508e4355dbe10f8603c1.svg 781w\" loading=\"lazy\" decode=\"async\"\/>\u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043d\u0430\u0439\u0442\u0438 <img decoding=\"async\" class=\"formula inline\" source=\"rvec, tvec\" alt=\"rvec, tvec\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/7a7\/29d\/92a\/7a729d92a81a161e6e51320414aedb81.svg\" width=\"78\" height=\"19\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/7a7\/29d\/92a\/7a729d92a81a161e6e51320414aedb81.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/7a7\/29d\/92a\/7a729d92a81a161e6e51320414aedb81.svg 781w\" loading=\"lazy\" decode=\"async\"\/>. <\/p>\n<p>\u0412\u00a0\u043b\u0438\u0442\u0435\u0440\u0430\u0442\u0443\u0440\u0435 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0435\u0442\u0441\u044f \u0442\u0435\u0440\u043c\u0438\u043d \u00abcamera <a href=\"https:\/\/en.wikipedia.org\/wiki\/3D_pose_estimation\" rel=\"noopener noreferrer nofollow\">3d pose estimation<\/a>\u00bb, \u043a\u0430\u043a\u00a0\u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438.<\/p>\n<p>\u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438. \u041e\u043d\u0438 \u0440\u0430\u0437\u043b\u0438\u0447\u0430\u044e\u0442\u0441\u044f \u043f\u043e\u00a0\u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0443 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0445 <img decoding=\"async\" class=\"formula inline\" source=\"n\" alt=\"n\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c24\/8cc\/7c6\/c248cc7c6019366f9f3f765f23dbc016.svg\" width=\"12\" height=\"12\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c24\/8cc\/7c6\/c248cc7c6019366f9f3f765f23dbc016.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c24\/8cc\/7c6\/c248cc7c6019366f9f3f765f23dbc016.svg 781w\" loading=\"lazy\" decode=\"async\"\/>, \u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u043e\u0441\u0442\u0438 \u043a\u00a0\u043e\u0448\u0438\u0431\u043a\u0430\u043c, \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430. \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437\u00a0\u043d\u0438\u0445:<\/p>\n<ul>\n<li>\n<p>P3P\u00a0\u2014 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043c\u0435\u0442\u043e\u0434 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438, \u043f\u0440\u0438 <img decoding=\"async\" class=\"formula inline\" source=\"n\\in\\{3;4\\}\" alt=\"n\\in\\{3;4\\}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f61\/2c3\/7bc\/f612c37bc15c9e3ac3ffc0aa40db2893.svg\" width=\"82\" height=\"22\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f61\/2c3\/7bc\/f612c37bc15c9e3ac3ffc0aa40db2893.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f61\/2c3\/7bc\/f612c37bc15c9e3ac3ffc0aa40db2893.svg 781w\" loading=\"lazy\" decode=\"async\"\/>, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0432\u0448\u0438\u0439\u0441\u044f \u0435\u0449\u0451 \u0432\u00a0XIX \u0432\u0435\u043a\u0435 \u0432\u00a0\u0430\u043d\u0430\u043b\u043e\u0433\u043e\u0432\u043e\u0439 \u0444\u043e\u0442\u043e\u0433\u0440\u0430\u043c\u043c\u0435\u0442\u0440\u0438\u0438.<\/p>\n<\/li>\n<li>\n<p>DLT (Direct linear transformation) \u043c\u0435\u0442\u043e\u0434 \u0438 \u0435\u0433\u043e \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u0430\u044f \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u041b\u0435\u0432\u0435\u043d\u0431\u0435\u0440\u0433\u0430\u2011\u041c\u0430\u0440\u043a\u0432\u0430\u0440\u0434\u0442\u0430 \u043c\u043e\u0436\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043a\u0430\u043a\u00a0\u0434\u043b\u044f\u00a0\u043a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u043a\u0438 \u043a\u0430\u043c\u0435\u0440\u044b, \u0442\u0430\u043a \u0438 \u0434\u043b\u044f\u00a0\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u0447\u0438 PnP, \u043f\u0440\u0438 <img decoding=\"async\" class=\"formula inline\" source=\"n\\in[4;+\\infty)\" alt=\"n\\in[4;+\\infty)\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/64a\/dfa\/8bb\/64adfa8bb7a00284d4fce72958bbf2e6.svg\" width=\"101\" height=\"22\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/64a\/dfa\/8bb\/64adfa8bb7a00284d4fce72958bbf2e6.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/64a\/dfa\/8bb\/64adfa8bb7a00284d4fce72958bbf2e6.svg 781w\" loading=\"lazy\" decode=\"async\"\/>\u0434\u043b\u044f\u00a0\u043a\u043e\u043c\u043f\u043b\u0430\u043d\u0430\u0440\u043d\u044b\u0445 \u0442\u043e\u0447\u0435\u043a \u0438 <img decoding=\"async\" class=\"formula inline\" source=\"n\\in[6;+\\infty)\" alt=\"n\\in[6;+\\infty)\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a18\/63d\/187\/a1863d1879eeb681198ade7001f9b71c.svg\" width=\"101\" height=\"22\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a18\/63d\/187\/a1863d1879eeb681198ade7001f9b71c.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a18\/63d\/187\/a1863d1879eeb681198ade7001f9b71c.svg 781w\" loading=\"lazy\" decode=\"async\"\/>\u0434\u043b\u044f\u00a0\u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u0435\u0432.<\/p>\n<\/li>\n<li>\n<p>EPnP (Efficient P<em>n<\/em>P)\u00a0\u2014 \u043c\u0435\u0442\u043e\u0434 \u0440\u0435\u0448\u0435\u043d\u0438\u044f, \u043f\u0440\u0438 <img decoding=\"async\" class=\"formula inline\" source=\"n\\in[4;+\\infty)\" alt=\"n\\in[4;+\\infty)\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1c3\/c74\/23e\/1c3c7423e0aafe254debba5ae217370b.svg\" width=\"101\" height=\"22\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1c3\/c74\/23e\/1c3c7423e0aafe254debba5ae217370b.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1c3\/c74\/23e\/1c3c7423e0aafe254debba5ae217370b.svg 781w\" loading=\"lazy\" decode=\"async\"\/>, \u0438\u043c\u0435\u044e\u0449\u0438\u0439 \u043d\u0430\u0438\u043c\u0435\u043d\u044c\u0448\u0443\u044e \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430, \u043d\u043e\u00a0\u043d\u0435\u0432\u044b\u0441\u043e\u043a\u0443\u044e \u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u043e\u0441\u0442\u044c \u043a\u00a0\u043e\u0448\u0438\u0431\u043a\u0430\u043c.<\/p>\n<\/li>\n<li>\n<p>IPPE (Infinitesimal Plane\u2011based Pose Estimation)\u00a0\u2014 \u043c\u0435\u0442\u043e\u0434 \u0440\u0435\u0448\u0435\u043d\u0438\u044f, \u043f\u0440\u0438 <img decoding=\"async\" class=\"formula inline\" source=\"n\\in[4;+\\infty)\" alt=\"n\\in[4;+\\infty)\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c2e\/b1a\/409\/c2eb1a4095f23821bfec82823d9e5026.svg\" width=\"101\" height=\"22\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c2e\/b1a\/409\/c2eb1a4095f23821bfec82823d9e5026.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c2e\/b1a\/409\/c2eb1a4095f23821bfec82823d9e5026.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0434\u043b\u044f\u00a0\u043a\u043e\u043c\u043f\u043b\u0430\u043d\u0430\u0440\u043d\u044b\u0445 \u0442\u043e\u0447\u0435\u043a. \u0414\u0430\u043d\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432 \u043a\u00a0\u043e\u0448\u0438\u0431\u043a\u0430\u043c \u0441\u00a0\u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c\u0438 \u0442\u043e\u0447\u043a\u0430\u043c\u0438, \u043d\u0430\u0445\u043e\u0434\u044f\u0449\u0438\u043c\u0438\u0441\u044f \u0434\u0430\u043b\u0435\u043a\u043e \u043e\u0442\u00a0\u043a\u0430\u043c\u0435\u0440\u044b \u0438 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0431\u043b\u0438\u0437\u043a\u043e \u0434\u0440\u0443\u0433 \u043a\u00a0\u0434\u0440\u0443\u0433\u0443, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0435\u0433\u043e \u0447\u0430\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u043f\u0440\u0438\u00a0\u043e\u0446\u0435\u043d\u043a\u0435 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u0441\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u043c\u0430\u0440\u043a\u0435\u0440\u043e\u0432 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 ArUco).<\/p>\n<\/li>\n<li>\n<p>SQPNP\u00a0\u2014 \u043c\u0435\u0442\u043e\u0434 \u0440\u0435\u0448\u0435\u043d\u0438\u044f, \u043f\u0440\u0438 <img decoding=\"async\" class=\"formula inline\" source=\"n\\in[3;+\\infty)\" alt=\"n\\in[3;+\\infty)\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/5b8\/910\/62f\/5b891062f56d5c518f017d34d85a382b.svg\" width=\"101\" height=\"22\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/5b8\/910\/62f\/5b891062f56d5c518f017d34d85a382b.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/5b8\/910\/62f\/5b891062f56d5c518f017d34d85a382b.svg 781w\" loading=\"lazy\" decode=\"async\"\/>; \u043e\u0431\u043e\u0431\u0449\u0451\u043d\u043d\u044b\u0439 \u0438 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439.<\/p>\n<\/li>\n<\/ul>\n<p>\u0421\u0442\u043e\u0438\u0442 \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e\u00a0\u0443\u00a0\u0434\u0430\u043d\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 \u043e\u0431\u044b\u0447\u043d\u043e \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439, \u0438 \u043c\u043e\u0433\u0443\u0442\u00a0\u0431\u044b\u0442\u044c \u0441\u043b\u0443\u0447\u0430\u0438, \u043f\u0440\u0438\u00a0\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u043e\u0433\u0440\u0435\u0448\u043d\u043e\u0441\u0442\u044c <a href=\"https:\/\/en.wikipedia.org\/wiki\/Reprojection%5C_error\" rel=\"noopener noreferrer nofollow\">(\u0441\u043c. \u043e\u0448\u0438\u0431\u043a\u0430 \u043f\u0435\u0440\u0435\u043f\u0440\u043e\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f)<\/a> \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0440\u0430\u0432\u043d\u0430, \u0438\u0437\u2011\u0437\u0430 \u0447\u0435\u0433\u043e \u043d\u0435\u043b\u044c\u0437\u044f \u0431\u0443\u0434\u0435\u0442 \u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u043e \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u0442\u044c \u043e\u00a0\u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u043e\u0439 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0442\u043e\u0433\u043e \u0438\u043b\u0438\u00a0\u0438\u043d\u043e\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 IPPE \u043c\u0435\u0442\u043e\u0434 \u043c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c 2\u00a0\u0432\u0435\u0440\u043e\u044f\u0442\u043d\u044b\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u044f, \u0438 \u0438\u043d\u043e\u0433\u0434\u0430 \u044d\u0442\u043e \u043f\u0440\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u00a0\u043d\u0435\u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u043e\u0441\u0442\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043e\u0441\u0438 Z \u043c\u0438\u0440\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442:<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f53\/5c8\/497\/f535c84971080df7e4132dc994f8b40c.png\" alt=\"\u041d\u0430\u0447\u0430\u043b\u043e \u043c\u0438\u0440\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432\u00a0\u0446\u0435\u043d\u0442\u0440\u0435 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u043c\u0430\u0440\u043a\u0435\u0440\u0430. (\u0424\u043e\u0442\u043e \u0432\u0437\u044f\u0442\u043e \u0438\u0437 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043e\u0442 catree, \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0439 \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 OpenCV \u043d\u0430\u00a0GitHub. \u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0434\u0430\u043d\u043d\u043e\u0435 \u0444\u043e\u0442\u043e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u0435\u0439 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u00a0\u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u043c\u043e\u0436\u0435\u0442 \u0434\u0430\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b, \u043d\u043e\u00a0\u044d\u0442\u043e\u0442 \u044d\u0444\u0444\u0435\u043a\u0442 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442\u044c \u0438 \u043f\u0440\u0438\u00a0\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u0438 \u0442\u043e\u0433\u043e\u00a0\u0436\u0435 \u043c\u0435\u0442\u043e\u0434\u0430.)\" title=\"\u041d\u0430\u0447\u0430\u043b\u043e \u043c\u0438\u0440\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432\u00a0\u0446\u0435\u043d\u0442\u0440\u0435 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u043c\u0430\u0440\u043a\u0435\u0440\u0430. (\u0424\u043e\u0442\u043e \u0432\u0437\u044f\u0442\u043e \u0438\u0437 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043e\u0442 catree, \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0439 \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 OpenCV \u043d\u0430\u00a0GitHub. \u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0434\u0430\u043d\u043d\u043e\u0435 \u0444\u043e\u0442\u043e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u0435\u0439 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u00a0\u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u043c\u043e\u0436\u0435\u0442 \u0434\u0430\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b, \u043d\u043e\u00a0\u044d\u0442\u043e\u0442 \u044d\u0444\u0444\u0435\u043a\u0442 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442\u044c \u0438 \u043f\u0440\u0438\u00a0\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u0438 \u0442\u043e\u0433\u043e\u00a0\u0436\u0435 \u043c\u0435\u0442\u043e\u0434\u0430.)\" width=\"420\" height=\"208\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/f53\/5c8\/497\/f535c84971080df7e4132dc994f8b40c.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f53\/5c8\/497\/f535c84971080df7e4132dc994f8b40c.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u041d\u0430\u0447\u0430\u043b\u043e \u043c\u0438\u0440\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432\u00a0\u0446\u0435\u043d\u0442\u0440\u0435 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u043c\u0430\u0440\u043a\u0435\u0440\u0430. (\u0424\u043e\u0442\u043e \u0432\u0437\u044f\u0442\u043e \u0438\u0437<a href=\"https:\/\/github.com\/OpenCV\/opencv\/issues\/8813\" rel=\"noopener noreferrer nofollow\"> \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b<\/a> \u043e\u0442 <a href=\"https:\/\/github.com\/catree\" rel=\"noopener noreferrer nofollow\">catree<\/a>, \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0439 \u0432 <a href=\"https:\/\/github.com\/opencv\/opencv\" rel=\"noopener noreferrer nofollow\">\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 OpenCV \u043d\u0430\u00a0GitHub<\/a>. \u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0434\u0430\u043d\u043d\u043e\u0435 \u0444\u043e\u0442\u043e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u0435\u0439 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u00a0\u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u043c\u043e\u0436\u0435\u0442 \u0434\u0430\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b, \u043d\u043e\u00a0\u044d\u0442\u043e\u0442 \u044d\u0444\u0444\u0435\u043a\u0442 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442\u044c \u0438 \u043f\u0440\u0438\u00a0\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u0438 \u0442\u043e\u0433\u043e\u00a0\u0436\u0435 \u043c\u0435\u0442\u043e\u0434\u0430.)<\/figcaption><\/div>\n<\/figure>\n<p>\u0418\u0437\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043e\u0442\u00a0\u043d\u0435\u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u043e\u0441\u0442\u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043d\u0435\u00a0\u0438\u043c\u0435\u0435\u0442 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0430, \u043d\u043e\u00a0\u0434\u043b\u044f\u00a0\u044d\u0442\u043e\u0433\u043e \u043c\u043e\u0433\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b: \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u044f, \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u043d\u0435\u043a\u043e\u043c\u043f\u043b\u0430\u043d\u0430\u0440\u043d\u044b\u0445 \u0442\u043e\u0447\u0435\u043a (\u0434\u043b\u044f \u043c\u0435\u0442\u043e\u0434\u043e\u0432, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0449\u0438\u0445 \u0438\u0445), \u00ab\u0436\u0451\u0441\u0442\u043a\u0430\u044f\u00bb \u0444\u0438\u043a\u0441\u0430\u0446\u0438\u044f \u043e\u0441\u0438 <img decoding=\"async\" class=\"formula inline\" source=\"Z\" alt=\"Z\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b0f\/672\/7eb\/b0f6727eb4025e69cf1a48cb78748050.svg\" width=\"14\" height=\"17\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b0f\/672\/7eb\/b0f6727eb4025e69cf1a48cb78748050.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b0f\/672\/7eb\/b0f6727eb4025e69cf1a48cb78748050.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0438 \u0434\u0440\u0443\u0433\u0438\u0435. <\/p>\n<p>\u0422\u0430\u043a\u0436\u0435 \u043d\u0430\u00a0\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u043c\u043e\u0436\u0435\u0442 \u0432\u043b\u0438\u044f\u0442\u044c \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043a\u0430\u043c\u0435\u0440\u044b \u0438 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c \u043d\u0430\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 <img decoding=\"async\" class=\"formula inline\" source=\"p\" alt=\"p\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/692\/c89\/d4a\/692c89d4a33d0deb8d35dfb67a60a833.svg\" width=\"10\" height=\"15\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/692\/c89\/d4a\/692c89d4a33d0deb8d35dfb67a60a833.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/692\/c89\/d4a\/692c89d4a33d0deb8d35dfb67a60a833.svg 781w\" loading=\"lazy\" decode=\"async\"\/> (<em>px<\/em>) \u043d\u0430\u00a0\u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0438<a href=\"https:\/\/docs.opencv.org\/4.12.0\/dd\/d1a\/group%5C_%5C_imgproc%5C_%5C_feature.html#ga354e0d7c86d0d9da75de9b9701a9a87e:~:text=%E2%97%86-,cornerSubPix(),-void%20cv%3A%3AcornerSubPix\" rel=\"noopener noreferrer nofollow\"> (\u0441\u043c. cv2.cornerSubPix)<\/a>.<\/p>\n<p>\u0422\u0430\u043a \u0438\u043b\u0438\u00a0\u0438\u043d\u0430\u0447\u0435 \u0432\u00a0OpenCV \u0435\u0441\u0442\u044c \u0446\u0435\u043b\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e\u0449\u0438\u0445 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u0447\u0438 PnP:<\/p>\n<pre><code class=\"python\">cv2.solvePnP(              objectPoints,              imagePoints,              cameraMatrix,              distCoeffs,              rvec = np.array([]),              tvec = np.array([]),              useExtrinsicGuess = false,              flags = cv2.SOLVEPNP_ITERATIVE )  # \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u0447\u0438 PnP # # \u0412\u0412\u041e\u0414: # - objectPoints - \u043c\u0430\u0441\u0441\u0438\u0432 (Nx1x3\/1xNx3\/Nx3x1) \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 (\u043c) \u0442\u043e\u0447\u0435\u043a \u0432 \u043c\u0438\u0440\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 # \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 # - imagePoints - \u043c\u0430\u0441\u0441\u0438\u0432 (Nx1x2\/1xNx2\/Nx2x1) \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 (px) \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u0439 # \u0442\u043e\u0447\u0435\u043a \u0438\u0437 objectPoints \u043d\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0438 # - cameraMatrix - \u043c\u0430\u0442\u0440\u0438\u0446\u0430 \u043a\u0430\u043c\u0435\u0440\u044b, \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u0430\u044f \u0432 \u043c\u0430\u0441\u0441\u0438\u0432 # - distCoeffs - \u043c\u0430\u0441\u0441\u0438\u0432, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u044b \u0434\u0438\u0441\u0442\u043e\u0440\u0441\u0438\u0438 (\u0435\u0441\u043b\u0438 \u043d\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0438 \u0443\u0436\u0435 # \u0443\u0434\u0430\u043b\u0435\u043d\u044b \u0438\u0441\u043a\u0430\u0436\u0435\u043d\u0438\u044f, \u0442\u043e \u043c\u0430\u0441\u0441\u0438\u0432 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043f\u0443\u0441\u0442\u043e\u0439) # - rvec \u0438 # - tvec - \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u0435 \u0432\u0435\u043a\u0442\u043e\u0440\u044b \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u0430\/\u0441\u0432\u0434\u0438\u0433\u0430 (\u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435),  # \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u0432 \u043c\u0430\u0441\u0441\u0438\u0432\u044b,  (\u043c\u043e\u0433\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u0445 # \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439, \u043f\u0440\u0438 useExtrinsicGuess = true, \u0434\u043b\u044f \u0438\u0445 \u0443\u0442\u043e\u0447\u043d\u0435\u043d\u0438\u044f\/\u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438, \u043d\u043e \u0432 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445 # \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u0432 Python \u043c\u043e\u0433\u0443\u0442 \u043d\u0435 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f) # - useExtrinsicGuess - bool, \u0432\u043a\u043b\u044e\u0447\u0430\u044e\u0449\u0430\u044f \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u0443\u0442\u043e\u0447\u043d\u0435\u043d\u0438\u044f\/\u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438, \u043f\u0440\u0438 # flags = cv2.SOLVEPNP_ITERATIVE # - flags - \u0447\u0438\u0441\u043b\u043e (\u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0430 \u0438\u0437 cv2), \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u044e\u0449\u0430\u044f \u043c\u0435\u0442\u043e\u0434 # \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u0447\u0438 PnP # # \u0412\u042b\u0412\u041e\u0414: # - retval - bool, \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0449\u0430\u044f, \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u043b\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 PnP # - rvec \u0438  # - tvec - \u0438\u0441\u043a\u043e\u043c\u044b\u0435 \u0432\u0435\u043a\u0442\u043e\u0440\u044b \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u0430\/\u0441\u0434\u0432\u0438\u0433\u0430, \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u0432 \u043c\u0430\u0441\u0441\u0438\u0432\u044b #  # \u0414\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b (\u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b \u0438\u0437 cv2) \u0434\u043b\u044f flags: # - cv2.SOLVEPNP_ITERATIVE - \u043c\u0435\u0442\u043e\u0434 DLT (\u041b\u0435\u0432\u0435\u043d\u0431\u0435\u0440\u0433\u0430-\u041c\u0430\u0440\u043a\u0432\u0430\u0440\u0434\u0442\u0430) # - cv2.SOLVEPNP_EPNP - \u043c\u0435\u0442\u043e\u0434 EPnP # - cv2.SOLVEPNP_P3P - \u043c\u0435\u0442\u043e\u0434 P3P (\u0434\u043b\u044f \u0447\u0435\u0442\u044b\u0440\u0451\u0445 \u0442\u043e\u0447\u0435\u043a) # - cv2.SOLVEPNP_IPPE - \u043c\u0435\u0442\u043e\u0434 IPPE # - cv2.SOLVEPNP_IPPE_SQUARE - \u043c\u0435\u0442\u043e\u0434 IPPE \u0434\u043b\u044f \u0447\u0435\u0442\u044b\u0440\u0451\u0445 \u0442\u043e\u0447\u0435\u043a, \u043e\u0431\u0440\u0430\u0437\u0443\u044e\u0449\u0438\u0445 \u043a\u0432\u0430\u0434\u0440\u0430\u0442 \u0441 # \u0446\u0435\u043d\u0442\u0440\u043e\u043c \u0432 \u043c\u0438\u0440\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 # - cv2.SOLVEPNP_SQPNP - \u043c\u0435\u0442\u043e\u0434 SQPNP  # \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 (\u0443\u043a\u0430\u0437\u0430\u043d\u044b \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 OpenCV)   cv2.solveP3P(              objectPoints,              imagePoints,              cameraMatrix,              distCoeffs,              rvecs,              tvecs,              flags  ) # \u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u0430\u044f cv2.solvePnP() \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u043c\u0435\u0442\u043e\u0434\u0430 P3P \u0441 \u0442\u0440\u0435\u043c\u044f \u0442\u043e\u0447\u043a\u0430\u043c\u0438 \u0438 \u0431\u0435\u0437 # \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430 useExtrinsicGuess  cv2.solvePnPRansac(                    objectPoints,                    imagePoints,                    cameraMatrix,                    distCoeffs,                    rvec,                    tvec,                    useExtrinsicGuess,                    iterationsCount,                    reprojectionError,                    confidence,                    inliers,                    flags ) # \u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u0430\u044f cv2.solvePnP() \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0441\u0445\u0435\u043c\u044b  RANSAC \u0434\u043b\u044f \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438 # \u043e\u0448\u0438\u0431\u043e\u043a   cv2.solvePnPGeneric() # \u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u0430\u044f cv2.solvePnPRansac() \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0449\u0430\u044f \u0432\u0441\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f # \u0437\u0430\u0434\u0430\u0447\u0438 PnP   cv2.aruco.estimatePoseSingleMarkers(                                     corners,                                     markerLength,                                     cameraMatrix,                                     distCoeffs,                                     rvecs,                                     tvecs,                                     objPoints,                                     estimateParameters ) # !!! DEPRECATED !!! \u0424\u0423\u041d\u041a\u0426\u0418\u042f \u0423\u0421\u0422\u0410\u0420\u0415\u041b\u0410 \u0418 \u041e\u0422\u0421\u0423\u0422\u0421\u0422\u0412\u0423\u0415\u0422 \u0412 \u041d\u041e\u0412\u0415\u0419\u0428\u0418\u0425 \u0412\u0415\u0420\u0421\u0418\u042f\u0425 OPENCV !!! # \u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u0430\u044f cv2.solvePnP() \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0440\u0430\u0441\u0441\u0447\u0451\u0442\u043e\u0432 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e # ArUco \u043c\u0430\u0440\u043a\u0435\u0440\u0430. \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0442\u0441\u044f.  # \u0438 \u0434\u0440\u0443\u0433\u0438\u0435<\/code><\/pre>\n<p>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u0447\u0438 PnP \u0431\u0443\u0434\u0443\u0442 <img decoding=\"async\" class=\"formula inline\" source=\"rvec\" alt=\"rvec\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/3\/39\/39c\/39ccd4b8e8f70db11d7b4bcee16c8080.svg\" width=\"32\" height=\"12\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/3\/39\/39c\/39ccd4b8e8f70db11d7b4bcee16c8080.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/3\/39\/39c\/39ccd4b8e8f70db11d7b4bcee16c8080.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0438 <img decoding=\"async\" class=\"formula inline\" source=\"tvec\" alt=\"tvec\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c08\/91f\/5c0\/c0891f5c0e316c82cdeff8e7b1b28a45.svg\" width=\"34\" height=\"16\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c08\/91f\/5c0\/c0891f5c0e316c82cdeff8e7b1b28a45.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c08\/91f\/5c0\/c0891f5c0e316c82cdeff8e7b1b28a45.svg 781w\" loading=\"lazy\" decode=\"async\"\/>, \u0441\u00a0\u0447\u0435\u043c \u0441\u043c\u043e\u0436\u0435\u043c \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0430\u0442\u044c \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043a\u00a0\u043d\u0430\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044e \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442.<\/p>\n<h3>\u041d\u0430\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u043a\u0430\u043c\u0435\u0440\u044b  <\/h3>\n<p>\u041a\u0430\u043a\u00a0\u043e\u0442\u043c\u0435\u0447\u0430\u043b\u043e\u0441\u044c \u0432\u044b\u0448\u0435 <img decoding=\"async\" class=\"formula inline\" source=\"P_c=\\\u00a0^{c}T_{w}P_w\" alt=\"P_c=\\\u00a0^{c}T_{w}P_w\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/9da\/914\/1cf\/9da9141cf7c39f48da80f5645b95b2c0.svg\" width=\"106\" height=\"20\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/9da\/914\/1cf\/9da9141cf7c39f48da80f5645b95b2c0.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/9da\/914\/1cf\/9da9141cf7c39f48da80f5645b95b2c0.svg 781w\" loading=\"lazy\" decode=\"async\"\/>, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u043b\u044e\u0431\u043e\u0439 \u0442\u043e\u0447\u043a\u0438 \u0432\u00a0\u043c\u0438\u0440\u043e\u0432\u043e\u0439 (\u043e\u0431\u044a\u0435\u043a\u0442\u043d\u043e\u0439) \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0432\u0435\u0441\u0442\u0438 \u0432\u00a0\u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u043a\u0430\u043c\u0435\u0440\u044b \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u0435\u043c \u043d\u0430\u00a0\u043c\u0430\u0442\u0440\u0438\u0446\u0443 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 <img decoding=\"async\" class=\"formula inline\" source=\"\\underset{4\\times4}{^{c}T_{w}}  \" alt=\"\\underset{4\\times4}{^{c}T_{w}}  \" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e13\/494\/104\/e1349410435fdb3035dc9d9cb548c836.svg\" width=\"31\" height=\"34\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e13\/494\/104\/e1349410435fdb3035dc9d9cb548c836.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e13\/494\/104\/e1349410435fdb3035dc9d9cb548c836.svg 781w\" loading=\"lazy\" decode=\"async\"\/>, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u0443\u044e \u0438\u0437 <img decoding=\"async\" class=\"formula inline\" source=\"\\underset{3\\times3}{R}\" alt=\"\\underset{3\\times3}{R}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/572\/924\/751\/5729247514eb5f6bd4b0f4636432c496.svg\" width=\"24\" height=\"31\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/572\/924\/751\/5729247514eb5f6bd4b0f4636432c496.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/572\/924\/751\/5729247514eb5f6bd4b0f4636432c496.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0438 <img decoding=\"async\" class=\"formula inline\" source=\"\\underset{3\\times1}{t}\" alt=\"\\underset{3\\times1}{t}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/56e\/4a3\/055\/56e4a30551e1d917c98e4f6851c99676.svg\" width=\"24\" height=\"30\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/56e\/4a3\/055\/56e4a30551e1d917c98e4f6851c99676.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/56e\/4a3\/055\/56e4a30551e1d917c98e4f6851c99676.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u00a0\u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u044b \u0438\u0437 <img decoding=\"async\" class=\"formula inline\" source=\"\\underset{3\\times1}{rvec}  \" alt=\"\\underset{3\\times1}{rvec}  \" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b03\/e5b\/6c6\/b03e5b6c634038f44e714b41858ae612.svg\" width=\"35\" height=\"26\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b03\/e5b\/6c6\/b03e5b6c634038f44e714b41858ae612.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b03\/e5b\/6c6\/b03e5b6c634038f44e714b41858ae612.svg 781w\" loading=\"lazy\" decode=\"async\"\/>\u0438 <img decoding=\"async\" class=\"formula inline\" source=\"\\underset{3\\times1}{tvec}  \" alt=\"\\underset{3\\times1}{tvec}  \" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/56f\/528\/af1\/56f528af1b6885a4598bcf9423f5ec2f.svg\" width=\"34\" height=\"30\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/56f\/528\/af1\/56f528af1b6885a4598bcf9423f5ec2f.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/56f\/528\/af1\/56f528af1b6885a4598bcf9423f5ec2f.svg 781w\" loading=\"lazy\" decode=\"async\"\/>. <\/p>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0435\u0441\u043b\u0438 <img decoding=\"async\" class=\"formula inline\" source=\"P_w(0;0;0)\" alt=\"P_w(0;0;0)\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/113\/273\/7b5\/1132737b504f0839b9374fae477bd1ae.svg\" width=\"85\" height=\"22\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/113\/273\/7b5\/1132737b504f0839b9374fae477bd1ae.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/113\/273\/7b5\/1132737b504f0839b9374fae477bd1ae.svg 781w\" loading=\"lazy\" decode=\"async\"\/>, \u0442\u043e <img decoding=\"async\" class=\"formula inline\" source=\"P_c=t=tvec\" alt=\"P_c=t=tvec\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/7fd\/f7e\/dda\/7fdf7eddab12dbf3801e036815a15ac1.svg\" width=\"112\" height=\"20\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/7fd\/f7e\/dda\/7fdf7eddab12dbf3801e036815a15ac1.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/7fd\/f7e\/dda\/7fdf7eddab12dbf3801e036815a15ac1.svg 781w\" loading=\"lazy\" decode=\"async\"\/>. \u0422\u043e\u0433\u0434\u0430 \u0432\u00a0\u0441\u043b\u0443\u0447\u0430\u0435 \u0441\u00a0ArUco \u043c\u0430\u0440\u043a\u0435\u0440\u043e\u043c, \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u043c \u0432\u044b\u0448\u0435 (\u0441 \u043d\u0430\u0447\u0430\u043b\u043e\u043c \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0432\u00a0\u0446\u0435\u043d\u0442\u0440\u0435 \u043c\u0430\u0440\u043a\u0435\u0440\u0430), \u043c\u043e\u0436\u043d\u043e \u0431\u0435\u0437\u00a0\u0440\u0430\u0441\u0447\u0451\u0442\u043e\u0432 \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u0442\u044c, \u0447\u0442\u043e\u00a0\u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0446\u0435\u043d\u0442\u0440\u0430 ArUco \u043c\u0430\u0440\u043a\u0435\u0440\u0430 \u0432\u00a0\u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u043a\u0430\u043c\u0435\u0440\u044b \u0440\u0430\u0432\u043d\u044b <img decoding=\"async\" class=\"formula inline\" source=\"tvec\" alt=\"tvec\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f96\/022\/79a\/f9602279a3e6bba5331f9be2121f1192.svg\" width=\"34\" height=\"16\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f96\/022\/79a\/f9602279a3e6bba5331f9be2121f1192.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f96\/022\/79a\/f9602279a3e6bba5331f9be2121f1192.svg 781w\" loading=\"lazy\" decode=\"async\"\/>. \u0418 \u0432\u00a0\u044d\u0442\u043e\u043c\u00a0\u0436\u0435 \u0441\u043b\u0443\u0447\u0430\u0435 \u043c\u043e\u0436\u043d\u043e \u0441\u0443\u0434\u0438\u0442\u044c \u043e\u00a0\u0442\u043e\u043c, \u0447\u0442\u043e\u00a0\u043c\u0430\u0442\u0440\u0438\u0446\u0430 \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u0430 <img decoding=\"async\" class=\"formula inline\" source=\"R\" alt=\"R\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/d75\/cd1\/81a\/d75cd181a0a1becbb19075c85b3069bc.svg\" width=\"15\" height=\"17\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/d75\/cd1\/81a\/d75cd181a0a1becbb19075c85b3069bc.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/d75\/cd1\/81a\/d75cd181a0a1becbb19075c85b3069bc.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u043f\u043e\u0432\u043e\u0440\u043e\u0442 \u0441\u0430\u043c\u043e\u0433\u043e ArUco \u043c\u0430\u0440\u043a\u0435\u0440\u0430. \u041f\u0440\u0438\u00a0\u044d\u0442\u043e\u043c \u0432\u00a0\u043a\u043e\u0434\u0435 \u043d\u0438\u0436\u0435 \u043f\u043e\u0432\u043e\u0440\u043e\u0442 ArUco \u043c\u0430\u0440\u043a\u0435\u0440\u0430 \u0434\u043b\u044f\u00a0\u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 \u0431\u0443\u0434\u0435\u043c \u0432\u044b\u0440\u0430\u0436\u0430\u0442\u044c \u0432 <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%A3%D0%B3%D0%BB%D1%8B%5C_%D0%AD%D0%B9%D0%BB%D0%B5%D1%80%D0%B0\" rel=\"noopener noreferrer nofollow\">\u0443\u0433\u043b\u0430\u0445 \u042d\u0439\u043b\u0435\u0440\u0430<\/a> (\u0441\u043c. <a href=\"https:\/\/www.geometrictools.com\/Documentation\/EulerAngles.pdf\" rel=\"noopener noreferrer nofollow\">\u0441\u0442\u0430\u0442\u044c\u044e <\/a>\u043e\u00a0\u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u0430 \u0432\u00a0\u0443\u0433\u043b\u044b \u042d\u0439\u043b\u0435\u0440\u0430).<\/p>\n<p>\u0418\u0442\u0430\u043a, \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u0432\u00a0\u043a\u043e\u0434\u0435.<\/p>\n<details class=\"spoiler\">\n<summary>re3d.py<\/summary>\n<div class=\"spoiler__content\">\n<p>\u041d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0441\u043a\u0440\u0438\u043f\u0442 \u043e\u0442\u00a0\u0430\u0432\u0442\u043e\u0440\u0430 \u0441\u0442\u0430\u0442\u044c\u0438, \u0432\u00a0\u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u044b \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0443\u043f\u0440\u043e\u0449\u0430\u044e\u0449\u0438\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f, \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c\u044b\u0435 \u0432\u00a0\u0441\u0442\u0430\u0442\u044c\u0435.<\/p>\n<pre><code class=\"python\">\"\"\"re3d \/ 2025 Leonid Briskindov\"\"\" import cv2 import numpy as np import numpy.typing as npt   def getCTW(rvec: cv2.typing.MatLike, tvec: cv2.typing.MatLike) -&gt; npt.ArrayLike:     \"\"\"     \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f rvec (\u0432\u0435\u043a\u043e\u0440\u0430 \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u0430) \u0438 tvec (\u0432\u0435\u043a\u0442\u043e\u0440\u0430 \u0441\u0434\u0432\u0438\u0433\u0430) \u0432 cTw (\u043c\u0430\u0442\u0440\u0438\u0446\u0443 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430)     \"\"\"          rot_mat, jacobian_mat = cv2.Rodrigues(rvec)     mat = np.array([         [rot_mat[0][0], rot_mat[0][1], rot_mat[0][2], tvec[0][0]],         [rot_mat[1][0], rot_mat[1][1], rot_mat[1][2], tvec[1][0]],         [rot_mat[2][0], rot_mat[2][1], rot_mat[2][2], tvec[2][0]],         [0, 0, 0, 1]     ])     return mat   def estimatePoseSingleMarkers(marker_points: cv2.typing.MatLike,                               marker_size: float,                               cameraMatrix: cv2.typing.MatLike,                               distCoeffs: cv2.typing.MatLike,                               useEPNP: bool = False) -&gt; tuple[bool, cv2.typing.MatLike, cv2.typing.MatLike]:     \"\"\"     \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u043e \u043e\u0431\u0440\u0430\u0437\u0443 \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0435\u0439 cv2.aruco.estimatePoseSingleMarkers \u0441 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0449\u0438\u043c\u0438\u0441\u044f \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438:     ! marker_points - \u043f\u043e\u0437\u0438\u0446\u0438\u0438 (px) \u0432\u0435\u0440\u0448\u0438\u043d (\u0443\u0433\u043b\u043e\u0432) \u043c\u0430\u0440\u043a\u0435\u0440\u0430 \u043d\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0438     ! marker_size - \u0440\u0430\u0437\u043c\u0435\u0440 \u043c\u0430\u0440\u043a\u0435\u0440\u0430 \u0432 \u043c\u0438\u0440\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 (\u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0432 \u043c\u0435\u0442\u0440\u0430\u0445)     ! cameraMatrix - \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u044f\u044f \u043c\u0430\u0442\u0440\u0438\u0446\u0430 \u043a\u0430\u043c\u0435\u0440\u044b     ! distCoeffs - \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u044b \u0434\u0438\u0441\u0442\u043e\u0440\u0441\u0438\u0438 \u043a\u0430\u043c\u0435\u0440\u044b (\u043d\u0430 \u043d\u0435\u0438\u0441\u043a\u0430\u0436\u0451\u043d\u043d\u044b\u0445 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u0445 \u043e\u0436\u0438\u0434\u0430\u0435\u0442\u0441\u044f \u043f\u0443\u0441\u0442\u043e\u0439 \u043c\u0430\u0441\u0441\u0438\u0432)     ! useEPNP - \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c EPNP \u043c\u0435\u0442\u043e\u0434 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u0447\u0438 Perspective-n-Point \u0432\u043c\u0435\u0441\u0442\u043e IPPE (SQUARE)     \"\"\"     marker_world_points = np.array([[-marker_size \/ 2, marker_size \/ 2, 0],                                     [marker_size \/ 2, marker_size \/ 2, 0],                                     [marker_size \/ 2, -marker_size \/ 2, 0],                                     [-marker_size \/ 2, -marker_size \/ 2, 0]], dtype=np.float32)     if useEPNP:         return cv2.solvePnP(marker_world_points, marker_points, cameraMatrix, distCoeffs, flags=cv2.SOLVEPNP_EPNP)     else:         return cv2.solvePnP(marker_world_points, marker_points, cameraMatrix, distCoeffs, flags=cv2.SOLVEPNP_IPPE_SQUARE)   def get3D4Points(points: list, rvec: cv2.typing.MatLike, tvec: cv2.typing.MatLike) -&gt; npt.ArrayLike:     \"\"\"     \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f, \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c\u043e\u0433\u043e \u0432\u0435\u043a\u0442\u043e\u0440\u0430\u043c\u0438 rvec \u0438 tvec, \u043a \u0447\u0435\u0442\u044b\u0440\u0451\u043c \u0442\u043e\u0447\u043a\u0430\u043c (\u0438\u0437 \u0432\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043c\u0430\u0441\u0441\u0438\u0432\u0430 points)     \"\"\"     mat = getCTW(rvec, tvec)     camera_points = np.array([         np.dot(mat, points[0]),         np.dot(mat, points[1]),         np.dot(mat, points[2]),         np.dot(mat, points[3])     ])     return camera_points[:, :-1]   def get3DMarkerCorners(marker_size: float, rvec: cv2.typing.MatLike, tvec: cv2.typing.MatLike) -&gt; npt.ArrayLike:     \"\"\"     \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f, \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c\u043e\u0433\u043e \u0432\u0435\u043a\u0442\u043e\u0440\u0430\u043c\u0438 rvec \u0438 tvec, \u043a \u0432\u0435\u0440\u0448\u0438\u043d\u0430\u043c (\u0443\u0433\u043b\u0430\u043c) ArUco \u043c\u0430\u0440\u043a\u0435\u0440\u0430 c \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c \u0432 \u043c\u0438\u0440\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 (\u0440\u0435\u0430\u043b\u044c\u043d\u044b\u043c \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c) = marker_size (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0432 \u043c\u0435\u0442\u0440\u0430\u0445)     \"\"\"     marker_world_points = np.array([[-marker_size \/ 2, marker_size \/ 2, 0, 1],                                     [marker_size \/ 2, marker_size \/ 2, 0, 1],                                     [marker_size \/ 2, -marker_size \/ 2, 0, 1],                                     [-marker_size \/ 2, -marker_size \/ 2, 0, 1]], dtype=np.float32)     return get3D4Points(marker_world_points, rvec, tvec)   def getKnew(K: cv2.typing.MatLike, c: float) -&gt; npt.ArrayLike:     \"\"\"     \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u0440\u043e\u043f\u043e\u0440\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0444\u043e\u043a\u0443\u0441\u043d\u043e\u0433\u043e \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0434\u043b\u044f \u043d\u0430\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u043d\u043e\u0432\u043e\u0439 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0439 \u043c\u0430\u0442\u0440\u0438\u0446\u044b (Knew)     \u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e\u0433\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 cv2.fisheye.estimateNewCameraMatrixForUndistortRectify, \u0445\u043e\u0442\u044f \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u043e\u043d\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0430 \u0434\u043b\u044f \u0434\u0440\u0443\u0433\u0438\u0445 \u0446\u0435\u043b\u0435\u0439     \"\"\"     Knew = K.copy()     Knew[(0, 1), (0, 1)] = c * Knew[(0, 1), (0, 1)]     return Knew   def getFixedZWPosAll(src: [tuple, list, npt.ArrayLike], Zw: float, cameraMatrix: cv2.typing.MatLike, wTc: npt.ArrayLike) -&gt; (npt.ArrayLike, npt.ArrayLike):     \"\"\"     \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u043d\u0430\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u0442\u043e\u0447\u043a\u0438 \u0432 \u043c\u0438\u0440\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u043a\u0430\u043c\u0435\u0440\u044b \u0441 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e\u0439 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u043e\u0439 Z \u0432 \u043c\u0438\u0440\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0438 \u043c\u0430\u0442\u0440\u0438\u0446\u0435\u0439 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u0438\u0437 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u043a\u0430\u043c\u0435\u0440\u044b \u0432 \u043c\u0438\u0440\u043e\u0432\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043a\u043e\u043e\u0434\u0440\u0438\u043d\u0430\u0442:     ! src - \u043f\u043e\u0437\u0438\u0446\u0438\u044f (px) \u0438\u0441\u043a\u043e\u043c\u043e\u0439 \u0442\u043e\u0447\u043a\u0438 \u043d\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0438     ! Zw - \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430 Z \u0442\u043e\u0447\u043a\u0438 \u0432 \u043c\u0438\u0440\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442     ! cameraMatrix - \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u044f\u044f \u043c\u0430\u0442\u0440\u0438\u0446\u0430 \u043a\u0430\u043c\u0435\u0440\u044b     ! wTc - \u043c\u0430\u0442\u0440\u0438\u0446\u0430 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u0438\u0437 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u043a\u0430\u043c\u0435\u0440\u044b \u0432 \u043c\u0438\u0440\u043e\u0432\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043a\u043e\u043e\u0434\u0440\u0438\u043d\u0430\u0442 (\u043e\u0431\u0440\u0430\u0442\u043d\u0430\u044f \u043c\u0430\u0442\u0440\u0438\u0446\u0430 \u043a cTw)     \"\"\"     fx, fy = cameraMatrix[0][0], cameraMatrix[1][1]     cx, cy = cameraMatrix[0][2], cameraMatrix[1][2]      r11, r12, r13, tx = wTc[0]     r21, r22, r23, ty = wTc[1]     r31, r32, r33, tz = wTc[2]      u, v = src      Zc = (Zw - tz) \/ (r31 * (u - cx) \/ fx + r32 * (v - cy) \/ fy + r33)      Xc = (u - cx) * Zc \/ fx     Yc = (v - cy) * Zc \/ fy      Xw = r11 * Xc + r12 * Yc + r13 * Zc + tx     Yw = r21 * Xc + r22 * Yc + r23 * Zc + ty      return np.array([Xw, Yw, Zw], dtype=np.float32), np.array([Xc, Yc, Zc], dtype=np.float32)   def getFixedZWPos(src: [tuple, list, npt.ArrayLike], Zw: float, cameraMatrix: cv2.typing.MatLike, wTc: npt.ArrayLike) -&gt; npt.ArrayLike:     \"\"\"     \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u0430 getFixedZWPosAll, \u043d\u043e \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0437\u0438\u0446\u0438\u044e \u0432 \u043c\u0438\u0440\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442     \"\"\"     return getFixedZWPosAll(src, Zw, cameraMatrix, wTc)[0]   def positionMarker(         marker_corners: cv2.typing.MatLike, marker_size: float, cameraMatrix: cv2.typing.MatLike,         distCoeffs: cv2.typing.MatLike = np.array([],dtype=np.float32)     ) -&gt; ([npt.ArrayLike, npt.ArrayLike], [npt.ArrayLike, npt.ArrayLike]):     \"\"\"     \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u043d\u0430\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u0438 \u0443\u0433\u043b\u043e\u0432 \u042d\u0439\u043b\u0435\u0440\u0430 ArUco \u043c\u0430\u0440\u043a\u0435\u0440\u0430 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u043a\u0430\u043c\u0435\u0440\u044b.     ! marker_corners - \u043f\u043e\u0437\u0438\u0446\u0438\u0438 (px) \u0432\u0435\u0440\u0448\u0438\u043d (\u0443\u0433\u043b\u043e\u0432) \u043c\u0430\u0440\u043a\u0435\u0440\u0430 \u043d\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0438     ! marker_size - \u0440\u0430\u0437\u043c\u0435\u0440 \u043c\u0430\u0440\u043a\u0435\u0440\u0430 \u0432 \u043c\u0438\u0440\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 (\u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0432 \u043c\u0435\u0442\u0440\u0430\u0445)     ! cameraMatrix - \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u044f\u044f \u043c\u0430\u0442\u0440\u0438\u0446\u0430 \u043a\u0430\u043c\u0435\u0440\u044b     ! distCoeffs - \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u044b \u0434\u0438\u0441\u0442\u043e\u0440\u0441\u0438\u0438 \u043a\u0430\u043c\u0435\u0440\u044b (\u043d\u0430 \u043d\u0435\u0438\u0441\u043a\u0430\u0436\u0451\u043d\u043d\u044b\u0445 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u0445 \u043e\u0436\u0438\u0434\u0430\u0435\u0442\u0441\u044f \u043f\u0443\u0441\u0442\u043e\u0439 \u043c\u0430\u0441\u0441\u0438\u0432)     \"\"\"     marker_points = np.array(         [[-marker_size \/ 2, marker_size \/ 2, 0], [marker_size \/ 2, marker_size \/ 2, 0],          [marker_size \/ 2, -marker_size \/ 2, 0], [-marker_size \/ 2, -marker_size \/ 2, 0]], dtype=np.float32) # \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 ArUco \u043c\u0430\u0440\u043a\u0435\u0440\u0430                                                                                                              # \u0412\u0435\u0440\u0448\u0438\u043d\u044b (\u0443\u0433\u043b\u044b) ArUco \u043c\u0430\u0440\u043a\u0435\u0440\u0430 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442 \u043a\u0432\u0430\u0434\u0440\u0430\u0442 \u0441 \u0434\u043b\u0438\u043d\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b marker_size \u0438 \u0441 \u0446\u0435\u043d\u0442\u0440\u043e\u043c \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442     ret, rvec, tvec = cv2.solvePnP(         marker_points, marker_corners, cameraMatrix, distCoeffs, flags=cv2.SOLVEPNP_IPPE_SQUARE     )                                                                                                        # \u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0432\u0435\u043a\u0442\u043e\u0440\u0430 \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u0430 \u0438 \u0441\u0434\u0432\u0438\u0433\u0430 rvec \u0438 tvec, \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0449\u0438\u0445 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u0437 \u043c\u0438\u0440\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443                                                                                                              # \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u043a\u0430\u043c\u0435\u0440\u044b      assert ret                                                                                               # \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0430 \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0441\u0442\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f cv2.solvePnP \u043d\u0430 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c \u0448\u0430\u0433\u0435      x, y, z = tvec.ravel()                                                                                   # \u0420\u0430\u0437\u043b\u043e\u0436\u0435\u043d\u0438\u0435 tvec \u043d\u0430 x, y, z \u0434\u043b\u044f \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u044b\u0432\u043e\u0434\u0430 (tvec \/ t -&gt; x, y, z)     rot_mat, jacobian_mat = cv2.Rodrigues(rvec)                                                              # \u041d\u0430\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u0430 \u0438\u0437 \u0432\u0435\u043a\u0442\u043e\u0440\u0430 \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u0430 (rvec -&gt; R)     ax = np.arctan2(rot_mat[2][1], rot_mat[2][2])                                                            # \u041d\u0430\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u0443\u0433\u043b\u0430 \u042d\u0439\u043b\u0435\u0440\u0430 \u0438\u0437 \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u0430 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e OX     ay = np.arctan2(-1 * rvec[2][0], np.sqrt((rot_mat[2][1]) ** 2 + (rot_mat[2][2]) ** 2))                   # \u041d\u0430\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u0443\u0433\u043b\u0430 \u042d\u0439\u043b\u0435\u0440\u0430 \u0438\u0437 \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u0430 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e OY     az = np.arctan2(rot_mat[1][0], rot_mat[0][0])                                                            # \u041d\u0430\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u0443\u0433\u043b\u0430 \u042d\u0439\u043b\u0435\u0440\u0430 \u0438\u0437 \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u0430 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e OZ     return np.array([[x, y, z], [ax, ay, az]], dtype=np.float32), np.array([rvec, tvec], dtype=np.float32)   # \u0412\u043e\u0437\u0432\u0440\u0430\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 ([\u041a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b, \u0423\u0433\u043b\u044b], [rvec, tvec])   <\/code><\/pre>\n<p>\u0414\u043b\u044f\u00a0\u043a\u0440\u0430\u0442\u043a\u043e\u0441\u0442\u0438 \u0432\u00a0\u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0431\u0443\u0434\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438\u0437\u00a0\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0441\u043a\u0440\u0438\u043f\u0442\u0430. \u041a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0434\u043b\u044f\u00a0ArUco \u043c\u0430\u0440\u043a\u0435\u0440\u0430 \u0431\u0443\u0434\u0435\u0442 \u043e\u043f\u0438\u0440\u0430\u0442\u044c\u0441\u044f \u043d\u0430\u00a0\u0444\u0443\u043d\u043a\u0446\u0438\u044e:<\/p>\n<pre><code class=\"python\">re3d.positionMarker(                      marker_corners,                      marker_size,                      cameraMatrix,                      distCoeffs=np.array([],dtype=np.float32)  ) # \u0414\u043b\u044f \u043d\u0430\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u0438 \u0432\u0440\u0430\u0449\u0435\u043d\u0438\u044f ArUco \u043c\u0430\u0440\u043a\u0435\u0440\u0430<\/code><\/pre>\n<p>\u0410\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u043e \u043c\u043e\u0433\u0443\u0442 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f:<\/p>\n<pre><code class=\"python\">re3d.estimatePoseSingleMarkers() re3d.get3DMarkerCorners() # \u0438 \u0434\u0440\u0443\u0433\u0438\u0435<\/code><\/pre>\n<p>\u041d\u043e\u00a0\u043e\u043f\u044f\u0442\u044c\u00a0\u0436\u0435, \u0432\u0441\u0451 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u043e\u0441\u043d\u043e\u0432\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430\u00a0\u0444\u0443\u043d\u043a\u0446\u0438\u0438:<\/p>\n<pre><code class=\"python\">cv2.solvePnP(              marker_points,              marker_corners,              cameraMatrix,              distCoeffs ) # \u0414\u043b\u044f \u043d\u0430\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f rvec, tvec <\/code><\/pre>\n<\/div>\n<\/details>\n<pre><code class=\"python\">import cv2 import numpy as np import re3d # \u0418\u043c\u043f\u043e\u0440\u0442 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a  CAM_RESOLUTION = (1920, 1080) # \u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043a\u0430\u043c\u0435\u0440\u044b ARUCO_SIZE = 0.0585           # \u0420\u0430\u0437\u043c\u0435\u0440 ArUco \u043c\u0430\u0440\u043a\u0435\u0440\u0430 \u043e\u043a\u043e\u043b\u043e 6 \u0441\u043c                               # (ArUco \u043c\u0430\u0440\u043a\u0435\u0440 \u0440\u0430\u0441\u043f\u0435\u0447\u0430\u0442\u0430\u043d, \u0432\u044b\u0440\u0435\u0437\u0430\u043d \u0438 \u0437\u0430\u043c\u0435\u0440\u0435\u043d \u043b\u0438\u043d\u0435\u0439\u043a\u043e\u0439) CAM_ID = 1                    # ID \u043a\u0430\u043c\u0435\u0440\u044b (\u043f\u0440\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438 \u043f\u043e USB)  with open('calibration\/param.txt') as f:      cameraMatrix = eval(f.readline())     distCoeffs = eval(f.readline()) # \u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0438\u0437 'calibration\/param.txt' \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u043a\u0430\u043c\u0435\u0440\u044b \u0438 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u043e\u0432 \u0434\u0438\u0441\u0442\u043e\u0440\u0441\u0438\u0438  w, h = CAM_RESOLUTION # \u0420\u0430\u0437\u0431\u0438\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043a\u0430\u043c\u0435\u0440\u044b \u043d\u0430 \u0434\u043b\u0438\u043d\u0443 \u0438 \u0432\u044b\u0441\u043e\u0442\u0443 \u0434\u043b\u044f \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 cap = cv2.VideoCapture(CAM_ID, cv2.CAP_DSHOW) # \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u043a\u0430\u043c\u0435\u0440\u044b cap.set(cv2.CAP_PROP_FRAME_WIDTH, w) cap.set(cv2.CAP_PROP_FRAME_HEIGHT, h) cap.set(cv2.CAP_PROP_FPS, 30) cap.set(cv2.CAP_PROP_AUTOFOCUS, 0) cap.set(cv2.CAP_PROP_FOCUS, 250) cap.set(cv2.CAP_PROP_FOURCC, cv2.VideoWriter.fourcc(*'MJPG')) # \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043a\u0430\u043c\u0435\u0440\u044b  aruco_dict = cv2.aruco.getPredefinedDictionary(cv2.aruco.DICT_4X4_250) # \u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0433\u043e \u0441\u043b\u043e\u0432\u0430\u0440\u044f ArUco \u043c\u0430\u0440\u043a\u0435\u0440\u043e\u0432 4x4 parameters = cv2.aruco.DetectorParameters() # \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0434\u0435\u0442\u0435\u043a\u0442\u043e\u0440\u0430 ArUco \u043c\u0430\u0440\u043a\u0435\u0440\u043e\u0432 detector = cv2.aruco.ArucoDetector(aruco_dict, parameters) # \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0434\u0435\u0442\u0435\u043a\u0442\u043e\u0440\u0430 ArUco \u043c\u0430\u0440\u043a\u0435\u0440\u043e\u0432  if __name__ == \"__main__\":     while cv2.waitKey(1000 \/\/ 60) != ord(\"q\"):          # \u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0434\u043e \u043d\u0430\u0436\u0430\u0442\u0438\u044f \u043d\u0430 \u043a\u043b\u0430\u0432\u0438\u0448\u0443 \"q\"           ret, frame = cap.read()         assert ret         # \u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0441 \u043a\u0430\u043c\u0435\u0440\u044b         img = cv2.fisheye.undistortImage(frame, cameraMatrix, D=distCoeffs, Knew=cameraMatrix)         # \u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0438\u0441\u043a\u0430\u0436\u0435\u043d\u0438\u044f \u0441 \u043a\u0430\u043c\u0435\u0440\u044b              gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)         # \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0447\u0451\u0440\u043d\u043e-\u0431\u0435\u043b\u043e\u0433\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043a\u0430\u043c\u0435\u0440\u044b         corners, ids, rejected = detector.detectMarkers(gray)         # \u041f\u043e\u0438\u0441\u043a ArUco \u043c\u0430\u0440\u043a\u0435\u0440\u043e\u0432         if ids is not None:             # \u0415\u0441\u043b\u0438 \u043d\u0430\u0439\u0434\u0435\u043d(-\u044b) ArUco \u043c\u0430\u0440\u043a\u0435\u0440(-\u044b):             for marker in range(len(ids)):                 # \u0412\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u043e\u0433\u043e ArUco \u043c\u0430\u0440\u043a\u0435\u0440\u0430                 idx = int(ids[marker][0]) # \u041a\u043e\u0434 (\u043d\u043e\u043c\u0435\u0440) ArUco \u043c\u0430\u0440\u043a\u0435\u0440\u0430                 cornersx = corners[marker] # \u0412\u0435\u0440\u0448\u0438\u043d\u044b (\u0443\u0433\u043b\u044b) ArUco \u043c\u0430\u0440\u043a\u0435\u0440\u0430                 position, mat = re3d.positionMarker(cornersx, ARUCO_SIZE, cameraMatrix)                 # \u0420\u0430\u0441\u0441\u0447\u0451\u0442 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 ArUco \u043c\u0430\u0440\u043a\u0435\u0440\u0430 (\u0441\u043c\u043e\u0442\u0440\u0438 re3d.py)                 x, y, z = position[0] # \u041a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b                 rx, ry, rz = map(np.degrees, position[1]) # \u0423\u0433\u043b\u044b \u042d\u0439\u043b\u0435\u0440\u0430                 rvec, tvec = mat # rvec, tvec (\u0434\u043b\u044f \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438 \u043e\u0441\u0435\u0439 ArUco \u043c\u0430\u0440\u043a\u0435\u0440\u0430)                 img = cv2.drawFrameAxes(img, cameraMatrix, np.array([]), rvec, tvec, 0.1, 5)                 #\u041e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0430 \u043e\u0441\u0435\u0439 ArUco \u043c\u0430\u0440\u043a\u0435\u0440\u0430                 img_pos = np.array(cornersx[0][0]).astype(np.int16)                 #\u041f\u043e\u0437\u0438\u0446\u0438\u044f (px) \u0432\u0435\u0440\u0448\u0438\u043d\u044b (\u0443\u0433\u043b\u0430) ArUco \u043c\u0430\u0440\u043a\u0435\u0440\u0430 \u043d\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0438                 img = cv2.putText(                     img,                     f\"x:{x:.2f}\/y:{y:.2f}\/z:{z:.2f}\",                     img_pos, cv2.FONT_HERSHEY_SIMPLEX, 0.4, (255, 0, 255), 2                 )                 # \u041e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0430 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 ArUco \u043c\u0430\u0440\u043a\u0435\u0440\u0430 \u043d\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0438                 img = cv2.putText(                     img,                     f\"rx:{rx:.2f}\/ry:{ry:.2f}\/rz:{rz:.2f}\",                     [img_pos[0], img_pos[1]+20], cv2.FONT_HERSHEY_SIMPLEX,                     0.4, (255, 0, 255), 2                 )                 # \u041e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0430 \u0443\u0433\u043b\u043e\u0432 \u042d\u0439\u043b\u0435\u0440\u0430 ArUco \u043c\u0430\u0440\u043a\u0435\u0440\u0430 \u043d\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0438          cv2.imshow(\"Display\", img) # \u0412\u044b\u0432\u043e\u0434 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f              cap.release()     cv2.destroyAllWindows()     # \u0417\u0430\u043a\u0440\u044b\u0442\u0438\u0435 \u043e\u043a\u043e\u043d \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u044b <\/code><\/pre>\n<p>\u0412\u00a0\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0438\u043c\u0435\u0435\u043c:<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/362\/433\/458\/3624334582dc9da1d0d2cfceea31811c.gif\" alt=\"\u0414\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430: \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442\u0441\u044f \u0432\u00a0\u043c\u0435\u0442\u0440\u0430\u0445, \u0443\u0433\u043b\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442\u0441\u044f \u0432\u00a0\u0433\u0440\u0430\u0434\u0443\u0441\u0430\u0445 (GIF \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u044f)\" title=\"\u0414\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430: \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442\u0441\u044f \u0432\u00a0\u043c\u0435\u0442\u0440\u0430\u0445, \u0443\u0433\u043b\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442\u0441\u044f \u0432\u00a0\u0433\u0440\u0430\u0434\u0443\u0441\u0430\u0445 (GIF \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u044f)\" width=\"1920\" height=\"1080\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/362\/433\/458\/3624334582dc9da1d0d2cfceea31811c.gif 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/362\/433\/458\/3624334582dc9da1d0d2cfceea31811c.gif 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0414\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430: \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442\u0441\u044f \u0432\u00a0\u043c\u0435\u0442\u0440\u0430\u0445, \u0443\u0433\u043b\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442\u0441\u044f \u0432\u00a0\u0433\u0440\u0430\u0434\u0443\u0441\u0430\u0445 (GIF \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u044f)<\/figcaption><\/div>\n<\/figure>\n<details class=\"spoiler\">\n<summary>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 (\u043f\u043e \u043a\u0430\u0434\u0440\u0430\u043c)<\/summary>\n<div class=\"spoiler__content\">\n<ul>\n<li>\n<p><code><strong>rz<\/strong><\/code><strong> \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0443\u0433\u043e\u043b \u043f\u0440\u0435\u0446\u0435\u0441\u0441\u0438\u0438\/\u0440\u044b\u0441\u043a\u0430\u043d\u0438\u044f<\/strong><\/p>\n<\/li>\n<li>\n<p><code><strong>rx<\/strong><\/code><strong> \u0431\u043b\u0438\u0437\u043e\u043a \u043a 180\u00b0 \u0438 <\/strong><code><strong>ry<\/strong><\/code><strong> \u0431\u043b\u0438\u0437\u043e\u043a \u043a 0\u00b0, \u043a\u043e\u0433\u0434\u0430 \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u044c ArUco \u043c\u0430\u0440\u043a\u0435\u0440\u0430 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u0430 \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u0438 \u0441\u0442\u043e\u043b\u0430, \u0442. \u043a. \u043e\u0441\u044c<\/strong><img decoding=\"async\" class=\"formula inline\" source=\"Z_c\" alt=\"Z_c\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/fdf\/965\/6a7\/fdf9656a7b7c73bdd8050a14d668b1bd.svg\" width=\"21\" height=\"20\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/fdf\/965\/6a7\/fdf9656a7b7c73bdd8050a14d668b1bd.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/fdf\/965\/6a7\/fdf9656a7b7c73bdd8050a14d668b1bd.svg 781w\" loading=\"lazy\" decode=\"async\"\/><strong> \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0430 \u0438\u0437\u00a0\u043a\u0430\u043c\u0435\u0440\u044b, \u0432\u00a0\u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0432\u043d\u0438\u0437, \u0430\u00a0\u043e\u0441\u044c<\/strong><img decoding=\"async\" class=\"formula inline\" source=\"Z_w\" alt=\"Z_w\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a5e\/9f3\/dc2\/a5e9f3dc2c925b52a915198903fb6973.svg\" width=\"25\" height=\"20\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a5e\/9f3\/dc2\/a5e9f3dc2c925b52a915198903fb6973.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a5e\/9f3\/dc2\/a5e9f3dc2c925b52a915198903fb6973.svg 781w\" loading=\"lazy\" decode=\"async\"\/><strong>ArUco \u043c\u0430\u0440\u043a\u0435\u0440\u0430 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0432\u0432\u0435\u0440\u0445.<\/strong><\/p>\n<\/li>\n<\/ul>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f3c\/822\/f0c\/f3c822f0c4b19675b0605838e0251f77.jpg\" alt=\"x: 0.09\u00a0\/ y: -0.14\u00a0\/ z: 0.66\u00a0| rx: 172.49\u00a0\/ ry: 6.07\u00a0\/ rz: -0.22\" title=\"x: 0.09\u00a0\/ y: -0.14\u00a0\/ z: 0.66\u00a0| rx: 172.49\u00a0\/ ry: 6.07\u00a0\/ rz: -0.22\" width=\"1920\" height=\"1080\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/f3c\/822\/f0c\/f3c822f0c4b19675b0605838e0251f77.jpg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f3c\/822\/f0c\/f3c822f0c4b19675b0605838e0251f77.jpg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption><strong>x: 0.09\u00a0\/ y: -0.14\u00a0\/ z: 0.66\u00a0| rx: 172.49\u00a0\/ ry: 6.07\u00a0\/ rz: -0.22<\/strong><\/figcaption><\/div>\n<\/figure>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/136\/3f3\/319\/1363f3319ae1547c16cb6d55369c6346.jpg\" alt=\"x:0.09\u00a0\/ y: -0.04\u00a0\/ z:0.66\u00a0| rx: -158.49\u00a0\/ ry: -17.19\u00a0\/ rz: 91.55\" title=\"x:0.09\u00a0\/ y: -0.04\u00a0\/ z:0.66\u00a0| rx: -158.49\u00a0\/ ry: -17.19\u00a0\/ rz: 91.55\" width=\"1920\" height=\"1080\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/136\/3f3\/319\/1363f3319ae1547c16cb6d55369c6346.jpg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/136\/3f3\/319\/1363f3319ae1547c16cb6d55369c6346.jpg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption><strong>x:0.09\u00a0\/ y: -0.04\u00a0\/ z:0.66\u00a0| rx: -158.49\u00a0\/ ry: -17.19\u00a0\/ rz: 91.55<\/strong><\/figcaption><\/div>\n<\/figure>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/17d\/793\/63c\/17d79363c98dcd75b7d82528299ea7d1.jpg\" alt=\"x: 0.08\u00a0\/ y: -0.24\u00a0\/ z: 0.66\u00a0| rx: -144.15\u00a0\/ ry: -4.74\u00a0\/ rz: -5.96\" title=\"x: 0.08\u00a0\/ y: -0.24\u00a0\/ z: 0.66\u00a0| rx: -144.15\u00a0\/ ry: -4.74\u00a0\/ rz: -5.96\" width=\"1920\" height=\"1080\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/17d\/793\/63c\/17d79363c98dcd75b7d82528299ea7d1.jpg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/17d\/793\/63c\/17d79363c98dcd75b7d82528299ea7d1.jpg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption><strong>x: 0.08\u00a0\/ y: -0.24\u00a0\/ z: 0.66\u00a0| rx: -144.15\u00a0\/ ry: -4.74\u00a0\/ rz: -5.96<\/strong><\/figcaption><\/div>\n<\/figure>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/6a7\/abd\/e55\/6a7abde5560cd1638079de7864390deb.jpg\" alt=\"x: -0.39\u00a0\/ y: 0.51\u00a0\/ z: 1.49\u00a0| rx: 179.96\u00a0\/ ry: 0.04\u00a0\/ rz: -4.91\" title=\"x: -0.39\u00a0\/ y: 0.51\u00a0\/ z: 1.49\u00a0| rx: 179.96\u00a0\/ ry: 0.04\u00a0\/ rz: -4.91\" width=\"1920\" height=\"1080\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/6a7\/abd\/e55\/6a7abde5560cd1638079de7864390deb.jpg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/6a7\/abd\/e55\/6a7abde5560cd1638079de7864390deb.jpg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption><strong>x: -0.39\u00a0\/ y: 0.51\u00a0\/ z: 1.49\u00a0| rx: 179.96\u00a0\/ ry: 0.04\u00a0\/ rz: -4.91<\/strong><\/figcaption><\/div>\n<\/figure>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/5ff\/091\/b11\/5ff091b113a4ff6d6ceeed9f5302ca14.jpg\" alt=\"x: 0.03\u00a0\/ y: 0.02\u00a0\/ z: 0.66\u00a0| rx: 173.16\u00a0\/ ry: 10.55\u00a0\/ rz: 178.47; x \u0438 y \u0431\u043b\u0438\u0437\u043a\u0438 \u043a 0, \u0442\u0430\u043a \u043a\u0430\u043a\u00a0\u043f\u0440\u043e\u0435\u043a\u0446\u0438\u044f \u0446\u0435\u043d\u0442\u0440\u0430 \u043c\u0430\u0440\u043a\u0435\u0440\u0430 \u0431\u043b\u0438\u0437\u043a\u0430 \u043a\u00a0\u0433\u043b\u0430\u0432\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u0435 (\u043e\u043f\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u043c\u0443 \u0446\u0435\u043d\u0442\u0440\u0443)\" title=\"x: 0.03\u00a0\/ y: 0.02\u00a0\/ z: 0.66\u00a0| rx: 173.16\u00a0\/ ry: 10.55\u00a0\/ rz: 178.47; x \u0438 y \u0431\u043b\u0438\u0437\u043a\u0438 \u043a 0, \u0442\u0430\u043a \u043a\u0430\u043a\u00a0\u043f\u0440\u043e\u0435\u043a\u0446\u0438\u044f \u0446\u0435\u043d\u0442\u0440\u0430 \u043c\u0430\u0440\u043a\u0435\u0440\u0430 \u0431\u043b\u0438\u0437\u043a\u0430 \u043a\u00a0\u0433\u043b\u0430\u0432\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u0435 (\u043e\u043f\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u043c\u0443 \u0446\u0435\u043d\u0442\u0440\u0443)\" width=\"1920\" height=\"1080\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/5ff\/091\/b11\/5ff091b113a4ff6d6ceeed9f5302ca14.jpg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/5ff\/091\/b11\/5ff091b113a4ff6d6ceeed9f5302ca14.jpg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption><strong>x: 0.03\u00a0\/ y: 0.02\u00a0\/ z: 0.66\u00a0| rx: 173.16\u00a0\/ ry: 10.55\u00a0\/ rz: 178.47; x \u0438 y \u0431\u043b\u0438\u0437\u043a\u0438 \u043a 0, \u0442\u0430\u043a \u043a\u0430\u043a\u00a0\u043f\u0440\u043e\u0435\u043a\u0446\u0438\u044f \u0446\u0435\u043d\u0442\u0440\u0430 \u043c\u0430\u0440\u043a\u0435\u0440\u0430 \u0431\u043b\u0438\u0437\u043a\u0430 \u043a\u00a0\u0433\u043b\u0430\u0432\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u0435 (\u043e\u043f\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u043c\u0443 \u0446\u0435\u043d\u0442\u0440\u0443)<\/strong><\/figcaption><\/div>\n<\/figure>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f11\/f5d\/4a4\/f11f5d4a4f2a197d44f6c14e6ca99640.jpg\" alt=\"x: 0.16\u00a0\/ y: -0.11\u00a0\/ z: 0.66\u00a0| rx: -177.00\u00a0\/ ry: -6.45\u00a0\/ rz: -131.44\" title=\"x: 0.16\u00a0\/ y: -0.11\u00a0\/ z: 0.66\u00a0| rx: -177.00\u00a0\/ ry: -6.45\u00a0\/ rz: -131.44\" width=\"1920\" height=\"1080\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/f11\/f5d\/4a4\/f11f5d4a4f2a197d44f6c14e6ca99640.jpg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f11\/f5d\/4a4\/f11f5d4a4f2a197d44f6c14e6ca99640.jpg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption><strong>x: 0.16\u00a0\/ y: -0.11\u00a0\/ z: 0.66\u00a0| rx: -177.00\u00a0\/ ry: -6.45\u00a0\/ rz: -131.44<\/strong><\/figcaption><\/div>\n<\/figure>\n<\/div>\n<\/details>\n<p><em>\u041d\u0430\u00a0\u044d\u0442\u043e\u043c \u0437\u0430\u0434\u0430\u0447\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0440\u0435\u0448\u0435\u043d\u0430. \u0414\u0430\u043b\u0435\u0435 \u0440\u0430\u0437\u0431\u0435\u0440\u0451\u043c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0447\u0430\u0441\u0442\u043d\u044b\u0435 \u0441\u043b\u0443\u0447\u0430\u0438.<\/em><\/p>\n<h2>\u0427\u0430\u0441\u0442\u043d\u044b\u0435 \u0441\u043b\u0443\u0447\u0430\u0438 \u0437\u0430\u0434\u0430\u0447\u0438<\/h2>\n<h3>\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0442\u043e\u0447\u043a\u0438, \u043f\u0440\u0438 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e\u0439 Zc<\/h3>\n<p>\u041a\u0430\u043a\u00a0\u0431\u044b\u043b\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u0432\u044b\u0448\u0435, \u043d\u0435\u043b\u044c\u0437\u044f \u00ab\u0432 \u043b\u043e\u0431\u00bb \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u0443\u044e \u043f\u043e\u0437\u0438\u0446\u0438\u044e \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u0438 \u043f\u043e\u00a0\u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044e, \u043e\u0434\u043d\u0430\u043a\u043e \u0437\u043d\u0430\u044f <img decoding=\"async\" class=\"formula inline\" source=\"Z_c\" alt=\"Z_c\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/d\/df\/dfe\/dfe9c95d5704a8e3a45e7c0839cb7a0c.svg\" width=\"16\" height=\"12\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/d\/df\/dfe\/dfe9c95d5704a8e3a45e7c0839cb7a0c.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/d\/df\/dfe\/dfe9c95d5704a8e3a45e7c0839cb7a0c.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u044d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c (\u0444\u043e\u0440\u043c\u0443\u043b\u0430 \u0434\u043b\u044f <img decoding=\"async\" class=\"formula inline\" source=\"X_c\" alt=\"X_c\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/75e\/9c0\/8ec\/75e9c08eccf5a5613e205b74890d7ec7.svg\" width=\"24\" height=\"20\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/75e\/9c0\/8ec\/75e9c08eccf5a5613e205b74890d7ec7.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/75e\/9c0\/8ec\/75e9c08eccf5a5613e205b74890d7ec7.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0438 <img decoding=\"async\" class=\"formula inline\" source=\"Y_c\" alt=\"Y_c\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/895\/002\/e14\/895002e14053fced9a89e1a1be20a631.svg\" width=\"19\" height=\"20\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/895\/002\/e14\/895002e14053fced9a89e1a1be20a631.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/895\/002\/e14\/895002e14053fced9a89e1a1be20a631.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u043d\u0438\u0436\u0435). \u0412\u0432\u0438\u0434\u0443 \u043d\u0435\u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u0432\u00a0\u0442\u0430\u043a\u043e\u043c \u0432\u0438\u0434\u0435 \u043c\u0430\u043b\u043e\u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c, \u0445\u043e\u0442\u044f \u0438\u043c\u0435\u0435\u0442 \u043c\u0435\u0441\u0442\u043e\u00a0\u0431\u044b\u0442\u044c, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0432\u00a0\u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043c\u043e\u0434\u0435\u043b\u0438 \u0438\u0441\u043a\u043e\u043c\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f \u0442\u043e\u0447\u043a\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u044c\u044e, \u043f\u0435\u0440\u043f\u0435\u043d\u0434\u0438\u043a\u0443\u043b\u044f\u0440\u043d\u043e\u0439 \u043e\u0441\u0438 <img decoding=\"async\" class=\"formula inline\" source=\"Z_c\" alt=\"Z_c\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1fd\/f91\/3aa\/1fdf913aab8b761299c16d1111de97b7.svg\" width=\"21\" height=\"20\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1fd\/f91\/3aa\/1fdf913aab8b761299c16d1111de97b7.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1fd\/f91\/3aa\/1fdf913aab8b761299c16d1111de97b7.svg 781w\" loading=\"lazy\" decode=\"async\"\/>.<\/p>\n<details class=\"spoiler\">\n<summary>\u0412\u044b\u0432\u0435\u0434\u0435\u043d\u0438\u0435<\/summary>\n<div class=\"spoiler__content\"><img decoding=\"async\" class=\"formula\" source=\" s\\begin{bmatrix}u\\\\v\\\\1\\end{bmatrix} = \\begin{bmatrix}f_{x}\\ 0 \\ \\ c_{x}\\\\0 \\ \\ f_{y} \\ c_{y} \\\\ 0 \\ \\ \\ 0\\ \\ \\ 1\\end{bmatrix} \\begin{bmatrix}X_{c} \\\\ Y_{c} \\\\ Z_{c} \\end{bmatrix}  \\Leftrightarrow  \\begin{bmatrix}su\\\\sv\\\\1\\cdot s \\end{bmatrix}=\\begin{bmatrix}f_{x}X_{c}+0\\cdot Y_{c}+c_{x}Z_{c} \\\\ 0\\cdot X_{c} + f_{y}Y_{c}+c_{y}Z_{c} \\\\ 0 \\cdot X_{c} + 0 \\cdot Y_{c} + 1 \\cdot Z_{c}\\end{bmatrix} \\Leftrightarrow \\\\ \\Leftrightarrow \\begin{bmatrix} su \\\\ sv \\\\ s \\end{bmatrix}= \\begin{bmatrix} f_{x}X_{c}+c_{x}Z_{c}\\\\f_{y}Y_{c}+c_{y}Z_{c} \\\\ Z_{c} \\end{bmatrix} \\Leftrightarrow \\begin{bmatrix}Z_{c}u\\\\Z_{c}v\\\\Z_{c} \\end{bmatrix}=\\begin{bmatrix}f_{x}X_{c}+c_{x}Z_{c}\\\\f_{y}Y_{c}+c_{y}Z_{c}\\\\Z_{c} \\end{bmatrix} \\Leftrightarrow \\\\ \\Leftrightarrow \\begin{bmatrix} u \\\\ v \\\\ 1 \\end{bmatrix}=\\begin{bmatrix} \\frac{f_{x}X_{c}+c_{x}Z_{c}}{Z_c} \\\\ \\frac{f_{y}Y_{c}+c_{y}Z_{c}}{Z_{c}} \\\\1\\end{bmatrix}\" alt=\" s\\begin{bmatrix}u\\\\v\\\\1\\end{bmatrix} = \\begin{bmatrix}f_{x}\\ 0 \\ \\ c_{x}\\\\0 \\ \\ f_{y} \\ c_{y} \\\\ 0 \\ \\ \\ 0\\ \\ \\ 1\\end{bmatrix} \\begin{bmatrix}X_{c} \\\\ Y_{c} \\\\ Z_{c} \\end{bmatrix}  \\Leftrightarrow  \\begin{bmatrix}su\\\\sv\\\\1\\cdot s \\end{bmatrix}=\\begin{bmatrix}f_{x}X_{c}+0\\cdot Y_{c}+c_{x}Z_{c} \\\\ 0\\cdot X_{c} + f_{y}Y_{c}+c_{y}Z_{c} \\\\ 0 \\cdot X_{c} + 0 \\cdot Y_{c} + 1 \\cdot Z_{c}\\end{bmatrix} \\Leftrightarrow \\\\ \\Leftrightarrow \\begin{bmatrix} su \\\\ sv \\\\ s \\end{bmatrix}= \\begin{bmatrix} f_{x}X_{c}+c_{x}Z_{c}\\\\f_{y}Y_{c}+c_{y}Z_{c} \\\\ Z_{c} \\end{bmatrix} \\Leftrightarrow \\begin{bmatrix}Z_{c}u\\\\Z_{c}v\\\\Z_{c} \\end{bmatrix}=\\begin{bmatrix}f_{x}X_{c}+c_{x}Z_{c}\\\\f_{y}Y_{c}+c_{y}Z_{c}\\\\Z_{c} \\end{bmatrix} \\Leftrightarrow \\\\ \\Leftrightarrow \\begin{bmatrix} u \\\\ v \\\\ 1 \\end{bmatrix}=\\begin{bmatrix} \\frac{f_{x}X_{c}+c_{x}Z_{c}}{Z_c} \\\\ \\frac{f_{y}Y_{c}+c_{y}Z_{c}}{Z_{c}} \\\\1\\end{bmatrix}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/d18\/e18\/d90\/d18e18d90e0af53ffc008710178a5b6f.svg\" width=\"603\" height=\"268\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/d18\/e18\/d90\/d18e18d90e0af53ffc008710178a5b6f.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/d18\/e18\/d90\/d18e18d90e0af53ffc008710178a5b6f.svg 781w\" loading=\"lazy\" decode=\"async\"\/><\/div>\n<\/details>\n<p><img decoding=\"async\" class=\"formula\" source=\" \\begin{cases}u=\\frac{f_{x}X_{c}}{Z_{c}}+c_{x} \\\\ v = \\frac{f_{y}Y_{c}}{Z_{c}} + c_{y} \\end{cases} \\space \\ \\Leftrightarrow \\ \\space \\begin{cases}X_{c}=\\frac{(u-c_{x})Z_{c}}{f_{x}} \\\\ Y_{c} = \\frac{(v-c_{y})Z_{c}}{f_{y}}\\end{cases}\" alt=\" \\begin{cases}u=\\frac{f_{x}X_{c}}{Z_{c}}+c_{x} \\\\ v = \\frac{f_{y}Y_{c}}{Z_{c}} + c_{y} \\end{cases} \\space \\ \\Leftrightarrow \\ \\space \\begin{cases}X_{c}=\\frac{(u-c_{x})Z_{c}}{f_{x}} \\\\ Y_{c} = \\frac{(v-c_{y})Z_{c}}{f_{y}}\\end{cases}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e9d\/7cb\/04a\/e9d7cb04aff22db9eb8b6bc4b9a4c91b.svg\" width=\"331\" height=\"75\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e9d\/7cb\/04a\/e9d7cb04aff22db9eb8b6bc4b9a4c91b.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e9d\/7cb\/04a\/e9d7cb04aff22db9eb8b6bc4b9a4c91b.svg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<h3>\u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0441 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0439 Zw \u0434\u043b\u044f \u0438\u0441\u043a\u043e\u043c\u043e\u0439 \u0442\u043e\u0447\u043a\u0438  <\/h3>\n<p>\u0412\u00a0\u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435 \u0442\u0435\u043c\u044b \u043f\u0440\u043e\u00a0\u043d\u0430\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u0438 \u043c\u043e\u0436\u043d\u043e \u0442\u0430\u043a\u0436\u0435 \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e\u00a0\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0438\u00a0\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0438 \u043c\u043e\u0434\u0435\u043b\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u0430, \u0437\u0430\u0434\u0430\u044e\u0449\u0435\u0433\u043e \u043c\u0438\u0440\u043e\u0432\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442, \u0438 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e\u0439 <img decoding=\"async\" class=\"formula inline\" source=\"Z_w\" alt=\"Z_w\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/7e4\/8d3\/dd4\/7e48d3dd4b1da93440e06b73aa30080b.svg\" width=\"25\" height=\"20\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/7e4\/8d3\/dd4\/7e48d3dd4b1da93440e06b73aa30080b.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/7e4\/8d3\/dd4\/7e48d3dd4b1da93440e06b73aa30080b.svg 781w\" loading=\"lazy\" decode=\"async\"\/> (\u043f\u0440\u0438\u0447\u0451\u043c <img decoding=\"async\" class=\"formula inline\" source=\"Z_w\" alt=\"Z_w\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/8a1\/dc3\/a60\/8a1dc3a603875b5badbc97849688a382.svg\" width=\"25\" height=\"20\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/8a1\/dc3\/a60\/8a1dc3a603875b5badbc97849688a382.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/8a1\/dc3\/a60\/8a1dc3a603875b5badbc97849688a382.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u043c\u043e\u0436\u0435\u0442 \u0440\u0430\u0432\u043d\u044f\u0442\u044c\u0441\u044f <img decoding=\"async\" class=\"formula inline\" source=\"0\" alt=\"0\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/058\/7ca\/c13\/0587cac13783d9f623d25f1375b4de44.svg\" width=\"10\" height=\"16\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/058\/7ca\/c13\/0587cac13783d9f623d25f1375b4de44.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/058\/7ca\/c13\/0587cac13783d9f623d25f1375b4de44.svg 781w\" loading=\"lazy\" decode=\"async\"\/>).<\/p>\n<p>\u0420\u0435\u0448\u0438\u043c \u0437\u0430\u0434\u0430\u0447\u0443 PnP \u0434\u043b\u044f\u00a0\u043e\u0431\u044a\u0435\u043a\u0442\u0430, \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0449\u0435\u0433\u043e \u043c\u0438\u0440\u043e\u0432\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0432 \u043f\u0430\u0440\u0443 <img decoding=\"async\" class=\"formula inline\" source=\"rvec,\\\u00a0tvec\" alt=\"rvec,\\\u00a0tvec\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1ce\/db3\/b20\/1cedb3b20631c859cc6921e173b6a30c.svg\" width=\"82\" height=\"19\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1ce\/db3\/b20\/1cedb3b20631c859cc6921e173b6a30c.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1ce\/db3\/b20\/1cedb3b20631c859cc6921e173b6a30c.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0432\u00a0\u0432\u0438\u0434\u0435 \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 <img decoding=\"async\" class=\"formula inline\" source=\"^{c}T_{w}\" alt=\"^{c}T_{w}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/6b5\/a77\/39c\/6b5a7739cf442075209da7276602a56f.svg\" width=\"31\" height=\"20\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/6b5\/a77\/39c\/6b5a7739cf442075209da7276602a56f.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/6b5\/a77\/39c\/6b5a7739cf442075209da7276602a56f.svg 781w\" loading=\"lazy\" decode=\"async\"\/>. <img decoding=\"async\" class=\"formula inline\" source=\"^{c}T_{w}\" alt=\"^{c}T_{w}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c52\/7ef\/f76\/c527eff760f20b095225e5c550983b98.svg\" width=\"31\" height=\"20\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c52\/7ef\/f76\/c527eff760f20b095225e5c550983b98.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c52\/7ef\/f76\/c527eff760f20b095225e5c550983b98.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u0437\u00a0\u043c\u0438\u0440\u043e\u0432\u043e\u0439 (\u043e\u0431\u044a\u0435\u043a\u0442\u043d\u043e\u0439) \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0432\u00a0\u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u043a\u0430\u043c\u0435\u0440\u044b, \u0430\u00a0\u043e\u0431\u0440\u0430\u0442\u043d\u0430\u044f \u043c\u0430\u0442\u0440\u0438\u0446\u0430 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 <img decoding=\"async\" class=\"formula inline\" source=\"^{w}T_{c} = (^{c}T_{w})^{-1} \\text{, \u043f\u0440\u0438 } \\det\\ ^{c}T_{w} \\neq 0  \" alt=\"^{w}T_{c} = (^{c}T_{w})^{-1} \\text{, \u043f\u0440\u0438 } \\det\\ ^{c}T_{w} \\neq 0  \" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e10\/d87\/42b\/e10d8742b6926e45abf63f7afb25e8af.svg\" width=\"268\" height=\"25\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e10\/d87\/42b\/e10d8742b6926e45abf63f7afb25e8af.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e10\/d87\/42b\/e10d8742b6926e45abf63f7afb25e8af.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u0437\u00a0\u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u043a\u0430\u043c\u0435\u0440\u044b \u0432\u00a0\u043c\u0438\u0440\u043e\u0432\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 (\u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0435 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435), \u0442\u043e\u0433\u0434\u0430 <img decoding=\"async\" class=\"formula inline\" source=\"P_{w}\\ =\\ ^{w}T_{c}P_{c}  \" alt=\"P_{w}\\ =\\ ^{w}T_{c}P_{c}  \" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/087\/b1a\/5f2\/087b1a5f28a550e4aa13e33e60f457da.svg\" width=\"110\" height=\"21\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/087\/b1a\/5f2\/087b1a5f28a550e4aa13e33e60f457da.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/087\/b1a\/5f2\/087b1a5f28a550e4aa13e33e60f457da.svg 781w\" loading=\"lazy\" decode=\"async\"\/>.<\/p>\n<p>\u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043c<\/p>\n<p><img decoding=\"async\" class=\"formula inline\" source=\"^{w}T_{c} = \\begin{bmatrix} r_{11} \\ r_{12} \\ r_{13} \\ t_{x} \\\\ r_{21} \\  r_{22} \\ r_{23} \\ t_{y} \\\\ r_{31} \\ r_{32} \\ r_{33} \\ t_{z} \\\\ 0 \\ \\ \\ \\ 0 \\ \\ \\ \\ 0 \\ \\ \\ \\ 1\\end{bmatrix} \\text{, }\\ P_{w}=\\begin{bmatrix} X_{w} \\\\ Y_{w} \\\\ Z_{w} \\\\ 1 \\end{bmatrix}  \\text{, }\\ P_{c}=\\begin{bmatrix} X_{c} \\\\ Y_{c} \\\\ Z_{c} \\\\ 1 \\end{bmatrix}  \" alt=\"^{w}T_{c} = \\begin{bmatrix} r_{11} \\ r_{12} \\ r_{13} \\ t_{x} \\\\ r_{21} \\  r_{22} \\ r_{23} \\ t_{y} \\\\ r_{31} \\ r_{32} \\ r_{33} \\ t_{z} \\\\ 0 \\ \\ \\ \\ 0 \\ \\ \\ \\ 0 \\ \\ \\ \\ 1\\end{bmatrix} \\text{, }\\ P_{w}=\\begin{bmatrix} X_{w} \\\\ Y_{w} \\\\ Z_{w} \\\\ 1 \\end{bmatrix}  \\text{, }\\ P_{c}=\\begin{bmatrix} X_{c} \\\\ Y_{c} \\\\ Z_{c} \\\\ 1 \\end{bmatrix}  \" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/aeb\/99b\/3fd\/aeb99b3fd3abb7818f2300c605cae773.svg\" width=\"440\" height=\"105\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/aeb\/99b\/3fd\/aeb99b3fd3abb7818f2300c605cae773.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/aeb\/99b\/3fd\/aeb99b3fd3abb7818f2300c605cae773.svg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<p>(\u0432 \u043e\u0434\u043d\u043e\u0440\u043e\u0434\u043d\u044b\u0445 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u0445), \u0442\u043e\u0433\u0434\u0430:<\/p>\n<details class=\"spoiler\">\n<summary>\u0412\u044b\u0432\u0435\u0434\u0435\u043d\u0438\u0435<\/summary>\n<div class=\"spoiler__content\"><img decoding=\"async\" class=\"formula\" source=\" \\begin{bmatrix} X_{w} \\\\ Y_{w} \\\\ Z_{w} \\\\ 1 \\end{bmatrix} = \\begin{bmatrix} r_{11} \\ r_{12} \\ r_{13} \\ t_{x} \\\\ r_{21} \\  r_{22} \\ r_{23} \\ t_{y} \\\\ r_{31} \\ r_{32} \\ r_{33} \\ t_{z} \\\\ 0 \\ \\ \\ \\ 0 \\ \\ \\ \\ 0 \\ \\ \\ \\ 1\\end{bmatrix}\\begin{bmatrix} X_{c} \\\\ Y_{c} \\\\ Z_{c} \\\\ 1 \\end{bmatrix}  \\Leftrightarrow \\\\  \\Leftrightarrow  \\begin{bmatrix} X_{w} \\\\ Y_{w} \\\\ Z_{w} \\\\ 1 \\end{bmatrix} = \\begin{bmatrix} r_{11}X_{c}+r_{12}Y_{c}+r_{13}Z_{c}+t_{x} \\\\ r_{21}X_{c} + r_{22}Y_{c} + r_{23}Z_{c} + t_{y} \\\\ r_{31}X_{c}+r_{32}Y_{c}+r_{33}Z_{c} + t_{z} \\\\ 0\\ \\ +\\ \\ 0\\ \\ +\\ \\ 0\\ \\ +\\ \\ 1 \\end{bmatrix}\" alt=\" \\begin{bmatrix} X_{w} \\\\ Y_{w} \\\\ Z_{w} \\\\ 1 \\end{bmatrix} = \\begin{bmatrix} r_{11} \\ r_{12} \\ r_{13} \\ t_{x} \\\\ r_{21} \\  r_{22} \\ r_{23} \\ t_{y} \\\\ r_{31} \\ r_{32} \\ r_{33} \\ t_{z} \\\\ 0 \\ \\ \\ \\ 0 \\ \\ \\ \\ 0 \\ \\ \\ \\ 1\\end{bmatrix}\\begin{bmatrix} X_{c} \\\\ Y_{c} \\\\ Z_{c} \\\\ 1 \\end{bmatrix}  \\Leftrightarrow \\\\  \\Leftrightarrow  \\begin{bmatrix} X_{w} \\\\ Y_{w} \\\\ Z_{w} \\\\ 1 \\end{bmatrix} = \\begin{bmatrix} r_{11}X_{c}+r_{12}Y_{c}+r_{13}Z_{c}+t_{x} \\\\ r_{21}X_{c} + r_{22}Y_{c} + r_{23}Z_{c} + t_{y} \\\\ r_{31}X_{c}+r_{32}Y_{c}+r_{33}Z_{c} + t_{z} \\\\ 0\\ \\ +\\ \\ 0\\ \\ +\\ \\ 0\\ \\ +\\ \\ 1 \\end{bmatrix}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/22c\/406\/431\/22c406431c607a9fa86a103e480459da.svg\" width=\"603\" height=\"215\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/22c\/406\/431\/22c406431c607a9fa86a103e480459da.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/22c\/406\/431\/22c406431c607a9fa86a103e480459da.svg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c <img decoding=\"async\" class=\"formula inline\" source=\"X_w\" alt=\"X_w\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c60\/249\/3cc\/c602493cc4b816d4a95cb01f002adfc1.svg\" width=\"28\" height=\"20\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c60\/249\/3cc\/c602493cc4b816d4a95cb01f002adfc1.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c60\/249\/3cc\/c602493cc4b816d4a95cb01f002adfc1.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0438 <img decoding=\"async\" class=\"formula inline\" source=\"Y_w\" alt=\"Y_w\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e54\/b87\/e6d\/e54b87e6d1e94d1fe2e4aa73b9385c37.svg\" width=\"23\" height=\"20\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e54\/b87\/e6d\/e54b87e6d1e94d1fe2e4aa73b9385c37.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e54\/b87\/e6d\/e54b87e6d1e94d1fe2e4aa73b9385c37.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u043e \u0447\u0435\u0440\u0435\u0437 <img decoding=\"async\" class=\"formula inline\" source=\"P_c\" alt=\"P_c\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1b8\/60d\/c78\/1b860dc78104ffe845d840d6ae186068.svg\" width=\"20\" height=\"20\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1b8\/60d\/c78\/1b860dc78104ffe845d840d6ae186068.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1b8\/60d\/c78\/1b860dc78104ffe845d840d6ae186068.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0438 <img decoding=\"async\" class=\"formula inline\" source=\"^{w}T_{c}\" alt=\"^{w}T_{c}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/35c\/35e\/f5b\/35c35ef5b7ffd8492ef34e7da8c6e9ca.svg\" width=\"31\" height=\"21\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/35c\/35e\/f5b\/35c35ef5b7ffd8492ef34e7da8c6e9ca.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/35c\/35e\/f5b\/35c35ef5b7ffd8492ef34e7da8c6e9ca.svg 781w\" loading=\"lazy\" decode=\"async\"\/>. \u0412\u044b\u0432\u0435\u0434\u0435\u043d\u0438\u0435 <img decoding=\"async\" class=\"formula inline\" source=\"X_c\" alt=\"X_c\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/649\/6ad\/79c\/6496ad79c680e8d31441991d5b15ac9e.svg\" width=\"24\" height=\"20\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/649\/6ad\/79c\/6496ad79c680e8d31441991d5b15ac9e.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/649\/6ad\/79c\/6496ad79c680e8d31441991d5b15ac9e.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0438 <img decoding=\"async\" class=\"formula inline\" source=\"Y_c\" alt=\"Y_c\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/d71\/6a6\/e33\/d716a6e33e4f6703fd6fc9da626294e1.svg\" width=\"19\" height=\"20\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/d71\/6a6\/e33\/d716a6e33e4f6703fd6fc9da626294e1.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/d71\/6a6\/e33\/d716a6e33e4f6703fd6fc9da626294e1.svg 781w\" loading=\"lazy\" decode=\"async\"\/>\u0431\u044b\u043b\u043e \u0432\u044b\u0448\u0435. \u0412\u044b\u0440\u0430\u0437\u0438\u043c <img decoding=\"async\" class=\"formula inline\" source=\"Z_c\" alt=\"Z_c\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c05\/167\/142\/c05167142198b50894acbd564d0c86ab.svg\" width=\"21\" height=\"20\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c05\/167\/142\/c05167142198b50894acbd564d0c86ab.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c05\/167\/142\/c05167142198b50894acbd564d0c86ab.svg 781w\" loading=\"lazy\" decode=\"async\"\/>:<\/p>\n<ol>\n<li>\n<p><img decoding=\"async\" class=\"formula inline\" source=\"Z_{w} = r_{31}X_{c} + r_{32}Y_{c} +r_{33}Z_{c}+t_{z}\" alt=\"Z_{w} = r_{31}X_{c} + r_{32}Y_{c} +r_{33}Z_{c}+t_{z}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/03d\/46d\/159\/03d46d159469ff7279ff25608b015907.svg\" width=\"273\" height=\"20\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/03d\/46d\/159\/03d46d159469ff7279ff25608b015907.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/03d\/46d\/159\/03d46d159469ff7279ff25608b015907.svg 781w\" loading=\"lazy\" decode=\"async\"\/>(\u0438\u0437 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0432\u044b\u0448\u0435)<\/p>\n<\/li>\n<li>\n<p><img decoding=\"async\" class=\"formula inline\" source=\"Z_{w} = \\frac{r_{31}(u-c_{x})Z_{c}}{f_{x}}+\\frac{r_{32}(v-c_{y})Z_{c}}{f_{y}}+r_{33}Z_{c} + t_{z}  \" alt=\"Z_{w} = \\frac{r_{31}(u-c_{x})Z_{c}}{f_{x}}+\\frac{r_{32}(v-c_{y})Z_{c}}{f_{y}}+r_{33}Z_{c} + t_{z}  \" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/993\/02d\/493\/99302d49358aea91660fa123822ba220.svg\" width=\"419\" height=\"51\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/993\/02d\/493\/99302d49358aea91660fa123822ba220.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/993\/02d\/493\/99302d49358aea91660fa123822ba220.svg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<p>(\u0432\u044b\u0440\u0430\u0437\u0438\u043b\u0438 <img decoding=\"async\" class=\"formula inline\" source=\"X_c\" alt=\"X_c\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ca1\/391\/817\/ca139181781d8700f2babc658fb1d01e.svg\" width=\"24\" height=\"20\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ca1\/391\/817\/ca139181781d8700f2babc658fb1d01e.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ca1\/391\/817\/ca139181781d8700f2babc658fb1d01e.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0438 <img decoding=\"async\" class=\"formula inline\" source=\"Y_c\" alt=\"Y_c\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/833\/44e\/8b8\/83344e8b892e262e358a1492056a26d9.svg\" width=\"19\" height=\"20\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/833\/44e\/8b8\/83344e8b892e262e358a1492056a26d9.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/833\/44e\/8b8\/83344e8b892e262e358a1492056a26d9.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0447\u0435\u0440\u0435\u0437 <img decoding=\"async\" class=\"formula inline\" source=\"Z_c\" alt=\"Z_c\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/4f8\/348\/fe6\/4f8348fe69f497d55c735e3e7e79e23a.svg\" width=\"21\" height=\"20\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/4f8\/348\/fe6\/4f8348fe69f497d55c735e3e7e79e23a.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/4f8\/348\/fe6\/4f8348fe69f497d55c735e3e7e79e23a.svg 781w\" loading=\"lazy\" decode=\"async\"\/>)<\/p>\n<\/li>\n<li>\n<p><img decoding=\"async\" class=\"formula inline\" source=\"Z_{w} - t_{z} = Z_{c} ( \\frac{r_{31}(u-c_{x})}{f_{x}} + \\frac{r_{32}(v-c_{y})}{f_{y}} + r_{33} )  \" alt=\"Z_{w} - t_{z} = Z_{c} ( \\frac{r_{31}(u-c_{x})}{f_{x}} + \\frac{r_{32}(v-c_{y})}{f_{y}} + r_{33} )  \" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/707\/74a\/093\/70774a093d3b01a6e56b67d6bc4f12a8.svg\" width=\"396\" height=\"51\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/707\/74a\/093\/70774a093d3b01a6e56b67d6bc4f12a8.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/707\/74a\/093\/70774a093d3b01a6e56b67d6bc4f12a8.svg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<p>(\u0432\u044b\u043d\u0435\u0441\u043b\u0438 \u043e\u0431\u0449\u0438\u0439 \u043c\u043d\u043e\u0436\u0438\u0442\u0435\u043b\u044c)<\/p>\n<\/li>\n<li>\n<p><img decoding=\"async\" class=\"formula inline\" source=\"Z_{c} = \\frac{(Z_{w} - t_{z})}{(\\frac{r_{31} (u - c_{x})}{f_{x}}+ \\frac{r_{32}(v-c_{y})}{f_{y}}+r_{33})}  \" alt=\"Z_{c} = \\frac{(Z_{w} - t_{z})}{(\\frac{r_{31} (u - c_{x})}{f_{x}}+ \\frac{r_{32}(v-c_{y})}{f_{y}}+r_{33})}  \" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/251\/900\/fee\/251900fee2ea74ae7d94e2e8d784fd92.svg\" width=\"270\" height=\"66\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/251\/900\/fee\/251900fee2ea74ae7d94e2e8d784fd92.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/251\/900\/fee\/251900fee2ea74ae7d94e2e8d784fd92.svg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<p>(\u0432\u044b\u0440\u0430\u0437\u0438\u043b\u0438 <img decoding=\"async\" class=\"formula inline\" source=\"Z_c\" alt=\"Z_c\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/8dd\/23c\/533\/8dd23c533dd4434b4c3ec96ea82b0b65.svg\" width=\"21\" height=\"20\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/8dd\/23c\/533\/8dd23c533dd4434b4c3ec96ea82b0b65.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/8dd\/23c\/533\/8dd23c533dd4434b4c3ec96ea82b0b65.svg 781w\" loading=\"lazy\" decode=\"async\"\/>)<\/p>\n<\/li>\n<\/ol>\n<\/div>\n<\/details>\n<p><img decoding=\"async\" class=\"formula\" source=\"\\begin{cases}Z_{c} =  \\frac{(Z_{w} - t_{z})}{(\\frac{r_{31} (u - c_{x})}{f_{x}}+ \\frac{r_{32}(v-c_{y})}{f_{y}}+r_{33})} \\\\ X_{c}=\\frac{(u-c_{x})Z_{c}}{f_{x}} \\\\ Y_{c} = \\frac{(v-c_{y})Z_{c}}{f_{y}} \\\\ X_{w} = r_{11}X_{c} + r_{12}Y_{c} + r_{13}Z_{c} + t_{x} \\\\ Y_{w} = r_{21}X_{c} + r_{22}Y_{c} + r_{23}Z_{c} + t_{y} \\end{cases}\" alt=\"\\begin{cases}Z_{c} =  \\frac{(Z_{w} - t_{z})}{(\\frac{r_{31} (u - c_{x})}{f_{x}}+ \\frac{r_{32}(v-c_{y})}{f_{y}}+r_{33})} \\\\ X_{c}=\\frac{(u-c_{x})Z_{c}}{f_{x}} \\\\ Y_{c} = \\frac{(v-c_{y})Z_{c}}{f_{y}} \\\\ X_{w} = r_{11}X_{c} + r_{12}Y_{c} + r_{13}Z_{c} + t_{x} \\\\ Y_{w} = r_{21}X_{c} + r_{22}Y_{c} + r_{23}Z_{c} + t_{y} \\end{cases}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/6a3\/7ba\/c26\/6a37bac26fac715e15efec220e8e712d.svg\" width=\"301\" height=\"174\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/6a3\/7ba\/c26\/6a37bac26fac715e15efec220e8e712d.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/6a3\/7ba\/c26\/6a37bac26fac715e15efec220e8e712d.svg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<p>\u0414\u043b\u044f\u00a0\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043c\u043e\u0433\u0443\u0442 \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u044b:<\/p>\n<pre><code class=\"python\">re3d.getCTW(rvec, tvec)                        # \u0414\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 (cTw) np.linalg.det(a)                               # \u0414\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0441\u0442\u0438 \u043c\u0430\u0442\u0440\u0438\u0446\u044b np.linalg.inv(a)                               # \u0414\u043b\u044f \u043d\u0430\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0439 \u043c\u0430\u0440\u0438\u0446\u044b (wTc) re3d.getFixedZWPos(src, Zw, cameraMatrix, wTc) # \u0414\u043b\u044f \u043d\u0430\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0442\u043e\u0447\u043a\u0438<\/code><\/pre>\n<h3>\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 A \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 B<\/h3>\n<p>\u0420\u0430\u0437\u0431\u0435\u0440\u0451\u043c \u0441\u043b\u0443\u0447\u0430\u0439, \u0441\u0445\u043e\u0436\u0438\u0439 \u0441\u00a0\u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u043c, \u043d\u043e\u00a0\u043a\u043e\u0433\u0434\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043d\u0430\u0439\u0442\u0438 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430 <img decoding=\"async\" class=\"formula inline\" source=\"A\" alt=\"A\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/61d\/22f\/aa1\/61d22faa1ccc1368346424a6417fd8cd.svg\" width=\"14\" height=\"17\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/61d\/22f\/aa1\/61d22faa1ccc1368346424a6417fd8cd.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/61d\/22f\/aa1\/61d22faa1ccc1368346424a6417fd8cd.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0432\u00a0\u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430 <img decoding=\"async\" class=\"formula inline\" source=\"B\" alt=\"B\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/36d\/61e\/7db\/36d61e7db2bca3ca320ee6d580de7623.svg\" width=\"15\" height=\"17\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/36d\/61e\/7db\/36d61e7db2bca3ca320ee6d580de7623.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/36d\/61e\/7db\/36d61e7db2bca3ca320ee6d580de7623.svg 781w\" loading=\"lazy\" decode=\"async\"\/>.<\/p>\n<p>\u0422\u0430\u043a \u043a\u0430\u043a\u00a0\u0443\u00a0\u043d\u0430\u0441 \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0434\u0432\u0435 \u043c\u0438\u0440\u043e\u0432\u044b\u0435 (\u043e\u0431\u044a\u0435\u043a\u0442\u043d\u044b\u0435) \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0434\u043b\u044f\u00a0\u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 <img decoding=\"async\" class=\"formula inline\" source=\"A\" alt=\"A\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1bb\/e77\/725\/1bbe77725e6bc74a08a74ef5ff25b0c3.svg\" width=\"14\" height=\"17\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1bb\/e77\/725\/1bbe77725e6bc74a08a74ef5ff25b0c3.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1bb\/e77\/725\/1bbe77725e6bc74a08a74ef5ff25b0c3.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0438 <img decoding=\"async\" class=\"formula inline\" source=\"B\" alt=\"B\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b5f\/6b7\/176\/b5f6b7176f4676c0d052f3fbf70e1d69.svg\" width=\"15\" height=\"17\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b5f\/6b7\/176\/b5f6b7176f4676c0d052f3fbf70e1d69.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b5f\/6b7\/176\/b5f6b7176f4676c0d052f3fbf70e1d69.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0434\u0430\u043b\u0435\u0435 \u0432\u043c\u0435\u0441\u0442\u043e <img decoding=\"async\" class=\"formula inline\" source=\"P_w\" alt=\"P_w\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/3ce\/614\/8fb\/3ce6148fb78e53b94cf09c2520a0faed.svg\" width=\"24\" height=\"20\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/3ce\/614\/8fb\/3ce6148fb78e53b94cf09c2520a0faed.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/3ce\/614\/8fb\/3ce6148fb78e53b94cf09c2520a0faed.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <img decoding=\"async\" class=\"formula inline\" source=\"P_A\" alt=\"P_A\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e25\/3bb\/6b0\/e253bb6b04412a0b2bf31cc6bd3a9653.svg\" width=\"25\" height=\"20\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e25\/3bb\/6b0\/e253bb6b04412a0b2bf31cc6bd3a9653.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e25\/3bb\/6b0\/e253bb6b04412a0b2bf31cc6bd3a9653.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0438 <img decoding=\"async\" class=\"formula inline\" source=\"P_B\" alt=\"P_B\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/308\/b58\/4f8\/308b584f81835e78d4732f49e53eb105.svg\" width=\"25\" height=\"19\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/308\/b58\/4f8\/308b584f81835e78d4732f49e53eb105.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/308\/b58\/4f8\/308b584f81835e78d4732f49e53eb105.svg 781w\" loading=\"lazy\" decode=\"async\"\/>. \u0422\u043e \u0435\u0441\u0442\u044c \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0442\u043e\u0447\u043a\u0438 <img decoding=\"async\" class=\"formula inline\" source=\"P\" alt=\"P\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/70f\/64e\/c6b\/70f64ec6b0e0c26ba745577e7928e965.svg\" width=\"14\" height=\"17\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/70f\/64e\/c6b\/70f64ec6b0e0c26ba745577e7928e965.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/70f\/64e\/c6b\/70f64ec6b0e0c26ba745577e7928e965.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0432\u00a0\u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 <img decoding=\"async\" class=\"formula inline\" source=\"A\" alt=\"A\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ae6\/8f0\/f0a\/ae68f0f0a96f5b85d4b448a82644595e.svg\" width=\"14\" height=\"17\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ae6\/8f0\/f0a\/ae68f0f0a96f5b85d4b448a82644595e.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ae6\/8f0\/f0a\/ae68f0f0a96f5b85d4b448a82644595e.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0438\u043c \u0437\u0430 <img decoding=\"async\" class=\"formula inline\" source=\"P_A\" alt=\"P_A\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/20d\/ae7\/270\/20dae7270577389490ffbf55c9482a1f.svg\" width=\"25\" height=\"20\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/20d\/ae7\/270\/20dae7270577389490ffbf55c9482a1f.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/20d\/ae7\/270\/20dae7270577389490ffbf55c9482a1f.svg 781w\" loading=\"lazy\" decode=\"async\"\/>, \u0430\u00a0\u0432\u00a0\u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 <img decoding=\"async\" class=\"formula inline\" source=\"B\" alt=\"B\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a25\/455\/350\/a254553502947bed7b0fb4394a5b71b5.svg\" width=\"15\" height=\"17\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a25\/455\/350\/a254553502947bed7b0fb4394a5b71b5.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a25\/455\/350\/a254553502947bed7b0fb4394a5b71b5.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0438\u043c \u0437\u0430 <img decoding=\"async\" class=\"formula inline\" source=\"P_B\" alt=\"P_B\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/94c\/1f0\/c33\/94c1f0c33857bb321f77fb6bbefd2959.svg\" width=\"25\" height=\"19\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/94c\/1f0\/c33\/94c1f0c33857bb321f77fb6bbefd2959.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/94c\/1f0\/c33\/94c1f0c33857bb321f77fb6bbefd2959.svg 781w\" loading=\"lazy\" decode=\"async\"\/>.<\/p>\n<p>\u0420\u0435\u0448\u0438\u043c \u0437\u0430\u0434\u0430\u0447\u0443 PnP \u0434\u043b\u044f\u00a0\u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0432 \u043f\u0430\u0440\u044b <img decoding=\"async\" class=\"formula inline\" source=\"rvec,\\\u00a0tvec\" alt=\"rvec,\\\u00a0tvec\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/802\/5e3\/478\/8025e3478a426b5008b2fab5a6f547a6.svg\" width=\"82\" height=\"19\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/802\/5e3\/478\/8025e3478a426b5008b2fab5a6f547a6.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/802\/5e3\/478\/8025e3478a426b5008b2fab5a6f547a6.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0432\u0438\u0434\u0435 \u043c\u0430\u0442\u0440\u0438\u0446 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 <img decoding=\"async\" class=\"formula inline\" source=\"^{c}T_{A}\" alt=\"^{c}T_{A}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f7e\/a6d\/bf6\/f7ea6dbf69ec63ab3b0a8af17b7ad77c.svg\" width=\"31\" height=\"20\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f7e\/a6d\/bf6\/f7ea6dbf69ec63ab3b0a8af17b7ad77c.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f7e\/a6d\/bf6\/f7ea6dbf69ec63ab3b0a8af17b7ad77c.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0438 <img decoding=\"async\" class=\"formula inline\" source=\"^{c}T_{B}\" alt=\"^{c}T_{B}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/243\/ffa\/7dc\/243ffa7dc5a85d9472b1e9e9c3912820.svg\" width=\"31\" height=\"19\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/243\/ffa\/7dc\/243ffa7dc5a85d9472b1e9e9c3912820.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/243\/ffa\/7dc\/243ffa7dc5a85d9472b1e9e9c3912820.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e. \u0417\u0430\u0442\u0435\u043c \u0434\u043b\u044f <img decoding=\"async\" class=\"formula inline\" source=\"^{c}T_{B}\" alt=\"^{c}T_{B}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e9e\/965\/e2b\/e9e965e2b245af60f29b3676c6741036.svg\" width=\"31\" height=\"19\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e9e\/965\/e2b\/e9e965e2b245af60f29b3676c6741036.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e9e\/965\/e2b\/e9e965e2b245af60f29b3676c6741036.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u043d\u0430\u0439\u0434\u0451\u043c \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0435 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435<img decoding=\"async\" class=\"formula inline\" source=\"^{B}T_{c} = (^{c}T_{B})^{-1} \\text{, \u043f\u0440\u0438 } \\det\\ ^{c}T_{B} \\neq 0  \" alt=\"^{B}T_{c} = (^{c}T_{B})^{-1} \\text{, \u043f\u0440\u0438 } \\det\\ ^{c}T_{B} \\neq 0  \" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/191\/b3a\/90b\/191b3a90b8b4ba05ee443c31421756fb.svg\" width=\"270\" height=\"25\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/191\/b3a\/90b\/191b3a90b8b4ba05ee443c31421756fb.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/191\/b3a\/90b\/191b3a90b8b4ba05ee443c31421756fb.svg 781w\" loading=\"lazy\" decode=\"async\"\/>, \u0442\u043e\u0433\u0434\u0430 <img decoding=\"async\" class=\"formula inline\" source=\"P_{B}\\ =\\ ^{B}T_{c}P_{c}\" alt=\"P_{B}\\ =\\ ^{B}T_{c}P_{c}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/06f\/fac\/ced\/06ffacced44eedb97649df914971b11a.svg\" width=\"112\" height=\"24\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/06f\/fac\/ced\/06ffacced44eedb97649df914971b11a.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/06f\/fac\/ced\/06ffacced44eedb97649df914971b11a.svg 781w\" loading=\"lazy\" decode=\"async\"\/>, \u043f\u0440\u0438\u00a0\u044d\u0442\u043e\u043c <img decoding=\"async\" class=\"formula inline\" source=\"P_{c}\\ =\\ ^{c}T_{A}P_{A}  \" alt=\"P_{c}\\ =\\ ^{c}T_{A}P_{A}  \" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1f3\/fe8\/621\/1f3fe8621fc71906f8b3b20bcac5ce96.svg\" width=\"111\" height=\"20\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1f3\/fe8\/621\/1f3fe8621fc71906f8b3b20bcac5ce96.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1f3\/fe8\/621\/1f3fe8621fc71906f8b3b20bcac5ce96.svg 781w\" loading=\"lazy\" decode=\"async\"\/>(\u0438\u0437 \u043c\u043e\u0434\u0435\u043b\u0438 \u043a\u0430\u043c\u0435\u0440\u044b\u2011\u043e\u0431\u0441\u043a\u0443\u0440\u044b). \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c: <img decoding=\"async\" class=\"formula inline\" source=\"P_{B}\\ =\\ ^{B}T_{c}\\ ^{c}T_{A}\\ P_{A} \" alt=\"P_{B}\\ =\\ ^{B}T_{c}\\ ^{c}T_{A}\\ P_{A} \" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/7f6\/58c\/5ec\/7f658c5ecb42d9bc06e3d0d66646cd0c.svg\" width=\"157\" height=\"24\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/7f6\/58c\/5ec\/7f658c5ecb42d9bc06e3d0d66646cd0c.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/7f6\/58c\/5ec\/7f658c5ecb42d9bc06e3d0d66646cd0c.svg 781w\" loading=\"lazy\" decode=\"async\"\/> <\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/121\/749\/a21\/121749a2146071dad9568167e9f727a7.png\" alt=\" \u0421\u0445\u0435\u043c\u0430 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0439: \" title=\" \u0421\u0445\u0435\u043c\u0430 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0439: \" width=\"458\" height=\"326\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/121\/749\/a21\/121749a2146071dad9568167e9f727a7.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/121\/749\/a21\/121749a2146071dad9568167e9f727a7.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0421\u0445\u0435\u043c\u0430 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0439: <img decoding=\"async\" class=\"formula inline\" source=\"O_{A}  \\stackrel{^{c}T_{A}}{\\rightarrow} O_{c} \\stackrel{^{B}T_{c}}{\\rightarrow} O_{B}  \" alt=\"O_{A}  \\stackrel{^{c}T_{A}}{\\rightarrow} O_{c} \\stackrel{^{B}T_{c}}{\\rightarrow} O_{B}  \" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e72\/6e0\/9c9\/e726e09c912c2af157d0864eee6f054b.svg\" width=\"115\" height=\"28\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e72\/6e0\/9c9\/e726e09c912c2af157d0864eee6f054b.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e72\/6e0\/9c9\/e726e09c912c2af157d0864eee6f054b.svg 781w\" loading=\"lazy\" decode=\"async\"\/><\/figcaption><\/div>\n<\/figure>\n<p>\u0414\u043b\u044f\u00a0\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043c\u043e\u0433\u0443\u0442 \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u044b:<\/p>\n<pre><code class=\"python\">re3d.getCTW(rvec, tvec)                        # \u0414\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 (cTw) np.linalg.det(a)                               # \u0414\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0441\u0442\u0438 \u043c\u0430\u0442\u0440\u0438\u0446\u044b np.linalg.inv(a)                               # \u0414\u043b\u044f \u043d\u0430\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0439 \u043c\u0430\u0440\u0438\u0446\u044b (wTc) np.dot(a, b)                                   # \u0414\u043b\u044f \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0439<\/code><\/pre>\n<h3>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0447\u0430\u0441\u0442\u043d\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u0435\u0432<\/h3>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/19b\/626\/eae\/19b626eaee1f541f274d0bf7ea55137a.jpg\" alt=\"\u0418\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u044b\" title=\"\u0418\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u044b\" width=\"4000\" height=\"1080\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/19b\/626\/eae\/19b626eaee1f541f274d0bf7ea55137a.jpg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/19b\/626\/eae\/19b626eaee1f541f274d0bf7ea55137a.jpg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0418\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u044b<\/figcaption><\/div>\n<\/figure>\n<details class=\"spoiler\">\n<summary>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/eec\/f5c\/563\/eecf5c563fa81e6d17877ab878289eb1.jpg\" alt=\"\u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0433\u043e \u0441\u0442\u0435\u043d\u0434\u0430 (\u0444\u0430\u043d\u0435\u0440\u043d\u0430\u044f \u043f\u043e\u0434\u043b\u043e\u0436\u043a\u0430 0.35\u00d70.35\u043c) \u0441\u00a0\u0443\u0434\u0430\u043b\u0451\u043d\u043d\u044b\u043c \u044d\u0444\u0444\u0435\u043a\u0442\u043e\u043c (undistorted) \u00ab\u0440\u044b\u0431\u0438\u0439 \u0433\u043b\u0430\u0437\u00bb (fisheye); \u0444\u0430\u043d\u0435\u0440\u043d\u0430\u044f \u043f\u043e\u0434\u043b\u043e\u0436\u043a\u0430 \u0441\u00a0\u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0451\u043d\u043d\u044b\u043c\u0438 ArUco \u043c\u0430\u0440\u043a\u0435\u0440\u0430\u043c\u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u043c (), \u0437\u0430\u0434\u0430\u044e\u0449\u0438\u043c \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0432\u00a0\u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0446\u0435\u043d\u0442\u0440\u0430 ArUco \u043c\u0430\u0440\u043a\u0435\u0440\u0430 () \u043d\u0430\u00a0\u0444\u0430\u043d\u0435\u0440\u043d\u043e\u0439 \u043a\u043e\u0440\u043e\u0431\u043a\u0435; \u0446\u0435\u043b\u0435\u0432\u0430\u044f \u043f\u043e\u0437\u0438\u0446\u0438\u044f (0.15; 0.15; -0.208)\" title=\"\u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0433\u043e \u0441\u0442\u0435\u043d\u0434\u0430 (\u0444\u0430\u043d\u0435\u0440\u043d\u0430\u044f \u043f\u043e\u0434\u043b\u043e\u0436\u043a\u0430 0.35\u00d70.35\u043c) \u0441\u00a0\u0443\u0434\u0430\u043b\u0451\u043d\u043d\u044b\u043c \u044d\u0444\u0444\u0435\u043a\u0442\u043e\u043c (undistorted) \u00ab\u0440\u044b\u0431\u0438\u0439 \u0433\u043b\u0430\u0437\u00bb (fisheye); \u0444\u0430\u043d\u0435\u0440\u043d\u0430\u044f \u043f\u043e\u0434\u043b\u043e\u0436\u043a\u0430 \u0441\u00a0\u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0451\u043d\u043d\u044b\u043c\u0438 ArUco \u043c\u0430\u0440\u043a\u0435\u0440\u0430\u043c\u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u043c (), \u0437\u0430\u0434\u0430\u044e\u0449\u0438\u043c \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0432\u00a0\u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0446\u0435\u043d\u0442\u0440\u0430 ArUco \u043c\u0430\u0440\u043a\u0435\u0440\u0430 () \u043d\u0430\u00a0\u0444\u0430\u043d\u0435\u0440\u043d\u043e\u0439 \u043a\u043e\u0440\u043e\u0431\u043a\u0435; \u0446\u0435\u043b\u0435\u0432\u0430\u044f \u043f\u043e\u0437\u0438\u0446\u0438\u044f (0.15; 0.15; -0.208)\" width=\"3840\" height=\"2160\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/eec\/f5c\/563\/eecf5c563fa81e6d17877ab878289eb1.jpg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/eec\/f5c\/563\/eecf5c563fa81e6d17877ab878289eb1.jpg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0433\u043e \u0441\u0442\u0435\u043d\u0434\u0430 (\u0444\u0430\u043d\u0435\u0440\u043d\u0430\u044f \u043f\u043e\u0434\u043b\u043e\u0436\u043a\u0430 0.35\u00d70.35\u043c) \u0441\u00a0\u0443\u0434\u0430\u043b\u0451\u043d\u043d\u044b\u043c \u044d\u0444\u0444\u0435\u043a\u0442\u043e\u043c (undistorted) \u00ab\u0440\u044b\u0431\u0438\u0439 \u0433\u043b\u0430\u0437\u00bb (fisheye); \u0444\u0430\u043d\u0435\u0440\u043d\u0430\u044f \u043f\u043e\u0434\u043b\u043e\u0436\u043a\u0430 \u0441\u00a0\u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0451\u043d\u043d\u044b\u043c\u0438 ArUco \u043c\u0430\u0440\u043a\u0435\u0440\u0430\u043c\u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u043c (<img decoding=\"async\" class=\"formula inline\" source=\"B\" alt=\"B\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/cab\/ed8\/f09\/cabed8f095fbde9551c9d5f9187d7d41.svg\" width=\"12\" height=\"14\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/cab\/ed8\/f09\/cabed8f095fbde9551c9d5f9187d7d41.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/cab\/ed8\/f09\/cabed8f095fbde9551c9d5f9187d7d41.svg 781w\" loading=\"lazy\" decode=\"async\"\/>), \u0437\u0430\u0434\u0430\u044e\u0449\u0438\u043c \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0432\u00a0\u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0446\u0435\u043d\u0442\u0440\u0430 ArUco \u043c\u0430\u0440\u043a\u0435\u0440\u0430 (<img decoding=\"async\" class=\"formula inline\" source=\"A\" alt=\"A\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/0e0\/dc4\/1e8\/0e0dc41e8c9a4f5036042b300f6aa92f.svg\" width=\"12\" height=\"14\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/0e0\/dc4\/1e8\/0e0dc41e8c9a4f5036042b300f6aa92f.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/0e0\/dc4\/1e8\/0e0dc41e8c9a4f5036042b300f6aa92f.svg 781w\" loading=\"lazy\" decode=\"async\"\/>) \u043d\u0430\u00a0\u0444\u0430\u043d\u0435\u0440\u043d\u043e\u0439 \u043a\u043e\u0440\u043e\u0431\u043a\u0435; \u0446\u0435\u043b\u0435\u0432\u0430\u044f \u043f\u043e\u0437\u0438\u0446\u0438\u044f (0.15; 0.15; -0.208)<\/figcaption><\/div>\n<\/figure>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/36f\/1fb\/ab1\/36f1fbab14c345bdff31299d0a65c978.jpg\" alt=\"\u041a\u0440\u0430\u0441\u043d\u0430\u044f \u0442\u043e\u0447\u043a\u0430\u00a0\u2014 \u0433\u043b\u0430\u0432\u043d\u0430\u044f \u0442\u043e\u0447\u043a\u0430 (\u043e\u043f\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0446\u0435\u043d\u0442\u0440 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f); \u00abFixed Z\u00bb\u00a0\u2014 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u00a0\u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0439 \u0434\u043b\u044f\u00a0\u0438\u0441\u043a\u043e\u043c\u043e\u0439 \u0442\u043e\u0447\u043a\u0438 (0.15; 0.154; -0.22); \u00abSolvePnP\u00bb\u00a0\u2014 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u0430  \u0432\u00a0\u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u043e\u0431\u044a\u0435\u043a\u0442\u0430  (0.15; 0.15; -0.208)\" title=\"\u041a\u0440\u0430\u0441\u043d\u0430\u044f \u0442\u043e\u0447\u043a\u0430\u00a0\u2014 \u0433\u043b\u0430\u0432\u043d\u0430\u044f \u0442\u043e\u0447\u043a\u0430 (\u043e\u043f\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0446\u0435\u043d\u0442\u0440 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f); \u00abFixed Z\u00bb\u00a0\u2014 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u00a0\u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0439 \u0434\u043b\u044f\u00a0\u0438\u0441\u043a\u043e\u043c\u043e\u0439 \u0442\u043e\u0447\u043a\u0438 (0.15; 0.154; -0.22); \u00abSolvePnP\u00bb\u00a0\u2014 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u0430  \u0432\u00a0\u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u043e\u0431\u044a\u0435\u043a\u0442\u0430  (0.15; 0.15; -0.208)\" width=\"3840\" height=\"2160\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/36f\/1fb\/ab1\/36f1fbab14c345bdff31299d0a65c978.jpg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/36f\/1fb\/ab1\/36f1fbab14c345bdff31299d0a65c978.jpg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u041a\u0440\u0430\u0441\u043d\u0430\u044f \u0442\u043e\u0447\u043a\u0430\u00a0\u2014 \u0433\u043b\u0430\u0432\u043d\u0430\u044f \u0442\u043e\u0447\u043a\u0430 (\u043e\u043f\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0446\u0435\u043d\u0442\u0440 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f); \u00abFixed Z\u00bb\u00a0\u2014 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u00a0\u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0439 <img decoding=\"async\" class=\"formula inline\" source=\"Z_w\" alt=\"Z_w\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a8a\/4ac\/b5c\/a8a4acb5cb8ac4ecbc9e8f1b19427165.svg\" width=\"20\" height=\"16\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a8a\/4ac\/b5c\/a8a4acb5cb8ac4ecbc9e8f1b19427165.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a8a\/4ac\/b5c\/a8a4acb5cb8ac4ecbc9e8f1b19427165.svg 781w\" loading=\"lazy\" decode=\"async\"\/>\u0434\u043b\u044f\u00a0\u0438\u0441\u043a\u043e\u043c\u043e\u0439 \u0442\u043e\u0447\u043a\u0438 (0.15; 0.154; -0.22); \u00abSolvePnP\u00bb\u00a0\u2014 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 <img decoding=\"async\" class=\"formula inline\" source=\"A\" alt=\"A\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/65f\/c57\/1c1\/65fc571c1accf7276069bb7a9750ab5e.svg\" width=\"12\" height=\"14\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/65f\/c57\/1c1\/65fc571c1accf7276069bb7a9750ab5e.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/65f\/c57\/1c1\/65fc571c1accf7276069bb7a9750ab5e.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0432\u00a0\u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 <img decoding=\"async\" class=\"formula inline\" source=\"B\" alt=\"B\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c07\/4a1\/6ab\/c074a16abea9bb7ed03bf0f2dddefcab.svg\" width=\"12\" height=\"14\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c07\/4a1\/6ab\/c074a16abea9bb7ed03bf0f2dddefcab.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c07\/4a1\/6ab\/c074a16abea9bb7ed03bf0f2dddefcab.svg 781w\" loading=\"lazy\" decode=\"async\"\/> (0.15; 0.15; -0.208)<\/figcaption><\/div>\n<\/figure>\n<p>\u0412\u00a0\u043e\u0431\u043b\u0430\u0441\u0442\u0438 <img decoding=\"async\" class=\"formula inline\" source=\"1\\text{m}  \" alt=\"1\\text{m}  \" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/59d\/d8e\/36d\/59dd8e36d22e0b61ce3ebe0d31f96c9a.svg\" width=\"26\" height=\"16\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/59d\/d8e\/36d\/59dd8e36d22e0b61ce3ebe0d31f96c9a.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/59d\/d8e\/36d\/59dd8e36d22e0b61ce3ebe0d31f96c9a.svg 781w\" loading=\"lazy\" decode=\"async\"\/>, \u043f\u0440\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0435\u0432\u044b\u0441\u043e\u043a\u0430\u044f \u043f\u043e\u0433\u0440\u0435\u0448\u043d\u043e\u0441\u0442\u044c (\u0434\u043e <img decoding=\"async\" class=\"formula inline\" source=\"\\pm1.2\\text{cm}  \" alt=\"\\pm1.2\\text{cm}  \" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f47\/031\/89f\/f4703189f5986fecbfca7acb96dbd87d.svg\" width=\"64\" height=\"16\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f47\/031\/89f\/f4703189f5986fecbfca7acb96dbd87d.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f47\/031\/89f\/f4703189f5986fecbfca7acb96dbd87d.svg 781w\" loading=\"lazy\" decode=\"async\"\/>) \u0441\u00a0\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u0447\u0438 PnP (\u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 IPPE \u043c\u0435\u0442\u043e\u0434\u0430) \u0434\u043b\u044f\u00a0\u043e\u0431\u043e\u0438\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432. \u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u00a0\u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0439 <img decoding=\"async\" class=\"formula inline\" source=\"Z_w\" alt=\"Z_w\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/42a\/c49\/2e9\/42ac492e975cd04f04b77b071ccaa786.svg\" width=\"25\" height=\"20\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/42a\/c49\/2e9\/42ac492e975cd04f04b77b071ccaa786.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/42a\/c49\/2e9\/42ac492e975cd04f04b77b071ccaa786.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0434\u043b\u044f\u00a0\u0438\u0441\u043a\u043e\u043c\u043e\u0439 \u0442\u043e\u0447\u043a\u0438 \u0434\u0430\u0451\u0442 \u0435\u0449\u0451 \u043c\u0435\u043d\u044c\u0448\u0443\u044e \u043f\u043e\u0433\u0440\u0435\u0448\u043d\u043e\u0441\u0442\u044c, \u043d\u043e\u00a0\u0441\u0442\u043e\u0438\u0442 \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c, \u0447\u0442\u043e\u00a0\u043a\u0430\u043a\u00a0\u0440\u0430\u0437 \u0438\u0437\u2011\u0437\u0430 \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e<img decoding=\"async\" class=\"formula inline\" source=\"Z_w\" alt=\"Z_w\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c06\/77c\/a16\/c0677ca16d41dc2d43245d2fda24d676.svg\" width=\"25\" height=\"20\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c06\/77c\/a16\/c0677ca16d41dc2d43245d2fda24d676.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c06\/77c\/a16\/c0677ca16d41dc2d43245d2fda24d676.svg 781w\" loading=\"lazy\" decode=\"async\"\/>\u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u043d\u0435\u00a0\u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u0435\u043d \u0438 \u043d\u0435\u00a0\u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u043d \u043d\u0430\u00a0\u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0432\u044b\u0441\u043e\u0442\u044b \u0442\u043e\u0447\u043a\u0438.<\/p>\n<p>\u042d\u0442\u043e \u0441\u043f\u0440\u0430\u0432\u0435\u0434\u043b\u0438\u0432\u043e \u0438 \u0432\u00a0\u0434\u0440\u0443\u0433\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445:<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/e1a\/32b\/bd1\/e1a32bbd1c6aafab49b90dfdabe4b09b.jpg\" alt=\"\u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u044f \u0440\u043e\u0431\u043e\u0442\u043e\u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0441\u043e\u0440\u0435\u0432\u043d\u043e\u0432\u0430\u043d\u0438\u0439 Eurobot 2025; \u0421\u043e\u0440\u0435\u0432\u043d\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u043f\u043e\u043b\u0435 \u0441 4\u00d74\u00a0ArUco \u043c\u0430\u0440\u043a\u0435\u0440\u0430\u043c\u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u043c (), \u0437\u0430\u0434\u0430\u044e\u0449\u0438\u043c \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0432\u00a0\u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0446\u0435\u043d\u0442\u0440\u0430 3\u00d73\u00a0ArUco \u043c\u0430\u0440\u043a\u0435\u0440\u0430 () \u043d\u0430\u00a0\u0444\u0430\u043d\u0435\u0440\u043d\u043e\u0439 \u043a\u043e\u0440\u043e\u0431\u043a\u0435; \u0446\u0435\u043b\u0435\u0432\u0430\u044f \u043f\u043e\u0437\u0438\u0446\u0438\u044f (1.5; 1.0; -0.45)\" title=\"\u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u044f \u0440\u043e\u0431\u043e\u0442\u043e\u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0441\u043e\u0440\u0435\u0432\u043d\u043e\u0432\u0430\u043d\u0438\u0439 Eurobot 2025; \u0421\u043e\u0440\u0435\u0432\u043d\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u043f\u043e\u043b\u0435 \u0441 4\u00d74\u00a0ArUco \u043c\u0430\u0440\u043a\u0435\u0440\u0430\u043c\u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u043c (), \u0437\u0430\u0434\u0430\u044e\u0449\u0438\u043c \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0432\u00a0\u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0446\u0435\u043d\u0442\u0440\u0430 3\u00d73\u00a0ArUco \u043c\u0430\u0440\u043a\u0435\u0440\u0430 () \u043d\u0430\u00a0\u0444\u0430\u043d\u0435\u0440\u043d\u043e\u0439 \u043a\u043e\u0440\u043e\u0431\u043a\u0435; \u0446\u0435\u043b\u0435\u0432\u0430\u044f \u043f\u043e\u0437\u0438\u0446\u0438\u044f (1.5; 1.0; -0.45)\" width=\"1920\" height=\"1080\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/e1a\/32b\/bd1\/e1a32bbd1c6aafab49b90dfdabe4b09b.jpg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/e1a\/32b\/bd1\/e1a32bbd1c6aafab49b90dfdabe4b09b.jpg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u044f \u0440\u043e\u0431\u043e\u0442\u043e\u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0441\u043e\u0440\u0435\u0432\u043d\u043e\u0432\u0430\u043d\u0438\u0439 Eurobot 2025; \u0421\u043e\u0440\u0435\u0432\u043d\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u043f\u043e\u043b\u0435 \u0441 4\u00d74\u00a0ArUco \u043c\u0430\u0440\u043a\u0435\u0440\u0430\u043c\u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u043c (<img decoding=\"async\" class=\"formula inline\" source=\"B\" alt=\"B\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/901\/6cf\/33e\/9016cf33e7fe51cf495579abdf88737d.svg\" width=\"12\" height=\"14\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/901\/6cf\/33e\/9016cf33e7fe51cf495579abdf88737d.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/901\/6cf\/33e\/9016cf33e7fe51cf495579abdf88737d.svg 781w\" loading=\"lazy\" decode=\"async\"\/>), \u0437\u0430\u0434\u0430\u044e\u0449\u0438\u043c \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0432\u00a0\u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0446\u0435\u043d\u0442\u0440\u0430 3\u00d73\u00a0ArUco \u043c\u0430\u0440\u043a\u0435\u0440\u0430 (<img decoding=\"async\" class=\"formula inline\" source=\"A\" alt=\"A\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/013\/827\/87a\/01382787a63b681b40dbfea904a1ddc1.svg\" width=\"12\" height=\"14\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/013\/827\/87a\/01382787a63b681b40dbfea904a1ddc1.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/013\/827\/87a\/01382787a63b681b40dbfea904a1ddc1.svg 781w\" loading=\"lazy\" decode=\"async\"\/>) \u043d\u0430\u00a0\u0444\u0430\u043d\u0435\u0440\u043d\u043e\u0439 \u043a\u043e\u0440\u043e\u0431\u043a\u0435; \u0446\u0435\u043b\u0435\u0432\u0430\u044f \u043f\u043e\u0437\u0438\u0446\u0438\u044f (1.5; 1.0; -0.45)<\/figcaption><\/div>\n<\/figure>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/c39\/8b8\/541\/c398b85417906440ecd5ad9c6d982388.jpg\" alt=\"\u041a\u0440\u0430\u0441\u043d\u0430\u044f \u0442\u043e\u0447\u043a\u0430\u00a0\u2014 \u0433\u043b\u0430\u0432\u043d\u0430\u044f \u0442\u043e\u0447\u043a\u0430 (\u043e\u043f\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0446\u0435\u043d\u0442\u0440 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f); \u00abFixed Z\u00bb\u00a0\u2014 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u00a0\u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0439  \u0434\u043b\u044f\u00a0\u0438\u0441\u043a\u043e\u043c\u043e\u0439 \u0442\u043e\u0447\u043a\u0438 (1.492; 0.982; -0.409); \u00abSolvePnP\u00bb\u00a0\u2014 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u0430  \u0432\u00a0\u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 (1.5; 1.01; -0.45)\" title=\"\u041a\u0440\u0430\u0441\u043d\u0430\u044f \u0442\u043e\u0447\u043a\u0430\u00a0\u2014 \u0433\u043b\u0430\u0432\u043d\u0430\u044f \u0442\u043e\u0447\u043a\u0430 (\u043e\u043f\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0446\u0435\u043d\u0442\u0440 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f); \u00abFixed Z\u00bb\u00a0\u2014 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u00a0\u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0439  \u0434\u043b\u044f\u00a0\u0438\u0441\u043a\u043e\u043c\u043e\u0439 \u0442\u043e\u0447\u043a\u0438 (1.492; 0.982; -0.409); \u00abSolvePnP\u00bb\u00a0\u2014 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u0430  \u0432\u00a0\u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 (1.5; 1.01; -0.45)\" width=\"1920\" height=\"1080\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/c39\/8b8\/541\/c398b85417906440ecd5ad9c6d982388.jpg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/c39\/8b8\/541\/c398b85417906440ecd5ad9c6d982388.jpg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u041a\u0440\u0430\u0441\u043d\u0430\u044f \u0442\u043e\u0447\u043a\u0430\u00a0\u2014 \u0433\u043b\u0430\u0432\u043d\u0430\u044f \u0442\u043e\u0447\u043a\u0430 (\u043e\u043f\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0446\u0435\u043d\u0442\u0440 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f); \u00abFixed Z\u00bb\u00a0\u2014 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u00a0\u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0439 <img decoding=\"async\" class=\"formula inline\" source=\"Z_w\" alt=\"Z_w\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/396\/599\/55b\/39659955b8f61051e44dc93530a07b1f.svg\" width=\"20\" height=\"16\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/396\/599\/55b\/39659955b8f61051e44dc93530a07b1f.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/396\/599\/55b\/39659955b8f61051e44dc93530a07b1f.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0434\u043b\u044f\u00a0\u0438\u0441\u043a\u043e\u043c\u043e\u0439 \u0442\u043e\u0447\u043a\u0438 (1.492; 0.982; -0.409); \u00abSolvePnP\u00bb\u00a0\u2014 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 <img decoding=\"async\" class=\"formula inline\" source=\"A\" alt=\"A\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/d08\/457\/8ab\/d084578abbba651ddc3f4e4c1f4bd64c.svg\" width=\"12\" height=\"14\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/d08\/457\/8ab\/d084578abbba651ddc3f4e4c1f4bd64c.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/d08\/457\/8ab\/d084578abbba651ddc3f4e4c1f4bd64c.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0432\u00a0\u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 <img decoding=\"async\" class=\"formula inline\" source=\"B\" alt=\"B\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/443\/ad3\/492\/443ad3492b5ecde9941c05008a768668.svg\" width=\"12\" height=\"14\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/443\/ad3\/492\/443ad3492b5ecde9941c05008a768668.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/443\/ad3\/492\/443ad3492b5ecde9941c05008a768668.svg 781w\" loading=\"lazy\" decode=\"async\"\/>(1.5; 1.01; -0.45)<\/figcaption><\/div>\n<\/figure>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/03c\/26e\/907\/03c26e9078fb4660b61f678614745a71.jpg\" alt=\"\u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0441 \u043a\u0430\u043c\u0435\u0440\u044b \u0431\u0435\u0437\u00a0\u044d\u0444\u0444\u0435\u043a\u0442\u0430 \u00ab\u0440\u044b\u0431\u0438\u0439 \u0433\u043b\u0430\u0437\u00bb; \u043d\u0430\u00a0\u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u0430  \u0432\u00a0\u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \" title=\"\u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0441 \u043a\u0430\u043c\u0435\u0440\u044b \u0431\u0435\u0437\u00a0\u044d\u0444\u0444\u0435\u043a\u0442\u0430 \u00ab\u0440\u044b\u0431\u0438\u0439 \u0433\u043b\u0430\u0437\u00bb; \u043d\u0430\u00a0\u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u0430  \u0432\u00a0\u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \" width=\"1920\" height=\"1080\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/03c\/26e\/907\/03c26e9078fb4660b61f678614745a71.jpg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/03c\/26e\/907\/03c26e9078fb4660b61f678614745a71.jpg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0441\u00a0\u043a\u0430\u043c\u0435\u0440\u044b \u0431\u0435\u0437\u00a0\u044d\u0444\u0444\u0435\u043a\u0442\u0430 \u00ab\u0440\u044b\u0431\u0438\u0439 \u0433\u043b\u0430\u0437\u00bb; \u043d\u0430\u00a0\u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 <img decoding=\"async\" class=\"formula inline\" source=\"A\" alt=\"A\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/3e1\/3df\/5d5\/3e13df5d5f206d2d40fe7e0a27d7d0c6.svg\" width=\"12\" height=\"14\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/3e1\/3df\/5d5\/3e13df5d5f206d2d40fe7e0a27d7d0c6.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/3e1\/3df\/5d5\/3e13df5d5f206d2d40fe7e0a27d7d0c6.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0432\u00a0\u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 <img decoding=\"async\" class=\"formula inline\" source=\"B\" alt=\"B\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/15b\/d78\/22f\/15bd7822fd18524f4411e30b15d73737.svg\" width=\"12\" height=\"14\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/15b\/d78\/22f\/15bd7822fd18524f4411e30b15d73737.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/15b\/d78\/22f\/15bd7822fd18524f4411e30b15d73737.svg 781w\" loading=\"lazy\" decode=\"async\"\/><\/figcaption><\/div>\n<\/figure>\n<\/div>\n<\/details>\n<h2>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h2>\n<p>\u0412\u00a0\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043c\u044b \u043d\u0430\u0443\u0447\u0438\u043b\u0438\u0441\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u043f\u043e\u00a0\u043a\u0430\u043c\u0435\u0440\u0435. <a href=\"https:\/\/github.com\/lb357\/opencv-3d-localization\" rel=\"noopener noreferrer nofollow\">\u0412\u0435\u0441\u044c \u043a\u043e\u0434, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 \u0434\u043b\u044f\u00a0\u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0438 \u0441\u0442\u0430\u0442\u044c\u0438 \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d \u043d\u0430\u00a0GitHub.<\/a> \u041d\u043e\u00a0\u043d\u0435\u0442 \u043f\u0440\u0435\u0434\u0435\u043b\u0430 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u0441\u0442\u0432\u0443! <\/p>\n<p>\u041f\u043e\u00a0\u0442\u0435\u043c\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0443\u0447\u0435\u0431\u043d\u043e\u0433\u043e \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430 (\u0432 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u00a0\u0444\u043e\u0442\u043e\u0433\u0440\u0430\u043c\u043c\u0435\u0442\u0440\u0438\u0438), \u0430\u00a0\u0442\u0430\u043a\u0436\u0435 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u043c\u043e\u0433\u0443\u0442 \u0443\u043b\u0443\u0447\u0448\u0438\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/articles\/130300\/\" rel=\"noopener noreferrer nofollow\">\u0421\u0442\u0435\u0440\u0435\u043e\u0441\u044a\u0451\u043c\u043a\u0430, \u0441\u0442\u0435\u0440\u0435\u043e\u0437\u0440\u0435\u043d\u0438\u0435, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043a\u0430\u043c\u0435\u0440<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/companies\/yandex\/articles\/886316\/\" rel=\"noopener noreferrer nofollow\">\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0435\u0439\u0440\u043e\u0441\u0435\u0442\u0435\u0439, \u0438\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u043b\u043b\u0435\u043a\u0442\u0430, \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0433\u043e \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/cyberleninka.ru\/article\/n\/metod-prostranstvennoy-lokalizatsii-staticheskih-obektov-po-dannym-datchika-glubiny-i-rgb-kamery\" rel=\"noopener noreferrer nofollow\">\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0434\u0430\u0442\u0447\u0438\u043a\u043e\u0432 \u0433\u043b\u0443\u0431\u0438\u043d\u044b, RGBD \u043a\u0430\u043c\u0435\u0440, \u0438\u043d\u0444\u0440\u0430\u043a\u0440\u0430\u0441\u043d\u043e\u0433\u043e \u0438\u0437\u043b\u0443\u0447\u0435\u043d\u0438\u044f<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.youtube.com\/watch?v=0JGC5hZYCVE\" rel=\"noopener noreferrer nofollow\">\u041b\u0435\u043a\u0446\u0438\u044f \u043e \u0437\u0430\u0434\u0430\u0447\u0435 PnP \u043f\u0440\u043e\u0444\u0435\u0441\u0441\u043e\u0440\u0430 \u0421\u0442\u0438\u0432\u0435\u043d\u0430 \u041c. \u041b\u0430\u0412\u0430\u043b\u043b\u044f<\/a><\/p>\n<\/li>\n<\/ul>\n<p><em>\u0421\u043f\u0430\u0441\u0438\u0431\u043e \u0437\u0430\u00a0\u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435!<\/em><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/941842\/\"> https:\/\/habr.com\/ru\/articles\/941842\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440!<\/p>\n<p>\u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u0411\u0440\u0438\u0441\u043a\u0438\u043d\u0434\u043e\u0432 \u041b\u0435\u043e\u043d\u0438\u0434, \u044f \u0448\u043a\u043e\u043b\u044c\u043d\u0438\u043a, \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a \u0441\u043e\u0440\u0435\u0432\u043d\u043e\u0432\u0430\u043d\u0438\u0439 \u0438 \u043e\u043b\u0438\u043c\u043f\u0438\u0430\u0434 \u043f\u043e\u00a0\u0440\u043e\u0431\u043e\u0442\u043e\u0442\u0435\u0445\u043d\u0438\u043a\u0435 \u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e. \u041d\u0435\u0440\u0435\u0434\u043a\u043e \u0434\u043b\u044f\u00a0\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u0447 \u0442\u0430\u043a\u0438\u0445 \u043e\u043b\u0438\u043c\u043f\u0438\u0430\u0434 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0434\u043e\u0441\u0442\u0443\u043f \u043a\u00a0\u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u043a\u0430\u043c\u0435\u0440\u0435, \u0441\u043d\u0438\u043c\u0430\u044e\u0449\u0435\u0439 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0435 \u043f\u043e\u043b\u0435, \u043d\u0430\u00a0\u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u044b \u0440\u043e\u0431\u043e\u0442\u044b. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0437\u0430\u0434\u0430\u0447\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0432\u00a0\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435 \u043f\u043e\u00a0\u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044e, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u043c\u0443 \u0441\u00a0\u043a\u0430\u043c\u0435\u0440\u044b. \u0412\u00a0\u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u0438 \u0440\u0430\u0437\u0431\u0435\u0440\u0451\u043c, \u043a\u0430\u043a\u00a0\u0440\u0435\u0448\u0430\u0442\u044c \u0442\u0430\u043a\u0443\u044e \u0437\u0430\u0434\u0430\u0447\u0443, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 OpenCV.<\/p>\n<figure class=\"full-width\"><\/figure>\n<p>OpenCV\u00a0\u2014 \u043a\u0440\u043e\u0441\u0441\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u0430\u044f open\u2011source \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0434\u043b\u044f\u00a0\u0440\u0430\u0431\u043e\u0442\u044b \u0441\u00a0\u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430\u043c\u0438 \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0433\u043e \u0437\u0440\u0435\u043d\u0438\u044f. \u0414\u0430\u043d\u043d\u0430\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u044f\u0437\u044b\u043a\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f (Python, C++, Java \u0438 \u0434\u0440\u0443\u0433\u0438\u0435). \u0421\u0442\u0430\u0442\u044c\u044f \u0431\u0443\u0434\u0435\u0442 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u0430 \u0434\u043b\u044f\u00a0\u043b\u044e\u0431\u043e\u0433\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043e\u0434\u043d\u0430\u043a\u043e \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u043a\u043e\u0434 \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u043d\u0430\u00a0Python \u0432\u00a0\u0441\u0432\u044f\u0437\u043a\u0435 \u0441\u00a0\u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u043e\u0439 NumPy. <\/p>\n<p><em>\u041f\u0435\u0440\u0435\u0434 \u043d\u0430\u0447\u0430\u043b\u043e\u043c \u043e\u0442\u043c\u0435\u0447\u0443, \u0447\u0442\u043e\u00a0\u0434\u0430\u043b\u0435\u0435 \u0431\u0443\u0434\u0443\u0442 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0442\u044c\u0441\u044f \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430\u00a0\u0441\u0442\u0430\u0442\u044c\u0438 <\/em><a href=\"https:\/\/habr.com\/ru\/users\/Ilya12c\/\" rel=\"noopener noreferrer nofollow\"><em>@Ilya12c<\/em><\/a><em>, \u0432\u00a0\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043e\u043d \u043f\u043e\u0432\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043e\u00a0\u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0430\u0441\u043f\u0435\u043a\u0442\u0430\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e. \u041e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u0435\u043c\u0443 \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u00a0\u043e\u0442\u043b\u0438\u0447\u043d\u044b\u0439 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b!<\/em><\/p>\n<h2>\u041e\u0433\u043b\u0430\u0432\u043b\u0435\u043d\u0438\u0435<\/h2>\n<ol>\n<li>\n<p>\u041a\u0440\u0430\u0442\u043a\u0430\u044f \u043f\u0430\u043c\u044f\u0442\u043a\u0430 \u043f\u043e\u00a0\u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0439 \u0430\u043b\u0433\u0435\u0431\u0440\u0435<\/p>\n<ol>\n<li>\n<p>\u0421\u043a\u0430\u043b\u044f\u0440<\/p>\n<\/li>\n<li>\n<p>\u041c\u0430\u0442\u0440\u0438\u0446\u0430<\/p>\n<\/li>\n<li>\n<p>\u0412\u0435\u043a\u0442\u043e\u0440<\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u0438 \u0441\u043a\u0430\u043b\u044f\u0440\u0430 (\u0447\u0438\u0441\u043b\u0430)<\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u0438 \u043c\u0430\u0442\u0440\u0438\u0446\u044b<\/p>\n<\/li>\n<li>\n<p>\u041d\u0430\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0439 \u043c\u0430\u0442\u0440\u0438\u0446\u044b<\/p>\n<\/li>\n<li>\n<p>\u041e\u0434\u043d\u043e\u0440\u043e\u0434\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442<\/p>\n<\/li>\n<\/ol>\n<\/li>\n<li>\n<p>\u0424\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f<\/p>\n<ol>\n<li>\n<p>\u041a\u0430\u043c\u0435\u0440\u0430\u2011\u043e\u0431\u0441\u043a\u0443\u0440\u0430<\/p>\n<\/li>\n<\/ol>\n<\/li>\n<li>\n<p>\u041c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0430 \u043a\u0430\u043c\u0435\u0440\u044b<\/p>\n<ol>\n<li>\n<p>\u0412\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f (\u0444\u0440\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u0430\u044f) \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u044c<\/p>\n<\/li>\n<li>\n<p>\u0421\u0438\u0441\u0442\u0435\u043c\u044b \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0438 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u043d\u044b\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430<\/p>\n<\/li>\n<li>\n<p>\u0412\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043a\u0430\u043c\u0435\u0440\u044b \u0438 \u043a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u043a\u0430<\/p>\n<\/li>\n<li>\n<p>\u041c\u043e\u0434\u0435\u043b\u044c \u043a\u0430\u043c\u0435\u0440\u044b\u2011\u043e\u0431\u0441\u043a\u0443\u0440\u044b<\/p>\n<\/li>\n<li>\n<p>\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 (\u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438)<\/p>\n<\/li>\n<li>\n<p>\u0417\u0430\u0434\u0430\u0447\u0430 Perspective\u2011n\u2011Point (PnP)<\/p>\n<\/li>\n<\/ol>\n<\/li>\n<li>\n<p>\u041d\u0430\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0432\u00a0\u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u043a\u0430\u043c\u0435\u0440\u044b<\/p>\n<\/li>\n<li>\n<p>\u0427\u0430\u0441\u0442\u043d\u044b\u0435 \u0441\u043b\u0443\u0447\u0430\u0438 \u0437\u0430\u0434\u0430\u0447\u0438<\/p>\n<ol>\n<li>\n<p>\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0442\u043e\u0447\u043a\u0438, \u043f\u0440\u0438\u00a0\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e\u0439 Zc<\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u00a0\u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0439 Zw \u0434\u043b\u044f\u00a0\u0438\u0441\u043a\u043e\u043c\u043e\u0439 \u0442\u043e\u0447\u043a\u0438<\/p>\n<\/li>\n<li>\n<p>\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 A \u0432\u00a0\u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 B<\/p>\n<\/li>\n<li>\n<p>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0447\u0430\u0441\u0442\u043d\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u0435\u0432<\/p>\n<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<h2>\u041a\u0440\u0430\u0442\u043a\u0430\u044f \u043f\u0430\u043c\u044f\u0442\u043a\u0430 \u043f\u043e \u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0439 \u0430\u043b\u0433\u0435\u0431\u0440\u0435<\/h2>\n<p>\u0414\u043b\u044f\u00a0\u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u043d\u0438\u0436\u0435\u0438\u0437\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0433\u043e \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043e\u00a0\u0431\u0430\u0437\u043e\u0432\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u0445\u00a0\u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0439 \u0430\u043b\u0433\u0435\u0431\u0440\u044b. \u041e\u0431\u044b\u0447\u043d\u043e \u044d\u0442\u043e\u0442 \u043f\u0440\u0435\u0434\u043c\u0435\u0442 \u0438\u0437\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0432 <abbr class=\"habraabbr\" title=\"\u0412\u044b\u0441\u0448\u0438\u0445 \u0443\u0447\u0435\u0431\u043d\u044b\u0445 \u0437\u0430\u0432\u0435\u0434\u0435\u043d\u0438\u044f\u0445\" data-title=\"&lt;p&gt;\u0412\u044b\u0441\u0448\u0438\u0445 \u0443\u0447\u0435\u0431\u043d\u044b\u0445 \u0437\u0430\u0432\u0435\u0434\u0435\u043d\u0438\u044f\u0445&lt;\/p&gt;&lt;p&gt;&lt;\/p&gt;\" data-abbr=\"\u0412\u0423\u0417\">lt;\/p&gt;&lt;p&gt;&lt;\/p&gt;&#187; data-abbr=&#187;\u0412\u0423\u0417&#187;>\u0412\u0423\u0417\u0430\u0445<\/abbr> \u0438 \u043a\u043e\u043b\u043b\u0435\u0434\u0436\u0430\u0445, \u0442\u0430\u043a \u0447\u0442\u043e\u00a0\u0435\u0441\u043b\u0438 \u0432\u044b \u0443\u0436\u0435 \u0432\u043b\u0430\u0434\u0435\u0435\u0442\u0435 \u0434\u0430\u043d\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439, \u0442\u043e \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442\u044c \u043a\u00a0\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c\u0443 \u0440\u0430\u0437\u0434\u0435\u043b\u0443.<\/p>\n<p>\u0412\u00a0\u0434\u0430\u043d\u043d\u043e\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e\u00a0\u0440\u0430\u0431\u043e\u0442\u0435 \u0441\u00a0\u043c\u0430\u0442\u0440\u0438\u0446\u0430\u043c\u0438 \u0438 \u0432\u0435\u043a\u0442\u043e\u0440\u0430\u043c\u0438 \u0432\u00a0\u0443\u043f\u0440\u043e\u0449\u0451\u043d\u043d\u043e\u0439 \u0444\u043e\u0440\u043c\u0435.\u00a0\u041b\u0438\u043d\u0435\u0439\u043d\u0443\u044e \u0430\u043b\u0433\u0435\u0431\u0440\u0443 \u043d\u0435\u00a0\u0432\u044b\u0443\u0447\u0438\u0442\u044c \u043f\u043e\u00a0\u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u043a\u0435 \u0432\u00a0\u0441\u0442\u0430\u0442\u044c\u0435 \u043d\u0430\u00a0\u0425\u0430\u0431\u0440\u0435, \u043d\u043e\u00a0\u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b \u043d\u0430\u043c \u043f\u0440\u0438\u0433\u043e\u0434\u044f\u0442\u0441\u044f \u0432\u00a0\u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043c\u043e\u0436\u043d\u043e \u0443\u0437\u043d\u0430\u0442\u044c \u0432\u00a0\u0443\u0447\u0435\u0431\u043d\u0438\u043a\u0430\u0445 \u043f\u043e\u00a0\u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0439 \u0430\u043b\u0433\u0435\u0431\u0440\u0435, \u0430\u00a0\u0442\u0430\u043a\u0436\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u0441\u0435\u0440\u0438\u044e \u0440\u043e\u043b\u0438\u043a\u043e\u0432 \u043f\u043e\u00a0\u043e\u0441\u043d\u043e\u0432\u0430\u043c\u00a0\u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0439 \u0430\u043b\u0433\u0435\u0431\u0440\u044b \u043e\u0442 <a href=\"https:\/\/www.youtube.com\/watch?v=fNk%5C_zzaMoSs&amp;list=PLZHQObOWTQDPD3MizzM2xVFitgF8hE%5C_ab\" rel=\"noopener noreferrer nofollow\">3Blue1Brown<\/a>.<\/p>\n<h3>\u0421\u043a\u0430\u043b\u044f\u0440<\/h3>\n<p><strong>\u0421\u043a\u0430\u043b\u044f\u0440 <\/strong>\u2014 \u044d\u0442\u043e \u0432\u0435\u043b\u0438\u0447\u0438\u043d\u0430, \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0437\u0443\u044e\u0449\u0430\u044f\u0441\u044f \u043e\u0434\u043d\u0438\u043c \u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c:<\/p>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<h3>\u041c\u0430\u0442\u0440\u0438\u0446\u0430<\/h3>\n<p><strong>\u041c\u0430\u0442\u0440\u0438\u0446\u0430 <\/strong>\u2014 \u044d\u0442\u043e \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043e\u0431\u044a\u0435\u043a\u0442, \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c\u044b\u0439 \u0432\u00a0\u0432\u0438\u0434\u0435 \u043f\u0440\u044f\u043c\u043e\u0443\u0433\u043e\u043b\u044c\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0447\u0438\u0441\u0435\u043b (\u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0442\u0440\u043e\u043a \u0438 \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432 \u0437\u0430\u0434\u0430\u0451\u0442 \u0440\u0430\u0437\u043c\u0435\u0440 \u0442\u0430\u0431\u043b\u0438\u0446\u044b\u00a0\u2014), \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0449\u0438\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430:<\/p>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<p>\u041c\u0430\u0442\u0440\u0438\u0446\u044b \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u0435 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430. <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%9F%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B8%D0%B2%D0%BD%D0%BE%D0%B5%5C_%D0%BF%D1%80%D0%B5%D0%BE%D0%B1%D1%80%D0%B0%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5\" rel=\"noopener noreferrer nofollow\">\u041f\u0440\u043e\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0435 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435<\/a>\u00a0\u2014 \u0432\u0437\u0430\u0438\u043c\u043d\u043e\u2011\u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u043e\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 \u043d\u0430\u00a0\u0441\u0435\u0431\u044f, \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044e\u0449\u0435\u0435 \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u043f\u043e\u0440\u044f\u0434\u043a\u0430 \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e \u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u0432\u0441\u0435\u0445 \u043f\u043e\u0434\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432. \u0423\u043f\u0440\u043e\u0449\u0430\u044f, \u044d\u0442\u043e \u0442\u0430\u043a\u0438\u0435 \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430, \u043f\u043e\u0441\u043b\u0435 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043b\u044e\u0431\u044b\u0435 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u043f\u0440\u044f\u043c\u044b\u0435 \u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f \u043f\u0440\u044f\u043c\u044b\u043c\u0438. \u0412\u00a0\u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0431\u0443\u0434\u0435\u043c \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%90%D1%84%D1%84%D0%B8%D0%BD%D0%BD%D0%BE%D0%B5%5C_%D0%BF%D1%80%D0%B5%D0%BE%D0%B1%D1%80%D0%B0%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5\" rel=\"noopener noreferrer nofollow\">\u0430\u0444\u0438\u043d\u043d\u044b\u0435<\/a> \u0438 <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%9B%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D0%BE%D0%B5%5C_%D0%BE%D1%82%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5\" rel=\"noopener noreferrer nofollow\">\u043b\u0438\u043d\u0435\u0439\u043d\u044b\u0435 <\/a>\u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f.<\/p>\n<p>\u041d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0451\u043d\u043d\u044b\u0435 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f: \u043c\u0430\u0442\u0440\u0438\u0446\u0435\u0439 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043c\u0430\u0442\u0440\u0438\u0446\u0435\u0439 \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u0430 \u0438 \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u043c \u0441\u0434\u0432\u0438\u0433\u0430 (\u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u044f)\u00a0\u2014 \u0441\u043c. <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%9C%D0%B0%D1%82%D1%80%D0%B8%D1%86%D0%B0%5C_%D0%BF%D0%B5%D1%80%D0%B5%D1%85%D0%BE%D0%B4%D0%B0\" rel=\"noopener noreferrer nofollow\">\u0432\u0438\u043a\u0438<\/a> \u043f\u043e\u00a0\u043c\u0430\u0442\u0440\u0438\u0446\u0430\u043c \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430.<\/p>\n<p>\u0414\u043b\u044f\u00a0\u043a\u0432\u0430\u0434\u0440\u0430\u0442\u043d\u044b\u0445 (m=n) \u043c\u0430\u0442\u0440\u0438\u0446 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0441\u043a\u0430\u043b\u044f\u0440\u043d\u0430\u044f \u0432\u0435\u043b\u0438\u0447\u0438\u043d\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0437\u0443\u0435\u0442 \u0441\u0430\u043c\u0443 \u043c\u0430\u0442\u0440\u0438\u0446\u0443 \u0438 \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u0440\u0430\u0441\u0442\u044f\u0436\u0435\u043d\u0438\u0435\/\u0441\u0436\u0430\u0442\u0438\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430, \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c\u043e\u0435 \u0435\u0439\u00a0\u2014 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c (\u0434\u0435\u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043d\u0442): <\/p>\n<p>\u0414\u0435\u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043d\u0442 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u043f\u043e\u00a0\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u043c \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u043c, \u043d\u043e\u00a0\u0432\u00a0\u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438, \u0435\u0433\u043e \u0431\u0443\u0434\u0435\u043c \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 NumPy:<\/p>\n<pre><code class=\"python\">np.linalg.det(a)    # a - \u043c\u0430\u0442\u0440\u0438\u0446\u0430, \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u0430\u044f \u0432 \u043c\u0430\u0441\u0441\u0438\u0432<\/code><\/pre>\n<h3>\u0412\u0435\u043a\u0442\u043e\u0440<\/h3>\n<p><strong>\u0412\u0435\u043a\u0442\u043e\u0440 <\/strong>\u2014 \u044d\u0442\u043e \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043e\u0431\u044a\u0435\u043a\u0442, \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0437\u0443\u044e\u0449\u0438\u0439\u0441\u044f \u0432\u0435\u043b\u0438\u0447\u0438\u043d\u043e\u0439 \u0438 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c. \u0412\u0435\u043a\u0442\u043e\u0440 \u0432\u00a0n\u2011\u043c\u0435\u0440\u043d\u043e\u043c \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435 \u043c\u043e\u0436\u0435\u0442\u00a0\u0431\u044b\u0442\u044c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u043c\u0438 \u0438\u043b\u0438\u00a0\u043c\u0430\u0442\u0440\u0438\u0446\u0435\u0439, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0435\u0439 \u043e\u0434\u0438\u043d \u0441\u0442\u043e\u043b\u0431\u0435\u0446\/\u0441\u0442\u0440\u043e\u043a\u0443:<\/p>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<p>\u0412\u0435\u043a\u0442\u043e\u0440, \u043a\u0430\u043a\u00a0\u043c\u0430\u0442\u0440\u0438\u0446\u0430, \u043c\u043e\u0436\u0435\u0442 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f, \u0430\u00a0\u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0442\u043e\u0447\u043a\u0438 \u0432\u00a0\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435. \u041a\u0430\u043a\u00a0\u043e\u0442\u043c\u0435\u0447\u0430\u043b\u043e\u0441\u044c \u0432\u044b\u0448\u0435 \u043f\u043e\u0432\u043e\u0440\u043e\u0442 \u043c\u043e\u0436\u0435\u0442\u00a0\u0431\u044b\u0442\u044c \u043e\u043f\u0438\u0441\u0430\u043d (\u043a\u0432\u0430\u0434\u0440\u0430\u0442\u043d\u043e\u0439) \u043c\u0430\u0442\u0440\u0438\u0446\u0435\u0439, \u043e\u0434\u043d\u0430\u043a\u043e \u0432\u00a0\u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u0442\u0430\u043a\u0436\u0435 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0442\u0435\u0440\u043c\u0438\u043d \u00ab\u0432\u0435\u043a\u0442\u043e\u0440 \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u0430\u00bb, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 \u0432 <a href=\"https:\/\/docs.opencv.org\/4.12.0\/d9\/d0c\/group%5C_%5C_calib3d.html#ga61585db663d9da06b68e70cfbf6a1eac\" rel=\"noopener noreferrer nofollow\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 OpenCV<\/a>, <abbr class=\"habraabbr\" title=\"\u041d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432 \u0444\u043e\u0440\u043c\u0443\u043b\u0435 \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u0430 \u0420\u043e\u0434\u0440\u0438\u0433\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u043e\u0441\u0438 \u0438 \u0443\u0433\u043e\u043b \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u0430.\" data-title=\"&lt;p&gt;\u041d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432 \u0444\u043e\u0440\u043c\u0443\u043b\u0435 \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u0430 \u0420\u043e\u0434\u0440\u0438\u0433\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u043e\u0441\u0438 \u0438 \u0443\u0433\u043e\u043b \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u0430.&lt;\/p&gt;&lt;p&gt;&lt;\/p&gt;\" data-abbr=\"\u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0439\">\u0430 \u0420\u043e\u0434\u0440\u0438\u0433\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u043e\u0441\u0438 \u0438 \u0443\u0433\u043e\u043b \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u0430.&lt;\/p&gt;&lt;p&gt;&lt;\/p&gt;&#187; data-abbr=&#187;\u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0439&#187;>\u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0439<\/abbr> \u0441 <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%A4%D0%BE%D1%80%D0%BC%D1%83%D0%BB%D0%B0%5C_%D0%BF%D0%BE%D0%B2%D0%BE%D1%80%D0%BE%D1%82%D0%B0%5C_%D0%A0%D0%BE%D0%B4%D1%80%D0%B8%D0%B3%D0%B0\" rel=\"noopener noreferrer nofollow\">\u0444\u043e\u0440\u043c\u0443\u043b\u043e\u0439 \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u0430 \u0420\u043e\u0434\u0440\u0438\u0433\u0430<\/a>, \u0438 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0449\u0438\u0439 \u0431\u043e\u043b\u0435\u0435 \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u043e\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u0430 \u0432\u00a0\u0432\u0438\u0434\u0435 \u0432\u0435\u043a\u0442\u043e\u0440\u0430. \u0414\u043b\u044f\u00a0\u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0430 \u0432\u0435\u043a\u0442\u043e\u0440\u0430 \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u0430 \u0432\u00a0\u043c\u0430\u0442\u0440\u0438\u0446\u0443 \u0432\u0440\u0430\u0449\u0435\u043d\u0438\u044f (\u0438 \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442) \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043c\u0435\u0442\u043e\u0434 OpenCV:<\/p>\n<pre><code class=\"python\">cv2.Rodrigues(src) # src - \u0432\u0435\u043a\u0442\u043e\u0440\/\u043c\u0430\u0442\u0440\u0438\u0446\u0430 \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u0430, \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u0430\u044f \u0432 \u043c\u0430\u0441\u0441\u0438\u0432<\/code><\/pre>\n<p><strong>\u0414\u0430\u043b\u0435\u0435 \u0440\u0430\u0437\u0431\u0435\u0440\u0451\u043c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437\u00a0\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 <\/strong><em>(\u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u044f\u0442\u0441\u044f \u0432\u00a0\u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435)<\/em> \u043d\u0430\u0434 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c\u0438 \u0438 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u043d\u0438 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442.<\/p>\n<h3>\u041f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u0438 \u0441\u043a\u0430\u043b\u044f\u0440\u0430 (\u0447\u0438\u0441\u043b\u0430)<\/h3>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<p>\u0422\u0430\u043a\u043e\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0440\u0430\u0432\u043d\u043e\u043c\u0435\u0440\u043d\u043e\u0435 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435.<\/p>\n<h3>\u041f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u0438 \u043c\u0430\u0442\u0440\u0438\u0446\u044b <\/h3>\n<p>\u0414\u0440\u0443\u0433\u0438\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438 \u043a\u0430\u0436\u0434\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0434\u0432\u0443\u0445 \u043c\u0430\u0442\u0440\u0438\u0446 \u0440\u0430\u0432\u0435\u043d \u0441\u0443\u043c\u043c\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0439 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 i\u2011\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u043f\u0435\u0440\u0432\u043e\u0439 \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u0438 j\u2011\u0433\u043e \u0441\u0442\u043e\u043b\u0431\u0446\u0430 \u0432\u0442\u043e\u0440\u043e\u0439 \u043c\u0430\u0442\u0440\u0438\u0446\u044b.<\/p>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<p>\u041f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432\u0435\u043a\u0442\u043e\u0440\u0430 \u0438 \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 <strong>\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f<\/strong>, \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c\u043e\u0433\u043e \u043c\u0430\u0442\u0440\u0438\u0446\u0435\u0439, \u043a\u00a0\u0432\u0435\u043a\u0442\u043e\u0440\u0443. \u041f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u0438 \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u044e (\u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435) \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0439 \u044d\u0442\u0438\u0445 \u043c\u0430\u0442\u0440\u0438\u0446.<\/p>\n<p>\u0412\u00a0\u043a\u043e\u0434\u0435 \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u044f \u0438\u0437\u00a0\u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 NumPy:<\/p>\n<pre><code class=\"python\">np.dot(a, b)    # a, b - \u043c\u0430\u0442\u0440\u0438\u0446\u044b, \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u0432 \u043c\u0430\u0441\u0441\u0438\u0432<\/code><\/pre>\n<h3>\u041d\u0430\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0439 \u043c\u0430\u0442\u0440\u0438\u0446\u044b<\/h3>\n<p><strong>\u041e\u0431\u0440\u0430\u0442\u043d\u0430\u044f \u043c\u0430\u0442\u0440\u0438\u0446\u0430<\/strong>\u00a0\u2014 \u044d\u0442\u043e \u0442\u0430\u043a\u0430\u044f \u043c\u0430\u0442\u0440\u0438\u0446\u0430, \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0441\u00a0\u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0439 \u043c\u0430\u0442\u0440\u0438\u0446\u0435\u0439 \u0432\u00a0\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0434\u0430\u0451\u0442 \u0435\u0434\u0438\u043d\u0438\u0447\u043d\u0443\u044e \u043c\u0430\u0442\u0440\u0438\u0446\u0443 (\u0432\u0441\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0440\u0430\u0432\u043d\u044b 0, \u043a\u0440\u043e\u043c\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0434\u0438\u0430\u0433\u043e\u043d\u0430\u043b\u0438 \u043e\u0442\u00a0\u0432\u0435\u0440\u0445\u043d\u0435\u0433\u043e \u043b\u0435\u0432\u043e\u0433\u043e \u0443\u0433\u043b\u0430 \u043a\u00a0\u043d\u0438\u0436\u043d\u0435\u043c\u0443 \u043f\u0440\u0430\u0432\u043e\u043c\u0443, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0430\u0432\u043d\u044b 1):<\/p>\n<p>\u041e\u0431\u0440\u0430\u0442\u043d\u0430\u044f \u043c\u0430\u0442\u0440\u0438\u0446\u0430 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0435 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435.<\/p>\n<p>\u041e\u0431\u0440\u0430\u0442\u043d\u0443\u044e \u043c\u0430\u0442\u0440\u0438\u0446\u0443 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u044c \u043f\u043e\u00a0\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u043c \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u043c, \u043d\u043e\u00a0\u0432\u00a0\u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438, \u0435\u0451 \u0431\u0443\u0434\u0435\u043c \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0442\u044c, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 NumPy:<\/p>\n<pre><code class=\"python\">np.linalg.inv(a)    # a - \u043c\u0430\u0442\u0440\u0438\u0446\u0430, \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u0430\u044f \u0432 \u043c\u0430\u0441\u0441\u0438\u0432<\/code><\/pre>\n<h3>\u041e\u0434\u043d\u043e\u0440\u043e\u0434\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442<\/h3>\n<p>\u0412\u00a0\u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0434\u043d\u043e\u0440\u043e\u0434\u043d\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043c\u043e\u0436\u043d\u043e \u0443\u0437\u043d\u0430\u0442\u044c \u0432 <a href=\"https:\/\/habr.com\/ru\/companies\/magnus-tech\/articles\/770930\/#:~:text=%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B%20%D0%B2%20%D0%B4%D1%80%D1%83%D0%B3%D1%83%D1%8E.-,%D0%9E%D0%B4%D0%BD%D0%BE%D1%80%D0%BE%D0%B4%D0%BD%D1%8B%D0%B5%20%D0%BA%D0%BE%D0%BE%D1%80%D0%B4%D0%B8%D0%BD%D0%B0%D1%82%D1%8B,-%D0%AD%D1%82%D0%BE%20%D0%BA%D0%BE%D0%BD%D1%86%D0%B5%D0%BF%D1%86%D0%B8%D1%8F%20%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D0%BD%D1%8F%D0%B5%D1%82%D1%81%D1%8F\" rel=\"noopener noreferrer nofollow\">\u0441\u0442\u0430\u0442\u044c\u0435<\/a> \u0438\u043b\u0438\u00a0\u043d\u0430 <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%9E%D0%B4%D0%BD%D0%BE%D1%80%D0%BE%D0%B4%D0%BD%D0%B0%D1%8F%5C_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0%5C_%D0%BA%D0%BE%D0%BE%D1%80%D0%B4%D0%B8%D0%BD%D0%B0%D1%82\" rel=\"noopener noreferrer nofollow\">\u0432\u0438\u043a\u0438<\/a>. \u0412\u043a\u0440\u0430\u0442\u0446\u0435, \u0432\u00a0\u043e\u0434\u043d\u043e\u0440\u043e\u0434\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0432\u0435\u043a\u0442\u043e\u0440\u044b \u0438 \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u0438\u043c\u0435\u044e\u0442 \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u044c \u043d\u0430 1\u00a0\u0431\u043e\u043b\u044c\u0448\u0435, \u0447\u0435\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0439, \u0447\u0442\u043e\u00a0\u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u044c \u0438 \u0440\u0430\u0441\u0447\u0451\u0442\u044b \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u0445 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0439 (\u0432\u043a\u043b\u044e\u0447\u0430\u044f \u043f\u0435\u0440\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u0435), \u0430\u00a0\u0442\u0430\u043a\u0436\u0435 \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439 \u0434\u0435\u043a\u0430\u0440\u0442\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442. \u0412\u00a0\u0432\u0435\u043a\u0442\u043e\u0440\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u043f\u043e\u043b\u0435, \u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u044c\u044e, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043e \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u043d\u044b\u043c \u043c\u043d\u043e\u0436\u0438\u0442\u0435\u043b\u0435\u043c (\u043c\u0430\u0441\u0448\u0442\u0430\u0431\u043d\u044b\u043c \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u043e\u043c, \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u043e\u043c \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0430, \u0432\u0435\u0441\u043e\u0432\u044b\u043c \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u043e\u043c) . \u041f\u0435\u0440\u0435\u0432\u043e\u0434 \u043e\u0434\u043d\u043e\u0440\u043e\u0434\u043d\u044b\u0445 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0432\u00a0\u0434\u0435\u043a\u0430\u0440\u0442\u043e\u0432\u044b \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043d\u044b\u043c \u0434\u0435\u043b\u0435\u043d\u0438\u0435\u043c \u043d\u0430 . \u041f\u0440\u0438\u0447\u0451\u043c:<\/p>\n<ul>\n<li>\n<p>\u041c\u0430\u0442\u0440\u0438\u0446\u044b \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0439 \u043d\u0430\u0434 \u043e\u0434\u043d\u043e\u0440\u043e\u0434\u043d\u044b\u043c\u0438 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u043c\u0438 \u0442\u0430\u043a\u0436\u0435 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u044e\u0442 \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u044c \u043d\u0430 1, \u0438 \u043d\u0438\u0436\u043d\u044e\u044e \u0441\u0442\u0440\u043e\u043a\u0443 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u0432\u0435\u043a\u0442\u043e\u0440 \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u0439 (\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0430 \u043f\u043e\u00a0\u043e\u0441\u044f\u043c, \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0435 \u043e\u0442 ) \u0438 .<\/p>\n<\/li>\n<li>\n<p>\u041d\u0430\u00a0\u043f\u0435\u0440\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u0438 \u0442\u0440\u0451\u0445\u043c\u0435\u0440\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 \u043d\u0430\u00a0\u0434\u0432\u0443\u043c\u0435\u0440\u043d\u0443\u044e \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0441\u043f\u0440\u043e\u0435\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u043e\u0431\u044a\u0435\u043a\u0442\u0430  \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u043f\u043e\u0440\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e .<\/p>\n<\/li>\n<\/ul>\n<p>\u0414\u043b\u044f\u00a0\u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u043c\u0430\u0442\u0440\u0438\u0446\u0435\u0439, \u043a\u00a0\u0432\u0435\u043a\u0442\u043e\u0440\u2011\u0441\u0442\u043e\u043b\u0431\u0446\u0443 (\u0432 \u0442\u0440\u0451\u0445\u043c\u0435\u0440\u043d\u043e\u043c \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435) \u0432\u00a0\u043e\u0434\u043d\u043e\u0440\u043e\u0434\u043d\u044b\u0445 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u0445, \u043f\u0440\u0438 (\u0431\u0435\u0437 \u043f\u0440\u043e\u0435\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f\/\u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f). \u041c\u0430\u0442\u0440\u0438\u0446\u0430  \u0438 \u0432\u0435\u043a\u0442\u043e\u0440 :<\/p>\n<p>\u0412\u00a0\u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0438\u0437\u00a0\u043c\u0430\u0442\u0440\u0438\u0446\u044b :  \u043c\u0430\u0442\u0440\u0438\u0446\u0430 \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u0430\u2011\u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f; \u0432\u0435\u043a\u0442\u043e\u0440 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u044f. \u0412\u00a0\u043e\u0431\u044b\u0447\u043d\u044b\u0445 \u043c\u0430\u0442\u0440\u0438\u0446\u0430\u0445 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430, \u043f\u0440\u0438\u00a0\u0440\u0430\u0441\u0447\u0451\u0442\u0430\u0445 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f\u0445 \u0442\u0440\u0451\u0445\u043c\u0435\u0440\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430:  \u0438 .<\/p>\n<p>\u0412\u00a0\u0432\u0435\u043a\u0442\u043e\u0440\u0435 :  \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u0432\u0435\u043a\u0442\u043e\u0440.<\/p>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442  \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f:<\/p>\n<h2>\u0424\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f  <\/h2>\n<p>\u0412\u00a0\u0434\u0430\u043d\u043d\u043e\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043f\u0440\u0438\u043d\u0446\u0438\u043f \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0432\u00a0\u043a\u0430\u043c\u0435\u0440\u0435. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0432 <a href=\"https:\/\/habr.com\/ru\/companies\/magnus-tech\/articles\/770930\/#:~:text=%D0%9C%D0%BE%D0%B4%D0%B5%D0%BB%D1%8C%20%D0%BA%D0%B0%D0%BC%D0%B5%D1%80%D1%8B%20%D1%81%20%D1%82%D0%BE%D1%87%D0%B5%D1%87%D0%BD%D0%BE%D0%B9%20%D0%B4%D0%B8%D0%B0%D1%84%D1%80%D0%B0%D0%B3%D0%BC%D0%BE%D0%B9\" rel=\"noopener noreferrer nofollow\">\u0441\u0442\u0430\u0442\u044c\u0435<\/a> \u0438\u043b\u0438\u00a0\u043d\u0430 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Pinhole%5C_camera\" rel=\"noopener noreferrer nofollow\">\u0432\u0438\u043a\u0438<\/a>.<\/p>\n<p>\u0414\u043b\u044f\u00a0\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 (\u0438 \u0432\u00a0\u0446\u0435\u043b\u043e\u043c \u0432\u00a0\u043c\u0430\u0448\u0438\u043d\u043d\u043e\u043c \u0437\u0440\u0435\u043d\u0438\u0438) \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u0435 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f, \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c\u044b\u0435 \u043c\u043e\u0434\u0435\u043b\u044c\u044e \u043a\u0430\u043c\u0435\u0440\u044b \u0441\u00a0\u0442\u043e\u0447\u0435\u0447\u043d\u043e\u0439 \u0434\u0438\u0430\u0444\u0440\u0430\u0433\u043c\u043e\u0439, \u043e\u043d\u0430\u00a0\u0436\u0435 \u043c\u043e\u0434\u0435\u043b\u044c \u043a\u0430\u043c\u0435\u0440\u044b\u2011\u043e\u0431\u0441\u043a\u0443\u0440\u044b, \u043e\u043d\u0430\u00a0\u0436\u0435 \u043c\u043e\u0434\u0435\u043b\u044c \u043f\u0438\u043d\u0445\u043e\u043b \u043a\u0430\u043c\u0435\u0440\u044b (pinhole camera). \u041c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u043a\u0430\u043c\u0435\u0440\u044b\u2011\u043e\u0431\u0441\u043a\u0443\u0440\u044b \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432\u00a0\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u0435, \u0430\u00a0\u043f\u043e\u043a\u0430 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043f\u0440\u0438\u043d\u0446\u0438\u043f \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u0430\u043c\u043e\u0439 \u043a\u0430\u043c\u0435\u0440\u044b\u2011\u043e\u0431\u0441\u043a\u0443\u0440\u044b.<\/p>\n<h3>\u041a\u0430\u043c\u0435\u0440\u0430-\u043e\u0431\u0441\u043a\u0443\u0440\u0430  <\/h3>\n<p>\u041f\u0440\u0438\u043d\u0446\u0438\u043f \u0440\u0430\u0431\u043e\u0442\u044b \u043a\u0430\u043c\u0435\u0440\u044b\u2011\u043e\u0431\u0441\u043a\u0443\u0440\u044b \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432\u00a0\u0442\u043e\u043c, \u0447\u0442\u043e\u00a0\u0441\u0432\u0435\u0442, \u043e\u0442\u0440\u0430\u0436\u0451\u043d\u043d\u044b\u0439 \u043e\u0442\u00a0\u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432, \u043f\u0440\u043e\u043d\u0438\u043a\u0430\u0435\u0442 \u0432\u043d\u0443\u0442\u0440\u044c \u043a\u0430\u043c\u0435\u0440\u044b \u0447\u0435\u0440\u0435\u0437 \u0443\u0437\u043a\u043e\u0435 \u043e\u0442\u0432\u0435\u0440\u0441\u0442\u0438\u0435, \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u044f \u043d\u0430\u00a0\u043c\u0430\u0442\u0440\u0438\u0446\u0435 \u043a\u0430\u043c\u0435\u0440\u044b \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435. \u0412\u00a0\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043d\u0430\u00a0\u043c\u0430\u0442\u0440\u0438\u0446\u0435 \u043f\u0440\u043e\u0435\u0446\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043e\u0442\u0437\u0435\u0440\u043a\u0430\u043b\u0435\u043d\u043d\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432. <\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u0421\u0445\u0435\u043c\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u043a\u0430\u043c\u0435\u0440\u044b\u2011\u043e\u0431\u0441\u043a\u0443\u0440\u0430<\/figcaption><\/div>\n<\/figure>\n<figure class=\"\">\n<div><figcaption>\u0412\u043d\u0443\u0442\u0440\u0438 \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0433\u043e \u0441\u0442\u0435\u043d\u0434\u0430: \u043e\u0442\u0432\u0435\u0440\u0441\u0442\u0438\u0435, \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u0441\u0432\u0435\u0442, \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u044e\u0449\u0438\u0439 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435; \u0431\u0435\u043b\u044b\u0439\u00a0\u043b\u0438\u0441\u0442 \u0431\u0443\u043c\u0430\u0433\u0438, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0449\u0438\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u043a\u0430\u043c\u0435\u0440\u044b, \u043d\u0430\u00a0\u043d\u0451\u043c \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435; USB\u2011\u043a\u0430\u043c\u0435\u0440\u0430 \u0434\u043b\u044f\u00a0\u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0441\u00a0\u043b\u0438\u0441\u0442\u0430 \u0431\u0443\u043c\u0430\u0433\u0438.<\/figcaption><\/div>\n<\/figure>\n<figure class=\"full-width\">\n<div><figcaption>\u0414\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u044f: \u0432\u00a0\u043a\u0440\u0443\u0433\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0441\u00a0\u043b\u0438\u0441\u0442\u0430 (\u043c\u0430\u0442\u0440\u0438\u0446\u044b \u043a\u0430\u043c\u0435\u0440\u044b), \u0437\u0435\u043b\u0451\u043d\u044b\u043c\u0438\u00a0\u043b\u0438\u043d\u0438\u044f\u043c\u0438 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u044b \u043f\u0443\u0442\u0438 \u0441\u0432\u0435\u0442\u0430 \u043e\u0442\u00a0\u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0447\u0435\u0440\u0435\u0437 \u043e\u0442\u0432\u0435\u0440\u0441\u0442\u0438\u0435.<\/figcaption><\/div>\n<\/figure>\n<p>\u0412\u00a0\u0432\u0438\u0434\u0435\u043e\u0430\u043f\u043f\u0430\u0440\u0430\u0442\u0443\u0440\u0435, \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0439 \u043d\u0430\u00a0\u0434\u0430\u043d\u043d\u043e\u043c \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435, \u0447\u0430\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u044b\u00a0\u043b\u0438\u043d\u0437 \u0438 \u0437\u0435\u0440\u043a\u0430\u043b, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0449\u0438\u0445 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438: \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u0435 \u0441\u0431\u043e\u0440\u0430 \u0441\u0432\u0435\u0442\u0430, \u0440\u0435\u0433\u0443\u043b\u0438\u0440\u043e\u0432\u043a\u0430 \u0444\u043e\u043a\u0443\u0441\u0430 \u0438 \u0442. \u0434,\u00a0\u2014 \u043e\u0434\u043d\u0430\u043a\u043e \u0442\u0430\u043a\u0436\u0435 \u043e\u043d\u0438 \u043c\u043e\u0433\u0443\u0442 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0438\u0441\u043a\u0430\u0436\u0435\u043d\u0438\u0435 (\u0434\u0438\u0441\u0442\u043e\u0440\u0441\u0438\u044e) \u043a\u00a0\u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044e.<\/p>\n<h2>\u041c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0430 \u043a\u0430\u043c\u0435\u0440\u044b <\/h2>\n<h3>\u0412\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f (\u0444\u0440\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u0430\u044f) \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u044c  <\/h3>\n<p>\u0414\u043b\u044f\u00a0\u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0431\u0435\u0437\u00a0\u043e\u0442\u0437\u0435\u0440\u043a\u0430\u043b\u0438\u0432\u0430\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0443\u0441\u043b\u043e\u0432\u043d\u043e\u0435 \u043f\u0440\u043e\u0435\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u043a\u0440\u0443\u0436\u0430\u044e\u0449\u0438\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u043d\u0435\u00a0\u0447\u0435\u0440\u0435\u0437 \u0434\u0438\u0430\u0444\u0440\u0430\u0433\u043c\u0443 (\u043f\u0438\u043d\u0445\u043e\u043b) \u043d\u0430\u00a0\u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f (\u043c\u0430\u0442\u0440\u0438\u0446\u044b \u043a\u0430\u043c\u0435\u0440\u044b), \u0430\u00a0\u043d\u0430\u00a0\u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0443\u044e (\u0444\u0440\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u0443\u044e) \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u0434 \u0434\u0438\u0430\u0444\u0440\u0430\u0433\u043c\u043e\u0439, \u043f\u0440\u0438\u0447\u0451\u043c \u0438 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u0438 \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043d\u0430\u00a0\u043c\u0430\u0442\u0440\u0438\u0446\u0435 \u043a\u0430\u043c\u0435\u0440\u044b \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u043d\u0430\u00a0\u0440\u0430\u0432\u043d\u043e\u043c \u0444\u043e\u043a\u0443\u0441\u043d\u043e\u043c  \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u043e\u0442\u00a0\u0434\u0438\u0430\u0444\u0440\u0430\u0433\u043c\u044b, \u0430\u00a0\u043e\u043f\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043e\u0441\u044c \u043f\u0435\u0440\u0435\u0441\u0435\u043a\u0430\u0435\u0442 \u0438\u0445 \u0432\u00a0\u043f\u0440\u043e\u0435\u043a\u0446\u0438\u044f\u0445 \u043e\u0434\u043d\u043e\u0439 \u0438 \u0442\u043e\u0439\u00a0\u0436\u0435 \u0442\u043e\u0447\u043a\u0438:<\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u0412\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0441\u00a0\u0438\u0441\u043a\u043e\u043c\u043e\u0439 \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u0435\u0439 <\/figcaption><\/div>\n<\/figure>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0432\u00a0\u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0431\u0443\u0434\u0435\u0442 \u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f. <\/p>\n<h3>\u0421\u0438\u0441\u0442\u0435\u043c\u044b \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0438 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u043d\u044b\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430  <\/h3>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0432\u00a0\u0441\u0442\u0430\u0442\u044c\u0435 \u0431\u0443\u0434\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0441\u043e\u043a\u0440\u0430\u0449\u0435\u043d\u0438\u044f:<\/p>\n<ul>\n<li>\n<p><em>px <\/em>\u2014 \u043f\u0438\u043a\u0441\u0435\u043b\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f<\/p>\n<\/li>\n<li>\n<p><em>\u043c <\/em>\u2014 \u043c\u0435\u0442\u0440. \u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435: \u0434\u0430\u043d\u043d\u0430\u044f \u0435\u0434\u0438\u043d\u0438\u0446\u0430 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f \u0432\u044b\u0431\u0440\u0430\u043d\u0430 \u0432\u00a0\u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438, \u0442\u0430\u043a \u043a\u0430\u043a\u00a0\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0435\u0434\u0438\u043d\u0438\u0446\u0435\u0439 \u0434\u043b\u0438\u043d\u044b \u0432 <abbr class=\"habraabbr\" title=\"\u041c\u0435\u0436\u0434\u0443\u043d\u0430\u0440\u043e\u0434\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0435\u0434\u0438\u043d\u0438\u0446 (\u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u0418\u043d\u0442\u0435\u0440\u043d\u0430\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u0430\u044f)\" data-title=\"&lt;p&gt;\u041c\u0435\u0436\u0434\u0443\u043d\u0430\u0440\u043e\u0434\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0435\u0434\u0438\u043d\u0438\u0446 (\u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u0418\u043d\u0442\u0435\u0440\u043d\u0430\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u0430\u044f)&lt;\/p&gt;&lt;p&gt;&lt;\/p&gt;\" data-abbr=\"\u0421\u0418\">\u0446 (\u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u0418\u043d\u0442\u0435\u0440\u043d\u0430\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u0430\u044f)&lt;\/p&gt;&lt;p&gt;&lt;\/p&gt;&#187; data-abbr=&#187;\u0421\u0418&#187;>\u0421\u0418<\/abbr>, \u043e\u0434\u043d\u0430\u043a\u043e \u0434\u0430\u043b\u0435\u0435 \u0434\u0430\u043d\u043d\u0430\u044f \u0435\u0434\u0438\u043d\u0438\u0446\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432\u00a0\u0444\u043e\u0440\u043c\u0443\u043b\u0430\u0445 \u0441\u00a0\u043c\u0430\u0441\u0448\u0442\u0430\u0431\u043d\u044b\u043c\u0438 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u0430\u043c\u0438, \u0442\u0430\u043a \u0447\u0442\u043e\u00a0\u0432\u043c\u0435\u0441\u0442\u043e \u043c\u0435\u0442\u0440\u043e\u0432 \u043c\u043e\u0433\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u0440\u0443\u0433\u0438\u0435 \u0435\u0434\u0438\u043d\u0438\u0446\u044b \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f (\u043c\u043c, \u0444\u0443\u0442\u044b \u0438 \u0434\u0440.) <\/p>\n<\/li>\n<\/ul>\n<p>\u0412\u00a0OpenCV \u0432\u00a0\u0446\u0435\u043b\u043e\u043c \u0438<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-472530","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/472530","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=472530"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/472530\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=472530"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=472530"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=472530"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}