Mga Proyekto sa Computer Vision
Repository ng GitHub ng Proyekto
Tungkol
Ipinapakita ng repo na ito ang lahat ng mga coding na proyekto (mga lab) na pinagtulungan nina Mehmet at Jean habang naka-enroll sa CSCI437 noong semestre ng Taglagas 2020 sa Colorado School of Mines, na sumasaklaw sa panahon mula Agosto 28, 2020, hanggang Disyembre 14, 2020. Ang mga lab na ito ay nagbigay ng komprehensibong plataporma para sa pag-aaral ng Python, OpenCV, at mga pangunahing konsepto ng computer vision.
Tungkol sa Klase
Kinuha ko ang Panimula sa Computer Vision (CSCI437) noong semestre ng Taglagas 2020. Sa panahong ito, sina Dr. William Hoff at Dr. Tom Williams ang nagturo ng klase. CSCI437. Narito ang opisyal na paglalarawan ng klase para sa CSCI437:
(I) Computer vision is the process of using computers to acquire images, transform images, and extract symbolic descriptions from images. This course provides an introduction to this field, covering topics in image formation, feature extraction, location estimation, and object recognition. Design ability and hands-on projects will be emphasized, using popular software tools. The course will be of interest both to those who want to learn more about the subject and to those who just want to use computer imaging techniques. Must be Senior level standing. 3 hours lecture; 3 semester hours. Prerequisite: (MATH201 or MATH334 or EENG311),and,MATH332,and,(CSCI200 or CSCI261).
Mga Kredito
May mga Python script at/o mga segment ng code na ibinigay ng klase ng CSCI437 durante ng lecture, sa slides, o sa pamamagitan ng Canvas. Ang klase ng CSCI437 ay ibinibigay sa Colorado School of Mines. Ang mga lab na ito ay ginawa kasama ang mga sumusunod na partner:
- Jean Duong
- Mehmet Yilmaz
Mga Paglalarawan ng Lab
Laboratoryo 1
Nakatuon ang Laboratoryo 1 sa mga batayan ng paggamit ng OpenCV kasama ang Python. Inaasahan na ang mga kalahok ay magsusulat ng isang Python na programa na nagbabasa ng video file, nagpo-project ng apat na punto na bumubuo ng isang parisukat sa bawat frame ng video, at nagsi-simulate ng paglayo ng parisukat patungo sa malayo sa pamamagitan ng paunti-unting pag-aayos ng Z coordinate ng bawat punto. Bukod dito, ang numero ng frame ay dapat ipakita sa bawat frame, at ang huling video na may mga graphic overlay ay i-upload para sa pagtatasa.
Laboratoryo 2
Tinutukoy ng Laboratoryo 2 ang mga transformasyon ng imahe, partikular na nakatuon sa mga rotasyon sa paligid ng X, Y, at Z na mga axis gamit ang “XYZ fixed angles” na konbensyon. Inaatasan ang mga estudyante na kalkulahin ang mga rotation matrix, kalkulahin ang homogeneous transformation matrices para sa mga pose ng camera, lumikha ng calibration matrix, at i-project ang mga punto sa isang imahe upang bumuo ng isang pamilyar na bagay gamit ang OpenCV’s line function. Binibigyang-diin ng lab ang pag-unawa sa geometry ng camera at mga transformation matrix sa computer vision.
Laboratoryo 3
Ang Laboratoryo 3 ay tungkol sa template matching, kung saan inaatasan ang mga estudyante na subaybayan ang isang template sub-image sa bawat frame ng isang movie file gamit ang normalized cross correlation. Kasama sa takdang-aralin ang pagpapahintulot sa gumagamit na pumili ng template mula sa unang imahe ng movie, pagsubaybay sa template sa mga kasunod na imahe, pagguhit ng mga parihabang kahon upang ipahiwatig ang lokasyon ng template sa bawat imahe, at paggawa ng output movie file upang ipakita ang mga lokasyong ito. Hinihikayat ang mga estudyante na subukan ang iba’t ibang mga template upang maunawaan kung alin ang nagbibigay ng pinakamahusay na pagsubaybay at bakit, at upang talakayin ang mga correlation score na napapansin kapag tama ang pagkakakilanlan ng mga tugma.
Laboratoryo 4
Nakatuon ang Laboratoryo 4 sa color segmentation gamit ang HSV color space, isang teknik na tinalakay sa mga lektura dahil sa pagiging epektibo nito sa paghawak ng mga kulay ng imahe. Inaatasan ang mga estudyante na mag-apply ng mga threshold operation upang i-segment ang mga pixel ng stop sign mula sa mga ibinigay na imahe, gamit ang isang Python/OpenCV na programa. Kinakailangan ng takdang-aralin ang paghahanap ng mga value ng threshold na pinakamahusay na nakakakita ng mga pixel ng stop sign, pagsasagawa ng mga morphological operation upang linisin ang resulta, at pagsusumite ng mga segmented na imahe kasama ang Python na programa at ang mga ginamit na parameter ng threshold at morphological operation.
Laboratoryo 5
Kinasasangkutan ng Laboratoryo 5 ang gawain ng pagsingit ng bagong image texture sa isang partikular na bahagi ng umiiral na imahe sa isang paraan na tama ang hitsura ng projection. Ang prosesong ito, na kilala bilang plane replacement, ay nangangailangan ng paggamit ng projective transform (homography) na mga teknik upang i-map ang bagong imahe sa isang planar na bahagi ng umiiral na imahe. Binibigyang-diin ng lab ang praktikal na aplikasyon ng homography upang baguhin ang nilalaman ng imahe habang pinapanatili ang tamang perspektiba. Inaasahan na magsusumite ang mga estudyante ng orihinal na imahe, ang imahe na may pinalitang texture, ang pinagsamang imahe, at ang kanilang Python na programa bilang bahagi ng kanilang pagsusumite.
Laboratoryo 6
Hinahimok ng Laboratoryo 6 ang mga estudyante na tuklasin at kalkulahin ang pose ng isang target na binubuo ng limang magkakaibang concentric circles (CCCs) sa isang imahe. Kasama sa gawain ang paggamit ng OpenCV upang matukoy ang mga CCC target, ayusin ang mga ito nang tama, kalkulahin ang pose gamit ang OpenCV’s solvePnP() function, at iguhit ang coordinate axes at pose sa imahe. Binibigyang-diin ng lab ang aplikasyon ng mga konsepto tulad ng detection ng target, pose estimation, at pag-format ng visual na output sa computer vision.
Laboratoryo 7
Nakatutok ang Laboratoryo 7 sa detection at matching ng mga SIFT feature sa pagitan ng mga imahe. Layunin nito ang tukuyin ang mga tamang tugma ng SIFT feature mula sa isang imahe papunta sa isa pa at suriin ang katumpakan ng mga tugmang ito. Kasama sa lab ang paggamit ng ibinigay na Python code at mga imahe mula sa isang dataset, pag-aayos ng mga parameter ng algorithm upang i-optimize ang pagtuklas ng mga tugma, at pagkalkula ng precision at recall metrics upang tasahin ang pagganap ng proseso ng feature matching. Kinakailangan ng mga estudyante na isumite ang kanilang Python na programa at ang nakalkulang mga value ng precision at recall para sa iba’t ibang setting ng parameter.
Laboratoryo 8
Nakatuon ang Laboratoryo 8 sa object detection gamit ang feature matching at pagpapatugma ng affine transformation upang tuklasin at i-overlay ang mga bagay mula sa isang training image papunta sa isang query image. Kasama sa lab ang pagtuklas ng object sa iba’t ibang mga senaryo, pag-aayos ng threshold ng bilang ng inlier matches upang mabawasan ang false positives, at pagkalkula ng precision, recall, at accuracy metrics upang tasahin ang pagganap ng object detection system. Inaasahan na babaguhin at patatakbuhin ng mga estudyante ang ibinigay na Python code, susuriin ang pagganap ng sistema sa ilalim ng iba’t ibang kondisyon, at isumite ang kanilang mga natuklasan at binagong code.
Laboratoryo 9
Kinasasangkutan ng Laboratoryo 9 ang paglalagay ng mga annotation point sa isang object sa loob ng isang training image at awtomatikong pagpapakita ng mga puntong iyon nang tama sa object sa mga kasunod na query image. Binibigyang-diin ng lab ang feature extraction, matching gamit ang ratio test upang alisin ang mga ambiguous na tugma, pag-fit ng 2D affine transformation gamit ang RANSAC upang alisin ang mga outlier, at pag-aapply ng transformation upang i-map ang mga annotation point mula sa training papunta sa query images. Ang kritikal na gawain ay ayusin ang threshold na bilang ng inlier matches upang balansehin ang pagitan ng false positives at negatives, na may layuning makamit ang pinakamataas na katumpakan sa wastong pag-uuri ng mga imahe.
Laboratoryo 10
Nakalaan ang Laboratoryo 10 sa paggamit ng Hough transform upang hanapin ang mga line segment at tukuyin ang mga set ng parallel na linya sa loob ng isang imahe. Ginagamit nito ang probabilistic Hough Transform sa pamamagitan ng OpenCV’s cv2.HoughLinesP() function upang tuklasin ang mga line segment na kinakatawan ng kanilang mga endpoints. Kasama rin sa lab ang pagtukoy ng vanishing points sa pamamagitan ng pagsusuri sa direction vectors ng mga line segment na ito, na naglalayong maunawaan ang oryentasyon ng mga parallel na linya sa 3D space habang lumalabas ang mga ito sa 2D image plane. Inaatasan ang mga estudyante na iproseso ang mga test image upang mahanap ang mga parallel line segment, mag-eksperimento sa mga parameter upang i-optimize ang pagtuklas, at isumite ang kanilang mga resulta kasama ang isang Python na programa.
Mga Tala
- Kakailanganin mo ang sumusunod na mga panlabas na package ng Python upang patakbuhin ang mga script/lab na ito: cv2 at numpy.
- Ang ilan sa mga lab na ito ay maaaring mangailangan na gumamit ka ng isang partikular na bersyon ng cv2. Sa kasamaang-palad, ang mga kinakailangan ay hindi naitala, kaya kakailanganin mong tuklasin ito nang mag-isa. Kung matuklasan mo ito o ikaw ay na-stuck, pakireport ito sa form para sa mga isyu.