Гэр / Компьютер эзэмших / Фото танигч. Google Images ашиглан хайж олоорой. Бүх интернетээр хайх

Фото танигч. Google Images ашиглан хайж олоорой. Бүх интернетээр хайх

Сүүлийн үед нүүр царай таних программууд нь зөвхөн төрийн байгууллагуудад үйлчлэх болсон. Тэд нүүрний онцлогт тулгуурлан хүнийг тодорхойлоход тусалдаг. Одоо ийм хэрэглээ програм хангамжИхэнхдээ хамгаалалтын систем, янз бүрийн үйлчилгээг сурталчлах, сурталчлахтай холбоотой арилжааны үйл ажиллагаанд ажиглагддаг.

Мөн зарим ижил төстэй онлайн үйлчилгээмөн программуудыг энгийн хэрэглэгчдэд ч ашиглах боломжтой бөгөөд тэдгээрийг интернетээс олж болно. Жишээ нь Lenovo Veriface програм юм. Энэ нь нүүр царайг шинжилж төхөөрөмжийн түгжээг тайлах боломжийг олгодог өмчлөлийн хэрэгсэл юм.

Царай хайлт хэрхэн ажилладаг

Зарим үйлчилгээнд царайны хайлт ажилладаг мэдрэлийн сүлжээний технологид суурилсан. Хайлт нь тодорхой үндсэн шинж чанарууд дээр суурилдаг: зургийн жин, нягтрал, өнгөний засвар, өртөлт, нягтрал гэх мэт. Одоо мэдрэлийн сүлжээний технологи хөгжиж байна, үндсэн шинж чанаруудаас гадна тодорхойлолтыг ашиглан гарч ирдэг нэмэлт функцууд: арьсны бүтэц, амны хэлбэр, чих, үсний өнгө, нүдний байрлал гэх мэт.

Ижил төстэй хүнийг олохын тулд та тодорхой зураг оруулах хэрэгтэй, эс тэгвээс хайлт амжилтгүй болно. Нийгмийн сүлжээ нь хэрэглэгчдийнхээ мэдээллийг хамгаалдаг гэдгийг ч хэлэх нь зүйтэй. Ихэнх нийгмийн сүлжээнд хүний ​​​​зургийг нуух боломжийг олгодог профайлын хамгаалалтын функцууд байдаг.

Нүүр царай таних програмууд

Гэрэл зураг, видео бичлэг дээр суурилсан царай таних системүүд (програмууд) илүү дэвшилтэт алгоритмуудыг ашигладаг. Ижил төстэй системүүд үгүй нээлттэй хандалт , тэдгээрийг аюулгүй байдлын үйлчилгээнд ашиглаж, томоохон хотууд болон хүн ам ихтэй газруудад онцгой байдлын үед хяналт тавих, урьдчилан сэргийлэх зорилгоор ашигладаг.

Ийм програм хангамж нь ихэвчлэн Viola-Jones таних алгоритмыг ашигладаг. Энэхүү аргыг ашиглан програм нь 30 градус эргүүлсэн ч нүүр царайг таньдаг. Арга Haar-ийн шинж тэмдгүүд дээр үндэслэсэн, эдгээр нь янз бүрийн хэлбэр, хэмжээтэй хар, цагаан маскуудын багц юм. Зураг дээр маск түрхэж, пикселийн тод байдлыг нэмэх замаар тооцоолж, дараа нь утгуудын зөрүүг тооцоолно.

Дараа нь систем нь үр дүнг хуримтлагдсан өгөгдөлтэй харьцуулж, зураг дээрх нүүр царайг тодорхойлсны дараа оновчтой өнцгийг сонгохын тулд үргэлжлүүлэн хянах болно. Үүний дараа унших үйл явц эхэлж, програм хангамж нь нүүрэн дээрх лавлах цэгүүдийг олдог. Дараа нь өгөгдлийн санд байгаа өгөгдлийн дагуу зургийг шинжилнэ. Хэрэв тэдгээр нь таарч байвал тухайн хүнийг тодорхойлно.

царай олох

FindFace бол Оросын нүүр царай таних програм бөгөөд гэрэл зураг дээрх нүүр царайг таних боломжийг олгодог хүчирхэг шийдэл юм. FindFace нь зөвхөн энгийн хэрэглэгчдэд зориулсан хэрэглүүрийг санал болгодог төдийгүй засгийн газрын корпорацууд болон бизнес эрхлэгчдэд зориулагдсан юм. Үүний тусламжтайгаар та Вконтакте дээр бүртгэлтэй хүнийг олох боломжтой.

Есдүгээр сарын 1-нээс эхлэн олон нийтийн Find Face үйлчилгээ ажиллахаа больж, зөвхөн PRO данс худалдаж авсан хэрэглэгчид хэсэг хугацаанд ашиглах боломжтой болно. Дараа нь зохиогчид олон нийтийн домэйн хувилбараас бүрэн татгалзаж, арилжааны бүтээгдэхүүнээ ашиглах болно.

Google Зураг

Google Search.Images нь өгөгдөлд тулгуурлан ижил төстэй зургийг олох боломжийг танд олгоно Хайлтын системүүд, үүнд хүнийг нүүр царайгаар нь хайх. Илүү их анхаарсан гадаад нөөцөөс хайх:


Yandex зураг

Өмнөх үйлчилгээний дотоодын аналог нь таныг интернетээс зургаар хайж олох, нийгмийн сүлжээн дэх зургаар хайхад туслах болно.


Пиктриев

Хэрэглэгчид ижил төстэй хүнийг онлайнаар олж зургаас нь таних боломжийг олгодог англи хэл дээрх үйлчилгээ. Юуны өмнө энэ нь алдартай хүмүүстэй харьцуулах зорилготой тул үр дүн нь бүрэн зөв биш байж магадгүй юм.


Сайн уу?

Та интернетээс зөв бүтээгдэхүүнийг олох боломжтой янз бүрийн арга замууд. Ихэнхдээ онлайн дэлгүүрийн худалдан авагчид хайлтын талбарт асуулга оруулж, бүтээгдэхүүнийг категороор нь үзэж, тусламж авдаг. Гэхдээ дахиад нэг байна сонирхолтой арга- энэ бол .

Дотор хэлье олон нийтийн сүлжэээсвэл таны үзэж байгаа сайтуудын аль нэг дээр танд ямар нэгэн жижиг зүйл таалагдсан боловч тайлбар, холбоосыг хаанаас ч олоогүй тул та хаанаас худалдаж авахаа мэдэхгүй байна, эсвэл бүр мэдэхгүй байж магадгүй юм. Энэ юу вэ)) Эсвэл өөр сонголт - та бүтээгдэхүүн олсон, гэхдээ үнэ нь тохирохгүй байна, би хямдыг хүсч байна. Ийм тохиолдолд зургаар хайлт хийх нь ашигтай байх болно.

Бүтээгдэхүүнийг зургаар олоход туслах хэд хэдэн сонголтыг авч үзье.

Google болон Yandex дахь зургаар бүтээгдэхүүнийг хэрхэн олох вэ

Хайлтын системүүд зургийг таньж сурсны дараа Google болон Yandex-ээс зураг (зураг, зураг) хайх боломжтой болсон. Өнөөдрийг хүртэл энэ нь хамгийн их юм боломжийн аргаЗураг дээр юу харагдаж байгаа, хаана зарагддаг, ямар үнэтэй байгааг олж мэдээрэй.

Ямар нэг юм хайцгаая Google зургийн хайлт.

Power Bank-ийг эх зураг болгон авч үзье.

Хайлтын системээс барааг зургаар хайх нь камерын дүрсээс эхэлдэг.

Камерын дүрс дээр дарснаар та холбоосыг ашиглан бүтээгдэхүүнийг олох эсвэл өмнө нь хадгалсан зургийг татаж авах боломжтой. Чирэх хамгийн хялбар хүссэн зурагхайлтын талбарт.

Файлыг татаж авсны дараа зураг дээр юу харагдаж байгааг олж мэдэх мэдээлэл нээгдэх бөгөөд энэ зураг байгаа сайтуудын урт жагсаалт гарч ирнэ.

Хэрэв та тодорхой онлайн дэлгүүрт бүтээгдэхүүн үзэхийг хүсвэл хайлтын талбарт нэрийг нь оруулаарай - ebay, amazon, aliexpress гэх мэт.

Хайлтын систем ашиглан зургаар хайх дээрх арга бол бүх нийтийн аргабүх тохиолдолд. Гэхдээ тодорхой худалдааны платформ дээр бүтээгдэхүүнийг хурдан бөгөөд хялбар хайх боломжийг олгодог өөр сонголтууд байдаг.

Plugin ашиглан Aliexpress дээрх бүтээгдэхүүнийг зургаар хэрхэн олох вэ

Хөтөчийн өргөтгөл нь Али дээр бүтээгдэхүүн хайхад сайн ажил хийдэг "Aliexpress-с зургаар хайх". Та үүнийг хөтөч дээр суулгаж болно Google Chrome, Yandex.Browserболон Дуурь.

Энэ залгаасыг ашиглан Aliexpress дээр бүтээгдэхүүнийг зургаар нь олохын тулд зураг дээр хулганы баруун товчийг дараад нээгдэх цэснээс "Энэ зургаар Aliexpress дээрх бүтээгдэхүүнийг олох" гэсэн зүйлийг сонгоно уу.

Бид Google-д шилжсэн бөгөөд тэнд аль хэдийн ижил үзэгний багц зарагддаг aliexpress хуудасны жагсаалтыг гаргасан.

Энэхүү өргөтгөл нь танд өөр худалдагчаас Aliexpress дээр өөрт тохирсон бүтээгдэхүүнийг хямд олоход тусална. Үнэн, энэ арга нь заримдаа бүтэлгүйтдэг - залгаас нь бүх зурагтай ээлтэй биш, гэхдээ оролдоод үзэх нь зүйтэй юм!

Дэвшилтэт функц бүхий өөр нэг гайхалтай програм - AliPrice. Үүний тусламжтайгаар та Aliexpress дээрээс бүтээгдэхүүнийг хэдхэн секундын дотор зургаар нь олж, худалдагчийн үнэлгээг үнэлэх, үнийн түүхийг үзэх, тойм, тоймыг унших боломжтой. Өргөтгөлийн талаар дэлгэрэнгүй уншина уу.

TaoVao дээрх зургаар бүтээгдэхүүнийг хэрхэн олох вэ

Хайлтын систем нь Орос хэл дээрх TaoVao каталогоос бүтээгдэхүүн хайх боломжийг танд олгоно Купинато. Энд бүх зүйл зөн совинтой байдаг.

Бүх зүйл илүү хэцүү байдаг Хятадын хайлтын системТаовао. Онлайн орчуулагчид бидэнд туслах болно!

Одоо та Интернэт дэх зургаар бүтээгдэхүүнийг хэрхэн олохыг мэддэг болсон бөгөөд хэрэв та өөр аргуудыг мэддэг бол сэтгэгдэл дээр хуваалцаарай!

Худалдан авалтанд тань амжилт хүсье, онлайн дэлгүүрээр дамжуулан захиалга өгөхөө бүү мартаарай. Тиймээс та худалдан авсан барааны зардлын 5-15% -ийг хэмнэдэг!

Хүндэтгэсэн, Анна

1. Бид нүүлгэн шилжүүлэлтийн ойролцоо хэсгийг өөрсдөө тооцоолох хэрэгтэй - наад зах нь хязгаарлагдмал цэгүүдийн хувьд. StereoBM энд ажиллахгүй тул бидэнд өөр арга хэрэгтэй байна. Логик сонголт бол функцийн тохируулгыг ашиглах явдал юм - хоёр хүрээний зарим тусгай цэгүүдийг олж, зураглалыг сонгоно уу. Үүнийг хэрхэн хийх талаар уншиж болно.
2. Бид хоёр багц тохирох цэгтэй болмогц бид stereoRectifyUncalibrated-д хэрэгтэй үндсэн матрицыг олж авахын тулд тэдгээрийг findFundamentalMat-д оруулж болно.
3. StereoRectifyUncalibrated-г ажиллуулж, хоёр фреймийг засах хоёр матриц аваарай.
4. Тэгээд ... тэгээд энэ нь тодорхойгүй байна. Бид фрэймүүдийг шулуун болгосон боловч эцсийн шатанд шаардлагатай Q матриц байхгүй байна. Googling, би мөн адил гайхшралын тухай нийтлэлтэй танилцаж, би онолын хувьд ямар нэг зүйлийг алдсан эсвэл OpenCV энэ мөчийг бодсонгүй гэдгийг ойлгосон.

OpenCV: Бид 2:0 байна.

4.1 Төлөвлөгөөг өөрчлөх

Гэхдээ хүлээ. Магадгүй бид анхнаасаа буруу замаар явсан байх. Өмнөх оролдлогуудад бид үндсэндээ тодорхойлох гэж оролдсон жинхэнэгурван хэмжээст цэгүүдийн байрлал - иймээс камер, матриц, хүрээг засах гэх мэт параметрүүдийг мэдэх шаардлагатай. Үнэн хэрэгтээ энэ бол ердийн гурвалжин юм: эхний камер дээр би энэ цэгийг энд, хоёр дахь камер дээр энд харж байна - дараа нь бид камеруудын төвөөр дамжин өнгөрөх хоёр цацрагийг зурах бөгөөд тэдгээрийн огтлолцол нь цэг хэр хол байгааг харуулах болно. биднээс.

Энэ бүгд зүгээр, гэхдээ ерөнхийдөө энэ нь бидэнд хэрэггүй. Хэрэв бидний загварыг дараа нь үйлдвэрлэлийн зориулалтаар, зарим 3D принтерт ашигласан бол бид объектын бодит хэмжээсийг сонирхож байх болно. Гэхдээ бид хүлээн авсан өгөгдлийг мэдрэлийн сүлжээ болон ижил төстэй ангилагч руу түлхэх гэж байна (энэ зорилго нь бага зэрэг бүдгэрч байна). Үүнийг хийхийн тулд бид зөвхөн мэдэх хэрэгтэй хамаатан саданобъектын хэмжээ. Бидний санаж байгаагаар тэдгээр нь параллаксын шилжилттэй урвуу пропорциональ байдаг - объект биднээс хол байх тусам хөдөлж байх тусам бага шилждэг. Эдгээр нөхцлүүдийг олох арга бий юу? илүүилүү хялбар, зүгээр л ямар нэгэн байдлаар хоёр зураг таарч байна уу?

Энэ бол бидэнд хэрэгтэй зүйлийг яг таг хийдэг гайхалтай алгоритм юм. Бид үүнд зураг, багц цэгүүдийг оруулав. Дараа нь бид хоёр дахь зургийг тавина. Өгөгдсөн цэгүүдийн гаралт дээр бид хоёр дахь зураг дээрх шинэ байрлалыг олж авдаг (мэдээжийн хэрэг ойролцоогоор). Ямар ч шалгалт тохируулга, камерын талаар огт дурдаагүй - нэрийг үл харгалзан оптик урсгалыг юу ч дээр үндэслэн тооцоолж болно. Хэдийгээр энэ нь ихэвчлэн объектыг хянах, мөргөлдөх илрүүлэх, тэр ч байтугай ашигладаг нэмэгдсэн бодит байдал.

Бидний зорилгын үүднээс бид (одоохондоо) Гуннар Фарнебэкийн "нягт" урсгалыг ашиглахыг хүсч байна, учир нь тэр урсгалыг зарим нэг цэгийн хувьд биш, харин бүхэлд нь нэг дор тооцоолж чаддаг. Энэ аргыг calcOpticalFlowFarneback-ээр дамжуулан авах боломжтой бөгөөд эхний үр дүн нь маш их тааламжтай байх болно - энэ нь өмнөх stereoRectifyUncalibrated + stereoBM үр дүнгээс хэр хүйтэн харагдаж байгааг хараарай.


Өөрийнхөө өрөөг барьж, блокоор тоглох боломжийг олгосон Portal 2 гайхалтай тоглоомд маш их баярлалаа. Би шинжлэх ухаан хийж байна!

Энэ бяцхан демо-н код

# кодчилол: utf-8 импортын cv2 импортын numpy-ийг matplotlib-ээс np хэлбэрээр импортлох pyplot-ыг plt хэлбэрээр импортлох img1 = cv2.imread("0.jpg", 0) img2 = cv2.imread("1.jpg", 0) def stereo_depth_map(img1) , img2): # 1: онцлог тохирох orb = cv2.ORB() kp1, des1 = orb.detectAndCompute(img1, Байхгүй) kp2, des2 = orb.detectAndCompute(img2, Байхгүй) bf = cv2.BFMatcher(cv2.HAMMING, NORM_) crossCheck=True) таарч байна = bf.match(des1, des2) таарч байна = эрэмбэлэгдсэн(тоглолт, түлхүүр=lambda x: x.distance) src_points = np.vstack(.pt) m-д тохирох]) dst_points = np.vstack( .pt) таарч байгаа m-д]) # 2: findFundamentalMat F, маск = cv2.findFundamentalMat(src_points, dst_points) # 3: stereoRectifyUncalibrated _, H1, H2 = cv2.stereoRectifyUncalibrated(src_points, [src_points.]sharcpe. 1, 2), dst_points.reshape(dst_points.shape, 1, 2), F, img1.shape) rect1 = cv2.warpPerspective(img1, H1, (852, 480)) rect2 = cv2.warpPerspective(img2, H2, (852, 480)) # 3.5: stereoBM стерео = cv2.StereoBM(cv2.STEREO_BM_BASIC_PRESET, ялгаа =16, SADWindowSize=15) буцаах stereo.compute(rect1, rect2) def optical_flow_depth_map(img1, img2): урсгал = cv2.calcOpticalFlowFarneback(img1, img2, 0.5, 3, 20, 10, mag.2, 5, 01)v .cartToPolar(урсгал[..., 0], урсгал[..., 1]) буцах mag def plot(гарчиг, img, i): plt.subplot(2, 2, i) plt.title(гарчиг) plt .imshow(img, "саарал") plt.gca().get_xaxis().set_visible(False) plt.gca().get_yaxis().set_visible(False) plot(u"First frame", img1, 1) plot (u"Second frame (баруун алхам)", img2, 2) plot(u"stereoRectifyUncalibrated", stereo_depth_map(img1, img2), 3) plot(u"First frame", optical_flow_depth_map(img1, img2), 4) plt. харуулах()

Маш их. Бидэнд офсет байгаа бөгөөд тэд сайхан харагдаж байна. Одоо бид тэднээс гурван хэмжээст цэгийн координатыг яаж авах вэ?

4.2 3D цэгүүдийн координатыг олж авдаг хэсэг

Дээрх линкүүдийн аль нэгэнд энэ зураг анивчсан байна.

Энд байгаа объект хүртэлх зайг сургуулийн геометрийн аргаар (ижил төстэй гурвалжин) тооцоолж, дараах байдлаар харагдана. Мөн координатууд нь дараах байдалтай байна. . Энд wболон h- зургийн өргөн ба өндрийг бид мэднэ, ень камерын фокусын урт (камерын төвөөс дэлгэцийн гадаргуу хүртэлх зай) ба Б- камерууд ижил алхам. Дашрамд хэлэхэд, бид энд Z-ийг дээш чиглүүлэх үед тэнхлэгүүдийн нийтээр хүлээн зөвшөөрөгдсөн нэрийг бага зэрэг зөрчиж байгааг анхаарна уу - бид Z нь дэлгэц рүү "гүн" харагдаж байгаа бөгөөд X ба Y нь тус тусад нь өргөн болон чиглэгддэг. зургийн өндөр.

За яахав ебүх зүйл энгийн - бүх объектын хувь хэмжээ нэг хуулийн дагуу өөрчлөгддөг бол бид камерын бодит параметрүүдийг сонирхохгүй байх талаар аль хэдийн заасан. Хэрэв та дээрх X-ийн томъёонд Z-г орлуулбал X нь фокусын уртаас огт хамааралгүй (f багассан) байгааг харж болно, тиймээс түүний өөр өөр утга нь зөвхөн гүнийг өөрчлөх болно - "сунгах" эсвэл " хавтгайруулж" бидний дүр зураг. Харааны хувьд - тийм ч сайхан биш, гэхдээ дахин ангиллын алгоритмын хувьд энэ нь огт хамаагүй. Тиймээс фокусын уртыг ухаалаг байдлаар тохируулцгаая - зүгээр л бодоод үзээрэй. Гэсэн хэдий ч би бичвэрийн доод хэсэгт санал бодлоо бага зэрэг өөрчлөх эрхтэй.

тухай Барай илүү төвөгтэй - хэрэв бидэнд суурилуулсан алхам хэмжигч байхгүй бол камер бодит ертөнцөд хэр хол явсаныг мэдэхгүй. Тиймээс одоохондоо бага зэрэг тоолж үзээд камерын хөдөлгөөн ойролцоогоор жигд байна, бид маш олон хүрээтэй (секундэд хэдэн арван), хоёр хөршийн хоорондох зай ойролцоогоор ижил байна, өөрөөр хэлбэл. . Дахин хэлэхэд бид энэ байдлыг бага зэрэг тодруулах болно, гэхдээ одоохондоо ийм байг.

Код бичих цаг болжээ

import cv2 import numpy as np f = 300 # Бид дүрслэл хийж байгаа тул би фокусыг сонгосон хэвээр байгаа тул дүр зураг нөхцөлт бодитой харагдаж байна B = 1 w = 852 h = 480 img1 = cv2.imread("0.jpg", 0 ) img2 = cv2.imread("1.jpg", 0) урсгал = cv2.calcOpticalFlowFarneback(img1, img2, 0.5, 3, 20, 10, 5, 1.2, 0) mag, ang = cv2.cartToPolar([Polar урсгал] .., 0], урсгал[..., 1]) ирмэгүүд = cv2.Canny(img1, 100, 200) үр дүн = xrange(img1.shape) дахь y-ийн хувьд: xrange(img1.shape): хэрвээ ирмэгүүд == 0 бол: дельта үргэлжлүүлэх = mag бол гурвалжин == 0: үргэлжлүүлэх Z = (B * f) / дельта X = (Z * (x - w / 2.)) / f Y = (Z * (y -) h / 2.)) / f цэг = np.array() үр дүн.append(цэг) үр дүн = np.vstack(үр дүн) def dump2ply(цэг): # .ply формат руу хадгалснаар Blender ашиглан open("цэгүүд"-ээр нээх боломжтой. .ply", "w") f: f.write("ply\n") f.write("format ascii 1.0\n") f.write("элементийн орой ()\n".format(len() оноо))) f.write("property float x\n") f.write("property float y\n") f.write("property float z\n") f.write("end_header\n" ) цэгийн хувьд: f.write("(:.2f) (:.2f) (:.2f)\n".format(цэг, цэг, цэг)) dump2ply(үр дүн)

Үр дүн нь иймэрхүү харагдаж байна. Таныг энэ хүртэл уншиж байх хооронд GIF-г ачаалж чадсан гэж найдаж байна.


Тодорхой болгохын тулд би бүх цэгүүдийг дараалан аваагүй, зөвхөн Canny детектороор онцолсон хил хязгаарыг авсан.

Эхлээд харахад (наад зах нь надад) бүх зүйл сайхан санагдаж байсан - тэр ч байтугай шоо дөрвөлжингийн нүүрний хоорондох өнцөг хүртэл сайхан ерэн градус үүсгэдэг. Цаана нь байгаа зүйлс улам муудсан (хана, хаалганы контур хэрхэн гажсаныг анхаарна уу), гэхдээ хүүе, энэ нь бага зэрэг чимээ шуугиантай байх магадлалтай, үүнийг b ашиглан эмчлэх боломжтой. тухайилүү олон хүрээ эсвэл өөр зүйл.

Эндээс яаран гаргаж болох бүх дүгнэлтээс энэ нь үнэнээс хамгийн хол байсан юм.

5. Ажиллахгүй байгаа хэсэг

Ер нь зарим зүйл нэлээд гажуудсан нь гол асуудал болж хувирсан. Мөн - ямар нэг зүйл буруу байна гэж сэжиглэх цаг нь болсон түгшүүртэй тэмдэг - энэ нь санамсаргүй байдлаар гажуудаагүй, гэхдээ ойролцоогоор ижил газруудад байсан тул шинэ цэгүүдийг (бусад хүрээнээс) дараалан байрлуулах замаар асуудлыг засах боломжгүй байв.

Энэ нь иймэрхүү харагдаж байсан:


Шат нь үрчийж, заримдаа ойлгомжгүй зүйлийн аморф хэсэг болж хувирдаг.

Би үүнийг маш удаан хугацаанд засах гэж оролдсон бөгөөд энэ хугацаанд би дараахь зүйлийг туршиж үзсэн.

- Зургийг оптик урсгалаар гөлгөр болгох: Гауссын бүдэгрүүлэх, медиан шүүлтүүр, тод ирмэгийг үлдээдэг загварлаг хоёр талт шүүлтүүр. Энэ нь ашиггүй: объектууд, эсрэгээр, бүр ч илүү бүдгэрсэн.
- Би Hough хувиргалт ашиглан зурган дээрх шулуун шугамуудыг олж, өөрчлөгдөөгүй шулуун төлөвт шилжүүлэхийг оролдсон. Хэсэгчилсэн ажилласан, гэхдээ зөвхөн хил дээр - гадаргуу нь ижил гажсан хэвээр байсан; Дээрээс нь "зураг дээр шулуун шугам байхгүй бол яах вэ" гэсэн санааг хаана ч тавих боломжгүй байв.
- Би OpenCV-ийн templateMatching ашиглан оптик урсгалын өөрийн хувилбарыг хийхийг оролдсон. Энэ нь дараах байдлаар ажилласан: ямар ч цэгийн хувьд бид түүний эргэн тойронд жижиг (ойролцоогоор 10х10) дөрвөлжин барьж, түүнийг тойрон хөдөлгөж, хамгийн их тохирохыг хайж эхэлдэг (хэрэв хөдөлгөөний чиглэл нь мэдэгдэж байгаа бол "ойролцоогоор" хязгаарлаж болно). Энэ нь зарим газарт тийм ч муу биш байсан (хэдийгээр энэ нь анхны хувилбараас удаан ажилласан боловч):


Зүүн талд аль хэдийн танил болсон Фарнебэк урсгал, баруун талд дээр дурдсан унадаг дугуй байна

Дуу чимээний үүднээс харахад харамсалтай нь энэ нь дээрдсэнгүй.

Ерөнхийдөө бүх зүйл муу, гэхдээ маш логиктой байсан. Яагаад гэвэл ийм байх ёстой байсан.


Асуудлын зураглал. Эндхийн хөдөлгөөн баруун тийш нэг алхам хэвээр байна

Дээрх зурган дээрээс хэдэн ногоон цэг сонгоцгооё. Бид хөдөлгөөний чиглэлийг мэдэж, өгөгдсөн чиглэлд хөдөлж буй ногоон цэгийнхээ "шилжсэн ихрийг" хайж байна гэж бодъё. Бид хэзээ хүссэн ихрийг олсон гэж шийдэх вэ? Бидний хүрээлэн буй орчинтой төстэй өвөрмөц газар болох "газрын тэмдэг" дээр бүдрэх үед эхлэх цэг. Жишээлбэл, буланд. Энэ талаархи өнцгийг хянахад хялбар байдаг, учир нь тэдгээр нь өөрөө маш ховор байдаг. Хэрэв бидний ногоон цэг бол өнцөг бөгөөд тухайн хөршөөс ижил төстэй өнцгийг олвол асуудал шийдэгдэнэ.

Босоо шугамтай (зүүн талын хоёр дахь ногоон цэг) нөхцөл байдал арай илүү төвөгтэй, гэхдээ хялбар хэвээр байна. Бид баруун тийшээ шилжиж байгаа тул хайлтын бүх хугацаанд босоо шугамтай зөвхөн нэг удаа таарна. Бид хайлтын цонхоор зураг дээр мөлхөж байгаа бөгөөд бид хатуу дэвсгэр, дэвсгэр, дэвсгэр, босоо шугам, дахин дэвсгэр, дэвсгэр, дэвсгэрийг дахин харж байна гэж төсөөлөөд үз дээ. Энэ нь бас амархан.

Бид байгаа шугамын хэсгийг хянах гэж оролдох үед асуудал гарч ирдэг хөдөлгөөнтэй зэрэгцээ. Улаан цэгт нүүлгэн шилжүүлсэн ихрийн дүрд тохирох нэг тодорхой нэр дэвшигч байдаггүй. Тэдгээрийн олон нь байдаг, бүгд ойрхон байдаг бөгөөд бидний ашигладаг аргаар аль нэгийг нь сонгох боломжгүй юм. Энэ нь оптик урсгалын функциональ хязгаарлалт юм. "Бид хоёр үл мэдэгдэх хувьсагчтай энэ нэг тэгшитгэлийг шийдэж чадахгүй" гэсэн нийтлэлд Википедиа эелдэгээр анхааруулж байгаа бөгөөд энд юу ч хийж чадахгүй.

Юу ч биш?

Ерөнхийдөө, үнэнийг хэлэхэд энэ нь бүхэлдээ үнэн биш байж магадгүй юм. Та баруун зурган дээрх улаан цэгийг олж чадах уу? Энэ нь бас тийм ч хэцүү биш боловч үүний тулд бид өөр аргыг ашигладаг - бид ойролцоох "ногоон цэг" -ийг (доод булан) олж, түүнд хүрэх зайг тооцоолж, кубын хоёр дахь нүүрэн дээрх тохирох зайг тогтооно. Оптик урсгалын алгоритмууд өсөх зайтай байдаг - энэ аргыг хэрэглэж болно (хэрэв үүнийг хараахан хийгээгүй бол).

6. FTW ногоон цэгүүд

Үнэн хэрэгтээ, энэ мөчид хоцрогдсон нийтлэг ойлголтоос харахад бид эцсийн зорилго болох таних, ангилах болон бусад оюун ухаанд чухал ач холбогдолгүй нэмэлт ажил хийхийг хичээсээр байна. Бид яагаад дотогшоо орох гээд байгаа юм гурван хэмжээст ертөнц бүгдзургийн цэгүүд? Бид 2D зурагтай ажиллахдаа ч пиксел бүрийг ангилах гэж оролддоггүй, ихэнх нь ямар ч үнэ цэнэгүй байдаг. хэрэгтэй мэдээлэл. Яагаад энд адилхан хийж болохгүй гэж?

Үнэндээ бүх зүйл маш энгийн болсон. Бид ижил оптик урсгалыг тооцоолох болно, гэхдээ зөвхөн "ногоон", тогтвортой цэгүүдийн хувьд. Дашрамд хэлэхэд OpenCV бидэнд аль хэдийн санаа тавьсан. Бидэнд хэрэгтэй зүйл бол Лукас-Канадын урсгал гэж нэрлэгддэг.

Ижил тохиолдлуудад код, жишээ өгөх нь жаахан уйтгартай байх болно, учир нь та ижил зүйлийг авдаг, гэхдээ илүү бага оноотой. Замдаа өөр зүйл хийцгээе: жишээлбэл, бидний алгоритм дээр камерын эргэлтийг зохицуулах чадварыг нэмээрэй. Үүнээс өмнө бид зөвхөн хажуу тийшээ хөдөлж байсан бөгөөд энэ нь галт тэрэгний цонхны гадна бодит ертөнцөд маш ховор тохиолддог.

Эргэлтийн үед бидний хувьд X ба Z координатууд холилдсон. Камертай холбоотой координатыг тооцоолох хуучин томъёог орхиж, бид тэдгээрийг үнэмлэхүй координат болгон дараах байдлаар хөрвүүлнэ (энд - камерын байрлалын координат, альфа - эргэлтийн өнцөг):

(y бол хууран мэхлэлт; энэ нь камер дээш доош хөдөлдөггүй гэдэгт бид итгэдэг)

Энд хаа нэгтээ бидэнд фокусын урттай холбоотой асуудал тулгардаг - бид үүнийг дур зоргоороо тохируулахаар шийдсэнийг санаж байна уу? Тиймээс, одоо бид нэг цэгийг өөр өөр өнцгөөс үнэлэх боломжтой болсон тул энэ нь чухал болж эхэлсэн - яг X ба Z координатууд бие биендээ саад болж эхэлсэнтэй холбоотой. Үнэн хэрэгтээ, хэрэв бид өмнөхтэй төстэй кодыг дур зоргоороо фокустай ажиллуулбал дараах зүйлийг харах болно.


Энэ нь тодорхой биш боловч энэ нь ердийн шоо тойруулан камерыг тойрон гарах оролдлого юм. Хүрээ бүр нь тооцоолол юм харагдах цэгүүдкамерын дараагийн эргэлтийн дараа. Мини зураг дээрх шиг дээд харагдах байдал.

Аз болоход бид оптик урсгалтай хэвээр байна. Эргэхэд бид аль цэг рүү явж байгааг харж, тэдгээрийн координатыг хоёр өнцгөөс тооцоолж болно. Эндээс фокусын уртыг олоход хялбар байдаг (өөр өөр альфа утгуудын хувьд дээрх хоёр томьёог авч, координатыг тэнцүүлж, f-г илэрхийлнэ үү). Илүү дээр:


Бүх цэгүүд бие биендээ бүрэн нийцэж байгаа гэсэн үг биш, гэхдээ та үүнийг ядаж шоо гэж таамаглаж болно.

Эцэст нь хэлэхэд, бид ямар нэгэн байдлаар чимээ шуугиантай тэмцэх хэрэгтэй бөгөөд үүнээс болж цэгүүдийн байршлын талаархи бидний тооцоолол үргэлж давхцдаггүй (дээрх gif дээрх цэвэрхэн тэгш бус цагиргийг харна уу? Тэдгээрийн оронд нэг цэг байх ёстой. ). Бүтээлч байх орон зай аль хэдийн бий, гэхдээ хамгийн тохиромжтой арга нь надад ингэж санагдсан:
- Бид хажуу тийшээ хэд хэдэн ээлжээр ээлжлэх үед бид тэдгээрээс авсан мэдээллийг нэгтгэдэг тул нэг цэгийн хувьд бид нэг дор хэд хэдэн гүний тооцоолол хийх болно;
- камер эргэх үед бид хоёр багц цэгийг (эргэлтийн өмнө ба дараа) тааруулж, нэгийг нь нөгөөд нь тохируулахыг хичээдэг. Энэ тохируулгыг "цэг бүртгэх" гэж зүй ёсоор нэрлэдэг (хэрэв та энэ нэр томъёог контекстээс гадуур сонссон бол та үүнийг хэзээ ч тааварлахгүй) бөгөөд үүний тулд би python + OpenCV хувилбарыг Google-ээр дамжуулан хамгийн ойрын цэгийн давталтын алгоритмыг ашигласан;
- дараа нь босго радиус дотор байрлах цэгүүд (хамгийн ойрын хөршийн аргаар тодорхойлогддог) хоорондоо нийлдэг. Цэг бүрийн хувьд бид "эрчим" гэх мэт зүйлийг хянаж байдаг - энэ нь бусад цэгүүдтэй хэр олон удаа нийлсэнийг тоологч юм. Илүү их байх тусам энэ нь шударга бөгөөд зөв цэг байх магадлал өндөр болно.

Үр дүн нь Портал шоотой адил хатуу биш байж болох ч ядаж үнэн зөв байна. Би эхлээд Blender-д ачаалж, камерыг эргүүлж, үүссэн фрэймүүдийг хадгалсан хэд хэдэн дахин бүтээгдсэн загварууд энд байна.


Профессор Доуэллийн толгой


Зарим санамсаргүй машин

Өргөдөл

Жаахан эргээд харцгаая, яагаад бид энэ бүхнийг хийснээ санацгаая. Үндэслэл нь дараах байдалтай байв.
- Бид зурган дээр харуулсан зүйлсийг таньж мэдэх хэрэгтэй
- гэхдээ бид байр сууриа өөрчлөх эсвэл нэг зүйлийг өөр өөр өнцгөөс харах бүрт эдгээр зургууд өөрчлөгддөг. Заримдаа танигдахын аргагүй
- энэ бол алдаа биш, харин онцлог шинж чанар: бидний хязгаарлагдмал нүдний мэдрэгч нь объектыг бүхэлд нь биш харин зөвхөн хэсгийг л хардаг.
Тиймээс мэдрэгчээс авсан эдгээр хэсэгчилсэн өгөгдлийг ямар нэгэн байдлаар нэгтгэж, тэдгээрээс тухайн сэдвийн талаархи санааг бүрэн хэлбэрээр нь цуглуулах шаардлагатай байна.

Ерөнхийдөө энэ бол мэдээжийн хэрэг асуудал юм. Ганц тийм бишалсын хараа. Энэ бол дүрэм биш, харин үл хамаарах зүйл юм - манай мэдрэгчүүд бүхнийг чадагч биш, тэд объектын талаарх мэдээллийг хэсэг хэсгээр нь байнга хүлээн авдаг - гэхдээ ийм бүх тохиолдлуудыг ямар нэгэн нийтлэг хүрээ болгон нэгтгэж болох нь сонин байна уу? (Алсын хараа руу буцах) одоо таны нүд байнга жижиг бөгөөд маш хурдан хөдөлгөөн хийж байна - харааны талбар дахь объектуудын хооронд үсэрч байна (мөн эдгээр хөдөлгөөний хоорондох зайнд таны алсын хараа огт ажиллахгүй - ийм учраас та толин тусгал руу хоосон ширтсэн ч гэсэн өөрийнхөө сакадыг харж чадахгүй байна). Тархи нь харж байгаа хэсгүүдээ "хоёулах" гэж байнга шаргуу ажилладаг. тэр- Бидний дөнгөж сая шийдэх гэж оролдсон асуудал эсвэл өөр хэвээр байна уу? Бид аравтай тэнцэх боломжтой үед ярианы ойлголт өөр өөр сонголтууд"хамгийн тохиромжтой" үсгийн аль нэгтэй үгийг дуудах нь мөн адил ажил мөн үү? Сэдвийн нэг "дүрс"-тэй ижил утгатай үгсийг багасгах талаар юу хэлэх вэ?

Хэрэв тийм бол асуудал нь бидний дутуу хөгжиж буй нүдний сканнерын лазер заагчийг орлуулдаг харааны системийн локал алгоритмаас илүү байж магадгүй юм.

Байгаль дээр харагдаж буй аливаа зүйлийг дахин бүтээх гэж оролдох үед түүний бүх бүрэлдэхүүн хэсгүүдийг сохроор хуулбарлах нь утгагүй гэдгийг тодорхой анхаарч үздэг. Агаарт нисэхийн тулд далавч, өдтэй байх шаардлагагүй, хатуу далавч, өргөлт хангалттай; Хурдан гүйхийн тулд механик хөл хэрэггүй - дугуй нь илүү сайн ажиллах болно. Бид харж байгаа зүйлээ хуулбарлахын оронд нэг зарчмыг олж, өөрсдөө давтахыг хүсдэг (магадгүй үүнийг илүү хялбар / илүү үр дүнтэй болгох). Нислэгийн аэродинамикийн хуулиудын аналог болох тагнуулын зарчим юу болохыг бид хараахан мэдэхгүй байна. Гүн суралцах ба түүний бошиглогч Ян Лекун (түүний дараа бусад олон хүмүүс) хүлээн авсан өгөгдлөөс "гүн" шинж чанарын шатлалыг бий болгох чадварыг хайх хэрэгтэй гэж үзэж байна. Магадгүй бид үүн дээр өөр нэг сайжруулалт нэмж болох юм - холбогдох өгөгдлийг нэгтгэж, тэдгээрийг нэг объектын хэсэг гэж ойлгож, шинэ хэмжээст байрлуулах чадвар?

Шошго: шошго нэмэх

Та утсан дээрээ зургаар хайх хэрэгтэй үе байдаг. Тийм ээ, бидний ихэнх нь компьютер дээр ийм ажиллагааг хэрхэн хийхийг мэддэг.

Тэнд бүх зүйл энгийн байдаг - хөтөч бүр (, Google гэх мэт) зургийг хүсэлт болгон ашиглах өөрийн гэсэн хуудастай байдаг.

Үнэндээ үлдсэн цорын ганц зүйл бол анхны зургийг зааж өгнө үүмөн холбогдох материалыг хайж эхэлнэ.

Зарим хэрэглэгчдийн үзэж байгаагаар ийм үйлдлийг хийх нь тийм ч хялбар биш юм.

Үйлдлийн алгоритм нь ижил бөгөөд зарим тохиолдолд бүр илүү хялбар байдаг. Үүний тулд ямар үйлчилгээ, програм ашиглах, хэрхэн зөв хийх талаар мэдэхэд л хангалттай.

Гэхдээ бид танд 5 хэлэх болно хамгийн сайн сонголтууд, энэ нь зурагнаас ямар нэг зүйлийг олоход тусална.

Агуулга:

Гүүгл Кром

Энэ бол ажилладаг бүх ухаалаг гар утас, таблет дээр анхдагчаар ажилладаг ижил хөтөч юм.

Дашрамд хэлэхэд, Yandex нь Google-тэй адил өөрийн гэсэн хөтөчтэй боловч зурагт үзүүлсэн шиг цонх, функцгүй байна. Тиймээс үүнийг татаж авах нь утгагүй юм.

TinEye

Мөн энэ нь дэлхийн өнцөг булан бүрээс хэрэглэгчдэд зургаар мэдээлэл хайх боломжийг олгох тусгай үйлчилгээ юм.

Олон мэргэжлийн хүмүүс түүнийг мэддэг.

Хэдийгээр энэ нь сонирхогчдын дунд алдартай боловч түүний тусламжтайгаар даалгаврыг гүйцэтгэх нь маш ашигтай бөгөөд нэлээд мэдээлэл сайтай, үнэн зөв үр дүнг өгдөг.

Үүнийг ашиглахын тулд дараах зүйлийг хийнэ үү.

  1. Албан ёсны вэбсайт руу очно уу (доорх холбоос). Нөөцийн хуудас нь таны төхөөрөмжид автоматаар дасан зохицдог бөгөөд энэ нь маш чухал юм.
  2. Дараа нь бүх зүйл маш тодорхой байна - нэг товчлуур, хүсэлт оруулах талбар байдаг. Хэрэв та товчлуур дээр дарвал эх файлын байршлыг зааж өгөх шинэ цонх гарч ирнэ. Мөн оролтын талбар нь зургийн холбоосыг ашиглах зориулалттай. Хэрэв хоёрдахь аргыг ашиглавал, өөрөөр хэлбэл холбоосыг оруулсан бол та томруулдаг шилний дүрс дээр дарах хэрэгтэй болно.
  3. Үүний дараа процесс явагдана.

TinEye нь Yandex болон Google-ийн ашигладаг алгоритмаас огт өөр алгоритмтай байдаг нь анхаарал татаж байна.

Ихэнх тохиолдолд үр дүн нь илүү нарийвчлалтай, хэрэглэгчийн хүлээлттэй нийцдэг. Тиймээс та энэ үйлчилгээг ашиглахыг хичээх хэрэгтэй.

Google Googles

Энд бид ярьж байнаЗөвхөн зарим зураг төдийгүй таны байгаа газар, харж буй зүйлсийн талаар мэдээлэл хайдаг стандарт бус програмын тухай.

Энэ нь та үзэж буй галерей дахь уран зураг эсвэл дэлгүүрт харсан хүнсний бүтээгдэхүүнийхээ зургийг авч болно гэсэн үг юм.

Үүний дараа програм нь зураг авсан сэдвээр байгаа бүх мэдээллийг олох болно.

Хөтөлбөр нь зураг дээрх текстийг таних дагалдах орчуулгын горимтой гэдгийг тэмдэглэх нь зүйтэй.

Өөрөөр хэлбэл, та зарим бичээсийн зургийг авч, програм нь энэ бичээсийг хүсэлт болгон ашиглаж, жишээлбэл, орос хэлнээс англи хэл рүү орчуулах боломжтой.

Ухаалаг утсан дээрээ Google-г ашиглахын тулд дараах зүйлийг хийнэ үү.

  • програмыг ажиллуулах (мэдээжийн хэрэг үүнээс өмнө татаж аваад суулгана уу);
  • доорх үйлдлийн горимыг сонгох;
  • ердийнх шигээ зураг авах;
  • үр дүнг харна уу.

CamFind

Мөн бидний жагсаалтыг хааж байгаа нь Google Googles-тэй ижил зарчмаар ажилладаг өөр нэг програм юм, гэхдээ үндсэндээ дэлгүүрт байгаа бүх төрлийн барааг хайдаг.

Жишээлбэл, та нарны шил эсвэл тарагны шилний зургийг авах боломжтой бөгөөд програм нь энэ бүтээгдэхүүний талаархи бүх мэдээллийг шууд олох болно.

Хэрэв эдгээр нь нүдний шил юм бол та янз бүрийн жижиглэн худалдааны сүлжээ, сорт, брэнд гэх мэт үнийг харах болно.

Ер нь бол байнга дэлгүүр хэсдэг, эсвэл зүгээр л дэлгүүрээс юм худалдаж авдаг хүмүүст зориулагдсан.

Нөгөөтэйгүүр, энэ нь жишээлбэл, хүүхдүүддээ худалдаж авсан бүтээгдэхүүнийхээ найрлагыг мэдэхийг хүсдэг эцэг эхчүүдэд ашигтай байх болно. Ерөнхийдөө энэ бол үнэхээр сайн бөгөөд хэрэгтэй зүйл юм.

Энэ програмыг ашиглах нь бас маш энгийн бөгөөд дараах байдалтай байна.

  • зураг авах;
  • таних хүртэл хүлээх;
  • үр дүнг харна уу.

Эндээс та зарим зургийг тусгай цуглуулгадаа шилжүүлж болно ("Дуртай" хэсэг).