Amaliy ish № 1
Mavzu: Python dasturida Rangli tasvirni kulrang tasvirga o’tkazish.
Python dasturida tasvirni rangli tasvirdan kulrang tasvirga o’zgartirish uchun bir nechta qadamlarni amalga oshiramiz. 1-qadam Python dasturini yoqib olamiz va yangi fayl xosil qilamiz.
1-rasm
Dasturni ishga tushirib olganimizdan so’ng birinchi bo’lib dastur yordamida o’zimiz istagan rasmni ko’chirib olamiz. Tasvirni ko’chirib olganimizdan so’ng uni yaratayotgan dasturimiz yordamida o’qitib olamiz. RGB tasvirini o'qish va uni kulrang rangga aylantirish uchun matplotlib dan foydalanishga harakat qilaman. Buning uchun dasturning kod yozish qismiga quyidagi kodni kirgizib olamiz.
img = rgb2gray(imread('image.png'));
2-rasm orqali biz istagan birinchi holat xosil bo’ladi.
2-rasm
Matplotlib o'quv kutubxonalarida ular buni qamrab olmaydi. Ular shunchaki rasmda o'qishda yordam beradi shuning uchun qo’shimcha paketlarni yuklab olishga to’g’ri keladi ular quyidagilar: opencv, cv2.
import matplotlib.image as mpimg
img = mpimg.imread('image.png')
Bular shunchaki rasmni o'qiydi va keyin massivni bo'laklarga bo'ladi, lekin bu biz istagan RGB ni kulrang rangga aylantirish bilan bir xil emas. Biz istagan kullarng tasvir xosil qilishimiz uchun quyidagi amallani ham oxiriga yetkazishimizga to’g’ri keladi. Men numpy yoki matplotlib-da RGB-dan kul rangga aylantirish uchun o'rnatilgan funksiya yo'qligiga ishonishim qiyin. Bu tasvirni qayta ishlashda keng tarqalgan operatsiya emas. Men 5 daqiqadan so'ng imread bilan import qilingan tasvirda ishlaydigan juda oddiy funktsiyani yozdim. Bu juda samarasiz, lekin shuning uchun men o'rnatilgan professional dasturga umid qilgandim.
Umumiy strategiya - bu asl rangli tasvir bilan bir xil yorqinlikka (texnik nisbiy yorqinlikka) ega bo'lish uchun (rang miqyosiga ko'ra) kulrang shkala qiymatlarini (maqsadli kulrang rang oralig'ida) hisoblash uchun fotometriya yoki kengroq aytganda, kolorimetriya tamoyillaridan foydalanishdir. Bir xil (nisbiy) yorqinlikka qo'shimcha ravishda, bu usul har ikkala tasvirni ko'rsatilayotganda bir xil mutlaq yorqinlikka ega bo'lishini ta'minlaydi, chunki tasvirning har qanday berilgan maydonida uning SI birliklarida kvadrat metr uchun kandelalarda asboblar bilan o'lchanishi mumkin, teng oq nuqtalar berilgan. Yorqinlikning o'zi inson ko'rishning standart modeli yordamida aniqlanadi, shuning uchun kul rangdagi tasvirda yorqinlikni saqlab qolish L* 1976 yildagi CIE Laboratoriyasining rang maydonidagi kabi chiziqli yorqinligi Y tomonidan aniqlanadigan boshqa sezuvchanlik o'lchovlarini ham saqlaydi. CIE 1931 XYZ rang maydonida bo'lgani kabi har qanday noaniqlikni oldini olish uchun biz bu erda Ylinear deb nomlaymiz.
Rangli tasvirlar ko'pincha bir nechta qatlamli rangli kanallardan iborat bo'lib, ularning har biri berilgan kanalning qiymat darajalarini ifodalaydi. Misol uchun, RGB tasvirlari qizil, yashil va ko'k asosiy rang komponentlari uchun uchta mustaqil kanaldan iborat. CMYK tasvirlarida zangori, magenta, sariq va qora siyoh plitalari va boshqalar uchun to'rtta kanal mavjud.
Bu erda to'liq RGB rangli tasvirni rang kanaliga bo'lish misoli keltirilgan. Chapdagi ustun tabiiy ranglarda ajratilgan rang kanallarini ko'rsatadi, o'ngda esa ularning kulrang shkalasi ekvivalentlari mavjud:
Buning teskarisi ham mumkin: ularning alohida kulrang kanallaridan to'liq rangli tasvirni yaratish. Kanallarni o'zgartirish, ofsetlar, aylanish va boshqa manipulyatsiyalar yordamida asl tasvirni aniq takrorlash o'rniga badiiy effektlarga erishish mumkin.
3-rasm
Quyidagi kodni kiritib bo’lganimizdan so’ng bizda birinchi kirgizganimiz rangli tasvirimiz quyidagi kulrang ko’rinishga keladi biz istagan tasvirni xosil qildik bu 4-rasmda o’z ifodasini topgan.
4-rasm
Do'stlaringiz bilan baham: |