Pythonda tasvirni qayta ishlash: algoritmlar, asboblar va siz bilishingiz kerak1) bo’lgan usullar Tasvirlar dunyoni belgilaydi, har bir tasvirning o’z tarixi bor, u ko’p jihatdan foydali bo’lishi mumkin bo’lgan juda ko’p muhim ma’lumotlarni o’z ichiga oladi. Ushbu ma’lumotni Rasmga ishlov berish deb nomlanuvchi texnika yordamida olish mumkin . Bu robototexnika, o’zini o’zi boshqaradigan mashinalar va ob’ektlarni aniqlash kabi ko’plab real misollarda hal qiluvchi rol o’ynaydigan kompyuter ko’rishning asosiy qismidir . Tasvirga ishlov berish bir vaqtning o’zida minglab tasvirlarni o’zgartirish va manipulyatsiya qilish va ulardan foydali tushunchalarni olish imkonini beradi. U deyarli barcha sohalarda keng ko’lamli ilovalarga ega. Python bu maqsadda keng qo’llaniladigan dasturlash tillaridan biridir. Uning ajoyib kutubxonalari va vositalari tasvirni qayta ishlash vazifasini juda samarali bajarishga yordam beradi. Ushbu maqola sizga tasvirni qayta ishlash va kerakli natijani olish uchun klassik algoritmlar, texnikalar va vositalar haqida o’rgatadi . Vebinar: PyTorch Lightning va Neptun yordamida kompyuterni ko’rish loyihalari - chuqur sho’ng’in Tasvirni qayta ishlash nima? Nomiga ko’ra, tasvirni qayta ishlash tasvirni qayta ishlashni anglatadi va biz maqsadimizga erishgunimizcha, bu turli xil texnikalarni o’z ichiga olishi mumkin. Yakuniy chiqish tasvir shaklida yoki ushbu tasvirning mos keladigan xususiyati bo’lishi mumkin. Bu qo’shimcha tahlil qilish va qaror qabul qilish uchun ishlatilishi mumkin. Ammo tasvir nima? Tasvirni 2D funksiyasi F(x,y) sifatida tasvirlash mumkin, bunda x va y fazoviy koordinatalardir. X,y ning ma’lum bir qiymatida F ning amplitudasi tasvirning o’sha nuqtadagi intensivligi deb nomlanadi. Agar x,y va amplituda qiymati chekli bo’lsa, biz uni raqamli tasvir deb ataymiz. Bu ustunlar va satrlarda joylashgan piksellar massivi. Piksellar - bu intensivlik va rang haqidagi ma’lumotlarni o’z ichiga olgan tasvirning elementlari. Tasvir 3D formatda ham taqdim etilishi mumkin, bunda x,y va z fazoviy koordinatalarga aylanadi. Piksellar matritsa shaklida joylashtirilgan. Bu RGB tasviri sifatida tanilgan . Manba Manba Har xil turdagi tasvirlar mavjud: RGB tasvir: U 2D tasvirning uchta qatlamini o’z ichiga oladi, bu qatlamlar Qizil, Yashil va Moviy kanallardir. Kulrang rangdagi rasm: Bu tasvirlar qora va oq soyalarni o’z ichiga oladi va faqat bitta kanalni o’z ichiga oladi. Klassik tasvirni qayta ishlash algoritmlari 1. Morfologik tasvirni qayta ishlash Morfologik tasvirni qayta ishlash ikkilik tasvirlardagi kamchiliklarni bartaraf etishga harakat qiladi, chunki oddiy chegaralash natijasida hosil bo’lgan ikkilik hududlar shovqin bilan buzilishi mumkin. Bundan tashqari, ochish va yopish operatsiyalari yordamida tasvirni tekislashda yordam beradi. Morfologik operatsiyalar kulrang rangdagi tasvirlarga kengaytirilishi mumkin. U tasvir xususiyatlarining tuzilishi bilan bog’liq chiziqli bo’lmagan operatsiyalardan iborat. Bu piksellarning tegishli tartibiga, lekin ularning raqamli qiymatlariga bog’liq. Ushbu uslub rasmning turli mumkin bo’lgan joylariga joylashtirilgan va tegishli qo’shni piksellar bilan taqqoslanadigan struktura elementi deb nomlanuvchi kichik shablon yordamida tasvirni tahlil qiladi . Strukturalash elementi 0 va 1 qiymatlari bo’lgan kichik matritsadir. Keling, morfologik tasvirni qayta ishlashning ikkita asosiy operatsiyasini ko’rib chiqaylik, kengayish va eroziya: kengaytirish operatsiyasi tasvirdagi ob’ekt chegaralariga piksel qo’shadi eroziya operatsiyasi ob’ekt chegaralaridan piksellarni olib tashlaydi. Asl tasvirga olib tashlangan yoki qo’shilgan piksellar soni strukturaviy elementning o’lchamiga bog’liq. Shu nuqtada siz “tuzilish elementi nima?” Deb o’ylashingiz mumkin. Men tushuntiraman: Strukturalash elementi har qanday ixtiyoriy shakl va o’lchamga ega bo’lishi mumkin bo’lgan faqat 0 va 1 dan iborat matritsadir. U tasvirning barcha mumkin bo’lgan joylariga joylashtirilgan va u piksellarning tegishli qo’shniligi bilan taqqoslanadi. Manba Kvadrat tuzilish elementi “A” biz tanlamoqchi bo’lgan ob’ektga mos keladi, “B” ob’ektni kesib o’tadi va “C” ob’ektdan tashqarida. Nol-bir naqsh konfiguratsiya elementining konfiguratsiyasini belgilaydi. Bu biz tanlamoqchi bo’lgan ob’ektning shakliga ko’ra. Strukturaviy elementning markazi qayta ishlanayotgan pikselni aniqlaydi. Manba Kengayish | Manba Eroziya | Manba 2. Gauss tasvirni qayta ishlash Gauss silliqlash deb ham ataladigan Gauss xiralashuvi Gauss funksiyasi yordamida tasvirni xiralashtirish natijasidir . Tasvir shovqinini kamaytirish va tafsilotlarni kamaytirish uchun ishlatiladi . Ushbu xiralashtirish texnikasining vizual effekti shaffof ekran orqali tasvirga qarashga o’xshaydi. U ba’zan kompyuterni ko’rishda turli miqyosda tasvirni yaxshilash uchun yoki chuqur o’rganishda ma’lumotlarni ko’paytirish usuli sifatida ishlatiladi. Asosiy Gauss funktsiyasi quyidagicha ko’rinadi: Amalda, jarayonni ikkita o'tishga bo'lish orqali Gauss loyqaligining ajraladigan xususiyatidan foydalanish yaxshidir. Birinchi o'tishda tasvirni faqat gorizontal yoki vertikal yo'nalishda xiralashtirish uchun bir o'lchovli yadro ishlatiladi. Ikkinchi o'tishda xuddi shu bir o'lchovli yadro qolgan yo'nalishda xiralashish uchun ishlatiladi. Olingan effekt ikki o’lchovli yadro bilan bir martalik o’tish bilan bir xil bo’ladi. Gauss filtrlari tasvirga nima qilishini tushunish uchun misolni ko’rib chiqaylik. Agar bizda normal taqsimlangan filtr mavjud bo’lsa va u rasmga qo’llanilsa, natijalar quyidagicha ko’rinadi: Ba'zi qirralarning tafsilotlari biroz kamroq ekanligini ko'rishingiz mumkin. Filtr markazdan uzoqdagi piksellarga qaraganda markazdagi piksellarga ko'proq og'irlik beradi. Gauss filtrlari past chastotali filtrlardir, ya'ni yuqori chastotalarni zaiflashtiradi. Odatda chekka aniqlashda ishlatiladi . 3. Tasvirga ishlov berishda Furye transformatsiyasi Furye transformatsiyasi tasvirni sinus va kosinus komponentlariga ajratadi. Unda tasvirni qayta tiklash, tasvirni siqish yoki tasvirni filtrlash kabi bir nechta ilovalar mavjud. Tasvirlar haqida gapirayotganimiz sababli, biz diskret fuyer transformatsiyasini hisobga olamiz. Keling, sinusoidni ko’rib chiqaylik, u uchta narsadan iborat: Kattalik - kontrast bilan bog’liq Fazoviy chastota - yorqinlik bilan bog’liq Faza - rang ma’lumotlari bilan bog’liq Chastota domenidagi rasm quyidagicha ko’rinadi: Manba 2D diskret furier konvertatsiyasi formulasi: Yuqoridagi formulada f(x,y) tasvirni bildiradi. Teskari Furye transformatsiyasi transformatsiyani tasvirga aylantiradi. 2D teskari diskret Furyer konvertatsiyasi formulasi: 4. Rasmga ishlov berishda chekkalarni aniqlash Chetlarni aniqlash - bu tasvir ichidagi ob'ektlar chegaralarini topish uchun tasvirni qayta ishlash usuli. Yorqinlikdagi uzilishlarni aniqlash orqali ishlaydi. Bu rasmdan foydali ma'lumotlarni olishda juda foydali bo'lishi mumkin, chunki shakl haqidagi ma'lumotlarning aksariyati qirralarga o'ralgan. Yorqinlikni aniqlashning klassik usullari yorqinlikdagi uzilishlarni aniqlash orqali ishlaydi. Kulrang darajalarning o'zgarishini aniqlashda tasvirda biroz shovqin aniqlansa, u tezda reaksiyaga kirishishi mumkin. Qirralar gradientning mahalliy maksimallari sifatida aniqlanadi. Eng keng tarqalgan chekka aniqlash algoritmi sobel chekka aniqlash algoritmidir . Sobelni aniqlash operatori 3*3 konvolyutsion yadrolardan tashkil topgan. Oddiy yadro Gx va 90 daraja aylantirilgan yadro Gy. Alohida o’lchovlar ikkala yadroni ham tasvirga alohida qo’llash orqali amalga oshiriladi. Va, 2D signalni qayta ishlash konvolyutsiyasi operatsiyasini bildiradi. Olingan gradientni quyidagicha hisoblash mumkin: Manba 5. To'lqinli tasvirni qayta ishlash Biz Furye konvertatsiyasini ko'rdik, lekin u faqat chastota bilan cheklangan. To’lqinlar vaqtni ham, chastotani ham hisobga oladi. Ushbu transformatsiya statsionar bo’lmagan signallar uchun mos keladi. Biz bilamizki, qirralar tasvirning muhim qismlaridan biri hisoblanadi, an’anaviy filtrlarni qo’llashda shovqin olib tashlanishi, lekin tasvir xiralashishi seziladi. To’lqinli konvertatsiya biz past chastotali komponentlar uchun yaxshi chastota aniqligiga ega bo’ladigan tarzda ishlab chiqilgan. Quyida 2D to’lqinli o’zgartirish misoli keltirilgan: Manba Neyron tarmoqlar yordamida tasvirni qayta ishlash Neyron tarmoqlar - bu neyronlar yoki tugunlardan tashkil topgan ko’p qatlamli tarmoqlar. Ushbu neyronlar neyron tarmoqning asosiy ishlov berish birliklari hisoblanadi. Ular inson miyasi kabi harakat qilish uchun yaratilgan. Ular ma’lumotlarni oladi, ma’lumotlardagi naqshlarni tan olishga o’rgatadi va keyin chiqishni bashorat qiladi. Asosiy neyron tarmoq uchta qatlamdan iborat: Kirish qatlami Yashirin qatlam Chiqish qatlami Asosiy neyron tarmoq | Manba Kirish qatlamlari kirishni oladi, chiqish qatlami chiqishni bashorat qiladi va yashirin qatlamlar hisobkitoblarning ko’p qismini bajaradi. Yashirin qatlamlar soni talablarga muvofiq o’zgartirilishi mumkin. Neyron tarmog’ida kamida bitta yashirin qatlam bo’lishi kerak. Neyron tarmoqning asosiy ishi quyidagicha: Keling, tasvirni ko’rib chiqaylik, har bir piksel birinchi qatlamning har bir neyroniga kirish sifatida oziqlanadi, bir qatlamning neyronlari kanallar orqali keyingi qatlam neyronlariga ulanadi. Ushbu kanallarning har biriga og’irlik deb nomlanuvchi raqamli qiymat beriladi. Kirishlar mos keladigan og’irliklarga ko’paytiriladi va bu og’irlikdagi summa keyinchalik yashirin qatlamlarga kirish sifatida beriladi. Yashirin qatlamlardan olingan ma’lumotlar faollashtirish funktsiyasidan o’tadi, bu ma’lum bir neyron faollashadi yoki yo’qligini aniqlaydi. Faollashtirilgan neyronlar ma’lumotlarni keyingi yashirin qatlamlarga uzatadi. Shu tarzda, ma’lumotlar tarmoq orqali tarqaladi, bu Forward Propagation deb nomlanadi. Chiqish qatlamida eng yuqori qiymatga ega neyron chiqishni bashorat qiladi. Ushbu chiqishlar ehtimollik qiymatlari. Xatoni olish uchun prognoz qilingan chiqish haqiqiy chiqish bilan taqqoslanadi. Keyinchalik bu ma’lumotlar tarmoq orqali qayta uzatiladi, jarayon Backpropagation deb nomlanadi. Ushbu ma’lumotlarga asoslanib, og’irliklar o’rnatiladi. Oldinga va orqaga tarqalishning ushbu tsikli tarmoq ko’p hollarda chiqishni to’g’ri bashorat qilmaguncha bir nechta kirishlarda bir necha marta amalga oshiriladi. Bu neyron tarmoqni o’qitish jarayonini tugatadi. Neyron tarmog’ini o’rgatish vaqti ba’zi hollarda ko’tarilishi mumkin. Quyidagi rasmda ai - kirishlar to’plami, wi - og’irliklar, z - chiqish va g - har qanday faollashtirish funktsiyasi. Yagona neyrondagi operatsiyalar | Manba Tasvirga ishlov berish uchun ma’lumotlarni tayyorlash bo’yicha ba’zi ko’rsatmalar. Yaxshi natijalarga erishish uchun modelga ko’proq ma’lumot berilishi kerak. Aniqroq ma’lumot olish uchun tasvir ma’lumotlar to’plami yuqori sifatli bo’lishi kerak, ammo ularni qayta ishlash uchun sizga chuqurroq neyron tarmoqlar kerak bo’lishi mumkin. Ko’pgina hollarda RGB tasvirlari ularni neyron tarmoqqa yuborishdan oldin kulrang rangga aylantiriladi. Neyron tarmoq turlari Konvolyutsion neyron tarmog’i Konvolyutsion neyron tarmog’i, qisqacha ConvNets uchta qatlamga ega: Konvolyutsion qatlam ( CONV ): Ular CNN ning asosiy qurilish bloki bo’lib, u konvolyutsiya operatsiyasini bajarish uchun javobgardir. Bu qatlamda konvolyutsiya operatsiyasini bajarishda ishtirok etadigan element yadro/ filtr (matritsa) deb ataladi. Yadro gorizontal va vertikal siljishlarni to’liq tasvirni bosib o’tmaguncha qadam tezligiga qarab amalga oshiradi. Yadroning harakati | Manba Pooling Layer ( POOL ): Ushbu qatlam o’lchamlarni kamaytirish uchun javobgardir. Bu ma’lumotlarni qayta ishlash uchun zarur bo’lgan hisoblash quvvatini kamaytirishga yordam beradi. Poolingning ikki turi mavjud: Maks Pooling va Average Pooling. Maksimal birlashma tasvirdagi yadro bilan qoplangan maydondan maksimal qiymatni qaytaradi. O’rtacha birlashtirish tasvirning yadro bilan qoplangan qismidagi barcha qiymatlarning o’rtacha qiymatini qaytaradi. Pooling operatsiyasi | Manba To’liq bog’langan qatlam ( FC ): To’liq bog’langan qatlam ( FC ) har bir kirish barcha neyronlarga ulangan tekislangan kirishda ishlaydi. Agar mavjud bo’lsa, FC qatlamlari odatda CNN arxitekturasining oxirida topiladi . To’liq bog’langan qatlamlar | Manba CNN asosan uning qatlamlari yordamida tasvirdan xususiyatlarni olishda ishlatiladi. CNN tasvirlarni tasniflashda keng qo’llaniladi, bu erda har bir kirish tasviri 0 dan 1 gacha bo’lgan ehtimollik qiymatini olish uchun qatlamlar qatoridan o’tkaziladi. Manba Generativ raqib tarmoqlari Generativ modellar nazoratsiz o’rganish usulidan foydalanadi (tasvirlar mavjud, ammo yorliqlar taqdim etilmaydi). GANlar ikkita modeldan iborat Generator va Diskriminator. Generator diskriminatorni aldash uchun real ko’rinadigan soxta tasvirlarni yaratishni o’rganadi va Diskriminator soxtani haqiqiy tasvirlardan ajratishni o’rganadi (aldanmaslikka harakat qiladi). Generatorga haqiqiy tasvirlarni ko’rishga ruxsat berilmaydi, shuning uchun u boshlang’ich bosqichda yomon natijalar berishi mumkin, diskriminatorga haqiqiy tasvirlarni ko’rishga ruxsat beriladi, lekin ular generator tomonidan ishlab chiqarilgan soxta tasvirlar bilan aralashib ketadi, ularni haqiqiy yoki haqiqiy deb tasniflashi kerak. soxta. Ba’zi shovqinlar generatorga kirish sifatida beriladi, shunda u har safar bir xil turdagi tasvirni emas, balki har xil misollarni ishlab chiqarishi mumkin. Diskriminator tomonidan bashorat qilingan ballarga asoslanib, generator o’z natijalarini yaxshilashga harakat qiladi, ma’lum bir vaqtdan so’ng, generator farqlash qiyinroq bo’lgan tasvirlarni ishlab chiqarishi mumkin bo’ladi, bu vaqtda foydalanuvchi mamnun bo’ladi. uning natijalari. Diskriminator ham o’zini yaxshilaydi, chunki u generatordan har bir turda tobora ko’proq real tasvirlarni oladi. GAN ning mashhur turlari chuqur konvolyutsion GAN (DCGAN), shartli GAN (cGAN), StyleGAN, CycleGAN, DiscoGAN, GauGAN va boshqalar. GANlar tasvirni yaratish va manipulyatsiya qilish uchun juda yaxshi. GAN-larning ba’zi ilovalari quyidagilardan iborat: yuz qarishi, fotosuratlarni aralashtirish, super rezolyutsiya, fotosuratlarni bo’yash, kiyim-kechak tarjimasi. Manba Tasvirga ishlov berish vositalari 1. OpenCV Bu Open Source Computer Vision Library degan ma’noni anglatadi. Ushbu kutubxona kompyuterni ko’rish va mashinani o’rganish uchun foydali bo’lgan 2000 dan ortiq optimallashtirilgan algoritmlardan iborat. Tasvirga ishlov berishda opencv dan foydalanishning bir necha usullari mavjud, ulardan bir nechtasi quyida keltirilgan: Tasvirlarni bir rang maydonidan boshqasiga o’tkazish, ya’ni BGR va HSV, BGR va kulrang va hokazo. Tasvirlarda chegarani amalga oshirish, masalan, oddiy chegara, moslashuvchan chegara va boshqalar. Tasvirlarni silliqlash, masalan, tasvirlarga maxsus filtrlarni qo’llash va tasvirlarni xiralashtirish. Tasvirlar ustida morfologik amallarni bajarish. Tasvir piramidalarini qurish. GrabCut algoritmi yordamida tasvirlardan oldingi fonni ajratib olish. Suv havzasi algoritmi yordamida tasvirni segmentatsiyalash. Batafsil ma’lumot uchun ushbu havolaga qarang . 2. Scikit-tasvir Bu tasvirni oldindan qayta ishlash uchun ishlatiladigan ochiq manbali kutubxona. U o’rnatilgan funktsiyalari bilan mashinani o’rganishdan foydalanadi va bir nechta funktsiyalar bilan tasvirlar ustida murakkab operatsiyalarni bajarishi mumkin. U numpy massivlar bilan ishlaydi va hatto python bilan yangi bo’lganlar uchun ham juda oddiy kutubxona. Scikit image yordamida bajarilishi mumkin bo’lgan ba’zi operatsiyalar: Chegara operatsiyalarini amalga oshirish uchun rasmda try_all_threshold() usulidan foydalaning. U ettita global chegara algoritmidan foydalanadi. Bu filtrlar modulida . Kenarni aniqlashni amalga oshirish uchun filtrlar modulida sobel() usulidan foydalaning . Ushbu usul kirish sifatida 2D kul rangdagi tasvirni talab qiladi, shuning uchun biz tasvirni kulrang rangga aylantirishimiz kerak. Gauss tekislashni amalga oshirish uchun filtrlar modulida Gauss() usulidan foydalaning . Gistogramma tenglashtirishni qo’llash uchun ekspozitsiya modulidan foydalaning, asl tasvirga normal histogramma tenglashtirishni qo’llash uchun equalize_hist() usulidan foydalaning va moslashtirilgan tenglashtirishni qo’llash uchun equalize_adapthist() usulidan foydalaning. Tasvirni aylantirish uchun transform moduli ostidagi rotate() funksiyasidan foydalaning . Tasvir o’lchamini o’zgartirish uchun transform modulidan rescale() funksiyasidan foydalaning . Morfologik operatsiyalarni qo’llash uchun morfologiya moduli ostida binary_erosion() va binary_dilation() funksiyalaridan foydalaning . 3. PIL/yostiq PIL Python Image Library degan ma’noni anglatadi va Pillow bu Aleks Klark va Contributors tomonidan yaratilgan do’stona PIL vilkasidir. Bu kuchli kutubxonalardan biri. U PPM, JPEG, TIFF, GIF, PNG va BMP kabi keng ko’lamli tasvir formatlarini qo’llab-quvvatlaydi. Bu sizga tasvirlar ustida aylantirish, oʻlchamini oʻzgartirish, kesish, kulrang rang oʻzgartirish va hokazolarni bajarishda yordam berishi mumkin. Keling, ushbu operatsiyalarning ayrimlarini koʻrib chiqamiz. Manipulyatsiya operatsiyalarini bajarish uchun ushbu kutubxonada Image deb nomlangan modul mavjud. Rasmni yuklash uchun open() usulidan foydalaning. Rasmni ko’rsatish uchun show() usulidan foydalaning. Fayl formatini bilish uchun format atributidan foydalaning Rasm hajmini bilish uchun size atributidan foydalaning Piksel formati haqida bilish uchun mode atributidan foydalaning. Tasvir faylini kerakli ishlovdan keyin saqlash uchun save() usulidan foydalaning. Pillow tasvir faylini png formatida saqlaydi. Rasm hajmini o’zgartirish uchun kenglik va balandlik sifatida ikkita argumentni oladigan resize() usulidan foydalaning. Tasvirni kesish uchun bitta argumentni kesilgan hududning joylashuvi va o’lchamini belgilaydigan quti korteji sifatida qabul qiluvchi crop() usulidan foydalaning. Tasvirni aylantirish uchun bitta argumentni butun son yoki aylanish darajasini ifodalovchi float raqami sifatida qabul qiluvchi rotate() usulidan foydalaning. Tasvirni aylantirish uchun transform() usulidan foydalaning, u quyidagilardan bitta argument oladi: Image.FLIP_LEFT_RIGHT, Image.FLIP_TOP_BOTTOM, Image.ROTATE_90, Image.ROTATE_180, Image.ROTATE_270. Shuningdek o’qing Essential Pil (yostiq) tasviri boʻyicha qoʻllanma (mashinalarni oʻrganadigan odamlar uchun) 4. NumPy Ushbu kutubxona yordamida siz tasvirlarni aylantirish, xususiyatlarni ajratib olish va ularni tahlil qilish kabi oddiy tasvir texnikasini ham bajarishingiz mumkin. Tasvirlar ko’p o’lchovli massivlar bilan ifodalanishi mumkin, shuning uchun ularning turi NdArrays . Rangli tasvir 3 o’lchamli raqamli massivdir. Ko’p o’lchovli massivni kesish orqali RGB kanallarini ajratish mumkin. Quyida rasmda NumPy yordamida bajarilishi mumkin bo’lgan ba’zi operatsiyalar keltirilgan (tasvir imread yordamida test_img nomli o’zgaruvchiga yuklangan ). Tasvirni vertikal yo’nalishda aylantirish uchun np.flipud (test_img) dan foydalaning. Tasvirni gorizontal yo’nalishda aylantirish uchun np.fliplr (test_img) dan foydalaning. Tasvirni teskari aylantirish uchun test_img[::-1] dan foydalaning (numpy massiv sifatida saqlangan rasm <img_name> deb nomlanadi). Rasmga filtr qo’shish uchun quyidagilarni qilishingiz mumkin: Misol: np.where(test_img > 150, 255, 0) , bu rasmda aytilishicha, agar siz 150 bilan biror narsani topsangiz, uni 255, boshqa 0 bilan almashtiring. Bundan tashqari, RGB kanallarini alohida ko’rsatishingiz mumkin. Buni ushbu kod parchasi yordamida amalga oshirish mumkin: Qizil kanalni olish uchun test_img[:,:,0] ni , yashil kanalni olish uchun test_img[:,:,1] va ko’k kanalni olish uchun test_img[:,:,2] ni bajaring. 5. Mahotas Bu kompyuterni ko’rish va tasvirni qayta ishlash kutubxonasi va 100 dan ortiq funktsiyalarga ega. Uning ko’pgina algoritmlari C++ da amalga oshirilgan. Mahotas o’z-o’zidan mustaqil modul, ya’ni u minimal bog’liqlikka ega. Hozirda raqamli hisoblashlar uchun faqat C++ kompilyatorlariga bog’liq, NumPy moduliga ehtiyoj yo’q, kompilyator o’zining barcha ishlarini bajaradi. Mahotas-da mavjud bo’lgan ba’zi ajoyib algoritmlarning nomlari: Suv havzasi ( https://mahotas.readthedocs.io/en/latest/distance.html ) Morfologik operatsiyalar ( https://mahotas.readthedocs.io/en/latest/morphology.html ) Hit & miss, yupqalash. ( https://mahotas.readthedocs.io/en/latest/api.html#mahotas.hitmiss ) Ranglar maydonini o’zgartirish ( https://mahotas.readthedocs.io/en/latest/color.html ) Tezlashtirilgan mustahkam xususiyatlar (SURF), mahalliy xususiyatlar shakli. ( https://mahotas.readthedocs.io/en/latest/surf.html ) To’siq qo’yish. ( https://mahotas.readthedocs.io/en/latest/thresholding.html ) Konvolyutsiya. ( https://mahotas.readthedocs.io/en/latest/api.html ) Spline interpolyatsiyasi ( https://mahotas.readthedocs.io/en/latest/api.html ) SLIC superpiksellari. ( https://www.pyimagesearch.com/2014/07/28/a-slic-superpixel-tutorial-usingpython/ ) Keling, Mahotas yordamida bajarilishi mumkin bo’lgan ba’zi operatsiyalarni ko’rib chiqaylik: Rasmni o’qish uchun imread() usulidan foydalaning. Rasmning o’rtacha qiymatini hisoblash uchun mean() usulidan foydalaning. Tasvirning ekssentrisiteti bog’langan grafikning boshqa w cho’qqisiga chiqish uchun berilgan v cho’qqidan yo’llarning eng qisqa uzunligini o’lchaydi. Tasvirning ekssentrikligini topish uchun xususiyatlar moduli ostidagi eccentricity() usulidan foydalaning . Tasvirda kengayish va eroziya uchun morf moduli ostida dilate() va erode() usullaridan foydalaning . Tasvirning mahalliy maksimallarini topish uchun locmax() usulidan foydalaning. Xulosa Ushbu maqolada men morfologik filtrlash, Gauss filtri, Furye konvertatsiyasi va Wavelet konvertatsiyasi yordamida amalga oshirilishi mumkin bo’lgan klassik tasvirni qayta ishlash haqida qisqacha tushuntirdim . Bularning barchasi OpenCV, Mahotas, PIL, scikit-learn kabi turli xil tasvirlarni qayta ishlash kutubxonalari yordamida amalga oshirilishi mumkin. Men kompyuterni ko’rish uchun ishlatiladigan CNN va GAN kabi mashhur neyron tarmoqlarni ham muhokama qildim . Chuqur o’rganish o’zining broadway terminologiyalari va tasvirni qayta ishlash sohasidagi yutuqlari bilan dunyoni o’zgartirmoqda. Tadqiqotchilar butun tasvirni qayta ishlash sohasini nozik sozlash uchun yaxshiroq usullarni taklif qilmoqdalar, shuning uchun o’rganish bu erda to’xtamaydi. Oldinga intiling. Dasturiy qisim Tasvir ma’lumotlarini tushunish va tahrirlash uchun Python da bir nechta dasturlardan foydalanishingiz mumkin. Bu dasturlardan ba’zilari: OpenCV: OpenCV dasturi, tasvir ma’lumotlarini yuklash, tahrirlash, ko’paytirish, kesish va boshqa turli turdagi amallarni bajarishga imkon beradi. U avvalgi masalada ko’rsatilgan bo’lib, ma’lumotlar bilan ishlashda keng ishlatiladigan bir kutubxonadir. OpenCV to’liq funksionalitetga ega bo’lib, tasvir tahlilini, nurlarni aniqlashni va boshqa qulayliklarni taqdim etadi. Pillow: Pillow dasturi ham ma’lumotlar bilan ishlash uchun qulay kutubxonadir. U tasvirni yuklab olish, tasvirlarni tahrirlash (kengaytirish, qirqish, tezlanish, tezlatish, filtrlash), tasvirlarni saqlash va ko’rsatish funktsiyalarini o’z ichiga oladi. Pillow o’rnatilganida, rasmlar bilan ishlashni osonlashtiradi. Scikit-Image: Scikit-Image dasturi ham rasmlar bilan ishlash uchun qulayliklar taqdim etadi. U tasvirni yuklab olish, tasvirlarni tahrirlash, tasvir analizi (yuz aniqlash, segmentatsiya) va boshqa tahlil amallarini o’z ichiga oladi. Scikit-Image kutubxonasining o’rnatilishi kerak. Bu dasturlardan har biri ushbu vazifalarni bajarishda keng qo’llaniladi va sizning vazifangizga qulayliklar yaratishlari mumkin. Siz kerakli funktsionalitetlar bo’yicha birini tanlashingiz va uni o’rnatishingiz tavsiya etiladi. Agar tasvir ma’lumotlarini tushunish va tahrirlash uchun dastur yaratmoqchi bo’lsangiz, sizga Python dasturlash tili va PIL (Python Imaging Library) kutubxonasini tavsiya qilaman. PIL, tasvirga oid operatsiyalarni amalga oshirish uchun yaxshi imkoniyatlar taqdim etadi. Quyidagi misol sizga tasvir ma’lumotlarini tushunish va tahrirlash uchun bir dastur tuzishda yordam berishi mumkin: Copy code from PIL import Image # Tasvirni yuklash tasvir = Image.open(“tasvir.jpg”) # Tasvirning o’lchamlarini olish tasvir_o’lchami = tasvir.size print(“Tasvir o’lchami:”, tasvir_o’lchami) # Tasvirni ko’rsatish tasvir.show() # Tasvirga rang qo’shish pix = tasvir.load() for x in range(tasvir_o’lchami[0]): for y in range(tasvir_o’lchami[1]): pix[x, y] = (255, 0, 0) # Qizil rang # Tahrir qilingan tasvirni saqlash tasvir.save(“tahrir_qilingan_tasvir.jpg”) Ushbu misolda, tasvir.jpg nomli faylni yuklab olamiz. Tasvirning o’lchamlarini size metodi orqali olishimiz mumkin. Tasvirni ko’rsatish uchun show metodini ishlatamiz. Tasvirning piksellari ustida o’zgarishlar amalga oshirish uchun piksellarni load metodi orqali yuklab olamiz. Misolda, tasvirdagi barcha piksellarga qizil rang qo’shildi. O’zgartirilgan tasvirni save metodi orqali saqlaymiz. Siz bu dasturdan foydalanib, tasvir ma’lumotlarini tushunishingiz va tahrirlashingiz mumkin. Buning bilan birga, PIL kutubxonasining boshqa funksiyalaridan ham foydalanishingiz mumkin, masalan, tasvirni kesish, o’lchamlarini o’zgartirish, piksellarni tahlil qilish, filtr qo’shish va hokazo. PIL haqida ko’proq ma’lumotlarni Python dokumentatsiyasida topishingiz mumkin. Rasm ma’lumotlarini tushunish va tahrirlash uchun dastur yaratish uchun odatda OpenCV yoki scikitimage kabi kutubxonalarga ega Python kabi tasvirni qayta ishlash va manipulyatsiyani qo’llabquvvatlaydigan dasturlash tilidan foydalanishingiz kerak bo’ladi. Pythonda OpenCV kutubxonasidan foydalanishni boshlashga yordam beradigan asosiy misol: piton Kodni nusxalash import cv2 # Load the image image = cv2.imread(“image.jpg”) # Display the image cv2.imshow(“Original Image”, image) cv2.waitKey(0) # Access and modify pixel values pixel = image[100, 100] # Get the pixel value at (100, 100) print(“Original Pixel Value:”, pixel) image[100, 100] = (0, 0, 255) # Change the pixel value to blue modified_pixel = image[100, 100] print(“Modified Pixel Value:”, modified_pixel) # Save the modified image cv2.imwrite(“modified_image.jpg”, image) # Apply image processing operations gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) # Convert to grayscale # Display the processed image cv2.imshow(“Grayscale Image”, gray_image) cv2.waitKey(0) # Save the processed image cv2.imwrite(“gray_image.jpg”, gray_image) Ushbu misolda rasm faylini yuklash uchun OpenCV kutubxonasidan foydalanamiz ( image.jpg). Biz asl tasvirni ko’rsatamiz, individual piksel qiymatlariga kiramiz va o’zgartiramiz va o’zgartirilgan tasvirni saqlaymiz. cvtColorKeyin, qayta ishlangan tasvirni ishlatib, kulrang rangga aylantirish operatsiyasini qo’llaymiz va ko’rsatamiz. OpenCV o’lchamini o’zgartirish, filtrlash, chekkalarni aniqlash va boshqalar kabi tasvirni qayta ishlashning keng doirasini taqdim etadi. OpenCV hujjatlari va oʻquv qoʻllanmalari bilan tanishib, uning imkoniyatlari va turli tasvirlarni tahrirlash vazifalarini bajarish haqida koʻproq bilib olishingiz mumkin. Yodda tutingki, tasvirni tahrirlash murakkab operatsiyalar va algoritmlarni o’z ichiga olishi mumkin va bu misol faqat asosiy boshlang’ich nuqtasini beradi. Tasvirni tahrirlash dasturingizning o’ziga xos talablariga qarab, tasvirni qayta ishlash kutubxonalari tomonidan taqdim etilgan qo’shimcha funktsiyalar va usullarni o’rganishingiz va ulardan foydalanishingiz kerak bo’lishi mumkin.