Агуулгын хүснэгт:

Raspberry Pi объект тоолох: 5 алхам
Raspberry Pi объект тоолох: 5 алхам

Видео: Raspberry Pi объект тоолох: 5 алхам

Видео: Raspberry Pi объект тоолох: 5 алхам
Видео: Штукатурка стен - самое полное видео! Переделка хрущевки от А до Я. #5 2024, Долдугаар сарын
Anonim
Raspberry Pi объект тоолох
Raspberry Pi объект тоолох

Компьютерийн алсын хараа нь үнэхээр гайхалтай зүйл юм! Үүнийг ашигласнаар компьютер нь эргэн тойрныхоо орчныг илүү сайн харах, мэдрэх чадварыг олж авдаг бөгөөд энэ нь нарийн төвөгтэй, ашигтай, дажгүй програмуудыг хөгжүүлэх боломжийг олгодог. Компьютерийн алсын харааг сайжруулсны ачаар нүүр таних, таних, объект хайх, объект илрүүлэх гэх мэт програмууд бидний өдөр тутмын үйл ажиллагаанд улам бүр нэмэгдсээр байна.

Компьютерийн харааны хүрээ, хэрэгслүүд хэр дэвшилтэт, хүртээмжтэй байдгийг харгалзан энэ нийтлэлд тайлбарласан програм нь энгийн Raspberry PI болон объектын хөдөлгөөнийг тоолохын тулд OpenCV хэмээх үнэгүй эх үүсвэр бүхий компьютерийн алсын хараатай системийг ашиглахад илүү тохиромжтой юм. объектууд тодорхой хяналттай бүсэд орж гардаг.

Алхам 1: Гүнзгийрэх: Зургийн урсгалд объектын хөдөлгөөнийг хэрхэн илрүүлэх вэ?

Гүнзгийрэх: Зургийн урсгалд объектын хөдөлгөөнийг хэрхэн илрүүлэх вэ?
Гүнзгийрэх: Зургийн урсгалд объектын хөдөлгөөнийг хэрхэн илрүүлэх вэ?

Одоо зураг боловсруулах зүйлсийг гүнзгийрүүлэх цаг болжээ

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

Энэ нь таван алхамаас бүрдэнэ

Алхам 1: Хөдөлгөөнд байгаа объектыг тодруулах

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

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

Зургийн боловсруулалтын хугацааг багасгахын тулд арын дэвсгэрийг хасахаас өмнө авсан хүрээ болон лавлах хүрээг саарал масштабтай дүрс болгон хөрвүүлнэ. Гэхдээ яагаад? Энэ бол тооцооллын үр ашгийн асуудал юм: олон өнгө (өнгөт зураг) харуулсан зураг нь пиксел тутамд гурван мэдээлэл агуулдаг: Улаан, Цэнхэр, Ногоон өнгөний бүрэлдэхүүн хэсэг (хуучин боловч алтны RGB стандарт). Математикийн хувьд пиксел бүрийг гурван бүрэлдэхүүн хэсгийн массив гэж тодорхойлж болох бөгөөд тус бүр нь өнгөт бүрэлдэхүүн хэсгийг төлөөлдөг. Тиймээс, үүнийг бүхэлд нь дүрслэн харуулбал эцсийн зураг нь улаан, цэнхэр, ногоон гэсэн гурван бүрэлдэхүүн хэсгийн холимог байх болно.

Үүнийг боловсруулахын тулд маш их хөдөлмөр шаардагдана! Гэсэн хэдий ч саарал масштабтай зургуудад пиксел бүр зөвхөн нэг өнгөний мэдээлэлтэй байдаг. Тиймээс, өнгөт зургийг боловсруулах нь саарал масштабтай зургийн хайрцагтай харьцуулахад 3 дахин удаан байдаг (ямар техник оролцож байгаагаас хамааран дор хаяж гурван удаа). Үүнээс гадна, зарим зорилгоор (энэ төсөл гэх мэт) бүх өнгийг боловсруулах нь огт шаардлагагүй эсвэл чухал биш юм. Тиймээс бид зураг боловсруулах зорилгоор саарал өнгийн зургийг ашиглахыг зөвлөж байна. Арын дэвсгэрийг хассны дараа Gaussian Blur шүүлтүүрийг ашиглах шаардлагатай болно.

Гауссын бүдэгрүүлэлтийн шүүлтүүрийг арын дэвсгэр дээр хассан зураг дээр байрлуулсан нь хөдөлж буй объектын бүх контурыг жигд болгодог. Мэдээжийн хэрэг, энэ нь зураг боловсруулах дараагийн үе шатанд туслах болно.

Алхам 2: Бинарчлах

Бинарчлах
Бинарчлах

Ихэнх тохиолдолд зураг боловсруулах тохиолдолд дүрс дээр обьект / шинж чанарыг тодруулсны дараа бинаризаци хийх нь бараг зайлшгүй шаардлагатай алхам юм. Шалтгаан: хоёртын зурган дээр пикселийн өнгө бүр нь зөвхөн хоёр утгыг авч болно: 0x00 (хар) эсвэл 0xFF (цагаан). Дараагийн алхамуудад зураг боловсруулах техникийг ашиглахын тулд бүр бага "тооцоолох хүч" шаардагдахын тулд энэ нь зураг боловсруулахад маш их тусалдаг. Саарал масштабтай зургийн пикселийн өнгө бүрийг тодорхой босготой харьцуулж бинаризацийг хийж болно. Хэрэв пикселийн өнгөний утга нь босго хэмжээнээс их байвал энэ пикселийн өнгө нь цагаан утгыг (0xFF), хэрэв пикселийн өнгөний босго хэмжээнээс доогуур байвал энэ пикселийн өнгө нь хар утгыг (0x00) авна. Харамсалтай нь босго утгыг сонгох нь тийм ч хялбар биш юм. Энэ нь гэрэлтүүлгийн нөхцөл гэх мэт хүрээлэн буй орчны хүчин зүйлээс хамаарна. Босго утгыг буруу сонгох нь цаашдын бүх алхамыг сүйтгэж болзошгүй юм. Тиймээс, цаашид ямар нэгэн арга хэмжээ авахаасаа өмнө тухайн төслийнхөө босгыг гараар тохируулахыг танд зөвлөж байна. Энэ босго утга нь хөдөлж буй объектыг хоёртын дүрс дээр харуулахыг баталгаажуулах ёстой. Миний хувьд, босго оновчтой сонголт хийсний дараа 5 -р зурагт үзүүлсэн үр дүн гарна.

Зураг 5 - хоёртын дүрс

Алхам 3: Өргөтгө

Өнөөг хүртэл хөдөлж буй объектуудыг илрүүлж, тэдгээрийг тодруулж, бинаризацийг ашиглах боломжтой байсан бөгөөд үүний үр дүнд хөдөлж буй объектын тодорхой дүр төрх гарч ирэв (= дүрс боловсруулах зорилгоор объектын нэлээд тод дүрс). Объект тоолох бэлтгэл ажил бараг хийгдэж байна. Энд байгаа "АЛМОСТ" гэдэг нь цааш явахаасаа өмнө зарим нарийн тохируулгууд хийгдсэн гэсэн үг юм. Энэ үед объектууд дээр "нүх" байх магадлал бий болно (цагаан өнгийн тодруулсан объект руу пикселийн хар масс). Эдгээр нүх нь гэрэлтүүлгийн тодорхой нөхцлөөс объектын хэлбэрийн зарим хэсэг хүртэл юу ч байж болно. Нүхнүүд бодит объектуудын дотор хуурамч объектыг "үйлдвэрлэж" чадвал (хичнээн том, хаана байрлаж байгаагаас хамаарч) зураг дээрх нүхнүүдийн үр дагавар нь объектын тооллогыг сүйрэлд хүргэж болзошгүй юм. Эдгээр нүхийг арилгах арга бол Dilate хэмээх дүрс боловсруулах техникийг ашиглах явдал юм. Үүнийг ашиглаад нүх арилна.

Алхам 4: Контурыг хайх (ба түүний төвүүд)

Контурыг хайх (ба түүний центроидууд)
Контурыг хайх (ба түүний центроидууд)

Энэ үед бидэнд тодруулсан объектууд байгаа бөгөөд дотор нь ямар ч нүх байхгүй бөгөөд дараагийн зүйлд бэлэн байна. OpenCV дээр контурыг автоматаар илрүүлэх нөөцүүд байдаг боловч илрүүлсэн тоолуурыг ухаалгаар сонгох ёстой (зөвхөн бодит объект эсвэл объектыг сонгохын тулд). Тиймээс контурыг илрүүлэх шалгуур нь объектын пиксел квадратаар хэмжигдэх талбай юм. Хэрэв контур нь хязгаараас өндөр талбайтай бол (програм хангамжид тохируулагдсан) тул үүнийг тоолох ёстой бодит объект гэж үзэх ёстой. Энэ бүсийн хязгаар/шалгуурыг сонгох нь маш чухал бөгөөд энд буруу сонголт хийсэн нь буруу тоолох гэсэн үг юм. Та бүс нутгийн утгын хязгаарын утгыг туршиж үзэх хэрэгтэй бөгөөд таны хэрэглээнд юу илүү сайн нийцэж байгааг шалгах хэрэгтэй. Санаа зоволтгүй, эдгээр хязгаарыг олох / тохируулах нь тийм ч чухал биш юм. Зураг дээрх бүх объектыг сонгож авсны дараа дараагийн алхам бол түүн дээр дахин зураг зурах явдал юм (энэ эргэлт нь дотор нь илрүүлсэн бүхэл бүтэн объектыг агуулсан байх ёстой). Мөн энэ тэгш өнцөгтийн төв нь…. объект центрод! Та магадгүй "Энэ центройд ямар ач холбогдолтой вэ?" Гэж бодож байгаа байх, тийм үү? Таны хариулт энд байна: объектын хэлбэр, хэмжээ нь хамаагүй, түүний хөдөлгөөн нь центройдтой ижил байна. Өөрөөр хэлбэл centroid гэж нэрлэгддэг энэхүү энгийн цэг нь объектын бүх хөдөлгөөнийг илэрхийлдэг. Энэ нь одоо тоолох ажлыг маш энгийн болгож байгаа биз дээ? Доорх зургийг үзнэ үү (Зураг 6), объектын төвийг хар цэг болгон дүрсэлсэн болно.

Алхам 5: Центоридын хөдөлгөөн ба объект тоолох

Эцсийн шалгаруулалт: объектын центроидын координатыг орох ба гарах шугамын координаттай харьцуулж, өмнө тайлбарласан тоолох алгоритмыг ашиглана. Мөн хөдөлж буй объектуудыг тоолох болно!

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

Зөвлөмж болгож буй: