Uploaded by Madaminjon Yuldashev

014444

advertisement
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.
Download