Computer Vision ni taaluma inayolenga kuwezesha kompyuta kupata uelewa wa kiwango cha juu wa picha za kidijitali. Hii ni tafsiri pana, kwa sababu uelewa unaweza kumaanisha mambo mengi tofauti, ikiwa ni pamoja na kutambua kitu kwenye picha (utambuzi wa vitu), kuelewa kinachotokea (utambuzi wa matukio), kuelezea picha kwa maandishi, au kujenga upya mandhari kwa 3D. Pia kuna kazi maalum zinazohusiana na picha za binadamu: makadirio ya umri na hisia, utambuzi wa uso na utambulisho, na makadirio ya mkao wa 3D, miongoni mwa mengine.
Moja ya kazi rahisi za uelewa wa picha ni uwekaji wa picha katika makundi.
Uelewa wa picha mara nyingi huchukuliwa kuwa tawi la AI. Siku hizi, kazi nyingi za uelewa wa picha zinatatuliwa kwa kutumia mitandao ya neva. Tutajifunza zaidi kuhusu aina maalum ya mitandao ya neva inayotumika kwa uelewa wa picha, convolutional neural networks, katika sehemu hii.
Hata hivyo, kabla ya kupitisha picha kwenye mtandao wa neva, mara nyingi inafaa kutumia mbinu za kialgorithimu kuboresha picha.
Kuna maktaba kadhaa za Python zinazopatikana kwa usindikaji wa picha:
- imageio inaweza kutumika kusoma/kuandika miundo tofauti ya picha. Pia inaunga mkono ffmpeg, zana muhimu ya kubadilisha fremu za video kuwa picha.
- Pillow (pia inajulikana kama PIL) ina nguvu zaidi, na pia inaunga mkono baadhi ya urekebishaji wa picha kama kubadilisha maumbo, kurekebisha paleti, na zaidi.
- OpenCV ni maktaba yenye nguvu ya usindikaji wa picha iliyoandikwa kwa C++, ambayo imekuwa kiwango cha de facto kwa usindikaji wa picha. Ina kiolesura cha Python kinachofaa.
- dlib ni maktaba ya C++ inayotekeleza algorithimu nyingi za kujifunza kwa mashine, ikiwa ni pamoja na baadhi ya algorithimu za uelewa wa picha. Pia ina kiolesura cha Python, na inaweza kutumika kwa kazi ngumu kama utambuzi wa uso na alama za uso.
OpenCV inachukuliwa kuwa kiwango cha de facto kwa usindikaji wa picha. Ina algorithimu nyingi muhimu, zilizotekelezwa kwa C++. Unaweza pia kuitumia OpenCV kutoka Python.
Mahali pazuri pa kujifunza OpenCV ni kozi hii ya Learn OpenCV. Katika mtaala wetu, lengo letu si kujifunza OpenCV, bali kukuonyesha mifano ya jinsi inavyoweza kutumika, na jinsi ya kuitumia.
Picha katika Python zinaweza kuwakilishwa kwa urahisi na safu za NumPy. Kwa mfano, picha za kijivu zenye ukubwa wa pikseli 320x200 zingewekwa kwenye safu ya 200x320, na picha za rangi za vipimo sawa zingekuwa na umbo la 200x320x3 (kwa njia 3 za rangi). Ili kupakia picha, unaweza kutumia msimbo ufuatao:
import cv2
import matplotlib.pyplot as plt
im = cv2.imread('image.jpeg')
plt.imshow(im)Kiasili, OpenCV hutumia usimbaji wa BGR (Blue-Green-Red) kwa picha za rangi, wakati zana nyingine za Python hutumia RGB (Red-Green-Blue) ya jadi zaidi. Ili picha ionekane sawa, unahitaji kuibadilisha kuwa nafasi ya rangi ya RGB, ama kwa kubadilisha vipimo kwenye safu ya NumPy, au kwa kuita kazi ya OpenCV:
im = cv2.cvtColor(im,cv2.COLOR_BGR2RGB)Kazi hiyo hiyo ya cvtColor inaweza kutumika kufanya mabadiliko mengine ya nafasi ya rangi kama kubadilisha picha kuwa kijivu au nafasi ya rangi ya HSV (Hue-Saturation-Value).
Unaweza pia kutumia OpenCV kupakia fremu za video moja baada ya nyingine - mfano umetolewa katika zoezi OpenCV Notebook.
Kabla ya kulisha picha kwenye mtandao wa neva, unaweza kutaka kutumia hatua kadhaa za usindikaji wa awali. OpenCV inaweza kufanya mambo mengi, ikiwa ni pamoja na:
- Kubadilisha ukubwa wa picha kwa kutumia
im = cv2.resize(im, (320,200),interpolation=cv2.INTER_LANCZOS) - Kufifisha picha kwa kutumia
im = cv2.medianBlur(im,3)auim = cv2.GaussianBlur(im, (3,3), 0) - Kubadilisha mwangaza na utofauti wa picha kunaweza kufanywa kwa kutumia manipulations za safu za NumPy, kama ilivyoelezwa katika maelezo haya ya Stackoverflow.
- Kutumia thresholding kwa kuita kazi za
cv2.threshold/cv2.adaptiveThreshold, ambayo mara nyingi inapendekezwa kuliko kurekebisha mwangaza au utofauti. - Kutumia mabadiliko tofauti kwenye picha:
- Affine transformations inaweza kuwa muhimu ikiwa unahitaji kuchanganya mzunguko, kubadilisha ukubwa na kupotosha picha na unajua eneo la chanzo na marudio la alama tatu kwenye picha. Mabadiliko ya affine huhifadhi mistari sambamba.
- Perspective transformations inaweza kuwa muhimu unapojua nafasi za chanzo na marudio za alama 4 kwenye picha. Kwa mfano, ikiwa unapiga picha ya hati ya mstatili kupitia kamera ya simu kutoka pembe fulani, na unataka kufanya picha ya mstatili ya hati yenyewe.
- Kuelewa harakati ndani ya picha kwa kutumia optical flow.
Katika OpenCV Notebook yetu, tunatoa mifano ya wakati uelewa wa picha unaweza kutumika kutekeleza kazi maalum:
- Usindikaji wa awali wa picha ya kitabu cha Braille. Tunazingatia jinsi tunavyoweza kutumia thresholding, utambuzi wa vipengele, mabadiliko ya mtazamo na manipulations za NumPy kutenganisha alama za Braille kwa uainishaji zaidi na mtandao wa neva.
![]() |
![]() |
![]() |
|---|
Picha kutoka OpenCV.ipynb
- Kutambua harakati kwenye video kwa kutumia tofauti ya fremu. Ikiwa kamera imetulia, basi fremu kutoka mlisho wa kamera zinapaswa kufanana sana. Kwa kuwa fremu zinawakilishwa kama safu, kwa kutoa tofauti ya safu hizo kwa fremu mbili mfululizo tutapata tofauti ya pikseli, ambayo inapaswa kuwa ndogo kwa fremu tuli, na kuwa kubwa zaidi mara kuna harakati kubwa kwenye picha.
Picha kutoka OpenCV.ipynb
-
Kutambua harakati kwa kutumia Optical Flow. Optical flow inatuwezesha kuelewa jinsi pikseli za kibinafsi kwenye fremu za video zinavyohama. Kuna aina mbili za optical flow:
- Dense Optical Flow huhesabu uwanja wa vekta unaoonyesha kwa kila pikseli inahama wapi.
- Sparse Optical Flow inategemea kuchukua vipengele vya kipekee kwenye picha (mfano, kingo), na kujenga mwelekeo wake kutoka fremu hadi fremu.
Picha kutoka OpenCV.ipynb
✍️ Mifano ya Notebooks: OpenCV jaribu OpenCV kwa Vitendo
Hebu tufanye majaribio na OpenCV kwa kuchunguza OpenCV Notebook
Wakati mwingine, kazi ngumu kama kutambua harakati au kutambua ncha za vidole zinaweza kutatuliwa kwa kutumia uelewa wa picha pekee. Kwa hivyo, ni muhimu kujua mbinu za msingi za uelewa wa picha, na kile maktaba kama OpenCV zinaweza kufanya.
Tazama video hii kutoka kipindi cha AI ili ujifunze kuhusu mradi wa Cortic Tigers na jinsi walivyojenga suluhisho la msingi wa vizuizi ili kurahisisha kazi za uelewa wa picha kupitia roboti. Fanya utafiti kuhusu miradi mingine kama hii inayosaidia wanafunzi wapya kuingia katika uwanja huu.
Soma zaidi kuhusu optical flow katika mafunzo haya mazuri.
Katika maabara hii, utachukua video yenye ishara rahisi, na lengo lako ni kutoa harakati za juu/chini/kushoto/kulia kwa kutumia optical flow.





