కంప్యూటర్ విజన్ ప్రాజెక్టులు

ప్రాజెక్ట్ యొక్క GitHub రిపోజిటరీ

పరిచయం

ఈ రిపోజిటరీ 2020 శరదృతు సెమిస్టర్‌లో Colorado School of Minesలో CSCI437లో నమోదు చేసుకున్న సమయంలో Mehmet మరియు Jean కలిసి పనిచేసిన అన్ని కోడింగ్ ప్రాజెక్టులను (ల్యాబ్‌లను) ప్రదర్శిస్తుంది. ఇది ఆగస్టు 28, 2020 నుండి డిసెంబర్ 14, 2020 వరకు ఉన్న కాలాన్ని కవర్ చేస్తుంది. ఈ ల్యాబ్‌లు Python, OpenCV మరియు ప్రాథమిక కంప్యూటర్ విజన్ భావనలను నేర్చుకోవడానికి సమగ్ర వేదికను అందించాయి.

తరగతి గురించి

నేను 2020 శరదృతు సెమిస్టర్‌లో కంప్యూటర్ విజన్ పరిచయం (CSCI437) కోర్సును తీసుకున్నాను. ఈ సమయంలో డా. William Hoff మరియు డా. Tom Williams తరగతిని బోధించారు. CSCI437. 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).

కృతజ్ఞతలు

CSCI437 తరగతి ఉపన్యాసాల సమయంలో, స్లైడ్‌లలో లేదా Canvas ద్వారా అందించిన Python స్క్రిప్ట్‌లు మరియు/లేదా కోడ్ భాగాలు ఉన్నాయి. CSCI437 తరగతి Colorado School of Minesలో అందించబడుతుంది. ఈ ల్యాబ్‌లు క్రింది భాగస్వాములతో కలిసి చేయబడ్డాయి:

  • Jean Duong
  • Mehmet Yilmaz

ల్యాబ్ వివరణలు

ల్యాబ్ 1

ల్యాబ్ 1 Pythonతో OpenCVను ఉపయోగించే ప్రాథమిక అంశాలపై దృష్టి సారిస్తుంది. వీడియో ఫైల్‌ను చదివే, వీడియోలోని ప్రతి ఫ్రేమ్‌పై చతురస్రాన్ని ఏర్పరచే నాలుగు బిందువులను ప్రొజెక్ట్ చేసే, ప్రతి బిందువు యొక్క Z నిర్దేశాంకాన్ని క్రమంగా సర్దుబాటు చేయడం ద్వారా చతురస్రం దూరంలోకి వెనుకకు వెళ్తున్నట్లు అనుకరించే Python ప్రోగ్రామ్‌ను రాయాలని పాల్గొనేవారిని ఆశిస్తారు. అదనంగా, ప్రతి ఫ్రేమ్‌పై ఫ్రేమ్ సంఖ్యను ప్రదర్శించాలి, అలాగే గ్రాఫిక్ ఓవర్‌లేలతో కూడిన తుది వీడియోను మూల్యాంకనం కోసం అప్‌లోడ్ చేయాలి.

ల్యాబ్ 2

ల్యాబ్ 2 చిత్రం పరివర్తనలతో వ్యవహరిస్తుంది; ముఖ్యంగా “XYZ fixed angles” నియమాన్ని ఉపయోగించి X, Y మరియు Z అక్షాల చుట్టూ భ్రమణాలపై దృష్టి సారిస్తుంది. విద్యార్థులు భ్రమణ మాత్రికలను లెక్కించడం, కెమెరా భంగిమల కోసం సమజాతీయ పరివర్తన మాత్రికలను గణించడం, ఒక కాలిబ్రేషన్ మాత్రికను సృష్టించడం, అలాగే OpenCV యొక్క line ఫంక్షన్‌ను ఉపయోగించి పరిచితమైన వస్తువును రూపొందించడానికి బిందువులను చిత్రంపై ప్రొజెక్ట్ చేయడం చేయాలి. కంప్యూటర్ విజన్‌లో కెమెరా జ్యామితి మరియు పరివర్తన మాత్రికలను అర్థం చేసుకోవడాన్ని ల్యాబ్ ప్రాధాన్యంగా చూపిస్తుంది.

ల్యాబ్ 3

ల్యాబ్ 3 టెంప్లేట్ సరిపోలిక గురించి ఉంటుంది. ఇందులో normalized cross correlation ఉపయోగించి సినిమా ఫైల్‌లోని ప్రతి ఫ్రేమ్ ద్వారా టెంప్లేట్ ఉపచిత్రాన్ని ట్రాక్ చేయాలి. సినిమాలోని మొదటి చిత్రం నుండి వినియోగదారు ఒక టెంప్లేట్‌ను ఎంచుకునేలా చేయడం, తరువాతి చిత్రాలన్నింటిలో ఆ టెంప్లేట్‌ను ట్రాక్ చేయడం, ప్రతి చిత్రంపై టెంప్లేట్ స్థానాన్ని సూచించడానికి దీర్ఘచతురస్రాలను గీయడం, అలాగే ఈ స్థానాలను చూపించడానికి అవుట్‌పుట్ సినిమా ఫైల్‌ను సృష్టించడం ఈ పనిలో భాగాలు. ఉత్తమ ట్రాకింగ్‌ను ఏ టెంప్లేట్ అనుమతిస్తుందో మరియు ఎందుకో అర్థం చేసుకోవడానికి విద్యార్థులు వివిధ టెంప్లేట్‌లతో ప్రయోగాలు చేయాలని, అలాగే సరిపోలికలు సరిగ్గా గుర్తించబడినప్పుడు గమనించిన సహసంబంధ స్కోర్‌లను చర్చించాలని ప్రోత్సహించబడతారు.

ల్యాబ్ 4

ల్యాబ్ 4 HSV రంగు స్పేస్‌ను ఉపయోగించి రంగు విభజనపై దృష్టి సారిస్తుంది. రంగు చిత్రాలను నిర్వహించడంలో దాని ప్రభావశీలత కారణంగా ఈ సాంకేతికతను ఉపన్యాసాలలో చర్చించారు. Python/OpenCV ప్రోగ్రామ్‌ను ఉపయోగించి అందించిన చిత్రాల నుండి స్టాప్ సైన్ పిక్సెల్‌లను విభజించడానికి threshold ఆపరేషన్లను వర్తింపజేయాలి. స్టాప్ సైన్ పిక్సెల్‌లను ఉత్తమంగా గుర్తించే threshold విలువలను కనుగొనడం, ఫలితాన్ని శుభ్రపరచడానికి morphological ఆపరేషన్లను నిర్వహించడం, అలాగే విభజించిన చిత్రాలను Python ప్రోగ్రామ్‌తో పాటు ఉపయోగించిన threshold మరియు morphological ఆపరేషన్ పరామితులతో సమర్పించడం ఈ పనికి అవసరం.

ల్యాబ్ 5

ల్యాబ్ 5లో ఇప్పటికే ఉన్న చిత్రంలోని ఒక నిర్దిష్ట ప్రాంతంలో కొత్త చిత్ర టెక్స్చర్‌ను చొప్పించడం ఉంటుంది; దీనివల్ల ప్రొజెక్షన్ సరైనదిగా కనిపించాలి. plane replacementగా పిలువబడే ఈ ప్రక్రియలో, ఇప్పటికే ఉన్న చిత్రంలోని సమతల ప్రాంతంపై కొత్త చిత్రాన్ని మ్యాప్ చేయడానికి projective transform (homography) సాంకేతికతలను విద్యార్థులు ఉపయోగించాలి. దృక్కోణం యొక్క సరైనతను కొనసాగిస్తూ చిత్ర కంటెంట్‌ను మార్చడంలో homography యొక్క ఆచరణాత్మక అన్వయాన్ని ల్యాబ్ ప్రాధాన్యంగా చూపిస్తుంది. తమ ల్యాబ్ సమర్పణలో భాగంగా అసలు చిత్రం, replacement textureతో ఉన్న చిత్రం, సంయుక్త చిత్రం మరియు తమ Python ప్రోగ్రామ్‌ను విద్యార్థులు సమర్పించాలి.

ల్యాబ్ 6

ల్యాబ్ 6 చిత్రంలో ఐదు విరుద్ధమైన ఏకకేంద్ర వృత్తాలతో (CCCs) కూడిన లక్ష్యాన్ని గుర్తించి, దాని భంగిమను గణించమని విద్యార్థులకు సూచిస్తుంది. CCC లక్ష్యాలను గుర్తించడానికి OpenCVను ఉపయోగించడం, వాటిని సరైన క్రమంలో అమర్చడం, OpenCV యొక్క solvePnP() ఫంక్షన్‌తో భంగిమను గణించడం, అలాగే చిత్రంపై నిర్దేశాంక అక్షాలు మరియు భంగిమను గీయడం ఈ పనిలో భాగాలు. కంప్యూటర్ విజన్‌లో లక్ష్య గుర్తింపు, భంగిమ అంచనా మరియు దృశ్య అవుట్‌పుట్ ఆకృతీకరణ వంటి భావనల అన్వయాన్ని ల్యాబ్ ప్రాధాన్యంగా చూపిస్తుంది.

ల్యాబ్ 7

ల్యాబ్ 7 చిత్రాల మధ్య SIFT లక్షణాల గుర్తింపు మరియు సరిపోలికపై కేంద్రీకృతమై ఉంటుంది. ఒక చిత్రం నుండి మరొక చిత్రానికి SIFT లక్షణాల సరైన సరిపోలికలను గుర్తించడం మరియు ఈ సరిపోలికల ఖచ్చితత్వాన్ని విశ్లేషించడం దీని లక్ష్యం. డేటాసెట్ నుండి అందించిన Python కోడ్ మరియు చిత్రాలను ఉపయోగించడం, సరిపోలిక గుర్తింపును మెరుగుపరచడానికి అల్గారిథమ్ పరామితులను సర్దుబాటు చేయడం, అలాగే లక్షణ సరిపోలిక ప్రక్రియ పనితీరును మూల్యాంకనం చేయడానికి precision మరియు recall కొలమానాలను లెక్కించడం ఈ ల్యాబ్‌లో ఉంటాయి. వివిధ పరామితి అమరికల కోసం తమ Python ప్రోగ్రామ్‌ను మరియు లెక్కించిన precision, recall విలువలను విద్యార్థులు సమర్పించాలి.

ల్యాబ్ 8

ల్యాబ్ 8 లక్షణ సరిపోలిక మరియు affine transformation fitting ఉపయోగించి శిక్షణ చిత్రంలోని వస్తువులను query చిత్రంపై గుర్తించి ఓవర్‌లే చేయడం ద్వారా వస్తు గుర్తింపుపై దృష్టి సారిస్తుంది. వివిధ పరిస్థితుల్లో వస్తువును గుర్తించడం, false positivesను తగ్గించడానికి inlier matches సంఖ్య thresholdను సర్దుబాటు చేయడం, అలాగే వస్తు గుర్తింపు వ్యవస్థ పనితీరును మూల్యాంకనం చేయడానికి precision, recall మరియు accuracy కొలమానాలను లెక్కించడం ఈ ల్యాబ్‌లో ఉంటాయి. అందించిన Python కోడ్‌ను మార్చి అమలు చేయడం, వివిధ పరిస్థితుల్లో వ్యవస్థ పనితీరును విశ్లేషించడం, తమ కనుగొన్న విషయాలను మరియు మార్చిన కోడ్‌ను సమర్పించడం విద్యార్థుల నుండి ఆశించబడుతుంది.

ల్యాబ్ 9

ల్యాబ్ 9 శిక్షణ చిత్రంలోని ఒక వస్తువుపై annotation బిందువులను ఉంచడం మరియు తరువాతి query చిత్రాలలో ఆ బిందువులను వస్తువుపై సరైన స్థానాల్లో స్వయంచాలకంగా చూపించడం గురించి ఉంటుంది. ఈ ల్యాబ్ feature extraction, అస్పష్టమైన సరిపోలికలను తొలగించడానికి ratio testను ఉపయోగించి సరిపోలిక, outliersను తొలగించడానికి RANSAC ఉపయోగించి 2D affine transformationను అమర్చడం, అలాగే శిక్షణ చిత్రాల నుండి query చిత్రాలకు annotation బిందువులను మ్యాప్ చేయడానికి పరివర్తనను వర్తింపజేయడంపై దృష్టి సారిస్తుంది. చిత్రాలను సరిగ్గా వర్గీకరించడంలో అత్యధిక ఖచ్చితత్వాన్ని సాధించడానికి false positives మరియు negatives మధ్య సమతుల్యతను సాధించేలా inlier matches threshold సంఖ్యను సర్దుబాటు చేయడం ప్రధాన పని.

ల్యాబ్ 10

ల్యాబ్ 10 చిత్రంలో line segmentsను కనుగొని, సమాంతర రేఖల సమూహాలను గుర్తించడానికి Hough transformను ఉపయోగించడానికి అంకితం చేయబడింది. ఇది endpoints ద్వారా సూచించబడే line segmentsను గుర్తించడానికి OpenCV యొక్క cv2.HoughLinesP() ఫంక్షన్ ద్వారా probabilistic Hough Transformను ఉపయోగిస్తుంది. 2D image planeలో కనిపించే 3D spaceలోని సమాంతర రేఖల దిశను అర్థం చేసుకోవడమే లక్ష్యంగా, ఈ line segments యొక్క దిశ వెక్టర్లను విశ్లేషించడం ద్వారా vanishing pointsను గుర్తించడం కూడా ల్యాబ్‌లో ఉంటుంది. సమాంతర line segmentsను కనుగొనడానికి test చిత్రాలను ప్రాసెస్ చేయడం, గుర్తింపును మెరుగుపరచడానికి పరామితులతో ప్రయోగాలు చేయడం, అలాగే తమ ఫలితాలను Python ప్రోగ్రామ్‌తో కలిసి సమర్పించడం విద్యార్థుల పని.

గమనికలు

  • ఈ స్క్రిప్ట్‌లు/ల్యాబ్‌లను అమలు చేయడానికి మీకు క్రింది 3వ పక్ష python ప్యాకేజీలు అవసరం: cv2 మరియు numpy.
  • ఈ ల్యాబ్‌లలో కొన్ని మీరు cv2 యొక్క నిర్దిష్ట సంస్కరణను ఉపయోగించాల్సి రావచ్చు. దురదృష్టవశాత్తు, అవసరాలు నమోదు చేయబడలేదు; కాబట్టి మీరు దీనిని మీరే కనుగొనాలి. మీరు దీన్ని కనుగొంటే లేదా ఎక్కడైనా చిక్కుకుపోతే, దయచేసి దీనిని సమస్యల ఫారమ్కు నివేదించండి.