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.

2. MATLAB haqida boshlang’ich tushunchalar

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.

Asosiy oyna

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.

Buyruqlar oynasi (Command Window oynasi)

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  
knopkasini bosib buyruqni bajarish mumkin.  Undan tashqari "" knopkasi oxirgi buyruqni chaqiradi,  va hokazo orqaga qaytish mumkin.
Stekdagi buyruqlarni teskari tartibda ""  knopkasi yordamida chaqirish mumkin.

 

Buyruqlar oynasini EDIT / Clear Command Window bilan tozalash mumkin.

Ishchi oynasi (Workspace)

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

Current Directory oynasi (Joriy katalog)

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.

Buyruqlar tarixi oynasi (Command History)

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
  -sin(a)  cos(a)    0
    0         0          1

x=w cos(a) – z sin(a)
  y=w sin(a) – z cos(a)

Surish (gorizontal)

1     0      0
  a      1      0
  0     0      1

x= w+az
  y= z

Surish (vertikal)

1     b      0
  0      1      0
  0     0      1

 x= w
   y= bw+z

Olib o’tish

1     0      0
  0      1      0
 
Sx     Sy      1

X = W + Sx
  
Y = Z + Sy

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 vizuallashtirishmorfologik 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);
 

Description: 022

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.

Description: 023

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.

Description: 026

 

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.

Description: 025

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.

Description: 024

5.5-rasm. Aylantirish paneli yordamida aks ettiriladigan tasvirlar ob’ektlari ierarxiyasi

Keyingi tasvirda aylantirish chizig’ili tasvir ko’rinishi ko’rsatilgan.

Description: 027

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,

Description: 028

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.

Description: 029

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.

Description: 030

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)

 

Description: 049

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)

 

Description: 050 Description: 051

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)

Description: 049

5.11-rasm. Dastlabki tasvir

Ushbu tasvirni binarga o’zgartiramiz. bwtraceboundary va bwboundaries funktsiyalari faqatgina binar tasvirlar bilan ishlaydi.

BW = im2bw(I);
imshow(BW)

Description: 053

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);
 

Description: 054

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

Description: 055

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.

 

 

 

Description: 056

Description: 057

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.

 

Description: 058

5.16-rasm. Dastlabki tasvir

 

BW = edge(rotI,'canny');

Description: 059

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;

Description: 060

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');
Description: 061
 
 
 
 
 
 
 
 
 
 
 
 

 

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:

  1. Tasvir uchta ko’rinadigan ranglar bilan ifodalanishi lozim bo’lgan, yettita diapazondan tashkil topgan:
2.                            A = multibandread('littlecoriver.lan', [512, 512, 7], ...
3.                            'uint8=>uint8', 128, 'bil', 'ieee-le', ...
4.                            {'Band','Direct',[3 2 1]});
  1. Dekorrelyatsiyaviy cho’zishni bajaramiz:
6.                            B = decorrstretch(A);
  1. Natijalarni vizuallashtirish:
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.

Svertka

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

 

Ma’lumotlar turlari

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.

Description: C:\Users\a_ashurov\Desktop\031.gif

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-obekt 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-obekt tevarakning 41 ta elementini o’z ichiga oladi.
      Dekompozitsiya: 3 ta STREL-obektlar 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-obektlar massivi 
      
      seq(1)
      ans =
      Tevarakning 5 ta elementini o’z ichiga olgan yassi STREL-obekt.
 
      Tevarak:
           0     1     0
           1     1     1
           0     1     0
      
      eq(2)
      ns =
      Tevarakning 4 ta elementini o’z ichiga olgan yassi STREL-obekt. 
      
      Tevarak:
           0     1     0
           1     0     1
           0     1     0
      
      seq(3)
      ans =
      Tevarakning 4 ta elementini o’z ichiga olgan yassi STREL-obekt. 
      
      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)

Description: C:\Users\a_ashurov\Desktop\032.gif

 

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)

Description: C:\Users\a_ashurov\Desktop\033.gif

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');

Description: C:\Users\a_ashurov\Desktop\034.gif

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.

Description: C:\Users\a_ashurov\Desktop\035.gif

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.

Description: C:\Users\a_ashurov\Desktop\036.gif

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)

Description: C:\Users\a_ashurov\Desktop\037.gif

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.

Description: C:\Users\a_ashurov\Desktop\038.gif

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.

Description: C:\Users\a_ashurov\Desktop\039.gif

imregionalmax funktsiyasi bilan qaytariladigan binar tasvir barcha lokal maksimumlar joylashuviga ega.

      B = imregionalmax(A)

Description: C:\Users\a_ashurov\Desktop\040.gif

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)

Description: C:\Users\a_ashurov\Desktop\041.gif

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.

Description: C:\Users\a_ashurov\Desktop\042.gif

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)

Description: C:\Users\a_ashurov\Desktop\043.gif

 

Quyidagi - rasmda tasvirning ikkinchi satri sathidagi imhmax funktsiyasi qo’llanilguncha va qo’llanilganidan keyingi profil’ keltirilgan.

 

Description: C:\Users\a_ashurov\Desktop\044.gif

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
 

Description: C:\Users\a_ashurov\Desktop\045.gif

 

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)

Description: C:\Users\a_ashurov\Desktop\046.gif

 

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.

 

Description: C:\Users\a_ashurov\Desktop\047.gif

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')

Description: C:\Users\a_ashurov\Desktop\048.gif

 

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.

Nimrang tavirlarga morfologik ishlov berish

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.

 

Fur’e-o’zgartirishlari yordamida obktlar chegaralarini tavsiflash

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 malumotlar 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.

%Malumotlar 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('Malumotlar 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.

%Malumotlarning 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.

 

Nimrang tasvirlarga morfologk ishlov berish

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');

Fur’e-o’zgartirishi yordamida obektlar chegaralarini tavsiflash

%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 malumotlar 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;
%Malumotlar 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('Malumotlar ketma-ketligini vizuallashtirish')
 
%malumotlarning 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

  1. IMREAD - A buyrug’i = imread(filename) filename nomli fayldan binar, nimrang i rangli tasvirni o’qiydi va  uni A massiviga joylashtiradi.

Misol: im = imread(‘h:\labor\image\006\FRM001.bmp')

  1. IMFINFO buyrug’iko’rsatilgan fayldagi tasvir o’lchamlari haqidagi ma’lumotni olish uchun foydalaniladi.

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

  1. IMWRITE buyrug’iTasvirni faylga yozish uchun foydalaniladi.

Miol: imwrite(im,'my_image.bmp')

  1. IMSHOW buyrug’iMassiv ichidagi tasvirni monitor ekraniga chiqarish uchun foydalaniladi.

Misol: im = imread('my_image.bmp'); imshow(im);

  1. IPTSETPREF buyrug’i Tegishli buyruqlar bilan tasvirni chiqarish rejimini o’zgartirish uchun foydalaniladi (misol uchun imshow). Buyruq quyidagi sintaksisga ega: iptsetpref(prefname, value).

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);

  1. FIGURE buyrug’iYangi grafikli oynani yaratish uchun foydalaniladi. Komanda imeet sleduyuùiy sintaksis:

figure yangi grafik oynani yaratadi;

figure(h)h tartib raqamli oynani chiqarish uchun tanlaydi;

 figure('PropertyName',PropertyValue,...).

  1. TRUESIZE buyrug’i Chiqarilgan tasviri masshtabini o’zgartirgan holda oyna o’lchamlarini o’zgartirish uchun foydalaniladi. Buyruq quyidagi sintaksisga ega:

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]);

 

  1. SUBPLOT buyrug’iJoriy oynani oynalar ostiga bo’ladi va p tartib raqamli oyna ostini joriy etib belgilaydi. Buyruq quyidagi sintaksisga ega: subplot(m, n, p).

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);

  1. IMRESIZE buyrug’i - imresize funktsiyasi yordamida istalgan turdagi dastlabki tasvirdan berilgan o’lchamdagi yangi tasvirni yaratish mumkin:

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);

  1. IMCROP buyrug’i – dastlabki tasvirdan ba’zi bir qismini kesib olish uchun imcrop funktsiyasi ishlatilishi mumkin:

            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’iTasvirni 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’iIkki o’lchamli grafik qurish imkonini beradi. Buyruq quyidagi sintaksisga ega:

¨plot(X, Z),

bunda Xo’q bo’ylab koordinatlarning vektor qiymati, X, Z – esa Z=f(X) funktsiyasining matritsa qiymati.

13.  HOLD buyrug’iJoriy 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)’);

 

 

 

 

 

 Image Processing Toolbox funktsiyalari ro’yxati

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