კომპიუტერული ხედვა არის დისციპლინა, რომლის მიზანია კომპიუტერებისთვის ციფრული გამოსახულების მაღალი დონის გაგება. ეს საკმაოდ ფართო განმარტებაა, რადგან გაგება შეიძლება ნიშნავდეს ბევრ განსხვავებულ რამეს, მათ შორის სურათზე ობიექტის პოვნას (ობიექტის ამოცნობა), იმის გაგებას, თუ რა ხდება (მოვლენის ამოცნობა), სურათის ტექსტში აღწერას ან სცენის 3D რეკონსტრუქციას. ასევე არსებობს სპეციალური ამოცანები, რომლებიც დაკავშირებულია ადამიანის სურათებთან: ასაკისა და ემოციების შეფასება, სახის ამოცნობა და იდენტიფიკაცია და 3D პოზების შეფასება, რომ დავასახელოთ რამდენიმე.
სალექციო ვიქტორინა
კომპიუტერული ხედვის ერთ-ერთი უმარტივესი ამოცანაა გამოსახულებების კლასიფიკაცია.
კომპიუტერული ხედვა ხშირად განიხილება AIს ფილიალად. დღესდღეობით, კომპიუტერული ხედვის ამოცანების უმეტესობა წყდება ნერვული ქსელების გამოყენებით. ჩვენ უფრო მეტს გავიგებთ კომპიუტერული ხედვისთვის გამოყენებული სპეციალური ტიპის ნერვული ქსელების შესახებ, კონვოლუციური ნერვული ქსელები, ამ განყოფილებაში.
თუმცა, სანამ სურათს ნერვულ ქსელში გადასცემდით, ხშირ შემთხვევაში აზრი აქვს გამოიყენოს ზოგიერთი ალგორითმული ტექნიკა გამოსახულების გასაუმჯობესებლად.
არსებობს პითონის რამდენიმე ბიბლიოთეკა გამოსახულების დამუშავებისთვის:
- imageio შეიძლება გამოყენებულ იქნას გამოსახულების სხვადასხვა ფორმატის წასაკითხად/ჩასაწერად. ის ასევე მხარს უჭერს ffmpeg-ს, სასარგებლო ხელსაწყოს ვიდეო ჩარჩოების სურათებად გადაქცევისთვის.
- ბალიში (ასევე ცნობილი როგორც PIL) ოდნავ უფრო ძლიერია და ასევე მხარს უჭერს ზოგიერთი სურათის მანიპულირებას, როგორიცაა მორფირება, პალიტრის კორექტირება და სხვა.
- OpenCV არის მძლავრი გამოსახულების დამუშავების ბიბლიოთეკა დაწერილი C++-ში, რომელიც გახდა დე ფაქტო სტანდარტი გამოსახულების დამუშავებისთვის. მას აქვს პითონის მოსახერხებელი ინტერფეისი.
- dlib არის C++ ბიბლიოთეკა, რომელიც ახორციელებს მანქანური სწავლების ბევრ ალგორითმს, მათ შორის Computer Vision-ის ზოგიერთ ალგორითმს. მას ასევე აქვს პითონის ინტერფეისი და შეიძლება გამოყენებულ იქნას რთული ამოცანებისთვის, როგორიცაა სახის და სახის ნიშნის ამოცნობა.
OpenCV
OpenCV ითვლება დე ფაქტო სტანდარტად გამოსახულების დამუშავებისთვის. ის შეიცავს უამრავ სასარგებლო ალგორითმს, რომელიც დანერგილია C++-ში. შეგიძლიათ დარეკოთ OpenCV პითონიდანაც.
OpenCV-ის შესასწავლად კარგი ადგილია ეს Learn OpenCV კურსი. ჩვენს სასწავლო გეგმაში ჩვენი მიზანი არ არის ვისწავლოთ OpenCV, არამედ გაჩვენოთ რამდენიმე მაგალითი, როდის და როგორ შეიძლება მისი გამოყენება.
სურათების ჩატვირთვა
პითონში სურათები შეიძლება მოხერხებულად იყოს წარმოდგენილი NumPy მასივებით. მაგალითად, 320x200 პიქსელის ზომის ნაცრისფერი გამოსახულებები შეინახება 200x320 მასივში, ხოლო იმავე განზომილების ფერადი გამოსახულებები იქნება 200x320x3 (3 ფერადი არხისთვის). სურათის ჩასატვირთად შეგიძლიათ გამოიყენოთ შემდეგი კოდი:
იტვირთება…
ტრადიციულად, OpenCV იყენებს BGR (ლურჯი-მწვანე-წითელი) დაშიფვრას ფერადი სურათებისთვის, ხოლო Python-ის დანარჩენი ხელსაწყოები იყენებს უფრო ტრადიციულ RGB-ს (წითელი-მწვანე-ლურჯი). იმისათვის, რომ სურათი სწორად გამოიყურებოდეს, თქვენ უნდა გადაიყვანოთ იგი RGB ფერთა სივრცეში, ან NumPy მასივში ზომების შეცვლით, ან OpenCV ფუნქციის გამოძახებით:
იტვირთება…
იგივე cvtColor ფუნქცია შეიძლება გამოყენებულ იქნას სხვა ფერთა სივრცის ტრანსფორმაციების შესასრულებლად, როგორიცაა გამოსახულების გადაქცევა ნაცრისფერ ფერებში ან HSV (Hue-Saturation-Value) ფერთა სივრცეში.
თქვენ ასევე შეგიძლიათ გამოიყენოთ OpenCV ვიდეოს კადრ-კადრის ჩასატვირთად - მაგალითი მოცემულია სავარჯიშოში OpenCV ნოუთბუქი.
გამოსახულების დამუშავება
სურათის ნერვულ ქსელში მიწოდებამდე, შეიძლება დაგჭირდეთ წინასწარი დამუშავების რამდენიმე ნაბიჯის გამოყენება. OpenCV-ს შეუძლია ბევრი რამის გაკეთება, მათ შორის:
- სურათის ზომის შეცვლა
im = cv2.resize(im, (320,200),interpolation=cv2.INTER_LANCZOS)-ის გამოყენებით - სურათის გაბუნდოვნება
im = cv2.medianBlur(im,3)ანim = cv2.GaussianBlur(im, (3,3), 0)-ის გამოყენებით - სურათის სიკაშკაშისა და კონტრასტის შეცვლა შეიძლება განხორციელდეს NumPy მასივის მანიპულაციებით, როგორც აღწერილია ამ Stackoverflow შენიშვნაში.
- ბარიერი-ის გამოყენება
cv2.threshold/cv2.adaptiveThresholdფუნქციების დარეკვით, რაც ხშირად სასურველია სიკაშკაშის ან კონტრასტის რეგულირებაზე. - სურათზე განსხვავებული გარდაქმნები გამოყენება:
- აფინური გარდაქმნები შეიძლება იყოს გამოსადეგი, თუ თქვენ უნდა დააკავშიროთ როტაცია, ზომის შეცვლა და სურათის დახრილობა და თქვენ იცით სურათის სამი წერტილის წყარო და დანიშნულების ადგილი. აფინური გარდაქმნები ინარჩუნებენ პარალელურ ხაზებს პარალელურად.
- პერსპექტიული გარდაქმნები შეიძლება სასარგებლო იყოს, როდესაც თქვენ იცით სურათზე 4 წერტილის წყაროსა და დანიშნულების პოზიციები. მაგალითად, თუ სმარტფონის კამერით სურათს იღებთ მართკუთხა დოკუმენტს გარკვეული კუთხით და გსურთ თავად დოკუმენტის მართკუთხა სურათის გაკეთება.
- სურათის შიგნით მოძრაობის გაგება ოპტიკური ნაკადი-ის გამოყენებით.
Computer Vision-ის გამოყენების მაგალითები
ჩვენს OpenCV ნოუთბუქი-ში ჩვენ ვაძლევთ რამდენიმე მაგალითს, თუ როდის შეიძლება გამოვიყენოთ კომპიუტერული ხედვა კონკრეტული ამოცანების შესასრულებლად:
- Pre-processing a photograph of a Braille book. ჩვენ ყურადღებას ვამახვილებთ იმაზე, თუ როგორ შეგვიძლია გამოვიყენოთ ბარიერი, მახასიათებლების გამოვლენა, პერსპექტივის ტრანსფორმაცია და NumPy მანიპულაციები ცალკეული ბრაილის სიმბოლოების განცალკევებისთვის ნერვული ქსელის შემდგომი კლასიფიკაციისთვის.
![]() | ![]() | ![]() |
|---|
სურათი OpenCV.ipynb-დან
- Detecting motion in video using frame difference. If the camera is fixed, then frames from the camera feed should be pretty similar to each other. ვინაიდან ჩარჩოები წარმოდგენილია როგორც მასივები, მხოლოდ ამ მასივების გამოკლებით ორ მომდევნო კადრს მივიღებთ პიქსელების განსხვავებას, რომელიც დაბალი უნდა იყოს სტატიკური ჩარჩოებისთვის და უფრო მაღალი გახდება, როდესაც სურათზე მნიშვნელოვანი მოძრაობა იქნება.

სურათი OpenCV.ipynb-დან
- მოძრაობის გამოვლენა ოპტიკური ნაკადის გამოყენებით. ოპტიკური ნაკადი საშუალებას გვაძლევს გავიგოთ, როგორ მოძრაობენ ცალკეული პიქსელები ვიდეო ჩარჩოებზე. არსებობს ორი სახის ოპტიკური ნაკადი:
- მკვრივი ოპტიკური ნაკადი ითვლის ვექტორულ ველს, რომელიც აჩვენებს თითოეულ პიქსელს სად მოძრაობს იგი
- მწირი ოპტიკური ნაკადი ეფუძნება გამოსახულების ზოგიერთი გამორჩეული მახასიათებლის მიღებას (მაგ. კიდეები) და მათი ტრაექტორიის აგებას კადრიდან ჩარჩომდე.

სურათი OpenCV.ipynb-დან
ნოუთბუქების მაგალითები: OpenCV სცადეთ OpenCV მოქმედებაში
მოდით გავაკეთოთ რამდენიმე ექსპერიმენტი OpenCV-ით OpenCV ნოუთბუქი-ის გამოკვლევით
დასკვნა
ზოგჯერ, შედარებით რთული ამოცანები, როგორიცაა მოძრაობის ამოცნობა ან თითის წვერი ამოცნობა, შეიძლება გადაწყდეს მხოლოდ კომპიუტერული ხედვით. ამრიგად, ძალიან სასარგებლოა კომპიუტერული ხედვის ძირითადი ტექნიკის ცოდნა და იმის ცოდნა, თუ რა შეუძლიათ OpenCV-ის მსგავსი ბიბლიოთეკებს.
გამოწვევა
უყურეთ ამ ვიდეოს-ს AI შოუდან, რათა გაიგოთ Cortic Tigers პროექტის შესახებ და როგორ შექმნეს ბლოკზე დაფუძნებული გადაწყვეტა რობოტის მეშვეობით კომპიუტერული ხედვის ამოცანების დემოკრატიზაციისთვის. Do some research on other projects like this that help onboard new learners into the field.
ლექციის შემდგომი ვიქტორინა
მიმოხილვა და თვითშესწავლა
წაიკითხეთ მეტი ოპტიკური ნაკადის შესახებ ამ დიდ ტუტორიალში.


