O’zbekiston aloqa, axborotlashtirish va kommunikatsion texnologiyalar davlat qo’mitasi
Toshkent axborot texnologiyalari universiteti
«Dasturiy injiniring» Fakulteti
«Algoritmlash va matematik modellashtirish» kafedrasi
Mustafakulov Ya.U., Aliqulov Yo.Q.
«tasvirlarga raqamli ishlov berish»
fanidan laboratoriya ishlari
uslubiy ko`rsatma
TOSHKÅNT-2014
Ushbu laboratoriya ishlari bo’yicha ko`rsatmalar to’plami 5521900 – Informatika va axborot texnologiyalari (sohalari bo’yicha) yo’nalishi 4 kurs talabalari uchun mo’ljallangan.
To’plam 9 ta laboratoriya ishlaridan iborat bo’lib, har bir ishga qisqa nazariy qism kiritilgan. Laboratoriya ishlari MATLAB tizimining Image Processing ToolBoxes ilovasidan foydalangan holda bajarilishi talab etiladi.
Har bir o’quvchiga variantlar aniq belgilanmagan laboratoriya ishlarida talaba o’zining fotosuratidan iborat fayl bilan topshiriqlarni bajaradi va hisobot tayyorlaydi.
MAZMUNI
1- laboratoriya ishi. Matlab tizimida ishlashning asosiy printsiplari ………………………………. ..4
2- laboratoriya ishi. Matlab tizimida grafiklarni qurish ……………………………………………..17
3- laboratoriya ishi. Tasvir turlari va tasvir fayllari bilan ishlash ……………………………………27
4- laboratoriya ishi. Tasvirni geometrik o’zgartirish. ………………………………………………..36
5- laboratoriya ishi. Tasvirlarni vizuallashtirish, morfologik misollar. ……………………………. 42
6- laboratoriya ishi. Tasirlarni yaxshilash ………………………………………………………….. 57
7- laboratoriya ishi. Rang bilan ishlash …………………………………………………………….. 66
8- laboratoriya ishi. Chiziqli filtrlar va filtrlarni loyihalash ………………………………………... 83
9- laboratoriya ishi. Tasvirlar ustida morfologik operatsiyalarni bajarish (misollar) ………………. 96
Foydalanilgan adabiyotlar ………………………………………………………………………….. 121
Ilova. ……………………………………………………………………………………………….. 122
1- Laboratoriya ishi. MATLAB tizimida ishlashning asosiy printsiplari
Ishning maqsadi – MatLab tizimi bilan tanishish, sonli massivlarni tashkil etish va tizim bilan ishlashning amaliy ko’nikmalarini hosil qilish.
1. Qisqa nazariy ma’lumot
MatLab nomining kelib chiqishi Matrix Laboratory (matritsalar laboratoriyasi) so’zlaridan kelib chiqqan.
MatLab tizimi interfeysi quyidagilarni o’z ichiga oladi:
Command Window (Buyruqlar oynasi), bunda hisoblar va operatsiyalar bajariladi;
Launch Pad (Bo’limlar oynasi), bunda ToolBoxning turli modullariga kirish imkoniyati beriladi;
Workspace (Ishchi fazosi), bunda foydalanuvchi tomonidan Buyruqlar oynasida kiritgan o’zgaruvchilarning majmui aks ettiriladi;
Current Directory (Joriy katalog), bunda joriy katalogni o’rnatish mumkin;
Command History (Buyruqlar tarixi), foydalanuvchi tomonidan kiritilgan buyruqlar saqlanadi.
Bugungi kunda fan texnika olamida murakkab bo’lgan masalalarni, vazifalarni yechish uchun turli xil dasturlash tillari va vositalardan foydalaniladi. Hisoblash jarayonlarida bir qator doimiy takrorlanuvchi standart jarayonlar alohida paket deb ataluvchi maxsus dasturlar tarkibiga kiritiladi. Dasturlar paketi o’z navbatida ob’ektli modelni vujudga keltiradi. Amaliy masalalar bir nechta paketlarga bo’linib, komp’yuter algebrasi deb ataluvchi bir necha dasturiy ta’minotlar tarkibiga kiritilgan. Bularga Merkury, Maple, Mathematika, Matsad , Matlab kabi dasturlar kiradi. Bu dasturlarning har biri o’z kamchilik va yutuqlari bilan alohida o’rganib chiqishga arziydi.
Keyingi yillarda kompyuter matematikasi tizimlari (Maple, Matlab, Matchad va h.k.) qo’llanilmayotgan sohalarni topish juda qiyin. Hozirgi kunda turli harakterdagi boshqaruv tizimlarini modellarini qurish va ularni elektron hisoblash mashinalarida tadqiq qilish "Avtomatlashtirish va boshqaruv" yo’nalishidagi fanlarning asosiy masalalaridan biri hisoblanadi.
Ma’lumki. kompyuter texnologiyasiniiig rivojlanishi bilan murakkab tizimlarni tadqiq qilishda mashinali modellash usuli eng samarali va bu usulining yordamisiz texnika va texnologiyaning ba’zi muammolarini hal etish qiyinlashib qoldi. Shu sababdan muhandis-texnologlarni tayyorlashdagi dolzarb masalalardan biri - matematik modellashtirish nazariyasining asoslarini va usullarini o’zlashtirish hisoblanadi. Bu masala nafaqat o’rganilayotgan obektlarning modellarini qurish, ular dinamikasini tahlil qilish va model bilan mashinali eksperimentni boshqarish imkonini beradi, balki o’rganilayotgan tizimlarga yaratilayotgan modellarining monandligini ma’lum miqdorda qo’llanish chegarasida fikr yuritish mumkinligi hamda zamonaviy hisoblash texnika vositalarida tizimlarning modellashni to’g’ri tashkil qilish imkonini beradi.
Shu kunlarda rivojlangan mamlakatlarda muhandislar. texnologlar aniq fanlar mutaxassislari o’zlarining ilmiy tadqiqotlarida zamonaviy dasturiy tizimlar – Mathematica, Matchad, Maple, Matlab ning imkoniyatlaridan unumli foydalamnoqdalar. Jahonning yetakchi universitetlari o’zlarining o’quv jarayonlariga bu tizimlarni keng ko’lamda joriy qilganlar.
Hozirgi kunda amaliy masalalarni sonli va analitik yechishda Mathematicadan tashqari Maple, Matchad, Matlab, Derive, Statistica va shunga o’xshash dasturiy tizimlar ham keng qo’llanilmoqda. Foydalanuvchi oldida, tabiiyki, quyidagicha savol paydo bo’ladi: «Mavjud tizimlardan qaysi biridan qanday sharoitda foydalanish maqsadga muvofiq?» Ushbu fanni o’rganishda biz MATLAB (Matrix Laboratory) tizimini ko’rib chiqamiz. Ixtiyoriy dasturlash tizimini batafsil o’rganish uzoq muddatni talab etadi. Biz mana shu jarayonga boshlang’ich impul’sni berishni mo’ljalaganmiz. Bata’lumotlarni adabiyotlardan olish mumkin.
3. MATLAB Interfeysi.
Bu bo’limda nazariy materialni o’rganish, misollarni va topshiriqlarni bajarish talab etiladi.
MATLAB tizimini ishga tushirganda asosiy oyna paydo bo’ladi. (1.1- rasm).
1.1- rasm. MATLAB bosh oynasi
MATLAB ning bosh oynasidagi Desktop / Desktop Layout / Command Window Only buyrug’i orqali o’zgartirish kiritish mumkin (faqat buyruqlar oynasi) (1.2- rasm..
1.2- rasm. MATLAB bosh oynasining soddalashtirilgani.
Oldingi holatga qaytarish Desktop / Desktop Layout / Default. Buyrug’i bilan bajariladi.
Command Window oynasi foydalanuvchi uchun muhim hisoblanadi. Chunki, shu oyna (- rasm.1) orqali matematik ifodalar, hisoblash natijalari va sistemaning xabarlari chiqariladi.
Matematik ifodalar buyruqlar qatorida >> belgisidan keyin kiritiladi.
Kiritilgan har bir buyruq ENTER knopkasi bosilishi bilan qayta ishlanadi, natija ham shu ekranga chiqariladi, - rasmlar uchun esa yangi grafik oyna ochiladi.
Quyidagi ifodani kiritamiz:
» x=2+3
Amal bajarilishi uchun <Enter> knopkasini bosdik. Natija quyidagicha:
>> x=2+3
x =
5
>>
Agar ifodadagi biror sonni o’zgartirmoqchi bo’lsak, buning iloji yo’q. Chunki, kiritilgan buyruqni kursorni olib borib tahrirlash mumkin emas. MATLAB ning o’ziga xos tomoni ham shunda.
Tizim
kiritilgan buyruqlarni "eslab qoladi", ular stekga yuklanadi,
shuning uchun ularni qaytadan kiritishga ehtiyoj yo’q, seansning tarixidan (buyruqlar
tarixi oynasi) buyruqni topib uni sichqoncha yordamida buyruqlar
oynasiga o’tkazib va tahrirlab Enter
|
Buyruqlar oynasini EDIT / Clear Command Window bilan tozalash mumkin.
Ish jarayonida turli tipdagi o’zgaruvchilardan foydalaniladi. Tashkil etilgan o’zgaruvchilar komp’yuterning maxsus ajratilgan xotirasida saqlanadi. Ular o’z-o’zidan yo’qolib ketmaydi, faqat sistemadan chiqilganda, komp’yuter o’chirilganda yoki maxsus buyruq berilganda o’chirilishi mumkin. O’zgaruvchilarning qiymatini matematik ko’rinishda kiritilgan ifodalar uchun ishlatish mumkin. Workspace (Ishchi oynasi) foydalanuvchi uchun o’zida saqlanayotgan barcha o’zgaruvchilarning qiymatini taqdim etadi. (- rasm.1). Ixtiyoriy o’zgaruvchini tanlash va uning qiymatini ko’rish yoki undan foydalanish mumkin. Bu amallar kontekst menyuda bajariladi.
EDIT / Clear Workspsce. Bilan ro’yxatni tozalash mumkin
Provodnik dasturiga o’xshash, ammo MATLAB uchun maxsus qo’llaniladigan tomonlari mavjud (1.3- rasm.).
Gap shundaki, foydalanuvchi buyruqlar oynasidan matematik ifodalarni kiritishdan tashqari fayllar bilan ham ishlashi mumkin (bu haqda keyingi laboratoriya ishlarida tanishamiz). Biz foydalanadigan matematik funktsiyalar aslida funktsiyalar nomi bilan atalgan fayllardan iborat. Bu fayllarda funktsiyani bajaruvchi dasturlar yozilgan. Shunday qilib, foylalanuvchi fayllardan foydalanadi. Masalan, o’rnatilgan funktsiya nomini yozganda biz aslida faylning nomini (kengaytmasiz) yozamiz. Tizim shu faylning nomini birinchi navbatda joriy katalogdan qidiradi.
1.3 - rasm. Oyna Current Directory (Tekuùiy katalog)
Topshiriq. Windows Provodnigida papka oching, papka nomini o’z familiyangiz bilan lotin harflarida nomlang. (MATLAB uchun lotin belgilari bo’lishi shart). Shu papka ichida 1 – laboratoriya ishi uchun yangi papka oching va uni nomlang, masalan, LAB1. Keyin shu katalogni oching, u bo’sh bo’lishi kerak. |
Bundan keyin MATLAB dagi har bir ish seansi shu katalogni ochishdan boshlanadi.
Command Window (Buyruq oynasi) ning buyruqlar qatorida kiritiladigan barcha buyruqlar avtomatik ravishda ro’yxat hosil qiladi va Command History (Buyruqlar tarixi ) oynasida chiqariladi (- rasm. 1). Bu ro’yxat nima uchun kerak? Agar oldin bajarilgan buyruqni qayta bajarish zarurati tug’ilsa, uni Command History (Buyruqlar tarixi) dan topib uning ustida ikki marta sichqoncha knopkasini bosish bilan ishlatishimiz mumkin. Ushbu oyna ichida bori tizimdan chiqilganda va komp’yutera o’chirilganda saqlanib qoladi.
Buyruqlar ro’yxatini faqat EDIT / Clear Command History orqali o’chirish mumkin.
MATLAB da dasturlash elementlari. Matritsalar bilan ishlash.
Dasturlash elementlari bilan tanishib borish bilan birgalikda bir nechta o’zgaruvchi tashkil qilamiz. Quyidagi matritsani hosil qilish buyrug’ini bajaramiz (matritsa elementlarini kiritishda elementlar vergul yoki probel bilan, qatorlar esa nuqta vergul bilan ajratiladi) (1.4- rasm.)
>>A=[1 0 0 4; 0 2 1 0; 1 2 0 0]
1.4- rasm. Matritsa elementlarini kiritish
MATLAB tizimida Buyruq qatori ";" belgi bilan tugatilsa, natija buyruqlar oynasiga chiqarilmaydi. Bizning buyruq ";" belgi bilan tugatilmaganligi uchun natija quyidagi ko’rinishda chiqarilgan.
A =
1 0 0 4
0 2 1 0
1 2 0 0
Ikki komponentdan (<qatorlar soni> <ustunlar soni>) iborat vektor formatidagi o’zgaruvchi o’lchamlari size funktsiyasi yordamida aniqlanadi. Ushbu holatda
size(A) = [3 4]
A([1,3], 2:4)
Yuqorida keltirilgan Buyruq A matritsaning elementlaridan yangi matritsani hosil qiladi. Bunda 1 va 3 qatorlar hamda 2, 3, 4 ustunlar elementlari olinadi, natija ans (answer), o’zgaruvchisiga taqdim etiladi. Ushbu holatda
ans =
0 0 4
2 0 0
ans o’zgaruvchisi bilan boshqa o’zgaruvchilar kabi amallar bajarish mumkin. 5. - rasmda matritsa ans transponirlangan ("apostrof"belgisi), natija B matritsaga taqdim etiladi (natija ko’rsatilmagan). Keyin B matritsaning qiymati alohida buyruq bilan chiqariladi. Faqat o’zgaruvchi identifikatorini ko’rsatish bilan transponirlangan matritsa qiymati chiqariladi Bir qatorda bir nechta buyruq ishlatish mumkin, ular "," yoki ";" belgilari bilan ajratiladi. "," belgisi qaysi amaldan keyin qo’yilgan bo’lsa, shu amalning natijasi chiqariladi.
1.5- rasm. Buyruq oynasi va ishchi oyna brouzeri.
A matritsaning ikkinchi ustuni elementlaridan iborat ustun-vektorni hosil qilamiz
>>a = A(:,2)
a=
0
2
2
":" belgisi ro’yxat yoki vektor hosil qilish uchun ishlatiladi. n:m ifoda n, n+1, … , m ro’yxatni; n:p:m ifoda – n dan m gacha p qadamli ro’yxatni anglatadi; chegaralari ko’rsatilmagan ikki nuqta ":" belgisi indeks o’zgaradigan to’la oraliqni bildiradi.
Bir nechta ko’paytirishlarni bajaramiz va natijani chiqarishda disp buyrug’idan foydalanamiz. Bunday buyruq ishlatilganda MATLAB o’zgaruvchi nomini qaytarmaydi, qolgan hollarda A i disp(A) buyruqlari ekvivalent
>>S=a*a'; disp(S)
0 0 0
0 4 4
0 4 4
>>d=(a')*a; disp(d)
8
[n r] o’lchamli matritsani [r m] o’lchamli matritsaga ko’paytirsak [n m] o’lchamli matritsa hosil bo’ladi, shuning uchun C=a*a' – matritsa, d – a vektorning skalyar kvadrati. Amal belgisi bilan nuqtaning ishlatilishi amal har bir element bilan bajarilishini anglatadi. Shunday qilib ".*" elementlab ko’paytirish demakdir.
g=a.*a; disp(g')
0 4 4
Ishchi oynaning mazmuni haqida ma’lumot olish uchun whos so’rovidan foydalanamiz.
1.6- rasmdagi jadvalda MATLAB ning ikki muhim xususiyati namoyish etilgan:
1.6- rasm. Buyruq oynada ishchi oynaning ma’lumoti
1. MATLAB turli registrlarda kiritilgan nomlarni farqlaydi.
2.
MATLAB da vektor va
skalyar o’zgaruvchilar [1 m], [n 1] i [1 1] o’lchamli matritsa sifatida qaraladi.
MatLab tizimi boshqa tizimlardan shunisi bilan
farqlanadiki, unda operatorlar va funktsiyalar vektorlar va matritsalar
ko’rinishidagi operandlardan iborat. Bittagina sondan
iborat operand ham 1x1 o’lchamli matritsa sifatida
qaraladi. Operatsiyalar matritsa elementlari yoki butun matritsa ustida
bajarilishini inobatga olib, ularni ajratish kerak bo’ladi. Shu maqsadda
elementlar bilan ishlagan taqdirda operator oxirida nuqta qo’yiladi. (1- jadval).
Ixtiyoriy buyruq <Enter> klavishasini bosish bilan yakunlanadi. Funktsiya
tomonidan bajariladigan amallar kirish argumenti ro’yxatida keltirilgan barcha
elementlarga qo’llaniladi.
Misol tariqasida sinusning qiymatlarini hisoblash natijalarini keltirish mumkin:
>> y = sin([0.4 0.8 1.2 1.6 2])
y =
0.3894 0.7174 0.9320 0.9996 0.9093
Operator oxiridagi (;) nuqta vergul natijani ekranga chiqarishni bekor qiladi:
>> y = sin([0.4 0.8 1.2 1.6 2]);
Yordam ma’lumotnomasi;
Yordam ma’lumotnomasini olish uchun quyidagi operatorlar orqali olish mumkin: Sintaksis
helpwin – MatLab tizimi bo’limlari va funktsiyalari haqida ma’lumot;
helpdesk – MatLab tizimi haqida umumiy ma’lumot;
doc <funktsiya_nomi> – Help oynasiga funktsiya tavsifini chiqaradi;
help <funktsiya_nomi> – funktsiya haqida qisqa ma’lumot;
type <funktsiya_nomi> – m – funktsiya fayli matnini chiqaradi;
demo – testli misollarni chaqirish buyrug’i.
Operatorlar va funktsiyalar
Tizim operatorlarining umumiy ro’yxati help ops operatori bilan chiqariladi:
1- jadvalda arifmetik operatorlarning sintaksisi va qo’llanilishi keltirilgan.
Tablitsa 1.1
Arifmetik operatorlarning ro’yxati
Funktsiya |
Nazvanie |
Operator |
Sintaksis |
Plus |
Plyus |
+ |
M1+M2 |
uplus |
Unar plyus |
+ |
+M |
minus |
Minus |
– |
M1–M2 |
uminus |
Unar minus |
– |
–M |
mtimes |
Matritsali ko’paytirish |
* |
M1*M2 |
times |
Matritsani elementlab ko’paytirish |
.* |
M1.*M2 |
mpower |
Matritsani darajaga ko’tarish |
^ |
M1^x |
power |
Matritsani elementlab darajaga ko’tarish |
.^ |
M1.^x |
mldivide |
Matritsani teskari (o’ngdan chapga) bo’lish |
\ |
M1\M2 |
mrdivide |
Matritsani (chapdan o’ngga) bo’lish |
/ |
M1/M2 |
ldivide |
Matritsani o’ngdan chapga elementlab bo’lish |
.\ |
M1.\M2 |
rdivide |
Matritsani chapdan o’ngga elementlab bo’lish |
./ |
M1./M2 |
|
|
|
|
Kommentariya uchun protsent belgisi qo’llaniladi – %.
Tizimli o’zgaruvchilar va konstantalar
MatLab ob’ektlari tarkibiga qator tizimli o’zgaruvchilar va konstantalar kiradi va ularning qiymati tizim orqali yuklanish paytida o’rnatiladi yoki hisoblash paytida avtomatik ravishda shakllanadi. Quyida ulardan misollar keltirilgan:
Ans – Agar Taqdim etish operatori qo’llanilmasa, natija olishda foydalaniladi.
Masalan:
>> cos([0:2*pi])
ans =
1.0000 0.5403 –0.4161 –0.9900 –0.6536 0.2837 0.9602
pi – soni (aylana uzunligining diametriga nisbati).
Masalan:
>> pi
ans =
3.1416
Vektor va matritsalarni hosil qilish
Ayrim sonli massivlarni hosil qilishni ko’rib chiqamiz. Quyidagilardan foydalanish mumkin:
Kvadrat qavslar;
Maxsus konstruktsiyalar j:i:k;
Konkatenatsiya (qo’shish, ulash);
Maxsus matritsali funktsiyalar.
Vektor-qator hosil qilish uchun kvadrat qavslar ishlatiladi, bunda qator elementlari bo’shliq yoki vergul bilan ajratiladi. Shuningdek, maxsus j:i:k konstruktsiyadan foydalanish mumkin, bunda j- vektorning boshlang’ich qiymati, i – qadam, va k – vektorning oxirgi qiymati (agar qadam qiymati 1 ga teng bo’lsa, uni yozmasa ham bo’laveradi.).
Vektor-ustun hosil qilish uchun elementlar nuqta vergul (;) orqali yoziladi yoki vektor-qator transponirlanadi.
Matritsa hosil qilish uchun quyidagi usullardan foydalanish mumkin:
1. Qatorlar bo’yicha, nuqta vergul bilan ajratilgan elementlardan;
2. Ustunlar bo’yicha kvadrat qavslarga olingan elementlardan;
3. Qatorlar bo’yicha interaktiv rejimda.
1- Topshiriq. Vektor-qator, vektor-ustun va matritsa hosil qiling:
>> x = [1 2 3 4 5] % vektor-qator hosil qilish:
x =
1 2 3 4 5 % natija
>> x = 1:2:10 % 1 –vektorning boshlang’ich qiymati, 2 –qadam, 10 – oxirgi qiymat
x =
1 3 5 7 9 % natija
>> x = 1:10
x =
1 2 3 4 5 6 7 8 9 10 % natija
>> x = [1;2;3;4;5] % vektor-ustun hosil qilish
x =
1
2
3
4
>> a = 9:2:18 % vektor-qator boshlang’ich qiymati - 9, qadam-2, 10 – oxirgi qiymat - 18.
a =
9 11 13 15 17
>> a1 = a' % vektor-qatorni a1 vektor-ustunga transponirlash
a1 =
9
11
13
15
17
>> x = [1 2 3; 4 5 6; 7 8 9]; % 1) usul blan matritsa hosil qilish
>> x = [[1;4;7] [2;5;8] [3;6;9]]; % 2) usul blan matritsa hosil qilish
>> x = [1 2 3 < Enter> % 3) usul blan matritsa hosil qilish
4 5 6 <Enter>
7 8 9];
Oxirgi bajarilgan uchta buyruqlarning har birining natijasida
Ko’rinishidagi matritsa hosil bo’ladi.
Konkatenatsiya (qo’shish, ulash)
Konkatenatsiya buyrug’i orqali oldindan mavjud bo’lgan massiv va vektorlardan yangi massivlar hosil qilinadi. Massivlarni gorizontal va vertikal bo’yicha ulash mumkin. Gorizontal konkatenatsiyada massivlarning ajratuvchisi sifatida vergul yoki probeldan foydalaniladi. Masalan, Agar, V i A – matritsalar bo’lsa, M = [A, V] – A va V matritsalarning gorizontal konkatenatsiyasini beradi. A va V matritsalarning qatorlari soni bir xil bo’lishi shart. Gorizontal konkatenatsiya ixtiyoriy sondagi matritsalar uchun bajariladi va ular bitta [A, B, C] qavsga olinadi.
Vertikal konkatenatsiyada kvadrat qavslarda matritsalarning ajratuvchisi sifatida nuqta vergul ishlatiladi. Masalan, agar C va D – matritsalar bo’lsa, M = [C; D] – C va D matritsalarning vertikal konkatenatsiyasidir. C va D da ustunlar soni bir xil bo’lishi shart. doljnû imet’ odinakovoe chislo stolbtsov. Vertikal konkatenatsiya ixtiyoriy sondagi matritsalar uchun bajariladi va ular bitta [C; D; E] qavsga olinadi.
Vertikal va gorizontal konkatenatsiya bitta operatsida ishlatilishi mumkin.
2- Topshiriq Vertikal va gorizontal konkatenatsiyani qo’llab matritsa hosil qilish:
>> a = [1;2;3] % uch elementdan vektor-ustun hosil qilish
a =
1
2
3
>> A = [a,a,a] % uch vektor-ustundan gorizontal konkatenatsiya hosil qilish
A =
1 1 1
2 2 2
3 3 3
>> b = [1 4 8]; ] % uch elementdan vektor-qator hosil qilish
>> B = [b;b;b] % uchta b vektor-qatordan vertikal konkatenatsiya hosil qilish
B =
1 4 8
1 4 8
1 4 8
>> A1 = [0 0;0 1]; % 2x2 o’lchamli A1 va A2 matritsalarni hosil qilish
>> A2 = [5 6;1 8];
>> A3 = [1 8 6 9]; % to’rt elementdan vektor-qator hosil qilish
>> H = [A1,A2;A3] % gorizontal konkatenatsiya va vertikal konkatenatsiya
H =
0 0 5 6
0 1 1 8
1 8 6 9
Maxsus matritsa funktsiyalari
Quyida maxsus ko’rinishdagi matritsalar hosil qilish uchun ayrim funktsiyalar keltirilgan.
Funktsiya zeros nullar bilan to’ldirilgan matritsalar hosil qiladi:
zeros(m,n) – m x n o’lchovli nul matritsani hosil qilish;
zeros(n) – n x n o’lchovli nul kvadrat matritsani hosil qilish.
Misol: Ikki qator va uch ustunli nul matritsa hosil qilish:
>> x = zeros(2,3)
x =
0 0 0
0 0 0
ones funktsiyasi birlar bilan to’ldirilgan matritsalar hosil qiladi (birlik matritsa):
ones(m,n) – m x n o’lchovli nul matritsani hosil qilish;
ones(n) – n x n o’lchovli birlik kvadrat matritsani hosil qilish.
3-Topshiriq. 2 x 2 o’lchovli birlik kvadrat matritsani hosil qiling:
>> ones(2)
ans =
1 1
1 1
Funktsiya randn normal-taqsimlangan tasodifiy sonlar bilan to’ldirilgan matritsani hosil qiladi.
randn (m,n) – normal-taqsimlangan tasodifiy sonlar bilan to’ldirilgan m x n o’lchamli matritsani hosil qiladi.
randn (n) – n x n o’lchamli kvadrat matritsani hosil qiladi.
Funktsiya rand Tekis-taqsimlangan tasodifiy sonlar bilan to’ldirilgan matritsani hosil qiladi.
rand (m,n) – Tekis-taqsimlangan tasodifiy sonlar bilan to’ldirilgan m x n o’lchamli matritsani hosil qiladi.
4-Topshiriq. Vertikal konkatenatsiya yordamida rand va randn funktsiyalaridan foydalanib vektor-ustun hosil qiling:
>> x1 = [rand(2,1);randn(2,1)]
x1 =
0.9501
0.2311
–0.4326
–1.6656
5-Topshiriq. Gorizontal konkatenatsiya yordamida ones va zeros funktsiyalaridan foydalanib matritsa hosil qiling:
>> x1 = [ones(2,1),zeros(2,1)]
x1 =
1 0
1 0
Funktsiya repmat() boshlang’ich matritsadan vertikal va gorizontal bo’yicha berilgan son marta nusxa olib yangi matritsa hosil qiladi.
B = repmat(A,M,N) – funktsiya yangi B matritsani hosil qiladi, bunda A ning M ta vertikal bo’yicha va N ta gorizontal bo’yicha nusxasi olingan, ya’ni A massivning M x N ta nusxasi.
6-Topshiriq. Uch elementdan iborat vektor-qatordan matritsa hosil qilish:
>> a = [1 5 9];
>> A = repmat(a,2,1)
A =
1 5 9
1 5 9
7-Topshiriq. Barcha elementlari 10 ga teng bo’lgan 2 x 3 o’lchamli bo’lgan matritsa hosil qilish:
>> repmat(10,2,3)
ans =
10 10 10
10 10 10
Massivlar indeksatsiyasi
Massiv elementlarining ikki xossasi mavjud: massivdagi tartib raqami (indeksi) va o’z qiymati. MatLab tizimida elementlar numeratsiyasi 1 dan boshlanadi.
8-Topshiriq. Berilgan vektor-qatorning uchinchi elementini 8 ga o’zgartirish:
>> a = [1 2 7 9];
>> a(3) = 8
a =
1 2 8 9
Matritsa indeksini ko’rsatishda qator va ustun nomeri vergul orqali ajratib yoziladi. Masalan, A(5,4)
9-Topshiriq. Elementlari tasodifiy sonlardan iborat matritsaning ikkinchi qator to’rtinchi ustundagi elementini 1 ga almashtirish:
>> S = rand(4)
S =
0.9501 0.8913 0.8214 0.9218
0.2311 0.7621 0.4447 0.7382
0.6068 0.4565 0.6154 0.1763
0.4860 0.0185 0.7919 0.4057
>> S(2,4) = 1 S =
0.9501 0.8913 0.8214 0.9218
0.2311 0.7621 0.4447 1.0000
0.6068 0.4565 0.6154 0.1763
0.4860 0.0185 0.7919 0.4057
Massiv elementlari blokini ko’rsatish uchun ':' dan foydalaniladi.
4 x 4 o’lchamli butun sonli elementlardan iborat F matritsaning 2 va 3 qatoridagi hamda 1 va 2 ustundagi elementlari 0 ga aylantirilsin:
>> F = [1 4 7 9;5 9 8 3;9 6 5 3;7 6 9 2]
F =
1 4 7 9
5 9 8 3
9 6 5 3
7 6 9 2
>> F(2:3,1:2) = 0
F =
1 4 7 9
0 0 8 3
0 0 5 3
7 6 9 2
Agar qatorning yoki ustunning barcha qiymatlarini o’zgartirish kerak bo’lsa, diapazonni ko’rsatuvchi qiymatlar tashlab yuboriladi va faqat ikki nuqta belgisi qoldiriladi.
10-Topshiriq. Oldingi misoldagi 3 va 4 ustunlarni 0 ga almashtirilsin:
>> F(:,3:4) = 0
F =
1 4 0 0
0 0 0 0
0 0 0 0
7 6 0 0
Bo’sh kvadrat qavslar indekslangan strukturadan axborotni yo’qotadi.
A(m,:) = [ ] – A matritsadan m qatorni yo’qotadi.
A(:,n) = [ ] – A matritsadan n ustunni yo’qotadi.
Servis funktsiyalari
Quyida massivlar bilan ishlashda kerak bo’ladigan funktsiyalar keltirilgan:
[M,N] = size(<massiv_identifikatori>) – massiv o’lchamini chiqaradi, bunda M – qatorlar soni; N – ustunlar soni.
11-Topshiriq. Birlik matritsa o’lchamlarini aniqlang:
>> s = ones(2,3);
>> [M,N] = size(s)
M =
2
N =
3
max(<massiv_identifikatori >) va min(<massiv_identifikatori>) –matritsaning har bir ustunidagi maksimal yoki minimal qiymatlardan yangi vektor-qator hosil qiladi.
12-Topshiriq. Tasodifiy sonlardan iborat matritsaning maksimal qiymatlarini aniqlang:
>> v = rand(3)
v =
0.9501 0.4860 0.4565
0.2311 0.8913 0.0185
0.6068 0.7621 0.8214
>> ma = max(v)
ma =
0.9501 0.8913 0.8214 % har bir ustunning maksimal qiymatlari.
Matritsaning ekstremal qiymatini topish uchun uni vektorga almashtiriladi. Buning uchun reshape (X,M,N), funktsiyasidan foydalaniladi, X – matritsa, M –matritsaning vertikal o’lchami (qatorlar soni) , N – matritsaning gorizontal o’lchami (ustunlar soni).
13-Topshiriq. Oldingi misoldagi matritsani vektorga aylantirib, ekstremal qiymat topilsin.
>> [M,N] = size(v);
>>k = reshape(v,1,M*N)
k =
0.9501 0.2311 0.6068 0.4860 0.8913 0.7621 0.4565 0.0185 0.8214
>> max(k)
ans =
0.9501
>> min(k)
ans =
0.0185
Yana bir oddiy usul:
>>max(v(:))
ans =
0.9501
length(<massiv_identifikatori>) – vektor uzunligini aniqlash; matritsa uchun bu max(size(X)) funktsiyasining bajarilishi bilan ekvivalent.
14-Topshiriq. Berilgan vektor uzunligini aniqlash:
>> c = [1 8 6 0 2 9 5];
>> length(c)
ans =
7 % s vektor uzunligi (') belgisi literli konstantalar hosil qilishda ishlatiladi, Masalan:
>> a = 'Matritsani kiriting';
Bu belgi shuningdek, matritsani transponirlash uchun ham ishlatiladi.
2. MUSTAQIL ISHLASH UCHUN TOPSHIRIQLAR
1. Boshlang’ich elementi –, oxirgi elementi va qadami 0.1. bo’lgan vektor-qatorni tashkil eting. Qatorni ustunga transponirlang.
2. Elementlari fi = [xn, xn-1, xn-2, xn-3, xn-4] dan iborat, n = 5, x = 2, 3, 4 lar uchun 3 ta vektor-qatorni tashkil eting. Bu qatorlarni A(3 × 5) matritsaga birlashtiring.
3. Savollar
1. MatLab tizimida axborot qanday tasvirlanadi?
2. MatLab tizimida vektorlar qanday tashkil etiladi?
3. logspace funktsisi qanday vektorni generatsiya qiladi?
4. MatLab tizimida matritsalar qanday tashkil etiladi?
5. MatLab tizimida matritsalar tashkil etishda qanday funktsiyalar ishlatiladi?
6. MatLab tizimida massivlarni indeksatsiya qilish qanday bajariladi?
7. MatLabda hadma-had va matritsa amallarining farqi qanday?
8. Transponirlangan massiv qanday olinadi?
9. Matritsaning o’lchami qanday aniqlanadi?
10. Literli konstantalar qanday hosil qilinadi?
11. MatLab tizimida qanday o’zgaruvchilar va konstantalar mavjud?
12. Kommentariyalar qanday kiritiladi?
2 - Laboratoriya ishi MATLAB tizimida GRAFIKLARNI QURISH
Ishning maqsadi– MatLab tizimi vositalaridan foydalanib 2D- va 3D-grafiklarni qurish va ulardan foydalanish ko’nikmasini hosil qilish. Ikki ulchovli grafiklar va sirtlarni yasash bo’yicha asosiy funktsiyalarni o’rganish.
MATLAB da grafika
MATLAB ning barcha grafik imkoniyatlarini hozir ko’rib chiqish shart emas. Ushbu laboratoriya ishi uchun zarurlarini ko’rib chiqamiz.
Laboratoriya ishini bajarishda mashqlarni bajarish shart. Grafik fayllar (*.fig format) sizning ishchi katalogingizda saqlanishi kerak (masadan, LAB1), Mazkur fayllar xisobot uchun kerak bo’ladi. |
Bir o’zgaruvchili funktsiya grafigi
Grafiklar alohida oynada quriladi.
Oddiy misolni qarab chiqamiz. Masalan, sinusoida grafigini quraylik. MATLABda grafiklar nuqtalar va ularni tutashtiruvchi kesmalar orqali quriladi. Argumentning o’zgarish sohasini beramiz. (x ning qiymati 0 dan 20 gacha 0.1 qadam bilan o’zgarsin). Quyidagi buyruqlarni kiritamiz. Natija 1 - rasmda keltirilgan.
>>
x=0:0.1:20;
>> plot(sin(x))
Mashq. Grafik quring. Albatta bajaring.
Qadamning kichik qiymatlarda berilishi sababini aniqlang. Turli qiymatlarda grafikni yaratib solishtiring. MATLAB da grafiklar alohida oynada quriladi. Grafik oyna menyusidan foydalanib bu grafikni fayl ko’rinishida saqlash va uni ustida turli amallar bajarishimiz mumkin.
Mashq. Faylga nom bering va saqlang, masalan, Sinusoida.
2.1- rasm. Sinusoida grafigi
Bitta grafik oynasida bir nechta funktsiya grafigini chizish
Quyidagi 4 ta funktsiyaning: sin(x), cos(x), sin(2x), cos(2x) grafigini bitta oynada chizamiz.
»yl=sin(x); y2=cos(x); y3=sin(2*x); y4=cos(2*x);
yl,y2, y3 va y4 o’zgaruvchilar hisoblash natijasida funktsiya emas balki vektorlar hosil qiladi. Bir qatorda bir nechta buyruq kiritish mumkin va ular nuqta vergul bilan ajratiladi.
Plot buyrug’idan foydalanamiz:
>> plot(xl,fl,x2,f2,x3,f3,x4,f4)
Bunda xl, x2, xZ,x4 - vektorlar va ularning qiymatlari bir xil, f1, f2, f3, f4 – funktsiya qiymatlaridan iborat vektor. Quyidagi buyruqni kiritamiz:
» plot(x,yl,x,y2,x,y3,x,y4)
Mashq. Grafikni quring. Albatta bajaring.
2.2-rasm. 4 ta funktsiya grafigini bitta oynada qurish.
Mashq. Ushbu grafikni fayl ko’rinishida saqlang.
fplot Grafik funktsiyasi
MATLAB da grafik chizishning yana bir funktsiyasini qaraymiz.
fplot('f(x)', [xmin xmax])
Bu funktsiya x argumentning xmin dan xmax gacha oralig’ida fiksirlanmagan qadamda grafikni yaratadi.
»
clear
» fplot('sin(x)/x', [-15 15])
» grid on
clear (tozalash) - grafik oynani tozalash va grid on (setka) – punktir chiziqli setkani o’rnatish.
Mashq. Ushbu grafikni fayl ko’rinishida saqlang .
2.3- rasm. fplot funktsiyasi yordamida sin(x)/x grafigini chizish.
Ustunli diagrammalar
Amaliy xisoblarda ko’pincha ustunli diagrammalarni qurishga to’g’ri keladi. Bunda ma’lum V vektorning qiymatlari olinadi. Bu grafikni yasash uchun bar(V) (- rasm. 4.4). funktsiyasi ishlatiladi
>>
V=1:8
V =
1 2 3 4 5 6 7 8
>> bar(V)
Mashq. Ushbu grafikni fayl ko’rinishida saqlang .
2.4- rasm. vektor elementlaridan ustunli grafik qurish.
Ustunli diagramma MATLAB ning ko’plab gafiklari tiplaridan biri bo’lib, asosan moliyaviy-iqtisodiy ko’rsatgichlar uchun ishlatiladi.
Uch
o’lchovli grafiklarni yasash
Uch o’lchovli grafiklarni (sirtlarni) qurish ham osongina bajariladi. Faqat
qaysi buyruqdan foydalanish kerakligini bilish kerak xolos. Masalan, sirtning
grafigini va proektsiyasini yasash uchun quyidagi buyruqlardan foydalaniladi:
»
[X,Y]=meshgrid(-5:0.1:5);
» Z=X.*sin(X+Y);
» meshc(X,Y,Z)
Mashq. Ushbu grafikni chizing. Faylni saqlang. (4.5-rasm )
2.5- rasm. Grafik va uning proektsiyasi tushirilgan oyna
MATLAB da qisqa vaqt ichida Z(X, Y) funktsiya sirtini beruvchi parametrlarni kiritib sirtni o’zgartirish mumkin. Shuningdek uning rangini va proektsiyasini o’zgartirish mumkin.
Grafikni sichqoncha yordamida aylantirish
Qurilgan grafikni turli burchak ostida qarash mumkin. Bu masalani MATLAB ning logosi misolida qarab chiqamiz. membrane buyrug’ini kiritib, 4.6. - rasmdagi grafikni olamiz.
2.6- rasm.. MATLAB tizimining logotipi - membrana
Mashq. Ushbu grafikni chizing. Faylni saqlang. (2.6- rasm.)
Grafikni aylantirish uchun menyudagi strelkani tanlang va grafik ustida sichqoncha knopkasini bosib aylantiring. Natijada quyidagi ko’rinishga o’tishingiz yoki ixtiyoriy tomondan logoni kuzatishingiz mumkin.
2.6- rasm. Grafikni aylantirish natijasi.
Mashq. Logoning turli holatlarini kuzating va uni faylda saqlang.
Grafiklarning kontekst menyusi
Tahrirlash rejimiga o’tish uchun menyudan Tools / Edit Plot ni yoki Edit Plot knopkasini bosing. Bu rejimni o’ng knopkani bosib kontekst menyudan o’rnatish mumkin, Quyidagi (- rasm. 4.7.) - rasmda har ikki usul ko’rsatilgan.
2.7- rasm. Tahrirlash rejimiga o’tish usullari.
Mashq. Saqlagan grafiklaringizdan birini oching, kontekt menyudan Grid buyrug’ini toping va uning nima maqsadda ishlatilishini aniqlang.
Grafiklarning xossalarini formatlash
MATLAB
da grafiklar xossalarini maxsus vositalar yordamida osongina sozlash mumkin.
Ulardan biri Property Editor.
Xossalar redaktori bosh menyudan View / Property Editor
yoki Show Property Editor kontekst menyudan chaqiriladi.
Redaktor ko’rinishi grafikning qaysi elementi ajratilgan bo’lsa,
shunga bog’liq ravishda amallar bajariladi. Masalan, 4.8. - rasmda ramka
ajratilgan, 4.9. - rasmda grafik chiziqlari.
2.8- rasm. rasmda ramka ajratilgan
2.9- rasm. grafik chiziqlarini belgilash.
Mashq. Yuqorida keltirilgan - rasmlardagi grafik xossalariga oid barcha bandlarni oching va ular nima maqsadda ishlatilishini aniqlab yozib chiqing.
Bir necha funktsiya grafigi chiziqlari va markerlarini formatlash
Agar
bir necha funktsiya grafigini yaratish zarur bo’lsa, ularning chiziqlari va
markerlarini turlicha ajratish mumkin. Quyidagi buyruqlarni bajaramiz:
» x=-2:.1:5;
» plot(x,sin(x),x,sin(x).^3,x,sin(x).^5);
Cinusning darajasini hisoblashga e’tibor bering. Agar bu ifodani sin(x)^2 i cos(x)^2 ko’rinishida yozsangiz qo’pol xato bo’lardi, chunki, x bu yerdi vektor. Operator .^ bu holda darajaga ko’tarishni elementlab bajaradi. Funktsiya qurish uchun shunday yondashuv talab etiladi.
2.10 - rasm. da shunday grafik qurish namoyish etilgan.
2.10- rasm. Uch funktsiya grafigini uchun formatlashga misol
Mashq. Yuqoridagi mashqni bajaring va grafikni faylda saqlang.
Grafiklarga yozuvlarni kiritish mumkin. Bu yozuvlarni turli shriftlarda kiritiladi va grafikning tushunarli bo’lishini ta’minlaydi.
Grafiklarga yozuvlvrni va strelkalarni kiritish
Grafiklarga yozuvlarni Plot Edit Toolbar panelidan kiritiladi. Yozuv joyi sichqoncha orqali belgilanadi (2.11- rasm. ).
2.11- rasm. Yozuvlar kiritish
2.12 - rasmda uchta yozuvli formatlangan grafik kiritilgan. E’tibor bering, darajaga ko’tarish ^ belgisi o’rnida odatdagi matematik yozuv kiritilgan.
2.12 - rasm. Grafikga yozuvlar kiritish
2.12- rasmdan ko’rinib turibdiki uch usulda yozuvlarni kiritish mumkin:
· Xossalar redaktori yordamida;
· Plot Edit Toolbar paneli yordamida;
· Kontekst menyu yordamida.
Yozuvlarni grafikning ixtiyoriy joyiga ko’chirish va aylantirish mumkin. Shuningdek, geometrik figuralarni ham kiritish mumkin.
Mashq. Uchta funktsiya grafigini bitta oynada chizing va yozuvlar kiriting va faylni saqlab qo’ying.
Grafikga legenda kiritish
Grafik o’lchamlarini o’zgartirish (Tools menyusi va uning Zoom In (Kattalashtirish) va Zoom Out (Kichiklashtirish) buyruqlari bilan), grafikni aylantirish sichqoncha yordamida (Rotate 3D buyrug’i) bilan bajariladi.
2.13- rasm. Legenda kiritilgan grafik
Legendaning matn qismini redaktor xossalarining Display Name parametrlaridan olinadi (2.14- rasm.).
Mashq. Oldin saqlagan grafik faylingizni yuklang va unga legenda kiriting va yangi nom bilan saqlang.
Grafikni formatlash bo’yicha yuqorida keltirganlarimizdan tashqari, ularni dastur orqali ham kiritish mumkin. Masalan, text(x,u, 'legend') buyrug’i (x, u) nuqtadan boshlanuvchi 'legend' yozuvini kiritish imkonini beradi.
2.14. - rasm. Grafik nomini kiritish
3- LABORATORIYA ISHI. TASVIRLARNING turLARI VA
TASVIR FAYLLAR BILAN ishlash
Maqsad: Fayllardan tasvirni o’qishni, ularni MATLAB muhitida ko’zdan kechirishni, ular turlarini o’zgartirishni, kuzatish oynasi o’lchamlarini almashtirishni o’rganish. Dastlabki tasvirdan uning bit kartasini olish. Tasvirda 50*50 pikselli oynani qurish va qurilgan oynada yorug’likni taqsimlanishi to’g’risidagi ma’lumotni olish. Oynani siljuvchan qilish. Butun tasvirning va berilgan o’lchamli oynaning kontrastini o’zgartirish (oshirish/kamaytirish). Dastlabki tasvirning umumiy gistogrammasini va oynadagi tasvir bo’ylab harakatlanayotgan lokal gistogrammasini qurish. Yorug’liklar doiralari chegaralarini aniqlash.
Qisqacha nazariy ma’lumotlar
Tasvirlar turlari. Tasvirlar vektorli va rastrli bo’ladi. Grafikli primitivlar (sodda, oddiy) to’plami ko’rinishida tavsiflangan tasvirlar vektorli deb ataladi. Rastrli tasvirlar esa, o’zida elementlari ichida rang haqidagi ma’lumotni (piksellar) mujassam etgan ikki o’lchamli massivni ifoda etadi. Raqamli ishlovda rastrli tasvirlar foydalaniladi. Ular o’z navbatida – binar, nimrangli, palitrali va to’liq rangli turlarga bo’linada.
Binar tasvirning elementlari faqatgina ikkita qiymatni – 0 yoki 1 ni qabul qila oladilar. Bunday tasvirlarni keib chiqish tabiati eng xilma-xil bo’lishi mumkin. Lekin ko’p hollarda ular nimrang, palitrali yoki to’liq rangli tasvirlarni mahkamlangan yoki moslashuvchan ostonani binarlash usuli bilan ishlash natijasida olinadi. Binar tasvirlar ular ma’lumotlarni uzatishda juda ham qulayligi bilan afzallikka ega.
Nimrang tasvir biror-bir bitta rang jadalligi qiymatlaridan bittasini qabul qilishi mumkin bo’lgan elementlardan tashkil topadi. Bu turli xildagi tadqiqotlarda qo’llaniladigan ayniqsa keng tarqalgan turlardan biridir. Ko’p hollarda tasvir elementiga 8 bit rang chuqurligi foydalaniladi.
Palitrali tasvirlarda piksellar qiymati ranglar kartasi katagi(palitra)ga havola bo’lib xizmat qiladi. Palitra o’zidan ustunlarida bitta rangning rangli tashkil etuvchilarining jadalliklari joylashgan ikki o’lchamli massivni ifoda etadi.
Palitralilardan farqli o’laroq, to’liq rangli tasvirlarining elementlari ranglarni tashkil etuvchilarining yorug’ligi to’g’risidagi ma’lumotni bevosita saqlaydilar. Tasvir turini tanlash yechiladigan masalaga, kerakli ma’lumot qanchalar berilgan rang chuqurligi bilan to’liq va yo’qotishlarsiz taqdim etilishi mumkinligiga bog’liqdir. Shuningdek, to’liq rangli tasvirlardan foydalanish katta hisoblash xarajatlarini talab etishini inobatga olish kerak.
Raqamli tasvirlar(hoshiyalar)ni manfiy bo’lmagan (nimrang, palitrali va to’liq rangli tasvirlarning qiymatlari [0 255] doira(diapazon)ga kiritilgan) elementli matritsalar (sonlarning ikki o’lchamli to’g’ri to’rtburchakli massivlar) ko’rinishida ifodalash qabul qilingan. Matritsaning har bir elementi tasvirning bitta elementi – pikselga javob beradi. Tasvirning yorug’lik qiymati matritsasini tasvirning bit kartasi deb ataydilar.
2.1-jadval
Tasvir tipiga qarab turli formatlarda ifodalanadi
Tasvir turi |
double |
uint8 |
Binarli |
0 va 1 |
0 va 1 |
Nimrang |
[0, 1] |
[0, 255] |
Palitrali |
[1, palitra rangi], bunda 1- palitraning birinchi satri |
[0, 255] bunda 0 - palitraning birinchi satri |
To’liq rangli |
[0, 1] |
[0, 255] |
Keyinchalik, tasvirlarni ishlash usullarini ko’rib chiqayotganda, matritsasi SMN (matritsa kattaligi) bilan taqdim etiladi, bunda tasvir har bir elementning qiymati uning energetik tavsifini (yorug’ligi) kvantlashning muayyan darajasiga javob beradi deb hisoblaylik, bu – tasvirning aynan bitli kartasini o’zidir. Buni koordinatlarning piksel tizimi deb ataydilar. U IPT paketining ko’pchilik funktsiyalarida qo’llaniladi.
Shuningdek koordinatlarning fazoviy tizimi ham mavjud bo’lib, unda tasvir bir xil kattalikdagi kvadratlarning uzduksiz sonli maydoni bilan taqdim etiladi. Kvadratlar soni piksellar soniga teng mos tushadi. Ob’ektlarning aniq geometrik kattaliklarini o’lchash bilan bog’liq amaliy masalalarni yechishda koordinatlarning fazoviy tizimidan foydalanish qulay bo’ladi, chunki u tizimning razresheniesi(1 metrga piksellar soni)ni hisobga olish imkonini beradi.
Tasvirlar kontrastini oshirish texnologiyasi
Image Processing Toolbox paketi tasvirlarni yaxshilashning bir necha klassik funktsiyalarini o’z ichiga oladi.
Ushbu funktsiyalar IMADJUST, HISTEQ kontrastini oshirishda juda ham samarali bo’ladi. Ularni nimrang tasvirlarni yaxshilashda foydalanilishidagi qiyosiy tahlilini keltiramiz.
Tasvirlarni o’qish.
micro9.jpg nimrang tasvirni o’qiymiz. Shuningdek indeksli RGB: isberg.jpg. tasvirni o’qiymiz:
M=imread('micro9.jpg');
figure('Name','Isxodnik');
imshow(M);
I = imread('isberg.jpg');
figure('Name','Isxodnik');
imshow(I);
[X map]=rgb2ind(I,16);
J = ind2rgb(X,map);
figure('Name','Indekslashgan RGB');
imshow(J);
Nimrang tasvirlarni yaxshilash
Tasvirlarni yaxshilashga quyidagi funktsiyalardan foydalanish samaradorligining taqqoslama tahlilini keltiramiz:
IMADJUST – tasvirlar kontrastini dastlabki tasvirning jadallik doirasi(diapazoni)ni o’zgartirish yo’li bilan oshirish.
HISTEQ – gistogrammani ekvalizatsiyalash (tekislash) operatsiyasini bajarish.
Ushbu yondashuvda tasvir kontrastini oshirish dastlabki tasvir elementlari jadalligi qiymatlarini taqsimlash gistogrammasini o’zgartirish yo’li bilan sodir bo’ladi. Shuningdek gistogrammalar ko’rinishini o’zgartirishga boshqa yondashuvlar ham mavjud.
ADAPTHISTEQ – gistogrammani kontrast-cheklangan soddalashtirilgan tekislanishini bajarish. Bu yerda tasvirlar kontrastini oshirish uslubiyoti tasvirning lokal (mahalliy) atroflari gistogrammalarini tahlili va ekvalizatsiyasiga tayanadi.
IMADJUST, HISTEQ funktsiyalari yordamida tasvirlarga ishlov berish samaradorligini qisqacha tahlilini o’tkazamiz. Ushbu funktsiyalar asosida usullar: IMADJUSTda – tasvir elementlarining yorug’liklar diapazonini o’zgartirish, HISTEQ da – gistogrammani ekvalizatsiyalash yotibdi. Mazkur usullar(funktsiyalar)dan har biri muayyan kamchilikni bartaraf etishga yo’naltirilgan, shuning uchun xatoliklarning bunday turi mavjud bo’lgan bunday klass(sinf)dagi tasvirlarni samarali ishlash uchun qo’llanilishi mumkin.
Gistogramma atamasi ilk bora Pirson tomonidan 1985 yilda foydalanilgan. Gistogramma tanlangan o’zgaruvchilar chastotalari taqsimlanishining grafik ko’rinishi bo’lib xizmat qiladi, unda har bir interval (klass) uchun balandligi klass chastotasiga mutanosib bo’lgan ustun chiziladi. Nimrang tasvirning umumiy gistogrammasini qurish uchun odatda tasvir (gistogrammalar oraliq(interval)lari 1 ga teng) yorug’ligining (jadalligi) 256 ta darajasi ishlatiladi, har bir ustunning balandligi esa – bu tegishli yorug’lik(jadallik)ga ega bo’lgan tasvir piksellarining sonidir.
Berilgan tasvir uchun yorug’likning maksimal va minimal yo’l qo’yilishi mumkin bo’lgan darajalarini hisoblash mumkin, va o’shanda yorug’lik darajalari diapazoni (doirasi) 256 ta darajadan kamroq qilib olinishi mumkin.
Misol tariqasida micro9.jpg va micro2.jpg tasvirlari gistogrammasini ko’rib chiqamiz. micro2.jpg. tasvirining gistogrammasi faqatgina yorug’liklarning mumkin bo’lgan diapazonining markaziy qismini egalaydi (2-- rasm).
I=imread('micro9.jpg');
figure('Name','micro9.jpg'');
imshow(I);
figure;
imhist(I(:,:,1));
J=imread('micro2.jpg');
figure('Name',''micro2.jpg'');
imshow(J);
figure;
imhist(J(:,:,1));
3.1- rasm. Dastlabki tasvirlar a) micro9.jpg; b) micro2.jpg.
3.2- rasm. micro9.jpg va micro2.jpg. tasvirlarining gistogrammalari
Ishlov berishning u yoki bu usulini tanlash omillaridan biri tasvir elementlari yorug’liklari qiymatlarini taqsimlanish gistogrammasining tahliliga asoslanishi mumkin.
Qorong’i uchastkalarda mayda detallar yomon ko’rinadigan va tasvirlarning o’zlari past kontrast bilan tavsiflanadigan tasvirlar kontrastini oshirish maqsadida gistogramma ko’rinishini o’zgartirish usullaridan foydalanadilar. Ushbu usullarning mohiyati dastlabki tasvir yorug’ligini shunday qilib o’zgartirishdan iboratki, yorug’liklarni taqsimlanish gistogrammasi ma’qul shaklga ega bo’lishi kerak.
Odamning ko’z bilan qabul qilishi nuqtai nazaridan maqbuli bo’lib elementlari yoruqliklarni bir tekis taqsimlanishiga ega bo’lgan tasvir xizmat qiladi. Yaxshilangan tasvirni gistogrammani tekislash yo’li bilan, ya’ni ishlangan tasvir yorug’liklarini bir tekisda taqsimlanishiga erishishga intilgan holda oladilar. U.Frey gistogrammaning yaxshilangan tasvir yorug’liklarini taqsimlashning eksponentsial yoki giperbolik shaklini ta’minlagan ko’rinishini o’zgartirish usulini tadqiq qildi. D.Ketcham suriluvchan “lokal” gistogrammani qo’llagan holda, tasvirning ba’zi bir uchastkasi uchun olingan ushbu usulni takomillashtirdi.
Ushbu o’zgartirish past kontrastli detallar uchun ko’z bilan ko’rish sifatini yaxshilash uchun samarali. Shuningdek oldindan berilgan taqsimotli tasvirlarni olishga olib keladigan, gistogramma ko’rinishini o’zgartirishning bir qator ma’lum bo’lgan usullari mavjud.
Gistogrammani o’zgartirishning bayon qilingan usullari global bo’lishi, ya’ni o’zgartirish uchun tasvirning lokal doiralari foydalanilgan bir paytda, barcha tasvir va suriluvchanlari haqidagi ma’lumot foydalanilishi mumkin. Yuqorida ko’rib chiqilgan yondashuvlar tasvirlarni o’zgartirishning gistogrammali usullarini keng klassi(sinfi)ga asos bo’lib xizmat qiladi.
Gistogrammali o’zgartirishlar usullarini yaratishda asosiy bosqich bo’lib tasvir elementlari yorug’liklarini taqsimlash gistogrammasini to’g’ri qurilishi xizmat qiladi. Buning uchun ko’p hollarda ichiga o’rnatilgan IMHIST funktsiyasidan foydalaniladi.
1-Misol: Tasvirlarni MATLAB muhitida taqdim etish.
I=imread('micro9.jpg'); %- rasmni I-matritsaga o’qish
Imshow(I); % I-matritsasi tomonidan tavsiflangan - rasmni grafik oynaga
pause; %to’xtam (pauza)
W=gcf; % grafik oynani W ob’ekti sifatida eslab qolish
truesize(W,[100,50]); %oyna o’lchamini 100x50 o’lchamigacha o’zgartirish
pause;
truesize; %oyna o’lchamini amaliy(real) W o’lchamiga qaytarish
h=gcf; %grafik oynani h ob’ekti sifatida eslab qolish
pause; %to’xtam
close(h); %oynani yopish
A=imread('isberg.jpg'); %rangli - rasmni A-matritsaga o’qish
fprintf('\n vûvod A\n'); %matnni buyruq satriga chiqarish
Imshow(A); % A-matritsasi tomonidan tavsiflangan - rasmni chiqarish
pause; %to’xtam
[m,n] = size(A);
figure('Units','pixels','Position',[100 100 n m]) % A-matritsasi tomonidan tavsiflangan - rasmni chiqarish
image(A);
set(gca,'Position',[0 0 1 1])
fprintf('\n vûvod B\n');
B=im2double(A); %kirish - rasmini qiymatli - rasmga o’zgartiradi
% double klassi(sinfi)ni
Imshow(B); %- rasmini chiqarish
pause; %to’xtam
fprintf('\n vûvod C\n');
figure('Units','pixels','Position',[100 100 n m])
C=im2uint8(A); % kirish - rasmini qiymatli uint8 klassidagi - rasmga
o’zgartiradi
Imshow(C);
I=imread('isberg.jpg'); % - rasmni I-matritsaga o’qish
Imshow(I);
pause;
[X,map]=rgb2ind(I, 8); % rangli - rasmni indekslashgan tasvirga o’zgartiradi
Y=ind2gray(X,map); % kirish - rasmini kul rangning 8 ta gradatsiyadagi - rasmiga o’zgartiradi
Imshow(Y);
pause;
Z = im2bw(I, 0.4); % kirish - rasmini ikkilangan tasvirga o’zgartiradi
figure('Name','im2bw(I,0.4)'); imshow(Z); pause;
3.3- rasm. Zoom
Tasvirlarni MATLAB oynasidagi ko’rinishi: a) o’qilgan tasvirni micro9.jpg faylidan chiqarish; b) oyna o’lchamini 100x50 o’lchamigacha o’zgartirish (TRUESIZE).
3.4- rasm. Dastlabki rangli tasvirni kul rangi 8 darajali - rasmga o’zgartirish.
3.4- rasm. Ikkilangan tasvir.
2-Misol: Dastlabki tasvirda qo’zg’almas oyna. Tasvirning bitli kartasi. PIXVAL va MEAN2 funktsiyalari.
imfinfo('micro9.jpg')
[I,x]=imread('micro9.jpg'); %- rasmni I-- rasmga o’qish
for j=1:50,
for k=1:50,
for l=1:3
I2(j,k,l)=I(j,k,l);
end
end
end
imshow(I2); %grafik oynada 50*50 oynani chiqarish
pause;
[m,n,t] = size(I);
figure('Units','pixels','Position',[100 100 n m]);
%oynada tasvir jadalligi qiymatlarini tartibga solish
I3=imadjust(I2,[0.4 0.6],[]);
imshow(I3); %grafik oynada jadalligi o’zgartirilgan 50*50 oynani chiqarish
pause;
[m,n,t] = size(I);
figure('Units','pixels','Position',[100 100 n m]);
for j=1:50,
for k=1:50,
for l=1:3
I(j,k,l)=I3(j,k,l);
end
end
end
imshow(I);
pause;
% t+10*t+10 oynaning bitli kartasini chiqarish
t=15;
for j=t:t+10,
for k=t:t+10,
for l=1:3
I4(j,k,l)=I(j,k,l);
end
end
end
I4(:,:,1)
imshow(I4);
3.5- rasm a) 50*50
oyna; b) o’zgargan jadallilik 50*50 oyna;
v) o’zgargan jadallilik 50*50
oynaga qo’yilgandastlabki tasvir.
3-Misol: Tasvir kontrasti (IMADJUST, HISTEQ) bilan ishlash M=imread('micro9.jpg');
figure('Name','Isxodnik');
imshow(M);
% HISTEQ
J = histeq(M(:,:,1));
figure('Name','255');
imshow(J);
J = histeq(M(:,:,1),10);
figure('Name','10');
imshow(J);
J = histeq(M(:,:,1),4);
figure('Name','4');
imshow(J);
%IMADJUST
J = imadjust(M,[0. 1],[]);
figure('Name','imadjust(I,[0. 1])');
imshow(J);
J = imadjust(M,[0.1 0.5],[]);
figure('Name','imadjust(I,[0.1 0.5])');
imshow(J);
J = imadjust(M,[0.5 0.7],[]);
figure('Name','imadjust(I,[0.5 0.7])');
imshow(J); %Indekslangan tasvir bilan ishlash
I = imread('isberg.jpg');
figure('Name','Isxodnik');
imshow(I);
[X map]=rgb2ind(I,16);
J = ind2rgb(X,map);
figure('Name','ind2rgb(X,map)');
imshow(J);
% HISTEQ
JJ = histeq(J(:,:,1), 28);
%figure('Name','28');
%imshow(JJ);
% IMADJUST
JI = imadjust(J,[0.3 0.7],[]);
%figure('Name','imadjust(I,[0.3 0.7])');
%imshow(JI);
3.6- rasm. Dastlabki
tasvir kontrastini boshqarish
a) HISTEQ gistogrammali o’zgarishlardan foydalangan
holda:
b) yorug’likning 256 ta darajasi;
v) yorqinlikning 10 ta darajasi;
g) 4 yorug’lik darajasini.
3.7- rasm. Dastlabki tasvir kontrastini boshqarish a) dastlabki tasvir jadalliklari diapazonini o’zgartirish yo’li bilan: b) [0.1 0.5] diapazonida; v) [0.5 0.7] diapazonida.
4-Misol: Tasvir elemntlari yorug’liklarini taqsimlanish gistogrammasini qurish.
I=imread('micro9.jpg');
figure('Name','Isxodnik');
imshow(I);
[m n t]=size(I);
figure;
imhist(I(:, :, 1));
J=imread('micro2.jpg');
figure('Name','Isxodnik');
imshow(J);
[k l]=size(J);
figure;
imhist(J(:,:,1));
% micro9.jpg ning dastlabki tasviri umumiy gistogrammasini qurish
for s =1:256
H(s)= 0;
end
for i=1:m
for j=1:n
H(I(i,j,1)) = H(I(i,j,1)) + 1;
end
end
%grid on
figure;
for s =1:256
line([s s], [0 H(s)])
end
axis([0 255 0 350])
pause;
Laboratoriya ishiga vazifa
1. IMAGE, IMAGESC, IMREAD, IMWRITE, IMSHOW, TRUESIZE funktsiyalaridan foydalangan holda, tasvirni MATLAB ishchi oynasida o’qish va vosproizvesti.
2. Funktsiyalardan foydalangan holda dastlabki tasvirni double, uint8 klasslariga o’tkazish.
3. Dastlabki tasvirni ikkilanganiga o’zgartirish.
4. IMFINFO funktsiyasidan foydalangan holda dastlabki tasvirli fayl haqidagi ma’lumotni olish.
5. Dastlabki tasvirning bitli kartasini olish.
6. Dastlabki tasvirda 50*50 piksellik oynani olish. Oyna tasvirda ko’rinarli bo’lishi uchun uning jadalligini IMADJUST funktsiyasi yordamida o’zgartirish.
7. 50*50 oynaning bitli kartasini olish.
8. PIXVAL funktsiyasidan foydalangan holda, dastlabki tasvirning aniq pikselidagi yorug’lik qiymati haqidagi ma’lumotni olish.
9. MEAN2 funktsiyasidan foydalangan holda, dastlabki tasvir va 50*50 oyna matritsasi elementlarining o’rtacha qiymatini hisoblash.
10. 50*50 oynani dastlabki tasvir bo’ylab harakatlanish dasturini yozish.
11. IMADJUST, HISTEQ funktsiyalaridan foydalangan holda, testli tasvir kontrastini funktsiyalarning turli parametrlarida o’zgartirish. Dastlabki va olingan tasvirlarni MATLAB ishchi oynalariga chiqarish.
12. IMADJUST, HISTEQ funktsiyalaridan foydalangan holda, harakatlanayotgan 50*50 oynadagi kontrastlikni oshirish (oynani dastlabki oyna ustiga qo’yish).
13. HISTEQ funktsiyasidan foydalangan holda, ikki gradatsiyali tasvirni olish.
14. IMHIST funktsiyasidan foydalangan holda, dastlabki tasvirning umumiy gistogrammasini qurish.
15. 50*50 oyna uchun dasturiy usul bilan (dasturiy kodni yozish) gistogrammani qurish va IMHIST standart funktsiyasi yordamida olingan gistogramalarni taqqoslash.
16. Dastlabki tasvirning yorug’liklar diapazonini aniqlash.
16.
4 - Laboratoriya ishi. Tasvirni geometrik o’zgartirish.
Ishning maqsadi – geometrik o’zgartirishlarda foydalaniladigan funktsiyalarni o’rganish va amaliyotda foydalanish uchun bilimlarni o’zlashtirish.
I. Qisqa nazariy ma’lumot.
Tasvirni geometrik o’zgartirishining funktsiyalari:
Geometrik o’zgartirishlar elementning tasvirdagi fazoviy joylashuvini o’zgartiradi.
Imcrop - Tasvirdan parcha kesib olish funktsiyasi.
Sintaksis
[D,rect] = imcrop (S) – palitrasiz tasvir uchun, fragment sichqoncha yordamida buyuriladi.
[Xd,rect] = imcrop (Xs,map) – palitrali tasvir uchun, fragment sichqoncha yordamida ajratiladi.
D = imcrop (S, rect) – fragment rect. vektorida buyuriladi.
Xd = imcrop (Xs,map, rect) - fragment rect. vektorida buyuriladi.
D = imcrop – funktsiya shu vaqtdagi grafik oynada tasvir orqali boshqariladi.
imcrop(S) – Tasvir S dan kesib olingan fragment natijasi yangi grafik oynada ko’rinadi.
Kvadrat fragmentni belgilash uchun sichqoncha ko’rsatkichini surayotganda Shift tugmachasini ushlab turish kerak.
Fragmentni buyurayotgan rect. vektori to’rtta elementni o’z ichiga oladi: [Xmin Ymin w,h]. Bu yerda: Xmin va Ymin – to’g’ri to’rtburchakning yuqoridagi chap burchak koordinatalari; w – uning eni; h – balandligi.
1-Masala. Sichqoncha yordamida fragment kesib olish.
>> [S,map] = imread('c:\Image\Athena.bmp');
>> figure,imshow(S,map);
>> [A,rect] = imcrop(S,map); % sichqoncha yordamida kadrlash.
>> figure,imshow(A,map);
>> rect
2-Masala. Berilgan rect. vektori yordamida fragment qirqib olish.
>> rect = [0,0,112.5,68.5]; % fragment haqida ma’lumot berish
>> P = imcrop(S,map,rect);
>> figure,imshow(P,map)
imresize -Tasvir o’lchovini o’zgartirish funktsiyasi
Sintaksis
D = imresize (S, m, method)
Funksiya tasvirda D S dan kichkinaligini yaratadi, agar m 0 dan 1 gacha diapazonga tegishli bo’lsa: Agar m 1 dan katta bo’lsa, D S dan katta. O’lchovlarni o’zgartirish uchun interpolyasiyaning bir yo’nalishidan foydalaniladi. Interpolya quyida keltirilgan qatorlarning birida berilgan metod funktsiyasida berilgan:
“nearest” – yaqindagi piksel belgisidan foydalanish (ko’rsatma bo’yicha o’rnatilgan)
“bilinear” – bichiziqli yuza interpolyatsiyasidan foydalanish;
„bicubic‟ – bikubik yuza interpolyatsiyasidan foydalanish;
3 – Masala. Tasvirda yarimtonga ko’paytirish
>> [S,map] = imread('c:\Image\Athena.bmp');
>> I = ind2gray(S,map); % tasvirda yarimtonga o’tkazish
>> imshow(I)
>> figure,imshow(imresize(I,2)), title(„nearist‟)
>> figure,imshow(imresize(I,2,'bilinear')), title('bilinear')
>> figure,imshow(imresize(I,2,'bicubic')), title('bicubic')
4 – Masala. Tasvirda yarimton kamaytirish
>> X1 = imresize(I,0.5);
>> figure,imshow(X1,[]); title(„nearist‟)
>> X2 = imresize(I,0.5,'bilinear');
>> figure,imshow(X2,[]); title('bilinear')
>> X3 = imresize(I,0.5,'bicubic');
>> figure,imshow(X3,[]); title('bicubic')
imrotate- tasvirni aylantirish funktsiyasi
Sintaksis
D = imrotate(S, angle, method)
funktsiya ochilayotgan tasvir S ga mos tasvir D yaratadi va yuqorida ko’rsatilgan yo’nalishlar(imresize ga qarang)dan biridan foydalanadi. Burchak burilishi angle graduslarda beriladi. Ushbu belgining ijobiy ko’rsatkichlari soat ko’rsatkichiga qarshi, salbiylari esa soat ko’rsatkichi bo’yicha to’g’ri keladi.
5- Masala.Politrali tasvir ni soat ko’rsatkichi bo’ylab 45 gradusga o’girish.
>> [D,map] = imread('c:\image\Chip.bmp');
>> figure,subplot(1,3,1),subimage(imrotate(D,45),map)
>> subplot(1,3,2),subimage(imrotate(D,45,'bilinear'),map);
>> subplot(1,3,3),subimage(imrotate(D,45,'bicuic'),map);
Affin o’zgartirishlar
Burish, tasvir o’lchamlarining o’zgartirishi geometrik o’zgartirishlarga kiradi. Uning a’zolari affin o’zgartirishlari deb ataladi. Affin o’zgartirishlarni matrisa ko’rinishida yozish mumkin:
Bunday formula yordamida siqish, o’girish, olib o’tish yoki surish kabi buyruqlar berish, T. B 4.1 jadvalda ko’rsatilgan matritsa elementlarini belgilash orqali turli hil o’zgartirishlarni amalga oshirish ko’rsatilgan.
4.1- Jadval
Affin o’zgartirishlarning turlari
Turi |
Affin matritsa T |
Koordinat tenglama |
Cho’zish |
Sx 0 0 0 Sy 0 0 0 1 |
X=SxW Y=SyZ |
Burish |
cos(a) sin(a) 0 |
x=w cos(a) – z sin(a) |
Surish (gorizontal) |
1 0 0 |
x= w+az |
Surish (vertikal) |
1 b 0 |
x= w |
Olib o’tish |
1 0 0 |
X = W + Sx |
IPT yig’ilmasida fazoviy o’zgartirishlar tform nomli tuzilma ko’rinishida beriladi. Tuzilmani buyurish uchun marketform funktsiyasidan foydalanish mumkin.
Sintaksis
tform = maketform(transftype, T),
Bu yerda: transftype – o’zgartirish turi (qatorli konstanta); T – affin o’zgartirishni buyurishning matritsasi.
4.2 Jadvalda transftype o’zgartirish turlari ma’nolari keltirilgan.
4.2 -Jadval
Marketform o’zgartirish funktsiyasini turlari
O’zgartirish turi |
Ta’rif |
Affine |
Cho’zish/siqish, burilish, surish va olib o’tishning kombinatsiyasi. To’g’ri chiziqlar to’g’riligicha qoladi, parallel chiziqlar parallelligicha qoladi. |
Box |
Mustaqil cho’zish/siqish va hoxlagan o’lchamda olib o’tish; affin o’zgartirishning ko’paytirilishi. |
Composite |
Ketma-ket ishlatilinadigan fazoviy o’zgartirishlarning oilasi. |
Custom |
T va T-1 ni hisoblash funktsiyalarini belgilaydigan, foydalanuvchi tomonidan berilgan fazoviy o’zgartirish. |
Projective |
Affin o’zgartirishlardagidek to’g’ri chiziqlar to’g’riligicha qoladi, lekin parallel chiziqlar parallel bo’lmagan o’chirilgan kesishuv nuqtali chiziqlarga aylanadi. |
Tasvirda affin o’zgartirishlarni amalga oshirish uchun imtransform funktsiyasidan foydalaniladi.
Sintaksis
D = imtransform(I, tform, type, P),
Bu yerda: I – boshlang’ich tasvir, tform – fazoviy o’zgartirish tuzilishi; type – chiqish pikselini belgisini hisoblash uchun yaqindagi piksellarning interpolyatsiya turini aniqlash qatorli konstantantasi. Quyidagilardan birini qabul qilishi mumkin: ‘nearest’, ‘bilinear’, va ‘bicubic’. Hohishga qarab ‘bilinear’ ham ishlatilinadi. P – qo’shimcha sozlamlar, misol uchun, P sozlami = ”FillValue” boshlang’ich tasvirning ichida joylashmagan rang bochqaruvchi. funktsiya undan piksellar uchun foydalanadi:
>> D = imtransform(I, tform, 'FillValue', 0.5);
Namoyish qilish uchun asosan checkerboard funktsiyasi yordamida yaratiladigan shaxmat taxtasidan foydalaniladi.
Sintaksis
I=checkerboard(N,P,Q),
Bu yerda: N belgisi – katakli taxtaning o’lchamini aniqlaydigan piksellar soni; P belgisi vertikal bo’yicha kataklar sonini aniqlaydi (2P); Q belgisi gorizontal bo’yicha kataklar sonini aniqlaydi (2Q). Agar P va Q belgilari tushirib qoldirilgan bo’lsa, vertikal va gorizontal bo’yicha 8 ta katakli kvadrat taxta yaratiladi.
6 Masala. Affin o’zgartirishlarni bajarish ; Test tasvir sifatida shaxmat taxtasi olinadi. Buning uchun navbatdagilarni bajarish kerak:
1. affintr M-funktsiyali yaratish:
function affintr(I,T,type)
tform=maketform(„affine‟,T);
I1 = imtransform(I, tform) ;
figure, imshow(I1)
title(type)
2. Testli tasvir yaratish:
>> I=checkerboard(40);
>> figure, imshow(I)
3. “Cho’zilish” o’zgartirishini bajarish:
>> T=[3 0 0;0 2 0;0 0 1]; type=‟resize‟;
>> affintr(I,T,type);
4. «Surish» o’zgartirishini bajarish :
>> T=[1 0 0;0 .2 0;0 0 1]; type=‟Sdvig‟;
>> affintr(I,T,type);
5. “Burilish” o’zgartirishini bajarish:
>> T = [cos(pi/4) sin(pi/4) 0;-sin(pi/4) cos(pi/4) 0; 0 0 1]; type=‟Rotate‟;
>> affintr(I,T,type);
6. Cho’zish, burish, va surish kombinatsiyasi yordamida o’zgartirishni bajarish:
>> Tscale = [1.5 0 0; 0 2 0; 0 0 1]; % cho’zish
>> Trot = [cos(pi) sin(pi) 0;-sin(pi) cos(pi) 0; 0 0 1]; % burilish
>> Tshear = [1 0 0; .2 1 0; 0 0 1] ; % surish
>> T1 = Tscale*Trot*Tshear;
>> tform=maketform('affine',T1); type=‟All‟;
>> affintr(I,T1,type);
7. “Olib o’tish” o’zgartirishini yaratish:
>> T = [1 0 0; 0 1 0; 50 50 1];
>> tform=maketform(„affine‟,T);
>> I1 = imtransform(I, tform, 'XData', [1 320], 'YData', [1 320], 'FillValue', 0.5);
>> figure, imshow(I1)
Massivlarni indekslash asosida tasvir ustida operatsiyalar olib borish.
Kerakli indeksatsiya massivini tasvirga berish orqali tasvirning o’lchamlarini o’zgartirish mumkin:
Parchani kesib olish - Ic = I (Y:Ym, X:Xn,);
Vertikal orqali tasvirning ko’zgu-aksi - Iy = I(end:-1:1, :);
Gorizontal orqali tasvirning ko’zgu-aksi - Iy = I(:,end:-1:1);
Tasvirning “kichraytirilishi” – Id = I(1:2:end, l:2:end);
7-Masala. Bigbird.bmp tasvir faylini gorizontal orqali ko’zgu-aksini yaratish va gorizontal orqali kesib olingan “kichraytirish” ni bajarish.
>> [x,map]=imread('c:\image\bigbird.bmp');
>> I=im2double(ind2gray(x,map));
>> figure, imshow(I)
>> Iy = I(:,end:-1:1);
>> figure, imshow(Iy)
>> Id = Iy(:, 1:2:end);
>> figure, imshow(Id)
II. Mustaqil yechish uchun mashqlar.
4.3 jadvalda berilgan o’zgartirishni bajarish. 4.4 jadvalda o’zgartirishlar variantlari berilgan. Mashqlar variantlari – 4.5 jadvalda (tasvirni keyingi qadamda o’zgartirish uchun oldingi tasvirdan foydalaniladi). 4.5 jadvalida asosiy raqam yonida qavslarda 4.4 jadvalga qo’shimcha ma’lumot berilgan. (4.3 jadvaldan tasvir raqami, burchak burilishi belgisi va boshqalar)
4.3-Jadval
Tasvir fayllari
Tasvir raqami |
Tasvir fayli nomi |
1 |
bike.bmp |
2 |
Blaise.bmp |
3 |
Clouds.bmp |
4 |
Handshak.bmp |
5 |
Technlgy.bmp |
6 |
Saturn.bmp |
7 |
Construc.bmp |
8 |
Bigbird.bmp |
4.4 -Jadval
Variantlar
Variant raqami |
Tasvirni o’zgartirishi |
1 |
Tasvir haqida fayldan ma’lumot olish (tasvir raqami) |
2 |
Fayldan tasvir o’qish (tasvir raqami) |
3 |
Sichqoncha yordamida kvadrat D parcha qirqib olish |
4 |
Chap yuqori burchak 1/3 eni va balandligini butun deb olib parcha qirqish. Parcha eni va balandligining ma’nosi huddi shunday aniqlanadi. |
5 |
Shu vaqtdagi oynadan o’zgaruvchan uchun buyruqsiz sichqoncha yordamida parcha kesib olish va qabul qilingan oynadan o’zgaruvchan S da kvadrat parcha qirqib olish. |
6 |
a – ‘nearest’; b – ‘bilinear’; d – ‘bicubic’ metodidan foydalanib, parchani (N) marta kattalashtirish |
7 |
a – 'nearest'; b – „bilinear‟; d –'bicubic' metodidan foydalanib, tasvirni (N) marta kattalashtirish. |
8 |
a – 'nearest'; b – „bilinear‟; d –'bicubic' metodidan foydalanib, soat ko’rsatkichi bo’yicha (burchak) tasvirni berilgan burchakga burish. |
9 |
a – 'nearest'; b – „bilinear‟; d –'bicubic' metodidan foydalanib, soat ko’rsatkichiga qarshi (burchak) tasvirni berilgan burchakga burish. |
10 |
a – 'nearest'; b – „bilinear‟; d –'bicubic' metodidan foydalanib, tasvirni (N) marta kamaytirish. |
11 |
Gorizontal yoki vertikal bo’yicha tasvirni (Sx, Sy) marta cho’zish |
12 |
Gorizontal yoki vertikal bo’yicha tasvir surilishini (a,b) ga aralashtirish. |
13 |
Tasvirni gorizontal yoki vertikal bo’ylab (Sx, Sy) ga olib o’tish. |
14 |
Ekranga boshlang’ich tasvirni chiqarish |
15 |
Turli hil oynalarga o’zgartirishining natijasini ekranga chiqarish |
16 |
Bitta oynaga o’zgartirishining natijasini ekranga chiqarish |
4.5- Jadval
Mustaqil mashqlar variantlari
Mashqlar raqami |
3.4 jadvaldan variantlar raqamlari |
1 |
1(4); 2(4); 4, 6(3)a; 8(45)a; 14; 15 |
2 |
1(1); 2(1); 7(4)a; 5, 6(4)b; 9(90)a; 14; 16 |
3 |
1(3); 2(3); 10(2)a; 8(90)b; 3; 6(3)d; 14; 15 |
4 |
2(7); 11(2,4); 14; 16 |
5 |
1(2); 2(2); 9(45)a; 9(45)b; 9(45)d; 14; 15 |
6 |
1(6); 2(6); 6(3)b; 4; 6(3)b; 9(180); 14; 15 |
7 |
1(5); 2(5); 5; 8(60)a; 8(60)b; 8(60)d; 14; 16 |
8 |
2(7); 13(20,40); 14; 16 |
9 |
2(8); 12(0.6, –0.6); 14, 16 |
III. Savollar:
1. imcrop funktsiyasi uchun qanday usullar bilan parcha kesib olish mumkin?
2. Nima o’lchamlarni o’zgartirish funktsiyasi uchun kirish argumenti hisoblanadi?
3. Nima burilish funktsiyasi uchun kirish argumenti hisoblanadi?
4. Affin matritsasi qanday buyuriladi:
a) cho’zish uchun; b) surish uchun; c) burish uchun; d) olib o’tish uchun ?
5. Qanday qilib tasvirning ko’zgu-aksini yaratish mumkin?
6. qanday qilib tasvirni “kichraytirish” ni amalga oshirish mumkin?
5- laboratoriya ishi. Tasvirlarni vizuallashtirish, morfologik misollar.
1. Modullik vositalar
a. Pixel Region Tool vositalarini tasvirning joriy oynasiga qo’yish
b. Pixel Information GUI ni yaratish
c. GUI da qo’shimcha vositalarni boshqarish imkoniyatlarini oshirish
d. Tasvirni taqqoslash vositalarini yaratish
2. Tasvirlar tahlili
a. Xox o’zgartirishidan foydalangan holda chiziqlarni detektrlash
3. Tasvirlarni yaxshilash
a. Diapazondan kelib chiqqan holda jadalliklar qiymatlarini boshqarish
b. Gistogrammani kontrast-cheklangan adaptiv tekislash
c. Dekorrelyatsiyaviy cho’zish
d. Shovqinni yo’q qilish
e. Chiziqli filtratsiyadan foydalanish
f. Mediali filtratsiyadan foydalanish
g. Adaptiv filtratsiyadan foydalanish
Modulli vositalar
Pixel Region Tool vositalarini
tasvirning joriy oynasiga qo’yish
Modulli vositalarni yaratish funktsiyalari sintaksisidan foydalanish ushbu vositalarni o’z ichiga ob’ekt tasvirini olgan ko’zdan kechirish oynasiga qo’shish, shuningdek ushbu vositalarni alohida ko’zdan kechirish oynasida ochish yoki ba’zi bir boshqa kombinatsiyalarni yaratish imkonini beradi.
Misol: Pixel Region Tool ni joriy ko’zdan kechirish oynasida ochish
Misolda Pixel Region tool ni impixelregion funktsiyasidan foydalangan holda yaratish usuli ko’rib chiqiladi. - rasmda ushbu ishchi vosita alohida oynada ochilishi ko’rsatilgan.
himage = imshow('pout.tif')
hpixelinfopanel = impixelinfo(himage);
%For an indexed, truecolor, or binary image,
%the display range is not applicable and is set to empty ([])
%Instrument imdisplayrange na displee pokazûvaet diapazon
%intensivnosti izobrajeniya ili izobrajeniya na risunke.
hdrangepanel = imdisplayrange(himage);
hpixreg = impixelregion(himage);
5.1-rasm. Pixel Region Tool li tasvir ob’ekti alohida oynada
Pixel Region tool ni tasvir ob’ektlari joylashgan o’sha ko’rib chiqish oynasiga qo’yish uchun tasvir ob’ektlarini Pixel Region tool uchun dastlabki sifatida tavsiflab chiqish zarur.
Pixel Region tool tasvirlarni ko’rib chiqish joriy oynasiga o’rnatilgan misolni ko’rib chiqamiz.
hfig = figure;
hax = axes('units','normalized','position',[0 .5 1 .5]);
himage = imshow('pout.tif')
hpixelinfopanel = impixelinfo(himage);
hdrangepanel = imdisplayrange(himage);
hpixreg = impixelregionpanel(hfig,himage);
set(hpixreg, 'Units','normalized','Position',[0 .08 1 .4]);
Tasvirda yuqorida keltirilgan misolning ishi natijalari namoyish qilingan.
5.2-rasm. Pixel Region Tool o’rnatilgan tasvir
Pixel Information GUI ni yaratish
Tasvir piksellari va xususiyatlari to’g’risidagi ma’lumotni olishni ta’minlaydigan, ba’zi bir GUI ni yaratish vositalaridan foydalanishni ko’rib chiqamiz. GUI tasvirda aks ettiriladi va piksellar haqidagi modulli ma’lumotning quyidagi vositalarini o’z ichiga oladi:
1. Display Range tool;
2. Distance tool;
3. Pixel Information tool;
4. Pixel Region tool panel.
Ushbu misolni amalga oshirishda ko’rib chiqish oynasi menyusining boshqa elementlari to’silishi mumkin, chunki ular doimo ham yuqorida zikr etilgan vositalar bilan bir-biriga to’g’ri kelmaydi.
function my_pixinfotool(im)
% Oynani yaratish, xossalarni belgilash
hfig = figure('Toolbar','none',...
'Menubar', 'none',...
'Name','My Pixel Info Tool',...
'NumberTitle','off',...
'IntegerHandle','off');
% O’qlarni yaratish va ularni kelishish.
% s Pixel Region tool
hax = axes('Units','normalized',...
'Position',[0 .5 1 .5]);
% Tasvirni aks ettirish.
himage = imshow(im);
% Distance tool ni qo’shish.
hdist = imdistline(hax);
% Pixel Information tool ni qo’shish.
hpixinfo = impixelinfo(himage);
% Display Range tool ni qo’shish.
hdrange = imdisplayrange(himage);
% Pixel Region tool ni qo’shish.
hpixreg = impixelregionpanel(hfig,himage);
% Pixel Region tool ni va ko’rib chiqish oynasini kelishish.
set(hpixreg, 'units','normalized','position',[0 .08 1 .4])
Ilovadan foydalanish uchun, unga MATLAB tasviri o’qilgan ishchi muhitiga uzatilishi kerak.
pout = imread('pout.tif');
my_pixinfotool(pout)
Ilova ko’rib chiqish oynasini ochadi, yuqori qismdagi tasvirni vizuallashtiradi, tasvir ustida Distance tool, Pixel Information tool, Display Range tool i Pixel Region tool ni ochadi.
5.3-rasm. Yaratilgan Image Display Tool
GUI da qo’shimcha vositalarni boshqarish imkoniyatlarini oshirish
Modulli navigatsiya vositalari tizimni ko’rib chiqishning standart oynasi bilan bir-biriga to’g’ri kelmasligi mumkin. Shuning uchun nizoli vaziyatlardan qochish uchun ko’rish oynasining asbob chizg’ichidan foydalanish taqiqlanadi.
Ilova bir necha modul’ vositalarini o’z ichiga oladi, ulardan GUI ilovada qo’shimcha modulli vositalar sifatida foydalanish mumkin:
1. aylantirish paneli;
2. umumiy ko’rish vositalari;
3. kattalashtirish bloki.
Aylantirish paneli boshqarishning asosiy vositalariga qarashlidir, chunki u boshqarish va navigatsiyaning boshqa vositalari uchun zarur. Aylantirish paneli yordamida tasvirlarni vizuallashtirishda ilova tasvirning faqatgina bir qismini aks ettiradi, agarda u ko’rish oynasidan kattaroq bo’lsa. Agarda tasvirning bir qismi ko’rinadigan bo’lsa, u holda aylantirish paneli qo’shiladi, ular yordamida tasvirning qolgan qismlarini ko’rib chiqish mumkin bo’ladi.
Aylantirish paneli yaratilgandan so’ng boshqarishning boshqa modulli vositalarini: umumiy ko’rish va kattalashtirish vositalarini qo’shish imkoni mavjud bo’ladi. Umumiy ko’rish vositalari tegishli oldindan masshtablashtirishni o’tkaza turib butun tasvirni ko’rib chiqish imkonini beradi. Kattalashtirish vositalari joriy tasvirni aks ettiradi va kattalashtirishni o’zgartirish uchun foydalanishi mumkin. Ba’zi jihatlarni batafsilroq ko’rib chiqamiz.
Aylantirishning intellektual paneli – tasvirni vizuallashtirishda aylantirish panelini to’ldiradi. Keyinchalik ushbu vosita bilan ishlashning ba’zi o’ziga xos xususiyatlari ko’rib chiqiladi.
Misol: boshqarish interfeysini katta tasvirlar bilan qurish – bunda katta tasvirlarni ko’rib chiqish usullari ko’rib chiqiladi.
Aylantirishning intellektual paneli
Aylantirish panelidan foydalangan holda tasvirlarni vizuallashtirish aks ettiriladigan tasvirda ierarxiyaning o’zgarishiga olib keladi. Diagrammada aks ettiriladigan tasvirlar uchun ob’ektlarning tipik ierarxiyasi ko’rsatilgan.
hfig = figure;
himage = imshow('concordaerial.png');
Tasvirda ob’ektlar ierarxiyasi ko’rsatilgan.
5.4-rasm. Ko’rish oynasida aks ettiriladigan tasvir ob’ektlarining ierarxiyasi
Tasvir ob’ektlarini aylantirishli ko’rish ob’ektiga joylashtirish uchun imscrollpanel funktsiyasidan foydalanganda ob’ektlar ierarxiyasi o’zgaradi. Ko’rib chiqish oynasida aks ettiriladigan tasvir uchun aylantirishni qo’shish misolini ko’rib chiqamiz. Ko’rib chiqish oynasining asbob chizg’ichi to’siladi, chunki u aylantirish panelini boshqarish vositalari bilan bir-biriga to’g’ri kemaydi.
hfig = figure('Toolbar','none',... 'Menubar', 'none');
himage = imshow('concordaerial.png');
hpanel = imscrollpanel(hfig,himage);
Tasvirda ob’ektlar ierarxiyasining imscrollpanel funktsiyasi qo’llanilgandan keyingi ko’rinishi keltirilgan. Qayd qilamizki, imscrollpanel funktsiyasi ierarxiyaga yangi ob’ektlarni (kul rangga bo’yalgani) qo’shadi.
5.5-rasm. Aylantirish paneli yordamida aks ettiriladigan tasvirlar ob’ektlari ierarxiyasi
Keyingi tasvirda aylantirish chizig’ili tasvir ko’rinishi ko’rsatilgan.
5.6-rasm. Aylantirish panelini tashkil etuvchilari
Misol: Katta tasvirlar uchun boshqarish interfeysini yaratish
Agarda katta o’lchamlardagi tasvirlar bilan ishlash zarurati tez-tez paydo bo’ladigan bo’lsa, u holda tegishli modulli vositalarga ega bo’lgan tasvirlarni vizuallashtirish funktsiyasini yaratish imkoniyati mavjud.
Tasvirdan dalil siftida foydalanuvchi va uning yordamida aylantirish panellarini oldindan ko’rish va kattalashtirish imkoniyati bilan aks ettiriuvchi bunday vositani yaratish misolini ko’rib chiqamiz.
Modomiki yaratilgan vosita MATLAB tizimining standart ko’rib chiqish oynasiga to’g’ri kelmasligi mumkin ekan, ko’rib chiqish oynasining vosita chizg’ichining ishi to’siladi.
function my_large_image_display(im)
% Ko’rib chiqish oynasini va vosita chizg’ichini yaratish.
hfig = figure('Toolbar','none',...
'Menubar', 'none',...
'Name','My Large Image Display Tool',...
'NumberTitle','off',...
'IntegerHandle','off');
% Tasvirni imshow funktsiyasi yordamida aks ettirish.
himage = imshow(im);
% Aylantirish panelini qo’shish.
hpanel = imscrollpanel(hfig,himage);
% Aylantirish panelini joylashtirish.
set(hpanel,'Units','normalized','Position',[0 .1 1 .9]);
% Kattalashtirish vositalarini qo’shish.
hMagBox = immagbox(hfig,himage);
% Kattalashtirish vositalarini joylashtirish.
pos = get(hMagBox,'Position');
set(hMagBox,'Position',[0 0 pos(3) pos(4)]);
% Dastlabki ko’rib chiqish vositalarini qo’shish.
hovervw = imoverview(himage);
Yaratilgan vositadan foydalanish uchun tasvirga yo’lni ko’rsating yoki uni MATLAB ning ishchi muhitidan o’qing.
big_image = imread('peppers.png');
my_large_image_display(big_image)
Ilova ko’rib chiqish oynasini ochadi, aylantirish panelidan foydalangan holda tasvirni, shuningdek ko’rib chiqish va kattalashtirish vositalarini vizuallashtiradi,
5.7-rasm. my_large_image_display(big_image) natijasi
Tasvirlarni boshqaruvni qo’shimcha vositalik aks ettirish vositasi.
Tasvirlarni taqqoslash vositasini yaratish
Modulli vositalarni yaratishda ular va tasvirlar ob’ektlari o’rtalarida avtomatik ravishda aloqa o’rnatiladi.
Masalan, Pixel Information tasvirda kursorning joriy joyda joylashgan tasvir ob’ektlari bilan aloqa o’rnatadi. Overview tool vositalari uchun tasvir ob’ektlari bilan aloqaning bo’lishi mumkin bo’lgan ikkita yo’li o’rnatilgan:
1. tasvir ko’rinadigan qismining o’zgarganida, misol uchun, aylantirish yoki kattalashtirish chiziqlari yordamida Overview tool vositasi to’g’ri to’rtburchak o’lchamini yoki joylashuvini avtomatik tarzda o’zgartiradi;
2. xuddi shunga o’xshash yangilanish tasvirning turli qismlarini batafsil ko’rib chiqilishida sodir bo’ladi.
Modulli vositalar grafik ob’ektlar xususiyatlarini interaktiv o’zgartirish imkoniyatlarini kengaytirish orqali takomillashtiriladi. Misol uchun, sichqoncha tugmalari o’chirilganda WindowButtonMotionFcn ni qo’llab-quvvatlash (podderjka).
Tool APIs ning modulli vositalaridan foydalanish
Ko’p modulli vositalar amaliy dasturiy interfeys(API) deb ataluvchini qo’llab-quvvatlaydi. API belgilangan operatsiya haqidagi ma’lumotni bera oladigan funktsiyani aniqlaydi.
Masalan, kattalashtirish bloki setMagnification funktsiyasi bilan bog’langan, ya’ni amaliy dasturiy interfeysdan foydalangan holda kattalashtirish qiymatini belgilash va buni kattalashtirish blokida aks ettirish mumkin. Kattalashtirish bloki kattalashtirish masshtabini avtomatik tarzda o’zgartiradi va kattalashtirish koeffitsientining berilgan qiymatidan foydalangan holda tasvirni aks ettiradi. Katta tasvirlarni aks ettirish uchun aylantirish chiziqlaridan foydalaniladi.
Misol: Tasvirlarni taqqoslash vositalarini yaratish
Ushbu misolda foydalanuvchining grafik interfeysidan foydalangan holda ikkita tasvirni taqqoslash vositalarini yaratish ko’rib chiqiladi. Ikkita tasvir ko’rib chiqishning qo’shni oynalarida, kattalashtirish funktsiyasini sinxronlashtirish bilan aks ettiriladi. Bunda shuningdek umumiy ko’rib chiqish va avval aytilganidek, kattalashtirish vositalari ham ishga solinadi.
function my_image_compare_tool(left_image, right_image)
% Ko’rib chiqish oynasini yaratish
hFig = figure('Toolbar','none',...
'Menubar','none',...
'Name','My Image Compare Tool',...
'NumberTitle','off',...
'IntegerHandle','off');
% Tasvirni chap tomondan aks ettirish
subplot(121)
hImL = imshow(left_image);
% Tasvirni o’ng tomondan aks ettirish
subplot(122)
hImR = imshow(right_image);
% Chapdagi tasvir uchun aylantirish panelini yaratish
hSpL = imscrollpanel(hFig,hImL);
set(hSpL,'Units','normalized',...
'Position',[0 0.1 .5 0.9])
% O’ngdagi tasvir uchun aylantirish panelini yaratish
hSpR = imscrollpanel(hFig,hImR);
set(hSpR,'Units','normalized',...
'Position',[0.5 0.1 .5 0.9])
% Kattalashtirish blokini qo’shish
hMagBox = immagbox(hFig,hImL);
pos = get(hMagBox,'Position');
set(hMagBox,'Position',[0 0 pos(3) pos(4)])
% Umumiy ko’rib chiqish vositalarini qo’shish
imoverview(hImL)
% Amaliy dasturiy interfeys imkoniyatlaridan foydalanish
apiL = iptgetapi(hSpL);
apiR = iptgetapi(hSpR);
% Aylantirishning chap va o’ng panellarini sinxronlashtirish
apiL.setMagnification(apiR.getMagnification())
apiL.setVisibleLocation(apiR.getVisibleLocation())
% Pri izmenenii uvelicheniya na levoy paneli,
% eto peredaetsya i na pravuyu panel’
apiL.addNewMagnificationCallback(apiR.setMagnification);
% O’ng panelda kattalashtirish o’zgarganda,
% bu chapdagi paelga ham uzatiladi
apiR.addNewMagnificationCallback(apiL.setMagnification);
% Aylantirishning chap panelida joylashish o’zgarganda,
% bu o’ngdagi paelga ham uzatiladi
apiL.addNewLocationCallback(apiR.setVisibleLocation);
% Aylantirishning o’ng panelida joylashish o’zgarganda,
% bu aylantirishning chapdagi paneliga uzatiladi
apiR.addNewLocationCallback(apiL.setVisibleLocation);
Shu tariqa aylantirish paneli va API funktsiyalari o’rtalarida to’liq o’zaro ta’sir o’rnatiladi. Tasvirda aylantirish panelari oralarida kattalashtirish va joylashish o’zgargandagi o’zaro ta’sirni namoyish qiluvchi diagramma ko’rsatilgan.
5.8-rasm. Aylantirish panelari oralarida kattalashtirish va joylashish
Aylantirish panelining tasvirlarni taqqoslash vositalari bilan aloqasi
Taqqoslash vositalaridan foydalanganda tasvirlar argument(dalil) sifatida foydalaniladi.
left_image = imread('peppers.png');
right_image = edge(left_image(:,:,1),'canny');
my_image_compare_tool(left_image,right_image);
Ushbu vosita ko’rib chiqish oynasini ochadi, ikkita tasvirni yonma-yon vizuallashtiradi, lekin aylantirishning alohida panellari bilan. Ishlab chiqilgan taqqoslash vositasi shuningdek umumiy ko’rib chiqish vositalarini va kattalashtirish blokini o’z ichiga oladi. Umumiy ko’rib chiqish plani o’zgarganda yoki kattalashtirish koeffitsienti o’zgarganda, xuddi shunga o’xshash o’zgarishlar ikkala tasvirda sodir bo’ladi.
5.8-rasm. image_compare natijasi
Aylantirishning sinxronlashgan panellari bilan ishlab chiqilgan tasvirlarni taqqoslash vositasi
Tasvirlar tahlili
Tahlil texnikasini qo’llay turib tasvirlar tuzilmalari haqida gapirish mumkin. Tasvirlar, shuningdek ular tuzilmasini tahlil qilishda foydalaniladigan ba’zi funktsiyalarni ko’rib chiqamiz.
Chegaralarni ajratish
Tasvir ob’ektlari chegaralarini aniqlash uchun edge funktsiyasidan foydalanish mumkin. Tomon(kray)ni aniqlash uchun mezonlardan biri sifatida tasvir piksellari jadalliklarining keskin farq foydalaniladi. Qayd qilamizki, chegaralarni ajratishning ayrim usullari o’z xossalaridan kelib chiqqan holda, ko’p jihatdan vertikal, gorizontal yoki barcha chegaralarni bir xilda ajratadilar.
Chegalarni ajratishning eng samaraliroq usullaridan biri bo’lib Kanni usuli xizmat qiladi. Kanni usuli boshqa ma’lum usulardan shunisi bilan farq qiladiki, chegalarni aniqlashda ikkita ostonadan (kuchsiz va kuchli chegaralar uchun) foydalaniladi. Kuchsiz chegaralar, ular kuchlilari bilan birlashgandagina natijaviy tasvirda qayd qilinadi. Shovqinlashgan tasvirlar uchun mazkur usul qolgan usullarga qaraganda chegaralarni eng yaxshi aniqlanishini ta’minlaydi, biroq ko’proq vaqt talab qiladi.
Kannining chegaralarni ajratish usulini qo’llash misolini ko’rib chiqamiz, shuningdek uni chegaralar ajratishning boshqa ma’lum bo’lgan usul bilan taqqoslaymiz:
Dastlabki tasvirni o’qiymiz va aks ettiramiz.
I = imread('coins.png');
imshow(I)
5.9-rasm. Dastlabki tasvir
Keyinchalik bu tasvir Sobel va Kannning chegaralarni ajratish operatorlari tomonidan, keyingi vizuallashtirish bilan ishlanadi.
BW1 = edge(I,'sobel');
BW2 = edge(I,'canny');
imshow(BW1)
figure, imshow(BW2)
5.10-rasm. Sobel va Kannning chegaralarni ajratish operatorlari natijalari
Chegaralarni ajratish operatorlari ishlarni interaktiv namoyishi uchun ilovada edgedemo funktsiyasidan foydalaniladi.
Chegaralarni kuzatish
Ilova ikkita funktsiyani o’z ichiga oladi, ular ob’ektlar chegaralarini binar tasvirda qidirishda foydalanilishlari mumkin. Bular bwtraceboundary va bwboundaries funktsiyalaridir.
bwtraceboundary funktsiyasi tasvir ob’ektlari chegaralariga tegishli bo’lgan barcha piksellarning satr va ustunlarining koordinatlarini qaytaradi. Shuningdek tasvir ob’ektlari chegaralarini kuzatishda boshlang’ich (start) nuqtani tavsiflash lozim.
bwboundaries funktsiyasi ham shuningdek tasvir ob’ektlari chegaralariga tegishli bo’lgan barcha piksellarning satr va ustunlarining koordinatlarini qaytaradi.
Ikkala funktsiya uchun binar tasvirdagi nol bo’lmagan piksellar ob’ektga tegishli bo’ladi, 0 qiymatli piksellar esa fonni tashkil qiladi.
Binar tasvirning ba’zi ob’ekti chegaralarini kuzatish uchun bwtraceboundary funktsiyasini qo’llash misolini ko’rib chiqamiz, so’ngra esa tasvirning barcha ob’ektlari chegaralarini kuzatish uchun bwboundaries funktsiyasidan foydalanamiz.
Tasvirni o’qiymiz va vizuallashtiramiz.
I = imread('coins.png');
imshow(I)
5.11-rasm. Dastlabki tasvir
Ushbu tasvirni binarga o’zgartiramiz. bwtraceboundary va bwboundaries funktsiyalari faqatgina binar tasvirlar bilan ishlaydi.
BW = im2bw(I);
imshow(BW)
5.12-rasm. Tasvirni binarga o’zgartirish
Ob’ekt chegarasida pikselning satr va ustun koordinatlarini aniqlaymiz. bwboundary funktsiyasi ushbu nuqtani chegaralarni kuzatishda boshlang’ich nuqta sifatida ishlatadi.
dim = size(BW)
col = round(dim(2)/2)-90;
row = min(find(BW(:,col)))
bwtraceboundary funktsiyasi chegaralarni kuzatishni boshlang’ich nuqtadan bajaradi. Majburiy argument (dalil) sifatida binar tasvirni o’zini, boshlang’ich nuqta koordinatlarini va birinchi qadam yo’nalishini kiritish zarur. Misolda shimol yo’nalishi ('N') foydalanilgan.
boundary = bwtraceboundary(BW,[row, col],'N');
Avval dastlabki nimrang tasvirni, so’ngra esa bwtraceboundary funktsiyasi bilan qaytadigan koordinatlarni aks ettiramiz.
imshow(I)
hold on;
plot(boundary(:,2),boundary(:,1),'g','LineWidth',3);
5.13-rasm. plot(boundary(:,2),boundary(:,1),'g','LineWidth',3); natijasi
Barcha tangalar chegaralarini kuzatish uchun tasvirda bwboundaries funktsiyasidan foydalaniladi. Umolchanie bo’yicha bwboundaries funktsiyasi tasvirdagi barcha ob’ektlarni, solingan ob’ektlar bilan birga chegaralarni aniqlaydi. Bizning misolda ba’zi tangalar binar tasvirda to’qroq joylarga ega, bwboundaries funktsiyasi ularni alohida ob’ektlar sifatida talqin qiladi. bwboundaries funktsiyasi faqat tangalar chegaralarini kuzatishi uchun har bir tanganing ichidagi qismni to’ldirish uchun imfill funktsiyasi foydalaniladi.
BW_filled = imfill(BW,'holes');
boundaries = bwboundaries(BW_filled);
bwboundaries funktsiyasi qiymatlar massivini qaytaradi, unda har bir katak (yacheyka) tasvir ob’ektining koordinatlarini o’z ichiga oladi. bwboundaries funktsiyasi tomonidan qaytariladigan koordinatlardan foydalangan holda, dastlabki nimrang tasvirdagi barcha tangalar chegaralarini aks ettiramiz.
for k=1:10
b = boundaries{k};
plot(b(:,2),b(:,1),'g','LineWidth',3);
end
5.14-rasm. Sikl bilan barchasini o`zgartirish natijasi
Chegaralarni kuzatishda birinchi qadam va yo’nalishni tanlash
Avval aytilganidek, ba’zi ob’ektlar uchun dastlabki argument(dalil) sifatida boshlang’ich nuqta va konturni kuzatish yo’nalishini ko’rsatish lozim.
Masalan, agarda ob’ekt teshiklari bor bo’lsa va ob’ektning shu qismida boshlang’ich nuqta tanlangan bo’lsa, u holda konturni kuzatish ob’ektning tashqi qismida bo’lgani kabi, teshikning ichki qismi bo’ylab ham amalga oshirilishi mumkin. Bu birinchi qadamni tanlanishiga bog’liq.
Birinchi qadam yo’nalishi tanlanishi kuzatuv tashqi yoki ichki kontur bo’ylab o’tkazilishiga bog’liq bo’lishi yoki bo’lmasligi haqidagi misolni ko’rib chiqamiz. Umolchanie bo’yicha 8 talik bog’langanlik o’rnatilgan.
5.15-rasm. Birinchi qadam va yo’nalishning chegarani kuzatuviga ta’siri
Xoxning o’zgartirishidan foydalangan holda chiziqlarni detektrlash
Image Processing Toolbox ilovasi Xox o’zgartirishlarini (hough, houghpeaks, houghlines) bajaruvchi funktsiyalarni o’z ichiga oladi. hough funktsiyasi Xoxning standart o’zgartirishini (Standard Hough Transform (SHT)) bajaradi. Xoxning o’zgartirishi chiziqlarni detektrlash uchun maxsus ishlab chiqilgan. Ushbu o’zgartirishda chiziqlarning parametrik taqdimotidan foydalaniladi: rho = x*cos(theta) + y*sin(theta).
rho o’zgaruvchisi o’zida koordinatlar markazidan vektor bo’ylab, chiziqqa perpendikulyar bo’lgan, chiziqqacha bo’lgan masofani ifoda etadi. theta parametri o’zida x o’qi va shu vektor orasidagi burchakni ifoda etadi. hough funktsiyasi fazoviy matritsaning parametrlarini generatsiyalaydi, unda satr va ustunlar rho va theta qiymatlariga mos keladi.
houghpeaks funktsiyasi ushbu muhitdagi cho’qqilar qiymatlarini axtarishni bajaradi, qaysiki dastlabki tasvirdagi potentsial chiziqlarni ifoda etadi.
houghlines funktsiyasi cho’qqilarga muvofiq, Xoxning o’zgartirishida olingan, chiziqlarning oxirgi nuqtalar qidiruvini bajaradi va avtomatik ravishda unchalik katta bo’lmagan uzilishlarni to’ldiradi.
Ushbu funktsiyani tasvirda chiziqlarni detektrlashda foydalanish misolini ko’rib chiqamiz. Buning uchun avval tasvirni MATLAB ishchi muhitida o’qiymiz.
I = imread('circuit.tif');
Tasvirni ochamiz va kesib olamiz.
rotI = imrotate(I,33,'crop');
Tasvirda chegaralarni axtarish.
5.16-rasm. Dastlabki tasvir
BW = edge(rotI,'canny');
5.17-rasm. edge(rotI,'canny');natijasi
hough funktsiyasidan foydalangan holda Xox o’zgartirishlarini bajarish.
[H,theta,rho] = hough(BW);
O’zgartirishlar natijasini aks ettirish.
imshow(H,[],'XData',theta,'YData',rho,...
'InitialMagnification','fit');
xlabel('\theta'), ylabel('\rho');
axis on, axis normal, hold on;
5.18-rasm. o’zgartirishlar natijasini
houghpeaks funktsiyasi yordamida N.Xoxning o’zgartirishlar matritsasida cho’qqilarni axtarish.
P = houghpeaks(H,5,'threshold',ceil(0.3*max(H(:))));
Cho’qqilarni aks ettirish.
x = theta(P(:,2));
y = rho(P(:,1));
plot(x,y,'s','color','white');
Tasvirda chiziqlarni qidirish.
lines = houghlines(BW,theta,rho,P,'FillGap',5,'MinLength',7);
Dastlabki tasvirga chiziqlarni qo’yish.
figure, imshow(rotI), hold on
max_len = 0;
for k = 1:length(lines)
xy = [lines(k).point1; lines(k).point2];
plot(xy(:,1),xy(:,2),'LineWidth',2,'Color','green');
% Chiziqlar boshi va oxirini aks ettirish
plot(xy(1,1),xy(1,2),'x','LineWidth',2,'Color','yellow');
plot(xy(2,1),xy(2,2),'x','LineWidth',2,'Color','red');
% Oxirgi nuqtani aniqlash
len = norm(lines(k).point1 - lines(k).point2);
if ( len > max_len)
max_len = len;
xy_long = xy;
end
end
% Chiziqlarni bo’yash
plot(xy_long(:,1),xy_long(:,2),'LineWidth',2,'Color','cyan');
5.19-rasm. Chiziqlarni bo’yash
6 –laboratoriya ishi. TasVirlarni yaxshilash
Jadalliklar qiymatlarini boshqarish
Natijaviy tasvirda jadalliklar diapazoni ko’rsatilgan imadjust funktsiyasi yordamida tasvirdagi jadalliklar qiymatlarini o’rnatish imkoni mavjud.
Kontrastligi past darajali tasvirni ma’lumotlar qiymatlarini butun diapazonaga [0, 255] qayta taqsimlash yo’li bilan kattalashtirish misolini ko’rib chiqamiz.
I = imread('pout.tif');
J = imadjust(I);
6.1-rasm. Dastlabki tasvir
imshow(J)
figure, imhist(J,64)
- rasmda o’zgartirilgan tasvir va uning gistogrammasi aks ettirilgan. Qayd qilamizki, tasvir kontrastini kuchaytirilishi natijasida, gistogramma butun diapazonni qoplamoqda.
6.2-rasm. O’zgartirilgan tasvir va uning gistogrammasi
Diapazon chegaralarini boshqarish tavsifi
imadjust funktsiyasidan foydalangan holda diapazonning dastlabki va natijaviy qiymatlarni tavsiflash imkoni mavjud. Buning uchun imadjust funktsiyasida argument (dalil) sifatida ikkita vektor ko’rinishidagi diapazonlar ko’rsatiladi. Birinchi vektor dastlabki tasvir jadalligining eng kam va eng ko’p qiymatini o’z ichiga oladi, ular ikkinchi vektorda ko’rsatilgan yorug’liklar diapazonida aks ettiriladi.
Qayd qilamizki, jadalliklar qiymatlari tasvir formatidan qat’i nazar, 0 va 1 diapazoni oralig’ida joylashgan. Agarda tasvir uint8 formatida taqdim etilgan bo’lsa, qiymatlar gradatsiyasi 255 ta gradatsiyani, formatdagi tasvir uchun esa – 65535 ta gradatsiyani o’z ichiga oladi.
Masalan, tasvir kontrastining kamaytirilishi jadalliklar diapazonini kamaytirilishi hisobiga erishiladi. Pastdagi tasvirda odamning pal’tosi juda ham to’q rangda va unda detallar ko’rinmaydi. Biroq buni imadjust funktsiyasi yordamida, uint8 formatidagi dastlabki tasvirning [0,51] diapazonini o’zgartirilgan tasvirning [128,255] diapazonida aks ettirgan holda to’g’rilash mumkin. Ushbu o’zgartirish dinamik diapazonni anchagina kengaytiradi va tasvirning qorong’i qismlarni vizual qabul qilinishini yaxshilaydi. Shuningdek jadalliklarning 51 dan yuqori qiymatlari 255 dek, ya’ni oq rangda aks ettirilishini qayd qilamiz.
I = imread('cameraman.tif');
J = imadjust(I,[0 0.2],[0.5 1]);
imshow(I)
figure, imshow(J)
6.3-rasm. Dinamik diapazon o’zgartirilgandan keyingi tasvir
Avtomatik korrektsiyaning cheklovlarini o’rnatish
Odatda, imadjust funktsiyasidan foydalanilganda ikkita asosiy harakatni bajarish zarur:
1. Gistogrammani ko’rib chiqish va jadalliklar qiymatlari chegalarini aniqlash.
2. Ushbu chegaralarni keyinchalik imadjust funktsiyasida foydalanish uchun tavsiflash.
Ushbu chegaralarni tavsiflash uchun yanada oddiy yo’li stretchlim funktsiyasidan foydalanishdan iborat.
Mazkur funktsiya tasvir gistogrammasini hisoblaydi va diapazon chegarasi korrektlashini avtomatik ravishda aniqlaydi. stretchlim funktsiyasi ushbu qiymatlarni imadjust funktsiyasida argument sifatida foydalaniladigan vektor ko’rinishida qaytaradi. Misol uchun,
I = imread('rice.png');
J = imadjust(I,stretchlim(I),[0 1]);
Umolchanie bo’yicha stretchlim funktsiyasi diapazonning quyi 1% (0.01) va yuqori 1% (0.99) qismini boshqarishning chegaralari sifatida ifoda etuvchi jadalliklar qiymatlaridan foydalanadi.
Gamma korrektlash
imadjust funktsiyasi eng kichik qiymatlarni yanada kichikroq, eng kattalarini esa –yanada kattaroq qilib aks ettiradi. Umolchanie bo’yicha oraliq qiymatlar chiziq ko’rinishida aks ettiriladi. Misol uchun, dastlabki tasvir jadalliklari diapazoning o’rtasida joylashgan jadalliklar qiymatlari, o’zgartirilgan tasvir diapazoning o’rtasida joylangan jadalliklar diapazoniga mos keladi.
imadjust funktsyasida gamma korrektlash darajasini tavsiflaydigan qo’shimcha argumentni ko’rsatish mumkin. Gamma qiymatidan kelib chiqqan holda, dastlabki va o’zgartirilgan tasvir oralaridagi bog’liqlik nochiziq bo’lishi mumkin. Shuning uchun dastlabki tasvir jadalliklari diapazonining o’rtasida joylashgan jadalliklar qiymatlari, o’zgartirilgan tasvir diapazonining o’rtasida joylashgan jadalliklar qiymatlariga mos kelmaydi.
Gamma parametri 0 dan cheksizgacha bo’lgan qiymatlarni qabul qilishi mumkin. Agarda gamma 1 ga teng bo’lsa, u holda o’zgartirish chiziqli bo’ladi. Agarda gamma 1 dan kam bo’lsa, jadallikning oz qiymatli diapazoni siqiladi, jadallikning katta qiymatli diapazoni esa cho’ziladi. Agarda gamma 1 dan katta bo’lsa, u holda aksincha, jadallikning oz qiymatli diapazoni cho’ziladi, jadallikning katta qiymatli diapazoni esa siqiladi.
Yuqorida aytilganlar - rasmda namoyish qilingan. O’zgartirishning uchta egri chiziqlari gammaning turli qiymatlarida – birdan kam, birga teng va birdan katta qiymatlaridagi jadalliklar qiymatlari aks ettirilishini ko’rsatadilar. (Tasvirda x-koordinatasi dastlabki tasvir jadalliklari qiymatini, u-koordinatasi esa – natijaviy tasvir jadalliklarini ifoda etadi.
6.4-rasm. Gamma-korrektlashning uchta turli belgilanishlarini aks ettirilishi
Tasvirni gamma korrektlash misolini ko’rib chiqamiz. Qayd qilamizki, imadjust funktsiyasidan foydalanilganda dastlabki va natijaviy tasvirlar ma’lumotlari diapazonlari bo’sh matritsalar ko’rinishida tavsiflangan bo’ladi. Agarda ular shu tariqa, ya’ni bo’sh matritsalar ko’rinishida taviflangan bo’lsa, u holda imadjust funktsiyasi butun diapazondan [0,1] foydalanadi.
[X,map] = imread('forest.tif')
I = ind2gray(X,map);
J = imadjust(I,[],[],0.5);
imshow(I)
figure, imshow(J)
6.5-rasm. Tasvir gamma korrektlash qo’llanilguncha va qo’llanilgandan keyin
Gistogrammani kontrast-cheklangan adaptiv to’g’rilash
Muqobillik sifatida adapthisteq funktsiyasidan foydalangan holda, kontrast-cheklangan adaptiv gistogrammali ekvallashtirishni bajaradigan histeq funktsiyasidan foydalanish mumkin. Funktsiya butun tasvir bilan ishlaydi, adapthisteq funktsiyasi esa tasvirning unchalik katta bo’lmagan qismlari bilan ishlashi mumkin. Tasvir har bir qismining kontrasti oshadi, bu gistogramma shaklining o’zgarishiga bog’liq. To’g’rilash (ekvallashtirish) bajarilganidan so’ng, adapthisteq funktsiyasi sun’iy yaratilgan chegaralarni istisno etgan holda, bichiziqli interpolyatsiyalashni qo’llagan holda lokal qismlar chetlarini birlashtiradi.
Tasvirlarda shovqin kuchayishidan qochish uchun, kontrastni cheklash uchun maxsus parametrili adapthisteq funktsiyasidan foydalanish mumkin, bu ayniqsa gomogen (bir turdagi) qismlar uchun muhimdir.
Namuna sifatida tasvirdagi kontrastni to’g’rilashda adapthisteq funktsiyasidan foydalanishni ko’rib chiqamiz. Dastlabki tasvir past kontrastga ega, jadalliklarning ko’pchilik qiymatlari diapazonning o’rtasida to’plangan. adapthisteq funktsiyasi jadalliklar qiymatlarini butun diapazon bo’ylab bir tekis taqsimlanishini bajaradi.
I = imread('pout.tif');
J = adapthisteq(I);
imshow(I)
figure, imshow(J)
6.6-rasm. O’zgartirilgan tasvir va uning gistogrammasi
Tasvir gistogrammani kontrast-cheklangan adaptiv tekislash usuli bilan ishlanganidan so’ng (va uning gistogrammasi)
Dekorrelyatsiyaviy cho’zish
Dekorrelyatsiyaviy cho’zilish korrelyatsiyaviy bog’liklarni hisobga olgan holda, tasvirdagi ranglar nisbatini yaxshilaydi. Tasvirlarni yaxshilashda, haddan tashqari yaxshilash mavjuj bo’lmagan qismlarni paydo bo’lishiga olib kelmasligi uchun, yaxshilash chegarasini topish juda muhimdir. Shuning uchun, decorrstretch funktsiyasi amalga oshiruvchi dekorrelyatsiyaviy cho’zish usulini qo’llash maqsadga muvofiq bo’ladi.
Ko’pchilik hollarda tasvirdagi NBANDS bog’lamidagi ranglar soni uchga teng. decorrelation funktsiyasi bog’lamdagi ranglar sonidan qat’i nazar qo’llanilishi mumkin.
Tasvirning dastlabki ranglari qiymatlari o’zgartirilganda in’ikos diapazoni ko’p hollarda kattalashadi. Har bir pikselning jadalliklari NBANDSxNBANDS o’lchamli kovariatsiyaviy yoki korrelyatsiyaviy matritsali shazsiy rangli muhitga o’zgaradi, cho’ziladi, tekislanadi va qayta transformatsiyalanadi.
Dekorrelyatsiyaviy cho’zilish misoli
Dekorrelyatsiyalash va cho’zilish operatsiyasini Matlab tizimidagi imdemos direktoriysida joylashgan kutubxonadagi ba’zi tasvirlarga qo’llaymiz. Kutubxonada Koloradodagi unchalik katta bo’lmagan daryoning LANDSAT-tasviri mavjud. Ushbu tasvirga dekorrelyatsiyaviy cho’zilish usuli bilan ishlov beramiz:
2. A = multibandread('littlecoriver.lan', [512, 512, 7], ...
3. 'uint8=>uint8', 128, 'bil', 'ieee-le', ...
4. {'Band','Direct',[3 2 1]});
6. B = decorrstretch(A);
8. imshow(A); figure; imshow(B)
Ikkita tasvirni taqqoslaymiz. Dastlabki tasvirda binafsha rang tusi (qizil-ko’k) kuchli ustunlikka ega, natijaviy tasvir esa ko’proq cho’zilgan rang diapazoniga ega.
6.7-rasm. O’zgartirilgan tasvir
Unchalik katta bo’lmagan Kolorado daryosining tasviri dekorrelyatsiyaviy cho’zilishgacha (chapda) va so’ngra (o’ngda)
Tasvir turli diapazonlarining sochilgan ranglarini dekorrelyatsiyalash va tekislashgacha va undan keyingisini ko’rsatamiz:
rA = A(:,:,1); gA = A(:,:,2); bA = A(:,:,3);
figure, plot3(rA(:),gA(:),bA(:),'.'); grid('on')
xlabel('Red (Band 3)'); ylabel('Green (Band 2)'); ...
zlabel('Blue (Band 1)')
rB = B(:,:,1); gB = B(:,:,2); bB = B(:,:,3);
figure, plot3(rB(:),gB(:),bB(:),'.'); grid('on')
xlabel('Red (Band 3)'); ylabel('Green (Band 2)'); ...
zlabel('Blue (Band 1)')
6.8-rasm. Dekorrelyatsiyalash va tekislashgacha va undan keyingi tasvir turli diapazonlarining sochilgan ranglari
Kontrastni qo’shimcha chiziqli cho’zilishi
Hozir shunga o’xshash o’zgartirishni uo’rib chiqamiz, biroq gap kontrastni chiziqli cho’zilishi haqida boradi, uni dekorrelyatsiyaviy cho’zishdan keyin qo’llaymiz:
imshow(A); C = decorrstretch(A,'Tol',0.01); figure; imshow(C)
Dastlabki va o’zgartirilgan tasvirlarni taqqoslaymiz.
6.8-rasm. dekorrelyatsiyaviy cho’zish va kontrastlarni chiziqli cho’zilishidan keyingi tasviri.
Kontrastlarni chiziqli cho’zilishi tasvirning rangli diapazoni cho’zilganidan keyingi yaxshilashning yana bir qo’shimcha vositasi bo’lib xizmat qiladi. Bizning holatda rangi diapazonni cho’zilishi har bir rang tashkil qiluvchisiga taalluqli.
Yanada batafsiroq ma’lumot olish uchun stretchlim funktsiyasi tavsifiga qarang.
Kontrastni chiziqli cho’zishni stretchlim va imadjust funktsiyalaridan foydalangan holda, dekorrelyatsiyaviy cho’zilish bajarilganidan so’ng, alohida operatsiya sifatida qo’llash mumkin. Bu muqobil yo’llardan biri bo’lib hisoblanadi, biroq, uint8 va uint16 formatida ifoda etilgan tasvirlar uchun ko’pincha yaxshi natijalarga olib kelmaydi. Bunday natija piksellarning [0 255] (yoki [0 65535]) diapazonida taqsimlanishi bilan tushuntiriladi. decorrstretch funktsiyasining optsiyalari bu cheklovni aylanib o’tish imkonini beradi.
Shovqinni yo’qotish
Raqamli tasvirlar turli xildagi shovqinlar ta’siriga duchor bo’ladi. Shovqin paydo bo’lishining bir nechta asosiy sabablari mavjud, ular shuningdek tasvirlarni shakllantirish usuliga bog’liq bo’ladi. Masalan:
· Agar tasvir fotografik plyonkasini skanirlash yo’li bilan olingan o’lsa, u holda plyonka donacha(zyorna)lari shovqin manbai bo’lib xizmat qiladi. Shovqinning paydo bo’lishi shuningdek plyonkaning o’zini shikastlanganligi yoki skanirlash moslamasi tomonidan kiritilishi bilan tushuntirilishi mumkin.
· Agarda tasvir raqamli formatda egallangan bo’lsa, u holda ma’lumotlarni shakllantirish mexanizmi (CCD-detektor, kvantlashtirish) shovqin manbai bo’lib xizmat qiladi.
· Tasvir ma’lumotlarini elektron uzatish ham shuningdek shovqin manbai bo’lishi mumkin.
Ilova tasvirlardagi shovqinni to’liq yoki qisman bartaraf qilishning bir necha yo’llarini ta’minlaydi. Shovqinning har xil turlarini bartaraf qilish uchun turli usullar ishlab chiqilgan. Ular orasida
1.Chiziqli filtrlashdan foydalanish;
2.Mediali filtrlashdan foydalanish;
3.Adaptiv filtrlashdan foydalanish.
Yuqorida sanab o’tilgan ishlardan samarani namoyish qilish uchun ilovada tasvirga har xil turdagi shovqinlarni qo’shadigan imnoise funktsiyasi mavjud. Ushbu funktsiyadan foydalanish misollarini ko’rib chiqamiz.
Chiziqli filtrlashdan foydalanish
Chiziqli filtrlashdan muayyan turdagi shovqinlarni bartaraf qilish uchun foydalanish mumkin. Buning uchun o’rtachalaydigan (usrednyayushiy) filtrlar va Gauss filtri yaraydi. Misol uchun, o’rtachalaydigan filtr tasvirlardagi donachadorlikni (zernistost’) yo’q qilish uchun ishlatiladi. Modomiki har bir pikselning jadallik qiymati tevarak piksellarining o’rtacha jadalligiga teng ekan, u holda bu donachadorlikni bostirilishiga olib keladi.
Mediali filtrlashdan foydalanish
Mediali filtrlash o’rtachalaydigan filtrdan foydalanishga o’xshaydi, unda har bir pikselning jadallik qiymati o’zida tegishli tevarak piksellar jadalliklarining o’rtachalashtirilgan qiymatini ifoda etadi. Ko’p holarda mediali filtrdan foydalanish, shovqinni yo’q qilish masalasini yechishda, oddiy o’rtachalashtirishga qaraganda yanada samaraliroq bo’ladi. Mediali filtrlashni qo’llanilishi o’rtachalashtirish operatsiyasiga nisbatan chegaralarni kamroq xatoligiga olib keladi. medfilt2 funktsiyasi mediali filtrlashni bajaradi.
Mediali filtrlash tartib-statistik filtrlash bo’lib xizmat qiladi va darajali filtrlash sifatida ma’lumdir. Yanada batafsilroq ma’lumot uchun ordfilt2 funktsiyasi tavsifiga qarang.
“Tuz va qalampir” turidagi shovqinni yo’q qilish uchun o’rtachalashtirilgan filtrdan va medfilt2 funktsiyasidan foydalanishni taqqoslaydigan misolni ko’rib chiqamiz. Shovqinning ushbu turini ta’siri tasodifan tanlangan piksellar qora yoki oq bo’lib qolishidan iborat (ya’ni ularga mavjud diapazondan ekstremal qiymatlar beriladi). Ikkala hoda foydalaniladigan tevarak o’lchami 3x3 ga teng.
1. Tasvirni fayldan o’qish va uni vizuallashtirish.
2. I = imread('eight.tif');
3. imshow(I)
6.9-rasm. Dastlabki tasvir
1. Shovqinni qo’shish.
2. J = imnoise(I,'salt & pepper',0.02);
3. figure, imshow(J)
6.10-rasm. Shovqin qo’shilgan tasvir.
1. Shovqinlashgan tasvirni o’rtachalashtiruvchi filtr yordamida filtrlash va natijalarni vizuallashtirish.
2. K = filter2(fspecial('average',3),J)/255;
3. figure, imshow(K)
6.11-rasm. Natijaviy tasvir.
1. Medialik filtrdan tasvirdagi shovqinni yo’q qilish uchun foydalanish va natijani vizuallashtirish.
2. Yuqorida qayd qilinganidek, medfilt2 funktsiyasining afzalliklariga shovqinni yo’q qilinishi tasvir ob’ektlari chegaralarining yuvlib ketishiga olib kelmasligi kiradi.
3. L = medfilt2(J,[3 3]);
4. figure, imshow(K)
5. figure, imshow(L)
6.12-rasm. Natijaviy tasvir.
Adaptiv filtratsiyadan foydalanish
wiener2 funktsiyasi asosida tasvirlarni adaptiv lokal ishlash uchun venera filtri (chiziqli filtrlar turlaridan biri) yotibdi. Agarda ushbu lokal qismdagi piksellar jadalliklarining o’rtakvadrat og’ish qiymati ko’proq bo’lsa, u holda wiener2 unchalik katta bo’lmagan tekislashni bajaradi. Agar og’ish katta bo’lmasa, u holda tekislash joyi ko’proq bo’ladi.
Mazkur yondashuv ko’pincha oddiy chiziqli filtrlashga qaraganda samaraliroq bo’ladi. Adaptiv filtrlashning afzalligi yana shundan iboratki, u tasvir chetlari va boshqa yuqori chastotali qismlarini saqlab qoladi. Biroq, vinerli filtr hisoblashlar uchun chiziqli filtrlarga nisbatan ko’proq vaqt talab qiladi.
wiener2 funktsiyasi “oq” shovqin bilan, misol uchun gauss bilan yaxshiroq ishlaydi. wiener2 funktsiyasini gauss shovqini bilan shovqinlashgan Saturn tasvirini ishlashda qo’llash misolini ko’rib chiqamiz. Shovqin filtrlanishini interaktiv namoyish qilish uchun nrfiltdemo dan fodalanish mumkin.
RGB = imread('saturn.png');
I = rgb2gray(RGB);
J = imnoise(I,'gaussian',0,0.005);
K = wiener2(J,[5 5]);
imshow(J)
figure, imshow(K)
6.13-rasm. Shovqinlashgan tasvir (chapda) va filtrlashdan keyingi tasvir (o’ngda)
Shovqinni bartaraf qilish usullari ishini namoyish qilish uchun har xil turdagi shovqinlashgan tasvirlardan foydalaniladi. Ushbu tasvirlarni shakllantirish uchun imnoise funkiyasidan foydalaniladi. Aytgancha, mazkur bo’limda keltirilgan tasvirlar ushbu funktsiyadan foydalanilgan holda shakllantirilgan.
7- laboratoriya ishi. Rang bilan ishlash.
Reja
Rang bilan ishlash. Rang chuqurligini aniqlash
Tasvirdagi ranglar sonini kamaytirish
Indeksli tasvirda ranglar sonini kamaytirish
Ranglar o’tishlarini tekislash.Ranglar muhiti o’zgartirishlarini bajarish
Tuzilma-bog’liq ranglar muhitlari orasidagi o’zgartirishlar
Bir necha tasvirlarni ko’rib chiqish
Har bir tasvirni
alohida oynada vizuallashtirish
Bitta aks ettirish oynasida bir necha tasvirlarni vizuallashtirish
Aks ettirish xossalarini belgilash
Fazoviy o’zgartirishlar
Interpolyatsiya. Tasvirlar turlari
Tasvir o’lchamlarini o’zgartirish
Tasvirlarni burish. Tasvirlarni qirqib olish
Asosiy fazoviy o’zgartirishlarni bajarish
Rang bilan ishlash. Rang chuqurligini aniqlash. Ko’pchilik komp’yuterlar tasvirlarni aks ettirishda bir pikselga 8, 16 yoki 24 bitdan foydalanadi. Bu bilan aks ettiriladigan tasvir rangining chuqurligi aniqlanadi.
Tizim nechta ranglarni aks ettirishidan qat’i nazar, MATLAB bir pikselga turli bit sonli tasvirlarni xotiralab qolishi va ularga ishlov berishi mumkin: uint8 formatidagi RGB-tasvirlar uchun 224 ta ranglarni, uint16 formatidagi RGB-tasvirlar uchun 248 ta ranglarni va ikki karra aniqlik formatidagi RGB-tasvirlar uchun 2159 ta ranglarni. Ushbu tasvirlar rangni 24 bitlik tizimida ifoda etishida yaxshiroq aks ettiriladi, garchi tasvirlarni shakllantirish manbalari rangning bunday chuqurligini doim ham ta’minlay olmaydi. Ko’p hollarda ular rangni 16 bitlik ifodasini ta’minlaydilar.
Rang chuqurligi tavsifi. Tizim aks ettirishi mumkin bo’lgan rang chuqurligini aniqlash uchun quyidagi koddan foydalaniladi.
get(0,'ScreenDepth')
ans = 32
7.1-jadval
MATLAB bit sonini pikselga qaytaradi:
Qiymat |
Tavsif |
8 |
8 bitlik ifodalash 256 ta ranglar bilan aks ettiriladi. 8 bitlik nimrang tasvirlar grafikli ma’lumotlarni ifoda etishning 24 bitlik tarkibiy qismi bo’lib xizmat qiladi. |
16 |
16 bitlik ifodalash odatda har bir rang tashkil etuvchisiga 5 bitdan foydalanadi, bu esa qizil, yashil va ko’k tashkil etuvchilarga 32 ta gradatsiyalarga teng (ya’ni 25). Natijada bunday ifoda 32768 ta (ya’ni 215) turli ranglarni tutib turadi. Ba’zi tizimlar aks ettiriladigan rang gradatsiyasi sonini ko’paytirish uchun qo’shimcha bitdan foydalanadi. Bizning holda 16 bitlik ifodalashdagi turli ranglar soni 64536 ga (ya’ni 216) teng. |
24 |
24 bitlik vizuallashtirish har bir tashkil etuvchi uchta rangga 8 bitdan foydalanadi, ya’ni qizil, yashil va ko’k tashkil etuvchiga 256 ta (28). Natijada 16 777 216 ta (ya’ni 224) turli ranglar olinadi. |
32 |
32 bitlik vizuallashtirish rang ma’lumotini eslab qolish uchun 24 bitdan foydalanadi, yana 8 bit esa, ma’lumotlar to’yinganligi (shaffofligi)ni eslab qolish uchun foydalaniladi. Bu shunchaki al’fa kanali deb ataladi. |
Rang chuqurligi tanlanishining tavsifi. Foydalaniladigan tizimdan kelib chiqqan holda, bir pikselga bitning turli qiymatlarini belgilash mumkin. (Bu shuningdek grafikli ob’ektlarning razresheniesi bilan bog’liq). Ko’p hollarda 24 bitlik ifoda yaxshi vizuallashtirishni ta’minlaydi. Agarda har bir pikselga kamroq bit sonidan foydalanish zarurati bor bo’lsa, u holda 16 bitlik ifodalashdan foydalanish mumkin. Nimrang tasvirlarga ishlov berishda, ko’p hollarda, bir pikselga 8 bit yetarli bo’ladi.
Tasvirdagi ranglar sonini kamaytirish. Ushbu bandda indeksli yoki RGB tasvrlardagi ranglar sonini kamaytirish usuli bayon etilgan. Shuningdek ranglarni diffuzli soxta aralashtirish (psevdosmeshenie) (dithering) usulini ko’rib chiqamiz. Mazkur usul tasvirdagi ranglar sonini vizual ko’paytirish usulidan foydalanadi.
Quyida Image Processing Toolbox ilovasida tasvirdagi ranglar sonini kamaytirish funktsiyalarining qisqacha tavsiflari keltirilgan.
7.2-jadval
MATLAB Ranglar sonini kamaytirish
Funktsiya |
Vazifa |
imapprox |
Foydalaniladigan ranglarni kamaytirgan holda, dastlabki palitrali tasvirdan yangi palitrali tasvirni yaratadi. |
rgb2ind |
RGB to’liq rangli tasvirdan palitrali tasvirni yaratadi. |
Rangni 24 bitlik tizimlarda aks ettirish tizimlarida RGB tasvirlar 16777216 ta (ya’ni 224) ranglar bilan aks ettirilishi mumkin. Kamroq sonli ranglar bilan aks ettriladigan tizimlarda RGB tasvirlar shuningdek yaxshi aks ettiriladi, chunki MATLAB ranglar approksimatsiyasi va ranglarni diffuz soxta aralashtirishdan avtomatik ravishda foydalanadi.
Indeksli tasvirlar ko’p sonli ranglar bilan muammolarga ega bo’lishi mumkin. Asosan, 256 ta ranglar bilan cheklanadilar. Bu quyidagi sabablar bilan bog’liq:
· 8 bitlik aks ettirish tizimlarida 256 tadan ko’p rangli indeksli tasvirlarni vizuallashtirishda ranglarni diffuz soxta aralashtirish (dithering) usuli qo’llaniladi, chunki tizim hamma ranglarni ham ifoda eta olmaydi. V nekotorûx sistemax palitra v printsipe ne mojet imet’ bol’she, chem 256 pozitsiy.
· Agarda indeksli tasvir 256 tadan ko’proq ranglarni o’z ichiga olsa, MATLAB tasvir ma’lumotlarini massivda uint8 formatida emas, balki ikki karra aniqlik formatida xotiralab qoladi. Bu eslab qolinadigan ma’lumotlar hajmini oshishiga olib keladi, chunki har bir piksel 64 bitni egallaydi.
· Katta o’lchamli tasvirlar fayllarini, vizuallashtirishda 256 ta ranglardan foydalanuvchi formatda yozish maqsadga muvofiq bo’ladi. Agarda shu formatni o’zida (imwrite funktsiyasidan foydalangan holda) yozishda tasvirlar 256 tadan ortiq rangga ega bo’lsa, u hodda keyinchalik vizuallashtirishda xatoliklar ehtimoli bo’ladi.
Indeksli tasvirda ranglar sonini kamaytirish. rgb2ind dan foydalanish. rgb2ind funktsiyasi aks ettiriladigan ranglar sonini kamaytirgan holda, RGB tasvirni indeksli tasvirga o’zgartrishni bajaradi. Dastlabki tasvirga ishlov berishda funkiya ranglar approksimatsiyasining quyidagi usullaridan foydalanadi:
· Kvantlash
· Bir tekisda kvantlash
· Eng kam dispersiya bilan kvantlash
· Palitrani aks ettirish
Natijaviy tasvirning sifati approksimatsiyalashning tanlangan usuliga, dastlabki tasvir ranglarining diapazoniga va ranglarni diffuz soxta aralashtirish (dithering) usulidan foydalaishga bog’liqdir. Ta’kidlaymizki, usullar ishi natijasi shuningdek muayyan tasvirga juda ham bog’liq bo’ladi.
Kvantlash. Kvantlash tasvirdagi ranglar sonini kamayishiga olib keladi. rgb2ind funktsiyasi kvantlashdan ranglarni kamaytirish algoritmining bir qismi sifatida foydalanadi. rgb2ind funktsiyasi kvantlashning ikkita usulini tutib turadi: bir tekis kvantlash va eng kam dispersli kvantlashni.
Ushbu masalani ko’rib chiqishda RGB ranglar kubi degan tushuncha qo’llaniladi. RGB ranglar kubi o’zidan ma’lumotlarning ushbu turi uchun aniqlangan, barcha ranglarning uch o’lchamli massivini ifoda etadi. Modomiki tasvirlar MATLAB da turli formatlar(uint8, uint16 ili double)da ifodalanishi mumkin ekan, u holda bu RGB kubidagi ranglar diskretizatsiyasiga ta’sir ko’rsatadi.
7.1-rasm. RGB kubidagi ranglar diskretizatsiyasi
Bir tekisda kvantlash. Bir tekisda kvantlashni bajarishda tegishli parametrli rgb2ind funktsiyasidan foydalaniladi.
Quyida bir tekisda kvantlash misoli keltirilgan. Ikkinchi argument kvantlashning diskretligiga ta’sir ko’rsatadi.
RGB = imread('peppers.png');
[x,map] = rgb2ind(RGB, 0.1);
- rasmda uint8 formatida ifoda etilgan, tasvirni bir tekisda kvantlash namoyish qilingan. Qulay bo’lishi uchun tasvirda rang kubining ikki o’lchamli qirqimi ko’rsatilgan, unda qizil rang 0 ga teng, yashil va moviy rang diapazoni esa [0, 255] ga teng.
7.2-rasm. kubining ikki o’lchamli qirqimi
Eng kam dispersli kvantlash. Eng kam dispersli kvantlashni amalga oshirish uchun natijaviy tasvirda ranglarning maksimal soni ko’rsatilgan holda, rgb2ind funktsiyasidan foydalaniladi. Ushbu son RGB ranglar kubi bo’linadigan katak(yachkyka)lar sonini aniqlaydi. 185 ta rangdan foydalangan holda indnesli tasvirni yaratish uchun uvantlash usulini amalga oshirish misolini ko’rib chiqamiz.
RGB = imread('peppers.png');
[X,map] = rgb2ind(RGB,185);
Eng kam dispersli kvantlash usuliga asosiga piksellarni gruppa(guruh)larga ular qiymatlari orasidagi og’ish asosida birlashtirish solingan. Ya’ni tanlangan piksel gruppaning boshqa piksellaridan eng kam summar og’ishga ega bo’lishi lozim.
Indeksli tasvirdagi ranglar sonini kamaytirish. Tasvirdagi ranglar sonini kamaytirish uchun shuningdek imapprox funktsiyasidan foydalaniladi. imapprox funktsiyasi approksimatsiyalashning ayrim usullaridan foydalanadi. Ma’no jihatdan, imapprox funktsiyasi boshida ind2rgb funktsiyasi yordamida tasvirni RGB formatiga o’zgartirishni bajaradi, so’ngra esa ranglar soni o’zgargan indeksli tasvirni o’zgartirish uchun rgb2ind funktsiyasidan foydalanadi.
Misol. Mos ravishda rgb2ind va imapprox funktsiyalaridan foydalanilgan holdagi, o’z ichiga 128 va 16 ta ranglarni olgan tasvirlarni shakllantirish misolini ko’rib chiqamiz.
L=imread('peppers.png');
figure,imshow(L);
7.3-rasm. Dastlabki tasvir
L=im2double(L);
[x,map] = rgb2ind(L, 128);
figure,imshow(x,map);
7.4-rasm. 128 ta rangli tasvir
[Y,newmap] = imapprox(x,map,16);
figure,imshow(Y, newmap);
7.5-rasm. 16 ta rangli tasvir
Ishlangan tasvir sifati approksimatsiyalashning qaysi usulidan foydalanilishiga, dastlabki tasvirdagi ranglar soniga, ranglarni diffuz soxta aralashtirish (dithering) usulidan foydalanilganligi yoki yo’qligiga bog’liq. Ta’kidlaymizki, turli usullar har xil tasvirlarga turlicha natija beradi.
Ranglar o’tishini tekislash. Ranglarni diffuz soxta aralashtirish (dithering) usuli. Tasvirdagi ranglar sonini kamaytirish uchun rgb2ind yoki imapprox funktsiyalaridan foydalanilganda natijaviy tasvir sifati bir oz pastroq bo’ladi. Bu ranglar sonining kamaytirilganligi bilan bog’liq, ular yordamida tasvir aks ettiriladi. Ikkala - rgb2ind va imapprox funktsiyalari ranglarni diffuz soxta aralashtirish (dithering) usulidan foydalanadi. Bu aks ettiriladigan ranglar sonining vizual oshishiga olib keladi. dithering usuli tevarak piksellari ranglarini shunday o’zgartiradiki, tevarakning o’rtacha rangi dastlabki RGB-rangga approksimlaydi.
Ranglarni diffuz soxta aralashtirish (dithering) usuli ishi misolini ko’rib chiqamiz.
1. Datlabki tasvirni o’qish va vizuallashtirish.
2. rgb=imread('onion.png');
3. imshow(rgb);
7.6-rasm. Natijaviy tasvir
4. Sakkizta rangli indekli tasvirni ranglarni diffuz soxta aralashtirish (dithering) usuli qo’llanilmagan holda yartatish.
5. [X_no_dither,map]=rgb2ind(rgb,8,'nodither');
6. figure, imshow(X_no_dither,map);
7.7-rasm. Natijaviy tasvir
7. Sakkizta rangli indekli tasvirni ranglarni diffuz soxta aralashtirish (dithering) usuli qo’llanilgan holda yartatish.
[X_dither,map]=rgb2ind(rgb,8,'dither'); figure, imshow(X_dither,map);
7.8-rasm. Natijaviy tasvir
Ta’kidlaymizki, tasvirga ranglarni diffuz soxta aralashtirish (dithering) usuli bilan ishlov berish aks ettiriladigan ranglarning vizual ko’payishiga olib keladi. Biroq yolg’on konturlarni paydo bo’lish xavfi paydo bo’ladi.
Ranglar muhiti o’zgartirishlarini bajarish. Ranglar muhitlari orasidagi rang ma’lumotlarini o’zgartirish. Raqamli tasvirlarni tavsiflash uchun Image Processing Toolbox da ko’pincha RGB rang tizimidan foydalaniladi. Bu holda palitra ustunlari o’zidan qizil, yashil va ko’k tashkil etuvchilari jadalliklarini ifoda etadi. Palitrali tasvirlar rangning ixtiyoriy chuqurligiga ega bo’lishi mumkin, garchi rangi chuqurligi bir pikselga mos ravishda 4 va 8 bitni tashkil qiluvchi palitrali tasvirlar ko’proq keng tarqalgan bo’lsa-da.
Kattaroq rang muhitidan kamrog’iga aks ettirishning ikkita yondashuvi ma’lum. Ulardan biri shundan iboratki, rang maydonidan tashqarida joylashgan ranglar rang maydonining ichidagi rang tusi bo’yicha yaqinroqlariga o’zgaradilar. Bu yondashuv kesib tashlash (Clipping) deb ataladi. Ikkinchi usul – bu siqish (Compression) usulidir. U shundan iboratki, har bir rang kiritishda, chiqarish moslamasining rang maydoniga tushish yoki tushmasligidan qat’i nazar, chiqarish moslamasining ranglar diapazonidan boshqa rangga keltiriladi (tabiiyki, tasodifan emas). Ranglar kengligini o’zgartirishning mavjud usullari bir-birlaridan uchta asosiy xossalari bilan farq qiladilar: ranglar gammasini siqish, tusli siqish (kiritish moslamasining dinamik diapazonini chiqarish moslamasiga keltirish) va oq rangli nuqtani aks ettirish bilan.
Moslama-bog’liq ranglar muhitlari oralaridagi o’zgartirishlar. Ikkita RGB va CMYK ranglar muhitlarini ko’rib chiqamiz. Har qanday rang RGB muhitida qizil, yashil va ko’k tashkil etuvchilarining turli miqdorlari yig’indisi sifatida shakllanadi. Barcha tashkil etuvchilarning qiymatlari nolga teng bo’lganda, qora rang shakllanadi. Agarda barcha tashkil etuvchilar mumkin bo’lgan maksimal qiymatni qabul qilsalar, u holda oq rang shakllanadi. Biroq “oq rang” tushunchasi yaqinlashgan tushkncha bo’lib xizmat qiladi. Gap shundaki, RGB-tashkil etuvchilar yaxshi yaqinlashishni ta’minlaydilar, haqiqiy oq rang esa, faqatgina uning barcha spektral tashkil etuvchilarining yig’indisi bilan olinishi mumkin, faqatgina R,G va B bilan emas. CMYK-muhitida oq rangga uning barcha tashkil etuvchilarini nollashtirish bilan erishiladi, Cyan (C, Moviy), Magenta (M, Qirmizi) va Yellow (Y, Sariq) esa unda boshqa ranglarni yaratish uchun foydalaniladi. Ushbu rang muhitining kamchiligi undan foydalanuvchi moslamalar yorqin va to’yingan ranglarni aks ettira olmasliklaridan iborat.
RGB va CMYK ranglar muhitlari moslama-bog’liqdir, chunki ularda rang u yoki bu, u uchun mazkur qiymatlar berilgan moslamaga bog’langan. Printer, skaner, monitor va hokazo “Moslama” bo’lishi mumkin. Darhaqiqat, har bir printer, skaner yoki monitor bitta tasvirni o’z ranglari bilan aks ettiradilar, garchi RGB qiymatlari ularga bir xilda uzatilsa-da.
Umuman olganda, rang asosiy ranglar ushbu to’lami uchun koordinatlar bilan yoki rangdorlik koordinatlari va uarning yorqinligi bilan tavsiflanishi mumkin. Rangni ranglar koordinatlarining chiziqli va nochiziq hamda yorqinlik funktsiyalari yordamida tavsiflash mumkin. Rang koordinatlarining chiziqli o’zgartirishlari o’zida ranglarning yangi to’plamiga o’tishni ifoda etadi. Rang koordinatlarining mavjud tizimlari ranglarni son jihatdan va ularni o’zgartirish formulalarini tavsiflash imkonini beradi.
Jadvalda Matlab tizimi tasvilariga ishlov berish ilovasi bilan tutib turiladigan moslama-bog’liq ranglar muhitlari ro’yxati keltirilgan.
7.4-jadval
Matlabda ranglar muhitiga o`tish
Funktsiya |
Vazifasi |
Vazifasi |
XYZ |
YOXK (Yoritilganlik bo’yicha xalqaro komissiya) tomonidan 1931 yilda ishlab chiqilgan spektrlar asosiy ranglarining koordinatlar tizimi. |
xyY, uvL, u'v'L i L*a*b* |
xyY |
Me’yorlashtirilgan xromatik qiymatlarini olinishini tavsiflash. Y tashkil etuvchisi XYZ tizimida qanday qilib yorug’likni ifoda etadi. |
XYZ |
uvL |
Bir xil kontrastli koordinatlar tizimi. L yorqinlikni ifoda etadi va XYZ da Yning o’xshashligi bo’lib xizmat qiladi. |
XYZ |
u'v'L |
Ragdorlik va yorqinlikning ayrim o’zgarishlari bir xilda qabul qilinadigan rang muhitiga ega bo’lish maqsadida avvalgi tizimni rivojlantirish. |
XYZ |
L*a*b* |
Qabul qilish va yorqinlik bog’liqligini hisobga olishga urinish. L* o’zidan ba’zi nuqtalarga nisbatan me’yorlashtirilgan L nochiziqli masshtablashtirishni ifoda etadi. |
XYZ |
L*ch |
c va h ushbu modelda o’zida mos ravishda to’yinganlik va rangdorlikni ifoda etadi. Qutb koordinatlarida ushbu tizim L*a*b* ga o’zgaradi. |
L*a*b* |
sRGB |
O’rtastatistik ELT-monitorining rang qamroviga mos keladigan rang muhiti. |
XYZ i L*a*b* |
Misol: Tasvirlarni turli ranglar muhitlarida ifoda etish
RGB formatidagi tasvirni MATLAB muhitiga o’qiymiz va ranglar ma’lumotlarini XYZ ranglar muhitiga o’zgartiramiz:
1. Dastlabki a’lumotlarni o’qish.
2. I_rgb = imread('peppers.png');
3. figure, imshow(I_rgb);
7.9-rasm. Dastlabki tasvir
4. Rangni o’zgartirish tuzilmasini yaratamiz. Ushbu tuzilmada ikkita ranglar mihitlari oralaridagi o’zgartirishlar aniqlangan. Ushbu tuzilmani shaklantirish uchun makecform funktsiyasidan foydalaniladi.
5. Ushbu misolda ranglar ma’lumotlarini RGB dan XYZ ga o’zgartirish tuzilmasi yaratiladi.
C = makecform('srgb2xyz');
6. O’zgartirishlarni bajarish. Bayon etilgan o’zgartirishlarni bajarish uchun, argument(dilil) sifatida dastlabki ma’lumotlar va ragni o’zgartirish tuzilmasidan foydalanuvchi applycform funktsiyasidan foydalaniladi. applycform funktsiyasining ishi natijasi o’zgartirilgan ma’lumotlardan iborat.
I_xyz = applycform(I_rgb,C);
figure, imshow(I_rgb);
7.10-rasm. Natijaviy tasvir
whos
Name Size Bytes Class
C 1x1 7744 struct array
I_xyz 384x512x3 1179648 uint16 array
I_rgb 384x512x3 589824 uint8 array
Turli ranglar muhitlarida ifoda etilgan ma’lumotlarni kodlashtirish. Moslama-bog’liq ranglar muhitlari oralaridagi o’zgartirishlarda, ma’lumotlar turlari u yoki bu rang muhiti qaysi kodlashtirishni tutib turishidan kelib chiqqan holda o’zgarishi mumkin. Avvalgi misolda tasvirlar uint8 formatida ifoda etilgan edi. XYZ ma’lumotlarni uint16 formatiga o’zgartiradi. Jadvalda qiymatlarni barcha moslama-bog’liq ranglar muhitlarida ifoda etish uchun foydalanishi mumkin bo’lgan ma’lumotlar turlari keltirilgan.
7.4-jadval
Moslama-bog’liq ranglar muhitlarida ifoda etish uchun foydalanishi mumkin bo’lgan ma’lumotlar turlari
Rang muhiti |
Kodlashtirish |
XYZ |
uint16 yoki double |
xyY |
double |
uvL |
double |
u'v'L |
double |
L*a*b* |
uint8, uint16 ili double |
L*ch |
double |
sRGB |
double |
Jadvaldan ko’rinib turibdiki, ba’zi ranglar muhitlari ma’lumotlar turlarining cheklangan soniga egadir. Misol uchun, 8 bitlik LAB ma’lumotlari XYZ rang muhitiga o’zgartirilganda, ma’lumotlar uint16 formatida ifoda etiladi. Agarda XYZ ma’lumotlarini LAB formatining o’zida olish zarurati bo’lsa, u holda ilova funktsiyalarining biridan foydalanish zarur bo’ladi:
lab2double
lab2uint8
lab2uint16
xyz2double
xyz2uint16
Bir necha tasvirlarni ko’rib chiqish. Ko’pfreymli tasvirlarni imshow yoki imtool funktsiyasi yordamida vizuallashtirishda faylning faqatgina birinchi tasviri aks ettiriladi. Faylning barcha tasvirlarini ko’rib chiqish uchun ularni avvalambor MATLAB ishchi muhitiga o’tkazish lozim. Buni imread funktsiyasi yordamida qilish mumkin. Yanada batafsil ma’lumot uchun imread funktsiyasining tasifini o’qing.
Ko’pincha ko’pfreymli fayllar ko’rinishida magnit-rezonansli tasvirlar (magnetic resonance imaging (MRI)) yoki videooqimdan tortib olingan ma’lumotlar freymlari ifoda etiladi. Image Processing Toolbox ilovasi har bir tasviri (shunchaki tasvir deb ataladigan) ikki o’lchamli massivda ifoda etiladigan, to’rt o’lchamli massiv ko’rinishida ifoda etiladigan ko’pfreymli tasvirlar bilan ishlashni tutib turadi. Qo’pfreymli tasvirning barcha freymlari bir xildagi o’lchamga ega bo’lishi lozim.
Tasvir MATLAB ishchi muhitiga o’tkazilgandan so’ng, ularni imshow funktsiyasi yordamida vizullashtirishning ikkita yo’li mavjud:
· Har bir tasvirni alohida oynada aks ettirish
· Barcha freymlarni bitta ko’rish oynasida aks ettirish
Mul’tifreymli tasvirning barcha freymlarini bir vaqtning o’zida ko’rib chiqish uchun, shuningdek montage funktsiyasidan foydalanish mumkin.
Har bir tasvirni alohida oynada vizuallashtirish. Ko’pfreymli tasvirni aks ettirishning eng oddiy yo’li alohida ko’rib chiqish oynasida aks ettirishdan iborat. MATLAB tizimi bir vaqtning o’zida aks ettiriladigan tasvirlar sonini cheklamaydi.
Image Tool ilovasida shuningdek ko’pfreymli tasvirlarni ochish imkoniyati mavjud. Buning uchun quyidagi sintaksisdan foydalanish lozim:
imtool(multiframe_array(:,:,:,1));
imshow funktsiyasi tasvirlarni doimo joriy oynada aks ettiradi. Ikkinchi tasvir aks ettirilganda, u birinchisining o’rnini egayllaydi. Bir necha tasvirlarni alohida ko’rib chiqish uchun, avval ko’rib chiqish oynasini yaratish, so’ngra esa unda tasvirni vizuallashtirish lozim. Ko’pfreymli tasvirning bir qismi bo’lgan uchta tasvirni alog’ida oynalarda vizuallashtirish misolini ko’rib chiqamiz.
imshow(I(:,:,:,1))
figure, imshow(I(:,:,:,2))
figure, imshow(I(:,:,:,3))
Image Tool ilovasi bir vaqtning o’zida faqatgina bitta tasvirni aks ettirishi mumkin. Aks ettirish freymini tavsiflash uchun MATLAB ning standart indeksli sintaksisdan foydalaniladi.
imtool(multiframe_array(:,:,:,1));
Bir necha tasvirlarni bitta ko’rib chiqish oynasida vizuallashtirish. Bir necha tasvirlarni bitta ko’rib chiqish oynasida aks ettirish uchun imshow funktsiyasidan subplot yoki subimage funktsiyasi bilan birgalikda foydalanish imkoniyati mavjud.
Eslatma. imtool funktsiyasi ushbu xossani tutib turmaydi.
Aks ettirish oynasini bir necha alohida aks ettiirish qismlariga bo’lish. subplot funktsiyasi aks ettirish oynasini bir necha alohida qismlarga bo’lishni amalga oshiradi. subplot funktsiyasini qo’llash sintaksisi bunday
subplot(m,n,p)
Ushbu sintaksis yordamida aks ettirish oynasini m×n o’lchamli matritsa ko’rinishida ifoda etish mumkin, bunda r – aktif qism raqami.
Eslatma. Ayrim hollarda bitta ko’rib chiqish oynasida bir nechta rangli tasvirlarni aks ettirishda palitradan nokorrekt foydalanish muammosi paydo bo’ladi (birinchi tasvir ikkinchisining palitrasidan foydalanishi mumkin). Natijada bu tasvirlarni vizuallashtirishda aks etadi. Muqobillik sifatida subimage funktsiyasidan foydalanish mumkin.
Ikkita tasvirni vizuallashtirish misolini ko’rib chiqamiz.
[X1,map1]=imread('forest.tif');
[X2,map2]=imread('trees.tif');
subplot(1,2,1), imshow(X1,map1)
subplot(1,2,2), imshow(X2,map2)
Quyida ko’rsatilgan tasvirda, X1 birinchi tasvir ikkinchi tasvirni vizuallashtirishdan so’ng haddan tashqari qorayib ketgan.
Ikkita tasvirni bitta ko’rish oynasida imread funktsiyasi yordamida aks ettirish
7.11-rasm. Natijaviy tasvir
Bir necha tasvirlarni aks ettirish uchun subimage funktsiyasidan foydalanish.
subimage funktsiyasi avval tasvirlarni to’liq rangligiga o’zgartiradi, so’ngra esa ularni vizuallashtiradi. Bunday yondashuv imshow funktsiyasidan foydalanishdagi paydo bo’lgan muammolarni bartaraf qilish imkonini beradi.
Taklif etilgan usul bilan bitta ko’rib chiqish oynasida ikkita tasvirni vizuallashtirish misolini ko’rib chiqamiz.
[X1,map1]=imread('forest.tif');
[X2,map2]=imread('trees.tif');
subplot(1,2,1), subimage(X1,map1)
subplot(1,2,2), subimage(X2,map2)
Bitta ko’rib chiqish oynasida, subimage funktsiyasidan foydalangan holda ikkita tasvirni aks ettirish
7.12-rasm. Natijaviy tasvir
Aks ettirish xossalarini o’rnatish. Image Processing Toolbox ilovasida tasvirlarni aks ettirish imshow va imtool funktsiyalarining ayrim xossalarini nazorat qiluvchi moslamalarni sozlash imkoniyati mavjud. Masalan, ilova o’rnatma(ustanovka)laridan foydalanish imtool va imshow funktsiyalari yordamida tasvirni chiqarishda qo’llaniladigan kattalashish koeffitsientini tavsiflash imkonini beradi.
Ushbu masala doirasida:
· ilova bilan tutib turiladigan o’rnatmalar ro’yxatini;
· iptgetpref funktsiyasidan foydalangan holda, o’rnatmalarning joriy qiymatlarini olish jarayoni tavsiflanishini;
· iptsetpref funktsiyasidan foydalangan holda, o’rnatmalarning joriy qiymatlarini belgilash jarayoni tavsiflanishini ko’rib chiqamiz.
Ilova o’rnatmalari
Image Processing Toolbox ilovasi imshow va imtool funktsiyalari yordamida tasvirlarni aks ettirish usuliga ta’sir ko’rsatuvchi bir necha o’rnatmalarni tutib turadi. Jadvalda o’rnatmalar ro’yxati va ularning qisqacha tavsifi keltirilgan. Ilova o’rnatmalari va ular qiymatlari borasidagi yanada batafsilroq ma’lumotni olish uchun iptsetpref funktsiyasining tavsifini o’qing.
7.5-jadval
Jadvalda o’rnatmalar ro’yxati va ularning qisqacha tavsifi
Ilova o’rnatmalari |
Tavsifi |
ImshowBorder |
Ushbu parametr ikkita qiymatni - "loose" va "tight"ni qabul qilishi mumkin. Agar ImshowBorder parametri "loose" qiymatini qabul qilsa, u holda tasvir imshow funktsiyasi tomonidan figure oynasi chetidan chekinish bilan aks ettiriladi. Shunday qilib, oynada qo’shimcha yozuvlar uchun joy qoladi. Umolchanie bo’yicha foydalaniladi. Agarda ImshowBorder parametri "tight" qiymatini qabul qilsa, u holda tasvir imshow funktsiyasi tomonidan shunday aks ettiriladiki, u butun figure oynasini egallashi kerak. |
ImshowAxesVisible |
Bu parametr ikkita - "on" va "off" qiymatlarini qabul qilishi mumkin. Agar ImshowBorder parametri "on" qiymatini qabul qilsa, u holda tasvirni imshow funktsiyasi bilan chiqarishda, figure oynasida qo’shimcha ravishda koordinatlar o’qlari chiqariladi. Agar ImshowBorder parametri "off" qiymatini qabul qilsa, u holda koordinatlar o’qlari chiqarilmaydi. "off" parametri qiymati umolchanie bo’yicha o’rnatiladi. |
ImshowInitialMagnification |
Tasvirlarni chiqarishda imshow funktsiyasi tomonidan foydalaniladigan kattalashtirish koeffitsientini boshqaradi. |
ImtoolInitialMagnification |
Tasvirlarni masshtablashtirishda foydalaniladigan, Image Tool ilovasidagi kattalashtirish koeffitsientini nazorat qiladi. |
Ilova o’rnatmalari qiymatlarini olish
Joriy qiymatlarni aniqlash uchun iptgetpref funktsiyasidan foydalaniladi. imtoolInitialMagnification xossasi qiymatini aniqlash uchun iptgetpref funktsiyasidan foydalanish misolini ko’rib chiqamiz.
iptgetpref('ImtoolInitialMagnification')
ans = 100
Yanada batafsilroq ma’lumot olish uchun iptgetpref funktsiyasi tavsifini o’qing.
Ilova xossalari qiymatlarini o’rnatish
Ilova xossalari qiymatlarini o’rnatish uchun iptsetpref funktsiyasidan foydalaniladi. imshow funktsiyasi chaqirilganda aks ettirish oynasi o’lchami aks ettiriladigan tasvir va 'ImshowBorder' xossalari qiymatlariga muvofiq o’zgarishiga olib keladigan, aks ettirish xossalarini o’rnatish uchun iptsetpref funktsiyasidan foydalanish misolini ko’rib chiqamiz.
iptsetpref('ImshowBorder', 'tight');
Yanada batafsilroq ma’lumot olish uchun iptsetpref funktsiyasi tavsifini o’qing. Muhit o’zgartirishlari
7.6-jadval
Image Processing Toolbox ilovasida amalga oshirilgan muhit o’zgartirishlarining asosiy funktsiyalari
Atama |
Tasvirlarga ishlov berishda foydalaniladigan asosiy atamalar tavsiflari |
Interpolyatsiyalash |
Piksellarning noma’lum qiymatlari va piksellarning haqiqiy qiymatlari oralaridagi qiymatlarni fazoviy (yoki vaqtinchalik) bashorati. |
Tasvir o’lchamlarini o’zgartirish |
Tasvir o’lchamlarini imresize funktsiyasi yordamida o’zgartirish. |
Tasvirlarni aylantirish |
Tasvirlarni aylantirish uchun imrotate funktsiyasidan foydalanish. |
Tasvirni kesib olish |
Tasvirni to’g’ri to’rtburchakli qismini kesib olish uchun imcrop funktsiyasidan foydalanish. |
Asosiy fazoviy o’zgartirishlarni bajarish |
Fazoviy o’zgartirishlarning asosiy xossalarini ilovada tavsiflash. |
Interpolyatsiyalash
Yuqorida ta’kidlanganidek, interpolyatsiyalash – bu piksellarning noma’lum qiymatlari va piksellarning haqiqiy qiymatlari oralaridagi qiymatlarni fazoviy (yoki vaqtinchalik) bashoratidir. Masalan, tasvirlar o’lchamlarini o’zgartirish uchun interpolyatsiyalash usullaridan biri foydalaniladi. Ikki o’lchamli interpolyatsiyalash usuli shuningdek tasvirlarni burishda (imrotate funktsiyasi) va tasvirlarni improfile funktsiyasi yordamida tahlil qilishda foydalaniladi.
Interpolyatsiyalash usullari
Image Processing Toolbox ilovasi interpolyatsiyalashning uchta ichiga o’rnatilgan algoritmidan foydalanadi:
· Eng yaqin qo’shni bo’yicha interpolyatsiyalash – eng yaqin piksel qiymatidan foydalaniladi.
· Bichiziqli interpolyatsiyalash – bichiziqli yuza bo’yicha interpolyatsiyalashdan foydalaniladi.
· Bikubik interpolyatsiyalash - bikubik yuza bo’yicha interpolyatsiyalashdan foydalaniladi.
Tasvirlar turlari
Interpolyatsiyalashdan foydalanadigan funktsiyalarda argument (dilil) sifatida interpolyatsiyalash usuli ko’rsatiladi. Ko’pchilik funktsiyalar uchun bu eng yaqin piksellar qiymatlaridan foydalangan holdagi interpolyatsiyalashdir. Bu usul barcha turdagi tasvirlar uchun maqbul natijalarni beradi va indeksli tasvirlar uchun foydalaniladigan yagona usul bo’lib xizmat qiladi. Yorqin va RGB tasvirlar uchun bichiziqli yoki bikubik interpolyatsiyalashdan foydalangani yaxshiroq bo’ladi, chunki ko’p hollarda ushbu usullar eng yaqin piksellar qiymatlaridan foydalangandagi interpolyatsiyalashga nisbatan eng yaxshi natijani ta’minlaydilar.
RGB tasvirlar uchun interpolyatsiyalash qizil, yashil va ko’k tashkil etuvchilari uchun alohida bajariladi. Umuman olganda, bu unchalik to’g’ri emas, chunki bu rang muvozanatining buzilishiga olib keladi.
Binar binar tasvirlar uchun interpolyatsiyalash, agarda uni ongli ravishda o’tkazilsa, samara beradi. Bichiziqli yoki bikubik interpolyatsiyalashdan foydalanganda natijaviy tasvirda piksellarning hisoblangan qiymatlari doim ham 0 yoki 1 ga teng bo’lmaydi. Ishlov berish natijasi shuningdek dastlabki tasvir formatiga bog’liqdir:
· Agarda dastlabki tasvir ma’lumotlari double formatida ifoda etilgan bo’lsa, u holda natijaviy tasvir nimrang va double formatida ifoda etilgan bo’ladi. Shunday qilib, natijaviy tasvir binar bo’lmaydi, chunki 0 va 1 orasidagi diapazondan qiymatlarga ega bo’ladi.
· Agar dastlabki tasvir ma’lumotlari uint8 formatida ifoda etilgan bo’lsa, u holda natijaviy tasvir binar va uint8 formatida ifoda etilgan bo’ladi. Interpolyatsiyalaydigan piksellar qiymatlari 0 va 1 ga yaxlitlanadi, natijaviy tasvir esa uint8 formatida ifoda etiladi.
Eng yaqin piksellar qiymatlaridan foydalanilgan interpolyatsiyalashdan foydalanilganda natija doimo binar bo’ladi, chunki interpolyatsiyalanadigan piksellar qiymatlari dastlabki tasvirdan olinadi.
Tasvir o’lchamlarini o’zgartirish
Tasvir o’lchamlarini o’zgartirish uchun imresize funktsiyasidan foydalaniladi. imresize funktsiyasidan foydalanganda:
· natijaviy tasvir o’lchamini;
· interpolyatsiyalashning tanlangan usulini;
· tasvirlarni preparirovanie (qaytarish) filtrini tavsiflash zarur.
Natijaviy tasvir o’lchamini tavsiflash
imresize funktsiyasidan foydalanganda natijaviy tasvir o’lchamini ikki yo’l bilan ko’rsatish mumkin:
· kattalashtirish koeffitsientini tavsiflash orqali.
· natijaviy tasvir o’lchamlarini tavsiflash orqali.
Kattalashtirish koeffitsientidan foydalanish
Tasvirni kattalashtirish uchun, kattalashtirish koeffitsienti 1 dan katta bo’lishi lozim. Tasvirni kichraytirish uchun, kattalashtirish koeffitsienti 0 va 1 orasidagi diapazonda bo’lishi lozim. Misol uchun, quyida nomi keltirilgan buyruq yordamida I tasvirining 1,25 martaga kattalashtirilishi amalga oshadi.
I = imread('circuit.tif');
J = imresize(I,1.25);
imshow(I)
figure, imshow(J)
7.13-rasm. Dastlabki va natijaviy tasvir
Natijaviy tasvir o’lchamini tavsiflash
Natijaviy tasvir o’lchamini ikkita son – natijaviy tasvirning satr va ustunlarini o’z ichiga olgan, vektor ko’rinishida tavsiflash imkoni mavdud. 100 ta satr va 150 ta ustundan iborat bo’lgan Y natijaviy tasvirini yaratish misolini ko’rib chiqamiz.
Y = imresize(X,[100 150])
Eslatma. Natijaviy tasvir o’lchamlarini tavsiflashda dastlabki tasvir tomonlarining nisbat mutanosibligi (proportsiyasi) saqlanmagan bo’lsa, u holda natijaviy tasvir buzilgan bo’ladi.
Interpolyatsiyalash usulining tavsifi
Imresize funktsiyasi umolchanie bo’yicha natijaviy tasvirni shakllantirish uchun, eng yaqin piksellar qiymatlari asosidagi interpolyatsiyalash usulidan foydalanadi. Biroq shuningdek interpolyatsiyalashning boshqa usulini ham berish mumkin. Jadvalda imresize funktsiyasida interpolyatsiyalash usullari beriladigan optsiyalar ro’yxati keltirilgan.
7.6-jadval
Image Processing Toolbox ilovasida amalga oshirilgan muhit o’zgartirishlarining asosiy
Argument qiymati |
Interpolyatsiyalash usuli |
'nearest' |
Qo’shni elementlar bo’yicha interpolyatsiyalash (umolchanie bo’yicha beriladi) |
'bilinear' |
Bichiziqli interpolyatsiyalash |
'bicubic' |
Bikubik interpolyatsiyalash |
imresize funktsiyasi bichiziqli interpolyatsiyalashdan foydalangan misolni ko’rib chiqamiz.
Y = imresize(X,[100 150],'bilinear')
Tasvirlarni preparirlash filtridan foydalanish
Tasvir o’lchamlarini o’zgartirilishi tasvirda artefaktlarni paydo bo’lishiga olib kelishi mumkin, bu uning sifatiga ta’sir ko’rsatadi.
Shuning uchun bichiziqli yoki bikubik interpolyatsiyalashdan foydalangan holda tasvirlarni kichraytirishda imresize funktsiyasi avtomatik ravishda natijaviy tasvirdagi artefaktlarni kamaytirish uchun past chastotali filtrdan foydalanadi.
imresize funktsiyasi, agar qo’shni elementlar bo’yicha interpolyatsiyalashdan foydalanilayotgan bo’lsa, past chastotali filtrni qo’llamasligi mumkin. Qo’shni elementlar bo’yicha interpolyatsiyalash asosan indeksli tasvirlar uchun ishlatiladi, past chastotali filtrlash esa, indeksli tasvirlar uchun qo’llanilmaydi.
Shuningdek past chastotali filtrlashni o’tkazish uchun o’z filtrini yaratish mumkin. Yanada batafsilroq ma’lumot olish uchun imresize funktsiyasi tavsifini o’qing.
Tasvirlarni burish
Tasvirlarni burish uchun imrotate funktsiyasidan foydalaniladi. imrotate funktsiyasidan foydalanganda ikkita asosiy argument(dalil)ni ko’rsatish kerak:
1. burilishi kerak bo’lgan tasvir;
2. burilish burchagi.
Burilish burchagini graduslarda tavsiflash mumkin. Agar musbat qiymat berilsa, u holda imrotate funktsiyasi tasvirni soat strelkasi harakatiga qarshi aylantiradi, agar manfiy qiymat berilsa, u holda imrotate funktsiyasi tasvirni soat strelkasi harakati bo’ylab aylantiradi. I tasvirini soat strelkasi harakatiga qarshi 35 gradusga burish misolini ko’rib chiqamiz.
J = imrotate(I,35);
imrotate funktsiyasida majburiy bo’lmagan argumentlar sifatida shuningdek
1. interpolyatsiyalash usulini;
2. natijaviy tasvir o’lchamini tavsiflash mumkin.
Interpolyatsiyalash usulini tavsiflash
Umolchanie bo’yicha imrotate funktsiyasi natijaviy tasvir piksellari qiymatlarini aniqlash uchun qo’shni elementlar bo’yicha interpolyatsiyalashdan foydalanadi. Shuningdek foydalanuvchi interpolyatsiyalashning boshqa usulidan foydalanishi mumkin. Jadvalda tutib turiladigan interpolyatsiyaviy usullar ro’yxati keltirilgan.
7.7-jadval
Image Processing Toolbox ilovasida interpolyatsiyaviy usullar ro’yxati
Argument qiymati |
Interpolyatsiyaviy usul |
'nearest' |
Qo’shni elementlar bo’yicha interpolyatsiyalash (umolchanie bo’yicha beriladi) |
'bilinear' |
Bichiziqli interpolyatsiyalash |
'bicubic' |
Bikubik interpolyatsiyalash |
Bichiziqli interpolyatsiyalash usulidan foydalangan holda tasvirini soat strelkasi harakatiga qarshi 35 gradusga burish misolini ko’rib chiqamiz.
I = imread('circuit.tif');
J = imrotate(I,35,'bilinear');
imshow(I)
figure, imshow(J)
7.14-rasm. Dastlabki va natijaviy tasvir
Natijaviy tasvir o’lchamini tavsiflash
Umolchanie bo’yicha imrotate funktsiyasi natijaviy tasvirni, ko’rsatilgan burchak ostida joylashgan, dastlabki tasvirni shunday joylashtirish uchun kattaroq qilib yaratadi. Tasvirdan tashqarida joylashgan piksellarga 0 qiymati belgilanadi va ular natijaviy tasvirning tagi (foni) bo’lib xizmat qiladi. Agarda imrotate funktsiyasida argument (dalil) sifatida 'crop' optsiyasi ko’rsatilsa, u holda natijaviy tasvir dastlabki tasvir o’lchamlarigacha kesiladi. Yanada batafsilroq ma’lumot olish uchun imrotate funktsiyasi tavsifini o’qing.
Tasvirlarni kesib olish.
Tasvirning to’g’ri to’rtburchakli qismini ajratish uchun imcrop funktsiyasidan foydalaniladi. imcrop funktsiyasidan foydalanganda ikkita asosiy argumentni ko’rsatish lozim:
1. dastlabki tasvirni;
2. kesib olish maydoni aniqlanadigan to’g’ri to’rtburchak koordinatlarini.
Shuningdek imcrop funktsiyasidan foydalanishning boshqa yo’li ham mavjud. U tasvirda kesib olinadigan to’g’ri to’rtburchakni doim ham ko’rsatish kerak emasligidan iborat. Ushbu to’g’ri to’rtburchakni interaktiv berish mumkin. Bu holda kursor o’z ko’rinishini o’zgartiradi va krestcha shaklini qabul qiladi. Sichqonchaning chap tugmasiga bosilishi to’g’ri to’rtburchakning bir burchagi tanlanganligini tasdiqlaydi, sichqoncha tugmasi qo’yib yuborilgan ondagi kursor joyi esa boshqa burchak tanlanganligini tasdiqlaydi. Shunday qilib tasvir ustiga tasvirning kesib olinadigan qismini aniqlaydigan to’g’ri to’rtburchak qo’yiladi.
imshow circuit.tif
I = imcrop;
imshow(I);
7.15-rasm. Dastlabki va natijaviy tasvir
Asosiy muhit o’zgartirishlarini bajarish
Asosiy ikki o’lchamli mug’it o’zgartirishlarini bajarish uchun imtransform funktsiyasidan foydalaniladi.
imtransform funktsiyasidan foydalanganda ikkita asosiy argumentni ko’rsatish lozim:
· dastlabki tasvirni;
· kerakli o’zgartirishlar turini aniqlaydigan muhit o’zgartirishlari tuzilmasini.
O’zgartirishlar turini tavsiflash
O’zgartirishlar turini tavsiflashda TFORM tuzilmasidan foydalanish zarur. TFORM dan foydalanishning ikki yo’li mavjud:
· maketform funktsiyasidan foydalanish;
· cp2tform funktsiyasidan foydalanish.
maketform dan foydalanish
maketform funktsiyasidan foydalanganda kerakli o’zgartirishlar turlarini tavsiflash lozim. Jadvalda maketform funktsiyasi bilan tutib turiladigan, alfavit tartibidagi o’zgartirishlar turlari ro’yxati keltirilgan.
7.7-jadval
Maketform funktsiyasi bilan tutib turiladigan, alfavit tartibidagi o’zgartirishlar turlari ro’yxati
O’zgartirish turi |
Tavsifi |
'affine' |
Siljish, burilish va masshtablashtirish va tasvirlarni o’zgartirishning boshqa o’xshash funktsiyalarini o’z ichiga oluvchi o’zgartirishlar. Bunda to’g’ri chiziqlar to’g’riligicha, parallellar paralelligicha qoladi, to’g’ri to’rtburchak esa parallelogrammga aylanib qolishi mumkin. |
'box' |
Har bir o’lcham mustaqil masshtablashtiriladigan affin o’zgartirishlarining alohida holati. |
'composite' |
Ikkita yoki undan ortiq o’zgartirishlar tuzilmasi. |
'custom' |
Foydalanuvchi tomonidan aniqlangan va imtransform funktsiyasi yordamida chaqiriladigan o’zgartirishlar. |
'projective' |
O’zgartirishlarning ushbu turida to’g’ri chiziqlar to’g’riligicha qoladi, parallel chiziqlar esa bitta nuqtaga duch keladi. Bu nuqta tasvir ichida bo’lgani kabi, uning tashqarisida ham joylashishi mumkin. |
cp2tform dan foydalanish
cp2tform funktsiyasidan foydalanganda, misol uchun polinominal o’zgartirishlarda ma’lumotlarni moslab tushirish kabi o’zgartirishlar bajarilishi zarur bo’lganda TFORM yaratiladi.
Eslatma. imtransform funktsiyasidan foydalanilganda TFORM tuzilmasi ikki o’lchamli muhit o’zgartirishlarini bajaradi. Agarda tasvir ikkitadan ortiq o’lchamga ega bo’lsa, misl uchun RGB tasvirlarga, u holda ikki o’lchamli o’zgartishlar avtomatik ravishda barcha ikki o’lchamli tashkil etuvchilarga qo’llaniladi. n-o’lchamli o’zgartirishlarni aniqlash uchun tformarray funktsiyasidan foydalaniladi.
O’zgartirishlarni bajarish
TFORM tuzilmasida o’zgartirishlar turi aniqlanganidan so’ng, ularni imtransform funktsiyasini chaqiish yo’li bilan bajarish imkoniyati mavjud.
Shaxmat taxtasi tasvirli proektiv o’zgartirishlarni bajarish uchun imtransform funktsiyasidan foydalanish misolini ko’rib chiqamiz.
I = checkerboard(20,1,1);
figure; imshow(I)
T = maketform('projective',[1 1; 41 1; 41 41; 1 41],...
[5 5; 40 5; 35 30; -10 30]);
R = makeresampler('cubic','circular');
K = imtransform(I,T,R,'Size',[100 100],'XYScale',1);
figure, imshow(K)
7.16-rasm. Dastlabki va natijaviy tasvir
imtransform funktsiyasining turli optsiyalari o’zgartirishning turli jihatlarini nazorat qiladi. Masalan, avvalgi o’zgartirishdan ko’rinib turibdiki, alohida ko’rsatmalar natijaviy tasvirda dastlabki tasvir nusxalarining soni va joylashtirilishini nazorat qilishi lozim. Shuningdek natijaviy tasvir o’lchami ham nazorat qilinadi. Image Processing Toolbox ilovasida imtransform funktsiyasi va har xil turdagi muhit o’zgartirishlarini bajaruvchi boshqa o’xshash funktsiyalardan foydalangan holdagi yetarlicha ko’p misolar mavjud.
8- laboratoriya ishi. Chiziqli filtrlar va filtrlarni loyihalash
Chiziqli filtrlash
Panelga tushirish
Korrelyatsiya
imfilter
funktsiyasidan foydalangan holda filtrlash
Ma’lumotlar turlari
Korrelyatsiyalash va panelga tushirish optsiyalari
Tasvir chetini to’ldirish optsiyasi
Ko’p o’lchamli filtrlash
Oldindan belgilangan filtrlar turlaridan foydalanish
O’zgartirishlarning chastotali usullari
Chastotali usul misoli
Lokal (oynali) usullar
Maqbul amplituda-chastotali tavsifni yaratish
Filtrning chastotali javobini hisoblash
Tasvirlarga ishlov berishdagi o’zgartirishlarning ayrim turlari
Image Processing Toolbox ilovasi tasvir ma’lumotlarini ikki o’lchamli chiziqli filtratsiyani loyihalaydigan va amalga oshiruvchi funktsiyalarning ayrim sonlarini o’z ichiga oladi. Ushbu masalalarni quyidagi tartibda ko’rib chiqamiz:
8.1-jadval
Terminlar ro’yxati
Atamashunoslik |
Ushbu bo’limdagi tasvirlarga ishlov berishda qo’llaniladigan amalarni tavsiflash. |
Chiziqli filtrlash |
Ilovada amalga oshirilgan chiziqli filtrlash vositalarini tavsiflash. |
Filtrlarni loyihalash |
Chiziqli filtrlar ishlab chiqilishini tavsiflash. |
Materialni ko’rib chiqishda keyinchalik qo’llaniladigan atamalarni ko’rib chiqamiz.
8.2-jadval
Atamalar va tavsiflar
Atama |
Tavsifi |
Convolution (Svertka) |
Har bir natijaviy piksel o’zida dastlabki piksellarning solishtirma yig’indisini ifoda etgan lokal tevarak ustidagi operatsiya. Salmoq panelga tushirish yadrosi bilan aniqlanadi. Svertka operatsiyasi yordamida tasvirlarga ishlov berishning tasvir ob’ektlarini tekislash, ravshanligini oshirish va chegaralarini kuchaytirish kabi usullarini amalga oshirish mumkin. |
convolution kernel (Svertka yadrosi) |
Svertka tushirish bajarilayotganida foydalanadigan salmoqlar matritsasi. |
Correlation (korrelyatsiyalash) |
Har bir natijaviy piksel o’zida dastlabki piksellarning solishtirma yig’indisini ifoda etgan lokal tevarak ustidagi operatsiya. Salmoq korrelyatsiyalash yadrosi bilan aniqlanadi. Korrelyatsiyalash tushunchasi svertka tushunchasi bilan juda ham uzviy bog’langan. |
correlation kernel (korrelyatsiyalash yadrosi) |
Korrelyatsiyalash funktsiyasini amalga oshirish uchun salmoq funktsiyasidan foydalaniladi. Korrelyatsiyalash yadrolarini Image Processing Toolbox da filtrlarni loyihalash funktsiyasi yordamida olish mumkin. Korrelyatsiyalash yadrolari o’zidan 180 gradusga burilgan svertka yadrosini ifoda etadi. |
FIR filter (oxirgi impul’sli tavsifli filtr, KIX-filtr) |
Raqamli KIX filtrini hisoblash uchun ilovada bir qator funktsiyalar, xususan Remez usulilik funktsiya mavjud. Ulardan foydalanishning o’ziga xos xususiyati shundan iboratki, dastlabki ma’lumotlar ixtiyoriy murakkablikdagi maqbul AXCH ko’rinishida beriladi. |
frequency response (chastotali ta’rif yoki chastotali javob) |
Filtr ishini turli chastotalarda baholash mumkin bo’lgan matematik funktsiya. |
neighborhood operation (qo’shni elementlar qiymatlaridan foydalangan holdagi operatsiya) |
Natijasi har bir pikselning qiymati tevarak piksellari qiymatlari asosida hisoblanadigan operatsiya. Panelga tushishrish, morfologik ishlov va mediali filtrlash usullari qo’shni piksellardan foydalangan holdagi operatsiyalar misoli bo’lib xizmat qiladi. |
window method (ishlov berishning lokal usullari) |
Tasvirning lokal xossalari hisobga olinadigan ishlov berish usullari. |
Chiziqli filtrlash
Filtrlash o’zidan tasvirni modifikatsiyalash yoki yaxshilash texnologiyasini ifoda etadi. Masalan, tasvirning ayrim xossalarini kuchaytirish yoki ularni bartaraf etish uchun filtrlarning ko’plab soni mavjud. Gap ayrim alomatlar (misol uchun ranglar) va hokazolar bo’yicha chegaralarni bo’rttirib ko’rsatish, qismlarni ajratish haqida borishi mumkin.
Avval qayd qilinganidek, ishlov berilgan tasvir piksellarining qiymatlari tevarak piksellari qiymatlari asosida hisoblanadigan bir qator usullar mavjud. Ushbu usullar orasidagi farq qo’shni piksellar qiymatlari qanday qilib hisobga olinishidan iborat. Qayd qilamizki, qo’shni piksellar qiymatlari asosida tasvirning lokal tevaraklari xossalari haqida gapirish mumkin.
Chiziqli filtrlash o’zidan ishlov berishning shunday turini ifoda etadiki, unda ishlov berilgan tasvir piksellarining qiymatlari dastlabki tasvir tevarak piksellari qiymatlari ustida bajariladigan chiziqli operatsiyalar natijasida shakllanadi.
Modomiki filtrlashning bu turi tasvirlarga ishlov berishda yetarlicha tez-tez qo’llanilar ekan, chiziqli filtrlashning ba’zi masalalarini batafsilroq ko’rib chiqamiz, xususan
· convolution va correlation dan foydalangan holda filtrlashni.
· imfilter va boshqalardan foydalangan holda filtrlashni bajarilishini.
Tasvirlarni chiziqli filtrlash svertka deb ataluvchi operatsiyasi yordamida amalga oshirilishi mumkin. Ushbu operatsiyani amalga oshiishda natijaviy piksellar qiymatlari dastlabki tasvir piksellarining solishtirma yig’indisi sifatida hisoblanadi. O’lcham (ves) matritsasi sverka yadrosi deb ataladi, u yana filtr sifatida ma’lum.
Misolni ko’rib chiqamiz. Tasvir o’zidan matritsa ko’rinishida ifoda etilgan, qiymatli piksellar to’plamini ifoda etsin.
A = [17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9]
svertka yadrosi esa shunday ifoda etilsin
h = [8 1 6
3 5 7
4 9 2]
Koordinatlari (2,4) bo’lgan natijaviy pikselni hisoblash misolin ko’rib chiqamiz. Buning uchun quyidagi qadamlarni bajarish lozim:
1. Svertka yadrosini markaziy elementga nisbatan 180 gradusga burish.
2. Svertka matritsasidagi salmoqning har bir qiymatini A matritsasidagi pikselning tegishli qiymatiga ko’paytirish.
3. Ko’paytirish natijasini jamlab chiqish.
Natijada (2,4) pikseli qiymati quyidagiga teng bo’ladi.
8.1-rasm. (2,4) natijaviy piksel qiymatini
hisoblash
Korrelyatsiyalash. Korrelyatsiyalash operatsiyasi amalga oshirilishi jihatidan svertka operatsiyasiga juda ham o’xshash. Korrelyatsiyani hisoblashda natijaviy piksel qiymati o’zidan tevarak piksellarning solishtirma yig’indisini ifoda etadi. Farq shundan iboratki, salmoqlar matritsasi hisoblashdan oldin burilmaydi. (2,4) natijaviy piksel qiymatini hisoblashning o’xshash misolini ko’rib chiqamiz. Tasvirning dastlabki matritsasi va korrelyatsiyalao’ yadrosi avvalgi misoldan olingan. Buning uchun quyidagi qadamlarni amalga oshirish zarur:
1. Salmoqning har bir qiymatini va dastlabki tasvirning matritsa elementining tegishli qiymatiga ko’paytirib chiqamiz.
2. 1-bandda olingan barcha ko’paytma natijalarini jamlaymiz.
Natijada (2,4) piksel qiymati quyidagiga teng bo’ladi
8.2-rasm. Natijaviy piksel (2,4) qiymatini hisoblash
imfilter funktsiyasidan foydalangan holda filtrlash
Tasvirlarni filtrlash, shu jumladan korrelyatsiyalash va konvolashtirish imfilter funktsiyasi yordamida amalga oshirilishi mumkin. O’lchamlari 5×5 va bir xildagi salmoq tashkil etuvchisi bo’lgan suriluvchan aperaturali tasvirni filtrlash misolini ko’rib chiqamiz.
I = imread('coins.png');
h = ones(5,5) / 25
h =
0.0400 0.0400 0.0400 0.0400 0.0400
0.0400 0.0400 0.0400 0.0400 0.0400
0.0400 0.0400 0.0400 0.0400 0.0400
0.0400 0.0400 0.0400 0.0400 0.0400
0.0400 0.0400 0.0400 0.0400 0.0400
I2 = imfilter(I,h);
imshow(I); %
figure, imshow(I2); %
8.2-rasm. Dastlabki va natijaviy tasvir
imfilter funktsiyasidagi ma’lumotlar turlari boshqa o’xshash arifmetik fuktsiyalardan foydalangandagi kabi belgilanadi. Natijaviy tasvir dastlabki tasvirdagidek formatda ifoda etiladi. imfilter funktsiyasi surilauvchan vergul bilan arifmetik operatsiyalarni o’tkazgan holda, har bir natijaviy piksel qiymatini ikki karra aniqlik formatida hisoblaydi. Agar natijaviy qiymatlar mazkur ma’lumotlar turi uchun aniqlangan diapazondan oshsa, u holda imfilter funktsiyasi ularni kerakli bo’lgan diapazongacha kesib olishi mumkin. Bu ma’lumotlarni taqdim etish formatiga bog’liq. Agar ma’lumotlar integer formatida ifoda etilgan bo’lsa, unda imfilter funktsiyasi kasr qismini butunlashtiradi.
Shunday qilib, imfilter funktsiyasidan foydalanilganda tasvir ma’lumotlarini ifoda etish formatini inobatga olish lozim. imfilter funktsiyasi qo’llanilishi natijasida manfiy qiymatlar olingan misolni ko’rib chiqamiz. Dastlabki ma’lumotlar double formatida ifoda etilgan edi.
A = magic(5)
A =
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
h = [-1 0 1]
h =
-1 0 1
imfilter(A,h)
ans =
24 -16 -16 14 -8
5 -16 9 9 -14
6 9 14 9 -20
12 9 9 -16 -21
18 14 -16 -16 -2
Natija shuningdek manfiy qiymatlar bilan ifoda etilganligini belgilab qo’yamiz. Agarda A matritsasini double formatida emas, balki uint8 formatida ifoda etilsa, u holda quyidagi natijaga ega bo’lamiz:
A = uint8(magic(5));
imfilter(A,h)
ans =
24 0 0 14 0
5 0 9 9 0
6 9 14 9 0
12 9 9 0 0
18 14 0 0 0
Dastlabki ma’lumotlar uint8 formatida ifoda etilanidan keyin, unda natijaviy ma’lumotlar ham shuningdek uint8 formatida ifoda etiladi, manfiy qiymatlar esa 0 gacha kesib tashlanadi. Shunday qilib, dastlabki ma’lumotlar imfilter funktsiyasi qo’llanilishidan oldin boshqa, misol uchun signed integer, single yoki double formatlarga ham o’zgartirish mumkin.
Korrelyatsiyalash va svertka optsiyalari. imfilter funktsiyasi filtrlashni korrelyatsiyalash yoki svertkadan foydalangan holda bajarishi mumkin. Umolchanie bo’yicha korrelyatsiyalash foydalaniladi, chunki filtrlarni shakllantirish funktsiyalari korrelyatsiyaviy yadrolarni shakllantiradi.
Biroq, agarda svertkadan foydalangan holda filtrlashni bajarish zarur bo’lsa, imfilter funktsiyasidagi majbur bo’lmagan argument sifatida 'conv' optsiyasini ko’rsatish lozim. Misolni ko’rib chiqamiz.
A = magic(5);
h = [-1 0 1]
imfilter(A,h) % korrelyatsiyalash foydalangan holda filtrlash
ans =
24 -16 -16 14 -8
5 -16 9 9 -14
6 9 14 9 -20
12 9 9 -16 -21
18 14 -16 -16 -2
imfilter(A,h,'conv') % svertkadan foydalangan holda filtrlash
ans =
-24 16 16 -14 8
-5 16 -9 -9 14
-6 -9 -14 -9 20
-12 -9 -9 16 21
-18 -14 16 16 2
Tasvir chetini to’ldirish optsiyasi. Tasvir chetidagi natijaviy piksellarni hisoblashda filtr maskasining bir qismi tasvirda namoyish qilinganidek, tasvir chegarasidan tashqariga chiqadi.
8.3-rasm. Filtr maskasi qiymatlarining tasvir chegarasidan tashqariga chiqishi
Odatda, Filtr maskasining tasvir chegarasi tashqarisiga chiqqanida imfilter funktsiyasi yetishmayotgan yacheyka(katak)larni nol qiymatlari bilan to’ldiradi. Bunday to’ldirish misoli quyidagi - rasmda keltirilgan.
8.4-rasm. Yetishmayotgan piksellarni
nol qiymatlari bilan to’ldirilishi
Agarda tasvirni yetishmayotgan piksellar bilan to’ldirgan holda filtrlansa, u holda natijaviy tasvrda tasvir chegarasida to’q chiziq paydo bo’ladi. Bu - rasmda ko’rsatilgan.
I = imread('eight.tif');
h = ones(5,5) / 25;
I2 = imfilter(I,h);
imshow(I), title('Isxodnoe izobrajenie');
figure, imshow(I2), title('Izobrajenie posle filtratsii');
8.5-rasm. Dastlabki va natijaviy tasvir
Yetishmayotgan elementlari nollar bilan to’ldirilganligi bilan kelib chiqqan artefaktlarni bartaraf etish uchun imfilter yetishmayotgan elementlarni to’ldirishning muqobil usullarini qo’llaydi. Ushbu usullardan biri yetishmayotgan piksellar tasvirning chetki piksellari bilan to’ldirilishidan iborat. Bu usul quyidagi tasvirda namoyish qilingan.
8.6-rasm. Maskani tasvirning chetki
piksellari bilan to’ldirish
Yetishmayotgan elementlarni tasvirning chetki elementlari bilan to’ldirishdan foydalangan holdagi filtrlashni amalga oshirishda imfilter funktsiyasida qo’shimcha ravishda 'replicate' optsiyasini ko’rsatish lozim.
I3 = imfilter(I,h,'replicate');
figure, imshow(I3);
8.7-rasm. Etmayotgan elementlarni to`ldiruvchi filtr
imfilter funktsiyasi shuningdek tasvirning chetki elementlariga ishlov berishda yetishmayotgan piksellarni to’ldirishning boshqa usullarini ham tutib turadi. Buning uchun 'circular' va 'symmetric' kabi optsiyalar bor. Batafsilroq ma’lumot olish uchun imfilter funktsiyasi tavsifini o’qing.
Ko’p o’lchamli filtrlash. imfilter funktsiyasi shuningdek ko’p o’lchamli tasvirlarga ishlov berishi mumkin. Ikki o’lchamli va uch o’lchamli tasvirlarni filtrlash orasidagi farq shundan iboratki, uch o’lchamli tasvirlarga ishlov berilayotganda, o’zida ikki o’lchamli tasvirni ifoda etuvchi har bir rang qatlami alohida filtrlanadi va ikki o’lchamli filtr bilan ishlanishi mumkin bo’ladi.
Har bir rang qatlamining filtrlanishi amalga oshirilgan rangli tasvirga ishlov berilganligi misolini ko’rib chiqamiz:
1. Tasvirni o’qish va vizuallashtirish.
2. rgb = imread('peppers.png');
3. imshow(rgb);
8.8-rasm. Dastlabki tasvir
4. Tasvirni filtrlash va natijani vizuallashtirish.
5. h = ones(5,5)/25;
6. rgb2 = imfilter(rgb,h);
7. figure, imshow(rgb2)
8.9-rasm. Natijani vizuallashtirish
Filtrlashning boshqa funktsiyalari bilan o’zaro aloqasi
MATLAB tizimi filtrlashning bir necha ikki o’lchamli va ko’p o’lchamli funktsiyalariga ega. filter2 funktsiyasi ikki o’lchamli chiziqli filtrlashni bajaradi, conv2 ikki o’lchamli signallar svertkasini, convn esa ko’p o’lchamli signallar svertkasini bajaradi. Ushbu funktsiyalar bilan ishlashda, dastlabki ma’lumotlar double formatida ifoda etilishi lozim. Natija ham shuningdek double formatida ifoda etiladi. Ushbu funktsiyalar tasvir chetida ishlashda yetishmayotgan piksellarni nollar bilan to’ldirishdan foydalanadilar va to’ldirishning boshqa usullarini tutib turmaydilar.
Aytilgan funktsiyalardan farqli o’laroq, imfilter dastlabki ma’lumotlarni double formatiga o’zgartirishni talab etmaydi. Shuningdek imfilter funktsiyasi tasvir chetidagi yetishmayotgan elementlarni to’ldirishning bir necha variantlariga ega.
Filtrlarning oldindan belgilangan turlaridan foydalanish
fspecial funktsiyasi maska shaklida aks etuvchi, filtrlarning oldindan belgilangan bir necha turlarini shakllantirish imkoniyatiga egadir. fspecial funktsiyasi yordamida filtr yaratilganidan so’ng uni imfilter funktsiyasi yordamida tasvir ma’lumotlariga ishlov berishda qo’llash mumkin. To’liq rangli tasvirga ishlov berish uchun noravshan maskalash turidagi filtrni amalga oshirish misolini ko’rib chiqamiz. Noravshan maskalash usuli tasvirlar chegaralarini kuchaytirish va batafsillashtirishni oshirishda samarali qo’llaniladi.
I = imread('moon.tif');
h = fspecial('unsharp')
h =
-0.1667 -0.6667 -0.1667
-0.6667 4.3333 -0.6667
-0.1667 -0.6667 -0.1667
I2 = imfilter(I,h);
imshow(I), title('Dastlabkitasvir')
figure, imshow(I2), title('Ishlov berilgan tasvir')
8.10-rasm. Dastlabki va natijaviy tasvir
O’zgartirishlrning chastotali usullari. O’zgartirishlarning chastotali usullaridan yakuniy impul’s tavsifli bir o’lchamli bo’lgani kabi, ikki o’lchamli filtrlar sifatida foydalanadilar. Ushbu usular elementlari chastotali o’zgartirishlarni aniqlaydigan o’zgartirishlar matritsasidan foydalanadi.
ftrans2 ilovasi funktsiyasi tasvirlarga ishlov berishning chastotali usulini amalga oshirishga mo’ljallangan. Bu funktsiya yakuniy impul’sli tavsifli bir o’lchamli filtrni transformatsiyalash uchun chastotalarni o’zgartirish usulidan foydalangan holda chiziqli ikki o’lchamli filtr maskasini shakllantiradi. (Yanada batafsilroq ma’lumot olish uchun 1990, Jae S. Lim, Two-Dimensional Signal and Image Processing ni o’qing.
Qayd qilamizki, o’zgartirishlarning chastotali usullari ishlov berishning juda ham yaxshi natijalarini ta’minlaydi. Misolni ko’rib chiqamiz.
b = remez(10,[0 0.4 0.6 1],[1 1 0 0]);
h = ftrans2(b);
[H,w] = freqz(b,1,64,'whole');
colormap(jet(64))
plot(w/pi-1,fftshift(abs(H)))
figure, freqz2(h,[32 32])
8.11-rasm. Bir o’lchamli chastotali javob (chapda) va unga mos bo’lgan ikki o’lchamli chastotali javob (o’ngda)
Chastotali usul misoli
Chastotali usullarda chiziqli filtr maskasi kutilgan (maqbul) amplituda-chastotali tavsifi asosida shakllanadi.
Ilovada fsamp2 funktsiyasi ikki o’lchamli filtrning chiziqli maskasini ikki o’lchamli filtrning kutilgan (maqbul) amplituda-chastotali tavsifi asosida shakllantiradi. Shakllangan maska ikki o’lchamli chiziqli filtrlashni bajaruvchi tegishli funktsiyalarga (masalan, filter2 yoki conv2 ga) uzatishga mo’ljallangan. Yuqorida aytiganni aniq misolda ko’rib chiqamiz.
Hd = zeros(11,11); Hd(4:8,4:8) = 1;
[f1,f2] = freqspace(11,'meshgrid');
mesh(f1,f2,Hd), axis([-1 1 -1 1 0 1.2]), colormap(jet(64))
h = fsamp2(Hd);
figure, freqz2(h,[32 32]), axis([-1 1 -1 1 0 1.2])
8.12-rasm. Kutilgan ikki o’lchamli chastotali javob (chapda) va aniq ikki o’lchamli chastotali javob (o’ngda)
Lokal (oynalar) usullari. Image Processing Toolbox ilovasida bir o’lchamli va ikki o’lchamli oynadan foydalangan holda, kutilgan (maqbul) amplituda-chastotali tavsifi asosida shakllantiruvchi funktsiyalar mavjud. Kutilgan (maqbul) amplituda-chastotali tavsifi asosida shakllantirishda yanada aniqroq natijani olish uchun freqspace funktsiyasi bilan qaytariladigan chastotalar sanoqlaridan foydalanish tavsiya etiladi.
Buni misolda ko’rib chiqamiz.
Hd = zeros(11,11); Hd(4:8,4:8) = 1;
[f1,f2] = freqspace(11,'meshgrid');
mesh(f1,f2,Hd), axis([-1 1 -1 1 0 1.2]), colormap(jet(64))
h = fwind1(Hd,hamming(11));
figure, freqz2(h,[32 32]), axis([-1 1 -1 1 0 1.2])
8.13-rasm. Kutilgan ikki o’lchamli chastotali javob (chapda) va aniq ikki o’lchamli chastotali javob (o’ngda)
Kutilgan (maqbul) amplituda-chastotali tavsifni yaratish.
Filtrlarni loyihalash fsamp2, fwind2 va fwind2 funktsiyalari filtrlarni kutilgan (maqbul) amplituda-chastotali tavsif qiymatlari matritsasi asosida yaratadilar. Tegishli kutilgan (maqbul) amplituda-chastotali tavsifni freqspace funktsiyasi yordamida yaratish mumkin.
0.5 qirqimli doirasimon past chastotali filtrni yaratish misolini ko’rib chiqamiz. Buning uchun quyidagi koddan foydalanadilar:
[f1,f2] = freqspace(25,'meshgrid');
Hd = zeros(25,25); d = sqrt(f1.^2 + f2.^2) < 0.5;
Hd(d) = 1;
mesh(f1,f2,Hd)
8.14-rasm. Benuqson doirasimon past chastotali javob
Filtrning past chastotali javobini hisoblash.
freqz2 funktsiyasi ikki o’lchamli filtrning chastotali javobini hisoblaydi. Agar yakuniy impul’sli tavsifli filtr uchun
h =[0.1667 0.6667 0.1667
0.6667 -3.3333 0.6667
0.1667 0.6667 0.1667]; ni qabul qilsak,
u holda h chastotali javobning 64×64 nuqtalarining hisoblanishi va vizuallashtirilishini ko’rib chiqamiz.
freqz2(h)
8.15-rasm. Ikki o’lchamli filtrning chastotali javobi
H chastotali javobni va f1 va f2 chastotalar vektorini olish uchun quyidagi koddan foydalanamiz
[H,f1,f2] = freqz2(h);
Misol. Tasvirni yuvilib ketishi misolini ko’rib chiqamiz. Ushbu ish tartibini chastotalarni o’zgartirish usuli bilan bir o’lchamli PCHFdan shakllantirilgan yakuniy impul’sli tavsifli (YAIT) past chastotalarning ikki o’lchamli filtri (PCHF) yordamida amalga oshiramiz.
1. Qirqimi takrorlanishi 0.15 bo’lgan 10-tartibli, bir o’lchamli YAIT PCHFni yaratamiz
b=fir1(10,0.15);
2. Yaratilgan bir o’lchamli filtrning ACHX va FCHXlarini vizuallashtirish.
freqz(b,1,256);
8.16-rasm. H chastotali javob
3. Ikki o’lchamli filtrni shakllantirish va ekranga chiqarish.
4. h=ftrans2(b);
figure, freqz2(h);
8.17-rasm. Natijaviy tasvir
5. Dastlabki tasvirni o’qish va vizuallashtirish.
6. i=imread('leo1.bmp');
7. i=im2double(i);
figure, imshow(i);
8.18-rasm. Dastlabki tasvir
8. Dastlabki tasvirni filtrlash va natijasini chiqarish.
9. i=filter2(h,i);
figure, imshow(i);
8.19-rasm. Natijaviy tasvir
Tasvirlarga ishlov berishda o’zgartirishlarning ayrim turlari. Ko’p hollarda tasvirni matematik ikki fazo o’zgaruvchilarining funktsiyalari ƒ(x,y) ko’rinishida ifoda etadilar. Funktsiyaning (x,y) nuqtasidagi qiymati ushbu nuqtadagi jadallik darajasiga tengdir.
Keyinchalik tasvirlarga ishlov berishda qo’llaniladigan ayrim o’zgartirishlarni ko’rib chiqamiz
1. Fur’e o’zgartirishi.
2. Diskret kosinusli o’zgartirishlar.
3. Radon o’zgartirishlari
4. Proektsiyaviy o’zgartirishlar
Shuningdek turli xil o’zgartirishlarda qo’llaniladigan ba’zi atamalarni ko’rib chiqamiz.
8.3-jadval
Atamalar va tavsiflar
Atama |
Ta’rifi |
Diskret o’zgartirishlar |
Bu dastlabki va natijaviy ma’lumotlar diskret qiymatlar ko’rinishida ifoda etiladigan o’zgartirishlar turidir. MATLAB da, xususan Image Processing Toolbox da amalga oshirilgan diskret o’zgartirishlar Fur’ening diskret o’zgartirishlarini va diskret kosinusli o’zgartirishlarni o’z ichiga oladi. |
Chastotali qism |
Tasvir har xil chastotali davriy signallarning yig’indisi ko’rinishida ifoda etilgan qism. |
Fazo qismi |
Har biriga jadallikning ba’zi qiymati mos keladigan, tasvir fazodagi nuqtalar ko’rinishida ifoda etilgan qism. |
O’zgartirish |
Tasvirlarni muqobil matematik ifoda etilishi. Masalan, Fur’e o’zgartirishlarida tasvir amplituda, chastota va fazaning kompleks eksponentsial o’zgaruvchilarining yig’indisi ko’rinishida ifoda etiladi. O’Zgartirishlarning bu turi tasvirlarni tahlili, yaxshilash va siqishda ko’proq ishlatiladi. |
9- LABoratoriya ishi. Tasvirlar ustida Morfologik operatsiyalarni bajarish (misollar)
Tuzilmaviy elementni yaratish
Tuzilmaviy elementlar
O’stirish va eroziya morfologik operatsiyalarni o’tkazishda dastlabki tasvirga ishlov berish uchun tuzilma elementini tanlash muhim tashkil etuvchi bo’lib xizmat qiladi. Tuzilmaviy element o’zidan nol va birlardan iborat bo’lgan matritsaning muayyan o’lchamini ifoda etadi. 1 qiymatli piksellar tuzilmaviy elementning foni(asosiy rangi)ni belgilaydi.
Ikki o’lchamli yoki yassi tuzilmaviy elementlar odatda ular ishlov beradigan tasvir uchun kattalik bo’yicha anchagina kichik bo’ladi. Tuzilmaviy elementning markaziy pikseli tasvirga ishlab berilayotgan pikseliga mos keladi. Qolgan piksellar tevarak bo’lib, ularga ishlov berilishi kerak.
Uch o’lchamli yoki yassi bo’lmagan tuzilmaviy elementlar ham shuningdek bir va nollardan iborat bo’ladi, biroq, bundan tashqari, uchinchi o’lchamni aniqlaydigan balandlik qiymatiga ega.
Tuzilmaviy element markazi
Morfologik funktsiya quyida keltirilgan koddan ba’zi o’lchamli tuzilmaviy element markazining koordinatlarini olish uchun foydalanadi.
origin = floor((size(nhood)+1)/2)
Ushbu kodda nhood o’zidan ba’zi tuzilmaviy elementning tevaragini ifoda etadi. Tuzilmaviy element o’zidan MATLAB tizimi ob’ektini ifoda etadi, shuning uchun bunday hisoblashlarda STREL ob’ektlaridan foydalanish mumkin emas. Buning uchun avval STREL-ob’ektdan tuzilmaviy elementning tevaragini olish uchun getnhood funktsiyasidan foydalanish lozim. Yanada batafsilroq ma’lumot olish uchun strel funktsiyasi tavsifini o’qing.
Masalan, tasvirda rombsimon tuzilmaviy element namoyish qilingan.
9.1-rasm. rombsimon tuzilmaviy element
O’stirish va eroziya morfologik funktsiyalarini amalga oshirishda tuzilmaviy elementdan foydalaniladi. Har qanday o’lcham va shakldagi tuzilmaviy elementlarni yaratish uchun strel funktsiyasidan foydalaniladi.
Eslatma.
Tuzilmaviy element o’lchami va shaklini tanlanishi muayyan tasvirga ishlov berish o’ziga xos xususiyatlariga bog’liq.
Rombsimon tuzilmaviy elementni yaratish misolini keltiramiz.
se = strel('diamond',3)
se =
Yassi STREL-ob’ekt o’z ichiga 25 ta qo’shni elementlarni oladi.
Tevarak:
0 0 0 1 0 0 0
0 0 1 1 1 0 0
0 1 1 1 1 1 0
1 1 1 1 1 1 1
0 1 1 1 1 1 0
0 0 1 1 1 0 0
0 0 0 1 0 0 0
Tuzilmaviy elementni dekompozitsiyalash
Ishini yaxshilash uchun strel funktsiyasi tuzilmaviy elementni kichikroq qismlar ko’rinishida ifoda etishi mumkin. Bu texnologiya tuzilmaviy elementni dekompozitsiyalash sifatida ma’lum.
Masalan, 11x11 o’lchamli kvadrat ko’rinishidagi tuzilmaviy elementni qo’llagan holdagi o’stirishning morfologik operatsiyasi shunga o’xshash operatsiyani o’tkazish bilan, lekin avval 1x11 o’lchamli tuzilmaviy elementdan foydalanish, so’ngra esa 11x1 o’lchamli tuzilmaviy elementdan foydalanish bilan almashtirilishi mumkin. Bunda ishlov berish tezligi nazariy jihatdan 5,5 martaga oshishi kerak, biroq amalda bu birmuncha pastroq.
Approksimatsiya asosidagi dekompozitsiya 'disk' va 'ball' parametrlari bilan ifoda etilgan shakl ko’rinishida tuzilmaviy elementlar uchun foydalaniladi. Barcha boshqa dekompozitsiyalar aniq bo’ladi. Ta’kidlaymizki, dekompozitsiya hamma tuzilmaviy elementlar uchun ham qo’llanilmasligi mumkin.
Dekompozitsiyalashda foydalaniladigan tuzilmaviy elementlar keta-ketligini ko’rib chiqish uchun getsequence funktsiyasidan foydalaniladi. getsequence funktsiyasi dekompozitsiyalashda foydalaniladigan tuzilmaviy elementlar massivini qaytaradi. Rombsimon tuzilmaviy elementlar dekompozitsiyasi asosida tuzilmaviy elementlarni yaratish misolini ko’rib chiqamiz.
sel = strel('diamond',4)
sel =
Yassi STREL-ob’ekt tevarakning 41 ta elementini o’z ichiga oladi.
Dekompozitsiya: 3 ta STREL-ob’ektlar birgalikda tevarakning 13 ta elementini o’z ichiga oladi
Tevarak:
0 0 0 0 1 0 0 0 0
0 0 0 1 1 1 0 0 0
0 0 1 1 1 1 1 0 0
0 1 1 1 1 1 1 1 0
1 1 1 1 1 1 1 1 1
0 1 1 1 1 1 1 1 0
0 0 1 1 1 1 1 0 0
0 0 0 1 1 1 0 0 0
0 0 0 0 1 0 0 0 0
seq = getsequence(sel)
seq =
3x1 o’lchamli STREL-ob’ektlar massivi
seq(1)
ans =
Tevarakning 5 ta elementini o’z ichiga olgan yassi STREL-ob’ekt.
Tevarak:
0 1 0
1 1 1
0 1 0
eq(2)
ns =
Tevarakning 4 ta elementini o’z ichiga olgan yassi STREL-ob’ekt.
Tevarak:
0 1 0
1 0 1
0 1 0
seq(3)
ans =
Tevarakning 4 ta elementini o’z ichiga olgan yassi STREL-ob’ekt.
Tevarak:
0 0 1 0 0
0 0 0 0 0
1 0 0 0 1
0 0 0 0 0
0 0 1 0 0
Tasvirlarni ochishning morfologik operatsiyasi
Tasvirlarni ochishning morfologik operatsiyasini o’tkazish uchun imdilate funktsiyasidan foydalaniladi. Bu funktsiya ikkita argument kiritilishini talab qiladi:
1.ishlov berilishi lozim bo’lgan dastlabki tasvir (nimrang, binar yoki binarliga joylangan);
2.strel funktsiyasi bilan shakllanadigan tuzilmaviy element yoki tuzilmaviy elementning tevaragini aniqlaydigan binar matritsa.
imdilate funktsiyasi shuningdek majburiy bo’lmagan ikkita: PADOPT va PACKOPT argumentidan foydalanishi mumkin. PADOPT parametri natijaviy tasvir o’lchamlariga taalluqli, PACKOPT parametri esa joylangan dastlabki tasvirni joylangandek identifikatsiyalaydi. (Joylashtirish tasvirlarga ishlov berishni tezlashishiga olib keluvchi binar tasvirlarni siqish usuli bo’lib xizmat qiladi. Yanada batafsilroq ma’lumot olish uchun bwpack funktsiyasi tavsifini o’qing.)
Ushbu misolda to’g’ri to’rtburchak ob’ektlarni o’z ichiga olgan binar tasvirlarni o’stirishning morfologik operatsiyasi ko’rib chiqiladi.
BW = zeros(9,10);
BW(4:6,4:7) = 1
BW =
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 1 1 1 1 0 0 0
0 0 0 1 1 1 1 0 0 0
0 0 0 1 1 1 1 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
Tuzilmaviy elementning hamma tomonlarini kattalashtirish misolini ko’rib chiqamiz. Misol tariqasida 3x3 o’lchamli tuzilmaviy elementni ko’rib chiqamiz.
SE = strel('square',3)
SE =
Tevarak:
1 1 1
1 1 1
1 1 1
Tasvirni kattalashtirishning morfologik operatsiyasini bajarish uchun BW tasvir va SE tuzilmaviy elementdan, shuningdek imdilate funktsiyasidan foydalanamiz. Qayd qilamizki, kattalashtirishning morfologik operatsiyasi ob’ektlar tomonlarining kattalashishiga olib keladi.
BW2 = imdilate(BW,SE)
Tasvirlar eroziyasining morfologik operatsiyasi
Tasvir eroziyasining morfologik operatsiyasini bajarish uchun imerode funktsiyasidan foydalaniladi. imerode funktsiyasi ikkita asosiy argumentlar kiritilishini talab qiladi:
1.ishlov berilishi lozim bo’lgan dastlabki tasvir (nimrang, binar yoki binarliga joylangan);
2.strel funktsiyasi bilan qaytariladigan tuzilmaviy element yoki binar matritsasi ko’rinishida ifoda etilgan tuzilmaviy element.
imerode funktsiyasi shuningdek uchta majburiy bo’lmagan: PADOPT, PACKOPT va M argumentlari bilan ishlaydi.
PADOPT parametri natijaviy tasvir o’lchamlari bilan bog’langan. PADOPT parametri dastlabki tasvirni joylashtrilgandek identifikatsiyalaydi. Agar tasvir joylashtirilgan bo’lsa, u holda M parametri dastlabki tasvirdagi satrlar sonini ko’rsatadi. (Joylashtirish binar tasvirlarni siqish usullaridan biri bo’lib, ularga ishlov berishni tezlashtirilishiga yordam beradi. Yanada batafsilroq ma’lumot olish uchun bwpack funktsiyasi tavsifini o’qing.)
circbw.tif binar tasviri asosida eroziyaning morfologik operatsiyasidan foydalanish misolini ko’rib chiqamiz:
1.Tasvirni MATLAB ishchi muhitiga o’qish.
2. BW1 = imread('circbw.tif');
3.Tuzilmaviy elementni yaratish. Diagonal tuzilmaviy elementni shakllantirilishini ko’rib chiqamiz.
4. SE = strel('arbitrary',eye(5));
5. SE=
6.
7. Tevarak:
8. 1 0 0 0 0
9. 0 1 0 0 0
10. 0 0 1 0 0
11. 0 0 0 1 0
12. 0 0 0 0 1
13. imerode funktsiyasi BW tasvirdan va SE tuzilmaviy elementdan argument sifatida foydalanadi.
14. BW2 = imerode(BW1,SE);
15. Tasvirning o’ng tomonida diagonal polosa(yo’l-yo’l chiziq)larni belgilash lozim. Bu tuzilmaviy element shakli bilan izohlanadi.
16. imshow(BW1)
17. figure, imshow(BW2)
9.2-rasm. Dastlabki va natijaviy tasvir
Kattalashtirish va eroziyaning morfologik operatsiyalari kombinatsiyasi
Kattalashtirish va eroziyaning morfologik operatsiyalaridan ko’pincha tasvirlarga ishlov berishdagi boshqa yondashuvlar bilan foydalaniladi. Masalan, tasvirlarni ochishning morfologik operatsiyasi o’zidan eroziya operatsiyasini keyingi, ikkala operatsiya uchun bitta tuzilmaviy elementdan foydalangan holdagi kattalashtirish operatsiyasini ifoda etadi. Yopishning o’xshash morfologik operatsiyasi esa avvalgisiga nisbatan reversli bo’ladi: u kattalashtirishning morfologik operatsiyasini va keyinchalik bitta tuzilmaviy elementdan foydalangan holdagi eroziyaning morfologik operatsiyasini o’tkazilishidan iborat.
Ochishning morfologik funktsiyasini amalga oshirilishini ko’rsatish uchun imdilate va imerode funktsiyalarining qo’llanilishini ko’rib chiqamiz. Qayd qilamizki, ilova bu kabi ishlov berishni bajaradigan imopen funktsiyasini o’z ichiga oladi. Bu funktsiyadan tashqari, ilova morfologik ishlov berishning bir necha funktsiyalarini o’z ichiga oladi.
Ochishning morfologik operatsiyasi
Ochishning morfologik operatsiyasi tasvirdagi katta bo’lmagan ob’ektlarni yo’q qilish uchun ishlatilishi mumkin. Tasvirning katta ob’ektlariga bu holda ishlov berilmaydi va o’zining shakl va o’lchamini saqlab qoladi. circbw.tif tasvirida chiziqlarni bartaraf qilish misolini ko’rib chiqamiz. Natijaviy tasvirda faqatgina mikrochiplarning to’g’ri to’rtburchak shakllari qolishi kerak.
Tasvirlarni ochishning morfologik operatsiyasini amalga oshirish quyidagi harakatlarni bajaraiz:
1.Tasvirni MATLAB ishchi muhitiga o’qish.
BW1 = imread('circbw.tif');
9.3-rasm. Dastlabki tasvir
2.Tuzilmaviy elementni shakllantirish.
SE = strel('rectangle',[40 30]);
3.Tuzilmaviy elementining o’lchamlari chiziqlarni yo’q qilish va to’g’ri to’rtburchaklarni yo’q qilmaslik uchun yetarli bo’lishi lozim.
4.Tuzilmaviy elementdan foydalangan holda eroziyaning morfologik operatsiyasi.
BW2 = imerode(BW1,SE);
imshow(BW2)
Barcha chiziqlar yo’q qilinishida to’g’ri to’rtburchaklar shakllari kichrayadi.
9.4-rasm. Natijaviy tasvir
5.To’g’ri to’rtburchakning avvalgi o’lchamlarini tiklash uchun SE tuzilmaviy elementdan foydalangan holda kattalashtirish va eroziyaning morfologik operatsiyalaridan foydalaniladi.
BW3 = imdilate(BW2,SE);
imshow(BW3)
Teshiklarni yamashning morfologik operatsiyasi
imfill funktsiyasi binar va nimrang tasvirlarni yamash operatsiyasini bajaradi. Binar tasvirlar uchun imfill funktsiyasi fon va ob’ekt piksellari oralaridagi aloqani o’zgartiradi va chegaralarga yetganda to’xtaydi. Nimrang tasvirlar uchun imfill funktsiyasi och rang qismlar bilan o’ralgan to’q rang qismlar jadalliklari qiymatlarini och rangli qismlar darajasigacha kattalashtiradi. Natijada tasvirlar chegaralari bilan bog’lanmagan lokal minimumlar yo’q qilinadi. Bu operatsiya tasvirdagi noo’rin artefaktlarni yo’q qilishda foydali bo’lishi mumkin.
9.5-rasm. Dastlabki tasvir
Keyinchalik quyidagi masalalarni ko’rib chiqamiz:
1.Teshiklarni to’ldirish operatsiyasi uchun bog’lanishning tavsifi
2.Teshiklarni to’ldirish operatsiyasida binar tasvirning boshlang’ich nuqtasining tavsifi
3.Binar yoki nimrang tasvirlar teshiklarini to’ldirish.
Bog’langanlik tavsifi
Binar va nimrang tasvirlar uchun to’ldirish funktsiyasining chegarasi tavsiflangan bog’liqlik bilan aniqlanadi.
Eslatma.
imfill funktsiyasi boshqa ob’ekt-mo’ljallangan operatsiyalardan shunisi bilan farq qiladiki, u fon piksellariga ishlov beradi. imfill funktsiyasida bog’langanlikni tavsiflashda fikr fonning bog’liqligi haqida, uning ob’ektlari to’g’risida emas.
Bog’langanlik qo’llanilishi natijasini ko’rib chiqamiz.
BW = [ 0 0 0 0 0 0 0 0;
0 1 1 1 1 1 0 0;
0 1 0 0 0 1 0 0;
0 1 0 0 0 1 0 0;
0 1 0 0 0 1 0 0;
0 1 1 1 1 0 0 0;
0 0 0 0 0 0 0 0;
0 0 0 0 0 0 0 0];
Agarda fon 4-bog’liqlik bo’lsa, u holda binar tasvir fon elementlarining ikkita har xil turlarini o’z ichiga oladi (ichki yopiq qism va tashqi). Agar fon 8-bog’langanlik bo’lsa, u holda piksellar diagonal bo’yicha bog’langan va u yerda fonning faqat bitta elementi bor bo’ladi.
Boshlang’ich nuqta tavsifi
Binar tasvirlar uchun boshlang’ich nuqtaning boshini imfill funktsiyasi yordamida to’ldirish operatsiyasini bajarilishida tavsiflash imkoniyati mavjud. Boshlang’ich nuqtani tanlash sichqoncha yordamida bajarilishi mumkin. Yanada batafsilroq ma’lumot olish uchun imfill funktsiyasi tavsifini o’qing.
Misolni ko’rib chiqamiz. imfill funktsiyasini chaqirishda va start sifatida BW(4,3) pikseli ko’rsatilganda faqat ichki muhitlar to’ldiriladi, modomiki fon umolchanie bo’yicha 4-bog’langan bo’ladi.
imfill(BW,[4 3])
ans =
0 0 0 0 0 0 0 0
0 1 1 1 1 1 0 0
0 1 1 1 1 1 0 0
0 1 1 1 1 1 0 0
0 1 1 1 1 1 0 0
0 1 1 1 1 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
Boshlang’ich nuqta va 8-bog’langan fonni tavsiflashda imfill funktsiyasi tasvirni to’liq qoplaydi.
imfill(BW,[4 3],8)
ans =
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
Teshiklarni to’ldirish
Tasvirlardagi teshiklarni to’ldirilishini ko’rib chiqamiz. Misol tariqasida, oldingi planda sfera ko’rinishidagi ob’eklar joylashtirilgan binar yoki nimrang tasvirni ko’rib chiqamiz. Tasvirga muayyan ishlov berilgandan keyin teshiklarni to’ldirish uchun imfill funktsiyasidan foydalanamiz.
imfill funktsiyasi binar bo’lgani kabi, nimrang tasvirlarga ham ishlov berish imkoniyatiga ega. Agar ushbu funktsiya qo’llanilishida har bir nuqtadagi boshlang’ich nuqta ko’rsatilmasa, u holda 'holes' argumentini ko’rsatish zarur.
imfill funktsiyasi ishini namoyish qilish uchun bel umurtqasi pog’onasining nimrang tasvirdagi teshiklarni to’ldirish misolini ko’rib chiqamiz.
[X,map] = imread('spine.tif');
I = ind2gray(X,map);
Ifill = imfill(I,'holes');
imshow(I);figure, imshow(Ifill)
9.5-rasm. Dastlabki va natijaviy tasvir
Cho’qqi va botiqliklarni izlash
Nimrang tasvirlar uch o’lchamli ma’lumotlar ko’rinishida ifoda etilishi mumkin: x va u koordinatlari piksel joylashuvini, z koordinati esa – uning jadalligini ifoda etadi. Ushbu talqingan ko’ra jadallikni topografik xaritadagi muayyan tepalik ko’rinishidek ifoda etish mumkin.
Misol tariqasida maksimal jadalligining nuqtalari ob’ekt cho’qqisini ifoda etadigan muayyan sferik ob’ektning tasvirini ko’rib chiqamiz. Tasvirdagi ob’ektlarni identifikatlash uchun morfologik ishlov berishdan, shuningdek maxima funktsiyasidan foydalanamiz.
Ushbu misolning asosiy qadamlari quyidagilar:
· Atamalar
· Maksimum va minimum funktsiyalarining tahlili
· Yuqori va past jadalliklar qismlarini izlash
· Minimum i maksimumlarni bosilishi
· Minimumlarga ishlov berish
Atamalar
Ayrim atamalarni ko’rib chiqamiz.
9.1-jadval
Atamalar va tavsiflar
Atama |
Ta’rifi |
Global maksimum |
Tasvirdagi eng katta lokal maksimum. Ushbu jadvalda lokal maksimum haqidagi ma’lumotga qarang. |
Global minimum |
Tasvirdagi eng kichik lokal minimum. Ushbu jadvalda lokal minimum haqidagi ma’lumotga qarang. |
Lokal maksimum |
Muayyan tevarakdagi pikselning eng katta qiymati. |
Lokal minimum |
Muayyan tevarakdagi pikselning eng kichik qiymati. |
Maksimum va minimum funktsiyalarining tahlili
Tasvir minimumlar bo’lgani kabi, maksimumlarga ega bo’lgan lokal tevaraklarga ega bo’lishi mumkin. Cho’qqi va botiqliklarni aniqlashni morfologik rekonstruktsiyada foydalaniladigan markerlar tasvirini yaratishda ishlatish mumkin.
Buni bir o’lchamli signal misolida ko’rib chiqamiz.
9.6-rasm.tasvir maksimum va minimumlari
Eng katta va eng kichik jadallilik piksellar qismlarini izlash
Ilova tasvirdagi eng katta va eng kichik jadallilik piksellarining qismlarini izlashda foydalanilishi mumkin bo’lgan ba’zi funktsiyalarga ega:
1.imregionalmax va imregionalmin funktsiyalari barcha lokal minimum va maksimumlarni identifikatlaydi.
2.imextendedmax va imextendedmin funktsiyalari muayyan ostonadan kattaroq yoki kichichroq bo’lgan barcha lokal minimum va maksimumlarni identifikatlaydi.
Ushbu funktsiyalar nimrang tasvirni dastlabki sifatida egallaydilar va binar tasvirni qaytaradilar. Natijaviy binar tasvir maksimum va minimumlar joylashgan nuqtalarda 1 ni belgilaydi; tasvirning qolgan barcha piksellari 0 ga teng.
Tasvir 13 va 18 qiymatli piksellar bloklari ko’rinishidagi ikkita asosiy lokal maksimumlarga va 11 qiymatli piksellar ko’rinishidagi birmuncha kichikroq lokal maksimumlarga ega bo’lgan tasvir misolini ko’rib chiqamiz.
imregionalmax funktsiyasi bilan qaytariladigan binar tasvir barcha lokal maksimumlar joylashuviga ega.
B = imregionalmax(A)
Shuningdek jadallialarning ko’proq o’zgartirishli tasvir qismlarini identifikatlag imkoniyati mavjud. Buning uchun avval piksellar qiymatlari oralaridagi farq hisoblanadi, so’ngra esa muayyan berilgan ostona bilan taqqoslash o’tkaziladi. Masalan, tasvirda tevarak jadalligiga nisbatan, jadalligi bo’yicha kamida ikkita sanoqqa kattaroq bo’lgan lokal maksimumlarni izlash uchun imextendedmax funktsiyasidan foydalaniladi.
B = imextendedmax(A,2)
Minimum va maksimumlarni bosish
Tasvirdagi jadalliklarning unchalik katta bo’lmagan fluktuatsiyalari lokal maksimum yoki minimumlar kabi qabul qilinishi mumkin. Aslida esa ular o’zidan fon teksturasini ifoda etadilar.
Yetarlicha ahamiyatli maksimum va minimumlarni saqlab qolishda kamroq ahamiyatli minimum va maksimumlarni yo’q qilish uchun imhmax yoki imhmin funktsiyasi qo’llaniladi. Ushbu funktsiyalardan foydalana turib, h dan kichik bo’lgan maksimumlar yoki h dan katta bo’lgan maksimumlar bosiladigan kontrast mezoni yoki h ostonasi qiymati ko’rsatilishi lozim.
Eslatma.
imregionalmin, imregionalmax, imextendedmin va imextendedmax funktsiyalari tasvirda lokal minimum va maksimumlar joylashgan yerlari belgilangan binar ko’rinishidagi natijani qaytaradi. imhmax va imhmin funktsiyalari o’zgartirilgan tasvir bilan ishlaydi.
Misolni ko’rib chiqamiz. Ayrim tasvirlar 14 va 18 qiymatli piksellar bloklari, shuningdek 11 qiymatli pikselarning birmuncha kichikroq maksimumlari ko’rinishida ifoda etilgan ikkita asosiy lokal maksimumga ega bo’ladi.
Barcha lokal maksimumlarni, ikkita eng ahamiyatliroqlaridan tashqari bartaraf etish uchun imhmax funktsiyasidan va 2 qiymatli ostonadan foydalanamiz. Qayd qilamizki, imhmax funktsiyasi boshqa piksellar qiymatlaini o’zgartirmagan holda faqat maksimumlarga ishlov beradi. Shunday qilib, tasvirda faqat ikkita lokal maksimum qoladi.
B = imhmax(A,2)
Quyidagi - rasmda tasvirning ikkinchi satri sathidagi imhmax funktsiyasi qo’llanilguncha va qo’llanilganidan keyingi profil’ keltirilgan.
9.7-rasm. Natijaviy tasvir
Minimumlarga ishlov berish
Tasvirda minimum(to’q rangli ob’ekt)larni ajratish uchun imimposemin funktsiyasidan foydalaniladi. imimposemin funktsiyasi tasvirdagi barcha minimumlarni, belgilanganlaridan tashqarisini yo’q qilish uchun morfologik rekonstruktsiyalashdan foydalanadi.
Minimumlarga ishlov berish jarayonini namoyish qilish uchun ikkita asosiy lokal minimum va birmuncha kichikroq lokal minimumlariga ega bo’lgan tasvirni ko’rib chiqamiz.
mask = uint8(10*ones(10,10));
mask(6:8,6:8) = 2;
mask(2:4,2:4) = 7;
mask(3,3) = 5;
mask(2,9) = 9
mask(3,8) = 9
mask(9,2) = 9
mask(8,3) = 9
Markerli tasvirni yaratish
Faqat ikkita asosiy minimum ishtirok etadigan, qolgan barchali yo’q qilinadigan tasvirni olish uchun, bizni qiziqtiruvchi ikkita minimumlar to’g’risidagi ma’lumot aks ettiriladigan markerli tasvirni yaratamiz. Markerli tasvirni yaratishda yashiringan (maskirovka qilingan) tasvirda belgilangan xususiyatlarni olish maqsadida qiymatlarni tavsiflash yoki boshqa morfologik funktsiyalar bilan ishlov berish uchun piksellarni aniq belgilash imkoniyati mavjud.
Ushbu misolda ikkita eng ahamiyatliroq minimumlar joylashuvi ko’rsatilgan binar tasvirni olish uchun imextendedmin funktsiyasidan foydalaniladi.
marker = imextendedmin(mask,1)
Maskani shakllantirish uchun markerli tasvirdan foydalanish
Markerli tasvirda belgilangan nuqtalar asosida, yashiriladigan tasvirda yangi minimum va maksimumlarni shakllantirish uchun imimposemin funktsiyasidan foydalanamiz. Qayd qilamizki, imimposemin funktsiyasi piksellar qiymatlarini markerli tasvirda bo’lgan ma’lumotlar asosida belgilaydi. imimposemin funktsiyasi shuningdek boshqa minimumlarni yo’q qilish uchun tasvirdagi piksellar qiymatlarini o’zgartirishi mumkin.
I = imimposemin(mask,marker)
I =
11 11 11 11 11 11 11 11 11 11
11 8 8 8 11 11 11 11 11 11
11 8 0 8 11 11 11 11 11 11
11 8 8 8 11 11 11 11 11 11
11 11 11 11 11 11 11 11 11 11
11 11 11 11 11 0 0 0 11 11
11 11 11 11 11 0 0 0 11 11
11 11 11 11 11 0 0 0 11 11
11 11 11 11 11 11 11 11 11 11
11 11 11 11 11 11 11 11 11 11
rasmlarda tasvirning ikkinchi satri profili misolida imimposemin funktsiyasi tomonidan qanday o’zgartirishlar kiritilishi ko’rsatilgan.
Minimumlarga ishlov berish
Metka(belgi)lar matritsasini ko’rib chiqish
Bog’langan komponent(tashkil etuvchilar)ni markirovkalash
bwlabel i bwlabeln funktsiyalari bog’langan komponentlarni binar tasvirda ob’ektlarni identifikatlash usulida markirovkalashni bajaradi. bwlabel funktsiyasi faqat ikki o’lchamli dastlabki ma’lumotlarni tutib turadi; bwlabeln funktsiyasi esa istalgan o’lchamdagi dastlabki ma’lumotlarni tutib turadi.
9.10-rasm. Minimumlarga ishlov berish
Mazkur funktsiyalar metkalar matritsasi deb ataluvchi matritsani qaytaradi. Metkalar matritsasi o’lchamlari dastlabkisiga mos keladigan tasvir ko’rinishida ifoda etiladi, ob’ektlarni natijaviy matritsasidagi ifodalanishi esa jadalliklarning turli qiymatlari bilan markirlanadi. Masalan, bwlabel funktsiyasi binar tasvirdagi ob’ektlarni identifikatlashi mumkin.
BW = [0 0 0 0 0 0 0 0;
0 1 1 0 0 1 1 1;
0 1 1 0 0 0 1 1;
0 1 1 0 0 0 0 0;
0 0 0 1 1 0 0 0;
0 0 0 1 1 0 0 0;
0 0 0 1 1 0 0 0;
0 0 0 0 0 0 0 0];
X = bwlabel(BW,4)
X =
0 0 0 0 0 0 0 0
0 1 1 0 0 3 3 3
0 1 1 0 0 0 3 3
0 1 1 0 0 0 0 0
0 0 0 2 2 0 0 0
0 0 0 2 2 0 0 0
0 0 0 2 2 0 0 0
0 0 0 0 0 0 0 0
Natijaviy tasvirda 1 qiymatli piksellar bilan birinchi ob’ekt, 2 qiymatli piksellar bilan ikkinchi, 3 qiymatli piksellar bilan uchinchisi ifodalangan.
Metka(belgi)lar matritsasini ko’rib chiqish
bwlabel yoki bwlabeln funktsiyalari bilan qaytariladigan metkalar matritsasi double formatida ifoda etilgan; u binar tasvir emas. Ko’rib chiqish yo’llaridan biri label2rgb funktsiyasi yordamida soxta rangli indeksli tasvir ko’rinishida vizuallashtirishdan iborat. Soxta rangli tasvirda metkalar matritsasida ob’ektni identifikatlaydigan har bir son tegishli palitrada indeks qiymati sifatida foydalaniladi. Metkalar matritsasini soxta rangli tasvir ko’rinishida vizuallashtirishning afzalligi ob’ektlarni yaxshi farqlanishidan iborat.
Ushbu texnologiyani namoyish qilish uchun X metkalar matritsasini ko’rib chiqish uchun label2rgb funktsiyasidan foydalanish misolini ko’rib chiqamiz.
label2rgb funktsiyasidan foydalanganda bitta MATLAB jet standart palitrasi qo’llaniladi. Uchirnchi 'k' argumenti fon rangini (qora) tavsiflaydi.
X = bwlabel(BW1,4);
RGB = label2rgb(X, @jet, 'k');
imshow(RGB,'notruesize')
9.11-rasm. Natijaviy tasvir
Binar tasvirda ob’ektlarni farqlash uchun rangdan foydalanish
Binar tasvirda ob’ektlarni tanlash
Binar tasvirda ayrim ob’ektlarni tanlash uchun bwselect funktsiyasidan foydalaniladi. Agar dastlabki tasvirda oldindan piksellar belgilansa, u holda bwselect funktsiyasi, dastlabki tasvirning belgilangan piksellarga ega bo’lgan ob’ektlarnigina o’z ichiga olgan binar tasvirni qaytaradi.
Piksellarni ikki usulning biri bilan tavsiflash imkoniyati mavjud – nointeraktiv yoki sichqoncha yordamida. Masalan, tasvirda ob’ektni tanlash uchun quyidagi koddan foydalanish lozim
BW2 = bwselect;
Kursor o’z shaklini tasvir ustida joylashganda krestchaga o’zgartiradi. Keyin chertishlar bilan kerakli ob’ektlarni tanlaydi, bwselect funktsiyasi esa ularni kichkina yulduzchalar bilan belgilaydi. Bundan keyin Return tugmasiga bosish zarur. bwselect funktsiyasi avval belgilangan ob’ektlar (yulduzchalardan tashqari) ishtirok etgan binar tasvirni qaytaradi.
Yanada batafsilroq ma’lumot olish uchun bwselect funktsiyasi tavsifini o’qing.
Binar tasvirda ob’ektlar maydonlarini izlash
bwarea funktsiyasi binar tasvirdagi ayrim qismlar maydonini qaytaradi. Ko’p hollarda gap odingi plandagi ob’ektlar maydonlari haqida boradi. Qo’polroq qilib aytganda maydon mazkur ob’ektlar aks ettirayotgan piksellar soni bilan ifoda etiladi. Lekin bunday hisoblash tahminiy bo’ladi.
Maydon hisoblanganda butun tasvir 2x2 o’lchamli, shakli bo’yicha har xil, bir-birini yopadigan 16 ta oynalarga bo’linadi. Keyin tegishli formula bo’yicha hisoblashlar o’tkaziladi.
Ammo maydonni hisoblashda, misol uchun bitta o’sha, 450 ostida va vertikal (yoki gorizontal) joylashgan to’g’ri to’rtburchakning maydoni (piksellarda) farq qilishini yodda tutish lozim.
BW = imread('circbw.tif');
SE = ones(5);
BW2 = imdilate(BW,SE);
increase = (bwarea(BW2) - bwarea(BW))/bwarea(BW);
increase =
0.3456
Yanada batafsilroq ma’lumot olish uchun bwarea funktsiyasi tavsifini o’qing.
Binar tasvirning Eyler sonini hisoblash
bweuler funktsiyasi binar tasvir uchun Eyler sonini hisoblaydi. Eyler soni tasvirning topologik tavsifi bo’lib xizmat qiladi. U tasvirdagi ob’ektlardan ushbu ob’ektlardagi teshiklar sonining ayirmasiga teng. Ikkinchi argument tevarakning bog’langanlik mezoniga ishora qiladi.
Tasvirdagi Eyler sonini 8-bog’liqlik tevarakdan foydalangan holda hisoblash misolini ko’rib chiqamiz.
BW1 = imread('circbw.tif');
eul = bweuler(BW1,8)
eul = -85
Ushbu misolda Eyler soni manfiy bo’lib chiqdi, modomiki tasvirdagi teshiklar soni ob’ektlar sonidan ko’proq bo’lgan.
Binar tasvirlarga qo’llanilishi mumkin bo’lgan ko’pchilik morfologik operatsiyalar nimrang tasvirlarga ishlov berishga ham tadbiq qilinishi mumkin. Nimrang tasvirlar uchun minimum va maksimum operatsiyalari yordamida amalga oshiriladigan dilatatsiya va eroziyaning morfologik operatsiyalarini ko’rib chiqamiz.
Avval dastlabki tasvirni o’qiymiz va vizuallashtiramiz.
L=imread('concordorthophoto.png');
figure, imshow(L);
title('Dastlabki tasvir');
Dastlabki tasvir
9.11-rasm. Dastlabki tasvir
Mohiyati jihatdan muayyan tevarak bo’yicha lokal maksimumni aniqlash operatsiyasi bo’lgan nimrang dilatatsiyalash operatsiyasini ko’rib chiqamiz. Tevarak tuzilma tashkil etuvchi element yordamida beriladi.
Qayd qilamizki, o’tkazilgan dilatatsiya operatsiyasidan so’ng tasvir bir oz ochroq va andak yuvilgan bo’lib qoldi.
se=strel('square',3);
%Dilatatsiya operatsiyasi
Ldil=imdilate(L,se);
figure, imshow(Ldil);
title('Tasvir dilatatsiyasi');
Tasvir dilatatsiyasi
9.11-rasm. Tasvir dilatatsiyasi
Eroziya operatsiyasini amalga oshirilishida tuzilma tashkil etuvchi elementi qiymati tasvirida tasvir piksellarining tegishli qiymatlaridan ayiriladi va barcha shunday farqlar bo’yicha minimum aniqlanadi.
% Eroziya operatsiyasi
Ler=imerode(L,se);
figure, imshow(Ler);
title('Tasvir eroziyasi');
Tasvir eroziyasi
9.11-rasm. Tasvir eroziyasi
Uzilish va tutashishdan foydalangan holda morfologik tekislash operatsiyasini ko’rib chiqamiz.
% Morfologik tekislash
se=strel('square',3);
Lopen=imopen(L,se);
figure, imshow(Lopen);
title('Tasvirni morfologik ochish');
Tasvirni morfologik ochish
9.12-rasm. Tasvirni morfologik ochish
Lopcl=imclose(Lopen,se);
figure, imshow(Lopcl);
title('Tasvirni morfologik tekislash');
Tasvirni morfologik tekislash
9.13-rasm. Tasvirni morfologik tekislash
Qayd qilamizki, uzilish va tutashishning morfologik operatsiyalari tasvirdagi mos ravishda yorqin va to’q rangli detallarni yo’q qiladi, shuning uchun ulardan shovqinlarni tekislash va yo’q qilishda keng foydalaniladi.
Uzilish va tutashish kombinatsiyasini amalga oshirilishining yana bir misolini keltiramiz. Uning mohiyati tuzilma tashkil etuvchi element o’lchamini o’zgartirgan holda filtrlash operatsiyalarini izchil amalga oshirilishidan iborat.
Ltemp=L;
for k=2:5;
se=strel('square',k);
Ltemp=imclose(imopen(Ltemp,se),se);
end;
figure, imshow(Ltemp);
title('Tuzilma tashkil etuvchi element o’lchamini o’zgartirgan holda tasvirni morfologik tekislash');
Tuzilma tashkil etuvchi element o’lchamini o’zgartirgan holda tasvirni morfologik tekislash
O’zgartrishlarning yana ayrim misollarini ko’rib chiqamiz.
Uzilish operatsiyasidan tavirning notekis yoritilgan fonini teksilash uchun foydalanish mumkin.
Muayyan dastlabki tasvirni o’qiymiz va vizuallashtiramiz.
L=imread('rice.png');
figure, imshow(L);
title(‘Dastlabki tasvir’);
Dastlabki tasvir
9.14-rasm. Dastlabki tasvir
Tasvirni uzish operatsiyasi va uni dastlabki tasvirdan ayirish misolini keltiramiz. Natijada yetarlicha bir xil fonda mayda donachalar tasviri hosil bo’ladi.
Lopen=imopen(L,se);
L2=imsubtract(L,Lopen);
figure, imshow(L2);
title('Tasvirni uzish va uni dastlabki tasvirdan ayirish ');
Tasvirni uzish
9.15-rasm. Tasvirni uzish va uni dastlabki tasvirdan ayirish
Yuqorida keltirilgan dastlabki tasvirdan uzilganini ayirish operatsiyasi “shlyapa yuqorisi” turidagi o’zgartirish deb ataladi. Ushbu o’zgartirishni imtophat funktsiyasi yordamida amalga oshirish mumkin.
L2=imtophat(L,se);
figure, imshow(L2);
title('“Shlyapa yuqorisi” o’zgartirishi');
“Shlyapa yuqorisi” o’zgartirishi
9.16-rasm. Shlyapa yuqorisi
Tasvirni tutashish operatsiyasi minus tasvirni o’zi “shlyapa tubi” turidagi o’zgartirish deb ataladi.
se=strel('disk',3);
Lg=imsubtract(imadd(L,imtophat(L,se)),imbothat(L,se));
figure, imshow(Lg);
title('“Shlyapa tubi” o’zgartirishidan foydalanish');
“Shlyapa tubi” o’zgartirishidan foydalanish
9.17-rasm. Shlyapa tubi
Yuqorida keltirilgan – “shlyapa yuqorisi” va “shlyapa tubi” o’zgartirishlari uyg’unlashtirishda, misol uchun kontratlikni kuchaytrishda juda tez-tez ishlatiladi.
Keltirilgan misollardan ko’rinib turibdiki, nimrang tasvirlarga morfologik ishlov berish yetarlicha keng funktsional imkoniyatlarga ega. Xususan, uni tasvirlarni rekonstruktsiyalashda, murakkab fonni yo’q qilish va hokazoda qo’llash mumkin.
Chegaralarni tavsiflashga turli yondashishlar mavjud. Chegaralarning o’zlari ham shuningdek turli parametrlar bilan tavsiflanishlari mumkin, ularni yana deskriptorlar deb ataydilar. Eng oddiy va ma’lum deskriptorlar orasida – chegara uzunligini ajratib ko’rsatish mumkin, chegarani Frimanning to’rt yo’nalishli zanjirli kodi yordamida tavsiflash, Fur’e-deskriptorlar va hokazo.
Mazkur materialda biz tomondan Fur’e o’zgartirishi asosida muayyan ob’ekt chegaralarini tavsiflanishi ko’rib chiqiladi. Buni batafsilroq ko’rib chiqamiz.
Ob’ekt chegarasini koordinatlar juftligi izchilligi ko’rinishida ifoda etish mumkin.
, (1)
bunda – chegaraning muayyan nuqtasining koordinatlari;
Koordinatlarning har bir juftligini kompleks son ko’rinishida ifoda etish mumkin
. (2)
Fur’e o’zgartirishining yakuniy ketma-ketligi uchun tenglama bilan beriladi.
, (3)
u=0,1,2,...,K-1 bo’lganda.
a(u) koeffitsientlari chegarani tavsiflaydi, va ularni chegaralarni deskriptorlari deb ataydilar. Ushbu koeffitsientlarga qo’llanilgan Fur’ening teskari o’zgartirishi chegarasini tiklash imkonini beradi:
(4)
Agarda Fur’ening teskari o’zgartirishida Fur’e qatorining barcha K-1 koeffitsientlaridan foydalanilmasdan, faqatgina ularning R-1 qismidan foydalanilsa, u holda tiklanish natijasi ketma-ketlikning quyidagi yaqinlashuvi bo’ladi :
(5)
Shunday qilib, natijasi dastlabki kemta-ketlikni faqat taxminan tavsiflaydi. Ushbu yaqinlashishning aniqligi foydalanilgan Fur’e koeffitsientlari soniga bog’liq bo’ladi.
Yuqorida aytilganlarni aniq misolda namoyish qilamiz.
Misol.
1. Dastlabki tasvirni o’qiymiz va vizuallashtiramiz.
2. %Dastlabki tasvirni o’qish va vizuallashtirish
3. L=imread('im.bmp');
4. %Bitta rang tashkil qiluvchisini ajratamiz
5. L=L(:,:,1);
6. L=double(L)./255;
7. [N M]=size(L);
8. figure, imshow(L);
9. title ('Dastlabki tasvir');
Dastlabki tasvir
9.18-rasm. Dastlabki tasvir
Koordinatlar juftligi ketma-ketligini shakllantirishga kirishishdan oldin, skanirlashning boshlang’ich nuqtasini aniqlash lozim.
Boshlang’ich nuqta tasvirni piksellab skanirlash yo’li bilan aniqlanadi. Skanirlashning joriy nuqtasi (i,j) chegara nuqtasiga mos tushsa, uning koordinatlari xotiralanadi va boshlang’ich nuqta aniqlangan deb hisoblanadi.
%Ishlov berishning boshlang’ich nuqtasini aniqlash
for i1=1:N;
for j1=1:M;
if L(i1,j1)==1;
p_i=i1;p_j=j1;
break
end;
end;
if L(i1,j1)==1;
break
end;
end;
% Boshlang’ich nuqta koordinatlari
x(1)=p_i;y(1)=p_j;
Endi ma’lumotlar ketma-ketligini shakllantirishga kirishish mumkin. Soddalashtirish uchun aytaylik, bizda to’rt bog’lamli kontur bo’lsin.
%Kontur piksellari sonini hisoblash
B=length(find(L==1));
%Kontur nuqtalaridan ma’lumotlar ketma-ketligini yaratish
for lich=2:B;
disp(lich);
if L(p_i-1,p_j)==1; %1-yo’nalish
x(lich)=p_i-1; y(lich)=p_j;
L(p_i,p_j)=0;
p_i=p_i-1;p_j=p_j;
elseif L(p_i-1,p_j+1)==1; %2-yo’nalish
x(lich)=p_i-1; y(lich)=p_j+1;
L(p_i,p_j)=0;
p_i=p_i-1;p_j=p_j+1;
elseif L(p_i,p_j+1)==1; %3-yo’nalish
x(lich)=p_i; y(lich)=p_j+1;
L(p_i,p_j)=0;
p_i=p_i;p_j=p_j+1;
elseif L(p_i+1,p_j+1)==1; %4-yo’nalish
x(lich)=p_i+1; y(lich)=p_j+1;
L(p_i,p_j)=0;
p_i=p_i+1;p_j=p_j+1;
elseif L(p_i+1,p_j)==1; %5-yo’nalish
x(lich)=p_i+1; y(lich)=p_j;
L(p_i,p_j)=0;
p_i=p_i+1;p_j=p_j;
elseif L(p_i+1,p_j-1)==1; %6-yo’nalish
x(lich)=p_i+1; y(lich)=p_j-1;
L(p_i,p_j)=0;
p_i=p_i+1;p_j=p_j-1;
elseif L(p_i,p_j-1)==1; %7-yo’nalish
x(lich)=p_i; y(lich)=p_j-1;
L(p_i,p_j)=0;
p_i=p_i;p_j=p_j-1;
elseif L(p_i-1,p_j-1)==1; %8-yo’nalish
x(lich)=p_i-1; y(lich)=p_j-1;
L(p_i,p_j)=0;
p_i=p_i-1;p_j=p_j-1;
end;
end;
Albatta, kontur nuqtalari qanchalar to’g’ri aniqlanganligini tekshirish mumkin. Buning uchun ularni kul rang bilan bo’yaymiz.
%Ma’lumotlar ketma-ketligini uning shakllanishi to’g’riligini tekshirish maqsadida aks ettirish.
for lich=1:B;
L(x(lich),y(lich))=.5;
end;
figure, imshow(L);
title('Ma’lumotlar ketma-ketligini vizuallashtirish')
Ma’lumotlar ketma-ketligini vizuallashtirish
Chegaraning barcha nuqtalari kul
rang bilan bo’yalgan, ya’ni ular to’g’ri aniqlangan.
So’ngra, (1)–(3) ifodalariga muvofiq dastlabki ma’lumotlarning ikki o’lchamli massivi shakllanadi va Fur’ening to’g’ridan-to’g’ri o’zgartirish operatsiyasi amalga oshiriladi.
%Ma’lumotlarning ikki o’lchamli massivini shakllantirish
s=[x',y'];
[np,nc]=size(s);
if nc~=2
error('!!!!!!!!!')
end
if np/2~=round(np/2);
s(end+1,:)=s(end,:);
np=np+1;
end
x=0:(np-1);
m=((-1).^x)';
s(:,1)=m.*s(:,1);
s(:,2)=m.*s(:,2);
s=s(:,1)+i*s(:,2);
% Fur’ening to’g’ridan-to’g’ri o’zgartirishi
z=fft(s);
So’ngra Fur’ening teskari o’zgartirishini bajaramiz. Biroq Fur’ening barcha koeffitsientlari o’rniga, ularning faqat Q parametri bilan beriladigan qismidan foydalanamiz.
Q=0.75;
%Fur’ening hisobga olingan koeffitsientlari soni
nd=Q*np;
np=length(z);
if nargin==1|nd>np
nd=np;
end
x=0:(np-1);
m=((-1).^x)';
d=round((np-nd)/2);
z(1:d)=0;
z(np-d+1:np)=0;
zz=ifft(z);
s(:,1)=real(zz);
s(:,2)=imag(zz);
s(:,1)=m.*s(:,1);
s(:,2)=m.*s(:,2);
Ketma-ketlikning yaqinlashishi natijasi qizil rang bilan aks ettiriladi.
hold on;
plot(s(2:end-1,2),s(2:end-1,1),'r');
hold off;
Fur’ening hisobga olingan koeffitsientlarining Q turli miqdorlaridagi natijalarini keltiramiz.
Q=0,75 Q=0,1 Q=0,05 Q=0,01 Q=0,005
9.19-rasm. Ma’lumotlar ketma-ketligini
vizuallashtirish
Shunday qilib, yuqorida keltirilgan tasvirlarda deskriptorlar sonining chegara shakliga qanday ta’sir ko’rsatishi namoyish qilingan (tiklangan chegara shakli qizil rang bilan aks ettirilgan). Teskari o’zgartirishda foydalaniladigan Fur’e koeffitsientlari sonining kamayishi chegaralarni tiklash aniqligining kamayishiga olib keladi. Biroq ta’kidlash joizki, xattoki Q=0,005 bo’lganda, ya’ni hamma deskriptorlarning atigi 5% dan foydalanganda, tiklangan chegarada faqatgina detallar yo’qoladi, ob’ektning umumiy shakli esa taniladigan darajada qoladi. Bu xususiyat ob’ektlar chegaralarini ixcham tavsiflashda juda muhimdir.
L=imread('concordorthophoto.png');
figure, imshow(L);title('Dastlabki tasvir');
se=strel('square',3);
%Tasvirni dilatatsiyalash
Ldil=imdilate(L,se);
figure, imshow(Ldil);title(' Tasvirni dilatatsiyalash');
%Tasvir eroziyasi
Ler=imerode(L,se);
figure, imshow(Ler);title('Eroziya izobrajeniya');
%Morfologik tekislash
se=strel('square',3);
Lopen=imopen(L,se);
figure, imshow(Lopen);title('Tasvirni morfologik ochish');
Lopcl=imclose(Lopen,se);
figure, imshow(Lopcl);title('Tasvirni morfologik tekislash');
Ltemp=L;
for k=2:5;
se=strel('square',k);
Ltemp=imclose(imopen(Ltemp,se),se);
end;
figure, imshow(Ltemp);title('Tuzilma tashkil etuvchi elementni o’zgartirgan holda tasvirni morfologik tekislash');
%”Shlyapa yuqorisi” turidagi o’zgartirishlar
L=imread('rice.png');
se=strel('disk',10);
Lopen=imopen(L,se);
L2=imsubtract(L,Lopen);
figure, imshow(L2);title('Tasvini uzilishi');
L2=imtophat(L,se);
figure, imshow(L2);title('“Shlyapa yuqorisi” o’zgartirishi');
se=strel('disk',3);
Lg=imsubtract(imadd(L,imtophat(L,se)),imbothat(L,se));
figure, imshow(Lg);title(' “Shlyapa tubi” o’zgartirishidan foydalanish');
%Dastlabki tasvirni o’qish va vizuallashtirish
L=imread('im.bmp');
L=L(:,:,1);
L=double(L)./255;
[N M]=size(L);
figure, imshow(L);
title ('Dastlabki tasvir');
%Kontur piksellari miqdorini hisoblash
B=length(find(L==1));
%Ishlov berishning boshlang’ich nuqtasini aniqlash
for i1=1:N;
for j1=1:M;
if L(i1,j1)==1;
p_i=i1;p_j=j1;
break
end;
end;
if L(i1,j1)==1;
break
end;
end;
x(1)=p_i;y(1)=p_j;
%Kontur nuqtalaridan ma’lumotlar ketma-ketligini yaratish
for lich=2:B;
disp(lich);
if L(p_i-1,p_j)==1; %1-yo’nalish
x(lich)=p_i-1; y(lich)=p_j;
L(p_i,p_j)=0;
p_i=p_i-1;p_j=p_j;
elseif L(p_i-1,p_j+1)==1; %2-yo’nalish
x(lich)=p_i-1; y(lich)=p_j+1;
L(p_i,p_j)=0;
p_i=p_i-1;p_j=p_j+1;
elseif L(p_i,p_j+1)==1; %3-yo’nalish
x(lich)=p_i; y(lich)=p_j+1;
L(p_i,p_j)=0;
p_i=p_i;p_j=p_j+1;
elseif L(p_i+1,p_j+1)==1; %4-yo’nalish
x(lich)=p_i+1; y(lich)=p_j+1;
L(p_i,p_j)=0;
p_i=p_i+1;p_j=p_j+1;
elseif L(p_i+1,p_j)==1; %5-yo’nalish
x(lich)=p_i+1; y(lich)=p_j;
L(p_i,p_j)=0;
p_i=p_i+1;p_j=p_j;
elseif L(p_i+1,p_j-1)==1; %6-yo’nalish
x(lich)=p_i+1; y(lich)=p_j-1;
L(p_i,p_j)=0;
p_i=p_i+1;p_j=p_j-1;
elseif L(p_i,p_j-1)==1; %7-yo’nalish
x(lich)=p_i; y(lich)=p_j-1;
L(p_i,p_j)=0;
p_i=p_i;p_j=p_j-1;
elseif L(p_i-1,p_j-1)==1; %8-yo’nalish
x(lich)=p_i-1; y(lich)=p_j-1;
L(p_i,p_j)=0;
p_i=p_i-1;p_j=p_j-1;
end;
end;
%Ma’lumotlar ketma-ketligini uning to’g’ri shakllantirilganligini tekshirish maqsadida aks ettirish
for lich=1:B;
L(x(lich),y(lich))=.5;
end;
figure, imshow(L);
title('Ma’lumotlar ketma-ketligini vizuallashtirish')
%ma’lumotlarning ikki o’lchamli massivini shakllantirish
s=[x',y'];
[np,nc]=size(s);
if nc~=2
error('!!!!!!!!!')
end
if np/2~=round(np/2);
s(end+1,:)=s(end,:);
np=np+1;
end
x=0:(np-1);
m=((-1).^x)';
s(:,1)=m.*s(:,1);
s(:,2)=m.*s(:,2);
s=s(:,1)+i*s(:,2);
z=fft(s);
%================================================
Q=0.75;
nd=Q*np; %Foydalanilgan koeffitsientlar foizi
np=length(z);
if nargin==1|nd>np
nd=np;
end
x=0:(np-1);
m=((-1).^x)';
d=round((np-nd)/2);
z(1:d)=0;
z(np-d+1:np)=0;
zz=ifft(z);
s(:,1)=real(zz);
s(:,2)=imag(zz);
s(:,1)=m.*s(:,1);
s(:,2)=m.*s(:,2);
hold on;
plot(s(2:end-1,2),s(2:end-1,1),'r');
hold off;
Adabiyotlar
1. Ãîíçàëåñ Ð., Âóäå Ð. Öèôðîâàÿ îáðàáîòêà èçîáðàæåíèé. Èçäàíèå 3-å, èñïð. è äîï. – Ì.: Òåõíîñôåðà, 2012.
2. Ãàøíèêîâ Ì. Â., Ãëóìîâ Í. È., Èëüÿñîâà Í. Þ. è äð. Ìåòîäû êîìïüþòåðíîé îáðàáîòêè èçîáðàæåíèé. Èçä. 2. Ïîä ðåä. Â.À. Ñîéôåðà. - Ì.: Ôèçìàòëèò, 2003.
3. Burger W., Burge M. J. Digital Image Processing: An Algorithmic Introduction using Java. –New York: Springer, 2008. -P.27-36.
Ilova
IMAGE PROCESSING TOOLBOX PAKÅTINING ASOSIY BUYRUQLARI
Misol: im = imread(‘h:\labor\image\006\FRM001.bmp')
Misol: info = imfinfo('my_image.bmp')
Soha nomi |
Tur |
Tavsifi |
FileName |
Satr |
Fayl nomi, agarda fayl joriy direktoriyda joylashgan bo’lsa, yoki faylga to’liq yo’l |
FileModeDate |
Satr |
Faylni so’nggi modifikatsiyalash sanasi va vaqti |
FileSize |
Son |
Faylning baytlardagi o’lchami (kattaligi) |
Format |
Satr |
Faylning fmt parametri(o’lchami)ga mos keladigan formati |
FormatVersion |
Satr yoki son |
Format naqli (versiyasi) |
Width |
Son |
Tasvirning piksellardagi kengligi |
Height |
Son |
Tasvirning piksellardagi balandligi |
BitDepth |
Son |
Tasvirning bitlardagi pikselga nisbatan chuqurligi |
ColorType |
Satr |
Tasvir turi: - ‘truecolor’ yoki ‘RGB’ to’liq rangli tasvirlar uchun; - ‘grayscale’ nimranglar uchun; - ‘indexed’ palitraliklar uchun |
Miol: imwrite(im,'my_image.bmp')
Misol: im = imread('my_image.bmp'); imshow(im);
iptsetpref yordamida o’rnatiladigan global o’zgaruvchilar
prefname parametri |
value qiymati |
Tavsifi |
Imshowborder |
‘loose’ |
imshow tasvirini figure oynasi chetidan chekinish bilan shunday qilib chiqarishki, bunda qo’shimcha yozuvlar uchun joy qoladi. |
‘tight’ |
Tasvir butun figure oynasini egallaydi |
|
Imshowaxesvisible |
‘on’ |
Koordinatlar o’qlari chiqariladi |
‘off’ |
Koordinatlar o’qlari chiqarilmaydi |
Misol:
iptsetpref('ImshowBorder', 'tight');
%o’qilgan tasvirni ekranda aks ettiramiz
imshow(im);
figure – yangi grafik oynani yaratadi;
figure(h) – h tartib raqamli oynani chiqarish uchun tanlaydi;
figure('PropertyName',PropertyValue,...).
truesize(fig, [mrows mcols]) – fig tartib raqamli oyna uchun vertikal bo’ylab mrows piksellarida va mcols piksellarida gorizontal bo’ylab o’lchamni belgilaydi;
truesize(fig) – fig oynasi o’lchamini dastlabki tasvir o’lchamiga teng ravishda belgilaydi, ya’ni masshtablashni taqiqlaydi.
Misol:
im = imread('my_image.bmp');
%grafik oynani yaratamiz va uning tartib raqamini olamiz
h = figure;
%o’qilgan tasvirni yangi oynada aks ettiramiz
imshow(im);
%oyna o’lchamini o’zgartiramiz:
% balandligi - 256 piksel,
% eni - 384 piksel
truesize(h, [256 384]);
clear, close all, imtool close all
a_1 = imread('d:\a_ashurov\Temp_Matlab\imdemos\pout.tif');
h = figure;
imshow(a_1);
truesize(h,[1024 1024]);
Misol
%tasvirlarni o’qish
image1 = imread('my_image1.bmp');
image2 = imread('my_image2.bmp ');
%o’qilgan tasvirlarni bitta oyna bilan birgalikda, ularni gorizontal joylashtirgan holda aks ettiramiz
subplot(1,2,1), imshow(image1);
subplot(1,2,2), imshow(image2);
clear, close all, imtool close all
a_1 = imread('d:\Temp_Matlab\imdemos\pout.tif');
a_2 = imread('d:\Temp_Matlab\imdemos\blobs.png');
subplot(1,2,1), imshow(a_1);
subplot(1,2,2), imshow(a_2);
B = imresize(A, m, method) – o’lchamlari A – dastlabki tasvir o’lchamlaridan m martaga farq qiladigan B tasvirini yaratadi. Agarda m 0.0 ddan 1.0 gacha bo’lgan oraliqqa tegishli bo’lsa, u holda B A dan kichik. Agarda m 1 dan katta bo’lsa, u holda B A dan katta;
B = imresize(A, [mrows ncols], method) – mrows ncols o’lchamli B tasvirini yaratadi.
O’lchamni o’zgartirish uchun method kirish parametrida quyidagi satrlardan biri ko’rinishida beriladigan, interpolyatsiyaning quyidagi usullari foydalaniladi:
nearest – eng yaqin piksel qmymatidan foydalanish;
bilinear – bichiziqli yuza bo’yicha interpolyatsiyadan foydalanish;
bicubic – bikubik yuza bo’yicha interpolyatsiyadan foydalanish.
Yakunlovchi tasvir ma’lumotlarini taqdim etish turi va formati dastlabkisining turi va formatiga mos tushadi.
Misol
%dastlabki tasvirni o’qiymiz
I = imread('ic.tif');
%tasvirning chiziqli o’lchamlarini 2 martaga kattalashtiramiz
J = imresize (I, 2,'bilinear');
%dastlabkisini aks ettiramiz
imshow(I);
%masshtablashtirilganni yangi oynada aks ettiramiz
figure; imshow(J);
D=imcrop(S) i Xd=imcrop(Xs, map) ekranga S binar, nimrang, to’liq rangli tasvirni va Xs palitrali tasvirni chiqaradilar hamda kesiladigan fragmentni cheklaydigan to’g’ri to’rtburchakning sichqonchasi yordamida topshiriqni kutadilar. Cheklaydigan to’g’ri to’rtburchak burchaklaridan birining holatini ko’rsatish uchun sichqonchaning chap tugmasiga bosish kerak. Cheklaydigan to’g’ri to’rtburchakning qarshi burchagining holati, agarda sichqoncha tugmasini quyib yubormay turib, kursorni ko’chirsa, so’ngra tugmani qo’yib yuborilsa berilgan bo’ladi. Kvadratli fragmentni berish talab etilganda, sichqoncha kursori surilayotganda Shift tugmasini bosilgan holda ushlab turish lozim. imcrop funktsiyasi to’g’ri to’rtburchak tomonidan berilgan, cheklangan tasvirni qaytaradi. Arada chiqish parametrlari berilmagan bo’lsa, masalan imcrop(I), u holda natija yangi grafik oynasida aks ettiriladi. Agarda kirish parametrlari aniqlangan bo’lmasa, masalan D=imcrop, u hoda imcrop funktsiyasi joriy grafik oynasidagi tasvir bilan ishlaydi;
D=imcrop(S, rect) i Xd=imcrop(Xs, map, rect) cheklaydigan to’g’ri to’rtburchakni, uning fazoviy koordinatlaridagi chap yuqori burchagini (xmin, ymin), shuningdek uni kengligi w va balandligi h ni beradigan to’rt elementdan iborat vektor – rect ni: [xmin ymin w h] aniq aniqlash imkonini beradi.
Ma’lumotlarni ko’rsatish formati va natijaviy tasvir turi dastlabki tasvirning formati va turiga mos tushadi.
Misol
%tasvirni o’qiymiz
I1 = imread('ic.tif');
%berilgan tasvir qismini kesib olamiz
I2 = imcrop(I1, [60 40 100 90]);
%dastlabki tasvirni aks ettiramiz
imshow(I1);
%o’zgartirilgan tasvirni aks ettiramiz
%yangi oynada
figure; imshow(I2);
11. IMROTATE buyrug’i – Tasvirni aylantirish uchun quyidagi sintaksisga ega bo’lgan imrotate funktsiyasidan foydalanish mumkin:
B = imrotate(A, angle, method) – graduslarda berilgan, angle burchagiga burilgan, dastlabki A tasviriga mos bo’lgan B tasvirini yaratadi. Olinadigan burilgan tasvirning piksellari soni dastlabkisining piksellari sonidan ko’proq yoki unga teng bo’ladi. Ularga A tasviriga mos piksellar yo’q bo’lgan B tasviri piksellarining qiymati 0 ga belgilanadi, buesa misol uchun, nimrang tasvirlar uchun qora rangga to’g’ri keladi;
B = imrotate(A, angle, method, 'crop') – o’lchamlari dastlabkisining o’lchamlariga to’g’ri keladigan B tasvirini qaytaradi. Buning uchun aylantirilgan tasvirning markaziy qismi olinadi.
O’zgartirishda xuddi imresize funktsiyasidagidek, method parametrida beriladigan, interpolyatsiyaning oldindan belgilangan usullaridan biri foydalaniladi.
Misol
% dastlabki tasvirni o’qiymiz
I = imread('ic.tif');
%soat strelkasi bo’ylab 4 gradusga aylantiramiz,
%olinadigan tasvirning chiziqli o’lchamlari
%dastlabkisining chiziqli o’lchamlariga to’g’ri keladi
J = imrotate(I,-4,'bilinear','crop');
%dastlabkisini aks ettiramiz
imshow(I);
%yangi oynada burilganini aks ettiramiz
figure; imshow(J);
12. PLOT buyrug’i – Ikki o’lchamli grafik qurish imkonini beradi. Buyruq quyidagi sintaksisga ega:
¨plot(X, Z),
bunda X – o’q bo’ylab koordinatlarning vektor qiymati, X, Z – esa Z=f(X) funktsiyasining matritsa qiymati.
13. HOLD buyrug’i – Joriy grafikli oynagayangi grafiklarni qo’shish uchun hold buyrug’idan foydalaniladi. hold on buyrug’i grafikni saqlab qolish rejimini yoqadi, hold off buyrug’i esa uni o’chiradi. hold buyrug’i bir rejimdan boshqasiga o’tkazishni amalga oshiradi.
Misol
%koordinatlar vektorini shakllantiramiz
i=0:0.001:4*pi
%bitta grafikda funutsiyalar qiymatlarini aks ettiramiz
%ushbu vektor uchun sin va cos
plot(sin(i), 'g'); hold; plot(cos(i), 'r');
14. MESH buyrug’i - mesh funktsiyasi grafik yuasidagi barcha qo’shni nuqtalarni bir-birlari bilan to’g’ri chiziqlar bo’laklari bilan birlashtirish imkonini beradi va sinch-qirrali hajmli jismning tekis proektsiyasini ko’rsatadi.
Misol
%tasvirni o’qiymiz
I = imread('cameraman.tif');
%yuzani aks ettiramiz
mesh(double(I));
15. SURF buyrug’i - mesh funktsiyasidan farqli o’laroq, surf funktsiyasi qirralarni emas, balki sinch-qirrali jismning qirralarini bo’yash imkonini beradi.
Misol
% tasvirni o’qiymiz
I = imread('cameraman.tif');
% yuzani aks ettiramiz
surf(double(I));
16. IMHIST buyrug’i – Tasvir yorug’ligi taqsimlanishi gistogrammasini quradi. Buyruq quyidagi sintaksisga ega:
imhist(I);
imhist(I,n),
bunda n – gistogramma qurilganda I tasviri yorug’ligining butun chegarasi bo’linadigan intervallar soni.
Misol
% tasvirni o’qiymiz
I = imread('cameraman.tif');
%yorug’likning 32 intervalida gistogrammani quramiz
imhist(I,32);
17. TEXT buyrug’i – Matnni grafikda aks ettirish uchun ishlatiladi. U quyidagi formatga ega:
\¨ text(x, y, ’<tekst>’) –ikki o’lchamli grafikning berilgan nuqtasida (x, y) matni boshini, uchinchi argument sifatida joylashtiradi. Agarda x va y – bir o’lchamli massiv bo’lsa, berilgan matn [x(i) y(i)] koordinatlari bilan belgilanadigan barcha pozitsiyalarga joylashtiriladi;
¨ text(x, y, z, ’<tekst>’) – teksni uch o’lchamli grafikka chiqaradi.
Misol
%‘x’ belgisini uch nuqtada yozish kerak
%(1, 1), (5, 10), (10, 20) koordinatlari bilan
plot([1 5 10], [1 10 20], ’x’);
%(5, 10) pozitsiyadan boshlab yozish
%‘Action point’ matni:
text(5, 10, ‘Action point’);
18. XLABEL buyrug’i – Matnni ikki yoki uch o’lchamli grafikning X koordinatlar o’qi bo’ylab joylashtirish uchun foydalaniladi. Buyruq quyidagi formatga ega:
¨ xlabel('<tekst>') matnni: ikki o’lchamli grafik uchun x o’qi bo’ylab, uch o’lchamli grafik uchun - x o’qi bo’ylab yoki grafik ostiga joylashtiradi.
19. YLABEL buyrug’i – Matnni ikki yoki uch o’lchamli grafikning Y koordinatlar o’qi bo’ylab joylashtirish uchun foydalaniladi. Buyruq quyidagi formatga ega:
¨ ylabel('<tekst>') matnni: ikki o’lchamli grafik uchun y o’qi bo’ylab, uch o’lchamli grafik uchun esa – y o’qi bo’ylab yoki grafik ostiga joylashtiradi.
20. ZLABEL buyrug’i – Matnni uch o’lchamli grafikning Z koordinatlar o’qi bo’ylab joylashtirish uchun foydalaniladi. Buyruq quyidagi formatga ega:
¨ zlabel('<tekst>').
Buyruqdan takroran foydalanish eski matnni yangisi bilan almashishiga olib keladi.
Misol
%koordinatlar vektorini shakllantiramiz
i=0:0.001:4*pi
% sin funktsiyasi qiymatini aks ettiramiz
plot(sin(i));
%yozuvni x ko’rinishi o’qi ostiga chiqaramizvûvodim podpis’ pod os’yu x vida
%«function y=sin(x)»
xlabel(‘function y=sin(x)’);
Ma’lumotlarni taqdim etish formatlari
Tasvir turini aniqlash
Fayllarning grafikli formatlari bilan ishlash
IPT global o’zgaruvchilarni o’rnatish va o’qish
Tasvirlarni ekranga chiqarish va ularni ekrandan olib qo’yish
Tasvirlar turlarini o’zgartirish
Ranglar tizimlarini konvertlashtirish
Tasvirlarni geometrik o’zgartirish
Tasvirlar tahlili
Tasvirlarni yaxshilash
Tasvirlarni filtrlash
Tasvirlarni segmentlash
Binar tasviri ustida morfologik operatsiyalar
Ob’ektlarni topish va ular alomatlarini hisoblash
Fur’e o’zgartirishlari
Kosinusli diskret o’zgartirish
Radon o’zgartirishi
Tuzilma elementlarini yaratish va ishlash
Massivlar bilan operatsiyalar
Namoyish