logo

Tasvirlarga ishlov berish tizimlari. Ularning klassifikatsiyasi va qiyosiy tahlili.

Yuklangan vaqt:

08.08.2023

Ko'chirishlar soni:

0

Hajmi:

1002.740234375 KB
Tasvirlarga ishlov berish tizimlari. Ularning klassifikatsiyasi va qiyosiy tahlili.
Reja:
1. Kirish:
2. Raqamli tasvirlarni qayta ishlash.
3. MATLAB tizimi 
4. OpenCv kutubxonasi Kirish
  Ushbu   paketning   maqsadi   interaktiv   tasvirni   tahrirlashdir.   Uning   kodlari
yopiq   bo'lib,   barcha   tasvirlarni   qayta   ishlash   tugmalar   va   sichqoncha
kombinatsiyasini   bosish   orqali   tasvirlarni   o'zgartirish   va   qayta   ishlash
algoritmlarini tavsiflamasdan amalga oshiriladi.
Ko'pgina   dasturiy   ta'minot   tizimlarini   ishlab   chiquvchilari   ertami-kechmi
tanlovga duch kelishdi: o'zlari etishmayotgan narsani ishlab chiqish yoki tayyorni
sotib olishmi? Tayyor kodlar odatda kutubxona sifatida sotiladi, lekin ochiq kodli
kutubxonalar  ham  mavjud. Shubhasiz,  agar  siz  mavjud kutubxonadan funktsiyani
olsangiz, loyihani ishlab chiqish ancha tezroq yakunlanadi. Ishlab chiquvchi asosiy
e'tiborni   yordamchi   infratuzilmaga   emas,   balki   vazifaga   qaratadi.   Biroq,
kutubxonalar   odatda   universal   foydalanish   uchun   yozilgan   bo'lib,   ko'plab   turli
muammolarni   hal   qiladi.   Ko'pincha   ularning   kodini   tushunish   juda   qiyin   va   har
doim   ham   muayyan   muammoni   hal   qilish   uchun   maqbul   emas.   Agar   ishlab
chiquvchi   o'z   yechimini   amalga   oshirsa,   u   uni   optimal   (tajribaga   ko'ra)   usulda
yozadi   va   uni   o'z   vazifasi   uchun   aniqlaydi.   Kutubxonadan   foydalanishda   ko'plab
foydalanuvchilar   tomonidan   sinovdan   o'tgan   yechim   mavjud.   Agar   shunga
qaramay, xato topilsa, Internetda siz unga duch kelgan odamlarning maslahatlarini
topishingiz mumkin. Biroq, agar hech kim bu xatoga duch kelmasa yoki bu haqda
hech   kim   yozmasa,   nima   uchun   nimadir   ishlamayotganini   tushunishga   ko'p   vaqt
sarflashingiz mumkin, chunki kutubxona kodi juda noqulay bo'lishi mumkin va har
doim ham mavjud emas. Agar ishlab chiquvchi barcha kodni o'zi yozgan bo'lsa, u
buni yaxshi biladi va xatoni osongina topadi. Ammo xatolar, ehtimol, ancha katta
bo'ladi,   chunki   faqat   ishlab   chiquvchi   ushbu   kodni   sinab   ko'rgan.   Agar   u   noldan
kod   yozayotgan   bo'lsa,   kutubxonada   vaqt   o'tishi   bilan   aniqlangan   va   kodlangan
ba'zi   noyob  holatlar   e'tibordan   chetda   qolishi   ehtimoli   bor.     Rivojlanish   guruhiga
yangi xodim kelsa, ehtimol u kutubxonada joriy qilingan usullar bilan allaqachon
ishlagan   (yoki   u   tegishli   tajribaga   ega   bo'lgan   ishga   qabul   qilingan).   Agar   ishlab
chiquvchi o'z yechimidan foydalansa, unda yangi xodim  o'z ishining tafsilotlarini
tushunishi   kerak   bo'ladi.   Boshqa   tomondan,   kutubxonalarda   allaqachon   joriy qilingan   kodni   o'zingiz   yozish   juda   qiyin   (ayniqsa   yangi   boshlanuvchilar   uchun).
Buni   amalga   oshirish   uchun   sizga   yuqori   malakali   mutaxassis   kerak,   aks   holda
o'zingizning qaroringizning barcha boshqa afzalliklari bekor bo'ladi.
Keling, har bir yondashuvning afzalliklari va kamchiliklarini qisqacha ko'rib
chiqaylik.
Afzalliklari:
tez loyiha ishlab chiqish;
kod ko'plab foydalanuvchilar tomonidan sinovdan o'tgan;
yangi boshlanuvchilarga dastur qanday ishlashini tushuntirish mumkin;
Kutubxona funktsiyasini o'zingiz amalga oshirish orqali siz kutmagan 
muammolarni hal qiladi;
dasturchi asosiy vazifaga e'tibor qaratadi, yordamchiga emas;
Kamchiliklari:
odatda   dasturiy   ta'minot   komponentlari   har   bir   kompyuter   uchun
litsenziyalar bilan sotiladi va barcha litsenziyalar narxi mulkiy rivojlanish narxidan
oshishi mumkin;
juda ko'p sinflar, murakkab umumiy arxitektura, yuzaga keladigan xatolarni
tushunish qiyin;
dasturiy   mahsulotda   sizning   vazifangiz   uchun   zarur   bo'lgan   aniq   funktsiya
bo'lmasligi mumkin;
bu muammoni optimal tarzda hal qilishning iloji yo'q,
ushbu   loyiha   uchun   kerak   bo'lmagan   ko'plab   funktsiyalarni   yuklash   talab
qilinadi;
kelajakda kutubxonani yangilash bilan bog'liq muammolar bo'lishi mumkin;
ko'pincha   loyiha   bir   nechta   kutubxonalarni   talab   qiladi,   ularning   har   biri
funksiyaning faqat bir qismini ishlatadi;
boshqa   birovning   kutubxonasiga,   shuningdek,   kod   yozishingiz,   hujjatlarni
tushunishingiz kerak.
O'z dizaynimizni ishlatishning afzalliklari:
jamoa a'zolari dastur qanday ishlashini bilishadi; xatolar sabablarini izlash osonroq, chunki yozilgan kod mini-kichik;
eng samarali yechim;
kutubxonani to'g'ri yo'nalishda rivojlantirish imkoniyati.
Kamchiliklari:
yaxshi kutubxona yozish uchun yuqori malakali dasturchi talab qilinadi;
rivojlanish davomiyligi;
ko'p sonli xatolarni o'z ichiga oladi, ayniqsa amalga oshirish bosqichida;
Yangi boshlanuvchilar dastur qanday ishlashini bilishmaydi.
Dasturlarni yozmang:
agar   ishlab   chiquvchi   ushbu   kutubxonani   yuqori   sifatli   amalga   oshirish
uchun zarur malakaga (dasturchi sifatida yoki ushbu sohada maxsus) ega bo'lmasa;
biz kutubxonalarda asosiy sifatida ishlatiladigan standart funktsiyalardan biri
haqida gapiramiz;
mavjud kutubxona sodda va aniq yozilgan;
bu yechim ancha oson bo'lishiga ishonch yo'q.
Agar   kutubxona   tomonidan   hal   qilingan   muammo   haqiqatan   ham   qiyin
bo'lsa,   unda   amalga   oshirish   yaxshiroq   va   sodda   bo'ladi   va   boshqa   birovning
kutubxonasidagi   xatolarni   topish   va   tuzatishdan   ko'ra   yozish   va   tuzatish   uchun
kamroq  vaqt   va  kuch  sarflanadi.  Bundan  tashqari,   ko'pincha  bu  asarni   kutubxona
muallifiga topshirish mumkin.
Biz quyidagi xulosaga kelishimiz mumkin: agar siz kod yozsangiz, u holda
uzoq   vaqtdan   beri   hal   qilingan   muammolarning   echimlarini   va   optimal   tarzda
topishga ko'p vaqt va kuch sarflanadi.
O'z kutubxonangizni yaratishingiz kerak:
agar kerak bo'lgan narsa tayyorni topishdan ko'ra tezroq bo'lsa;
keyingi foydalanish mavjud kutubxonalar bilan mos kelmaydi.
Yondashuvlarning   har   biri   o'z   omillari   va   xavflariga   ega.   Boshqa
odamlarning dasturlarini qo'llashda asosiy omil dastlabki ishlab chiqish vaqtini va
xarajatlarini minimallashtirishdir. Birinchi yondashuvdagi asosiy xavf - bu amalga
oshirish va texnik xizmat ko'rsatish muammosi. 198 O'z-o'zini dasturlashda asosiy omil loyihaning uzoq umr ko'rishidir. Bu loyihani ishga tushirish bilan tugamaydi,
lekin   u   endigina   boshlanmoqda,   ya'ni   dastlabki   ishlab   chiqish   va   sinovdan
o'tkazilgandan   so'ng   uzoq   muddatga   yo'naltirilgan   raqobatbardosh   mahsulot
mavjud.   Har   qanday   muvaffaqiyatli   nostandart   yechim   loyihaning   asosiy   jihati,
uning   raqobatdosh   ustunligidir.   Rivojlanish   bosqichida,   loyiha   kelajakda
kengaytirish   va   takrorlash   uchun   tayyor.   To'liq   sinov   o'tkaziladi.   Ishlab
chiquvchilar tajribali bo'lishi kerak, bu qimmat. Ikkinchi yondashuvning xavfi bir
xil:   loyihaning   yuqori   narxi   mumkin.   Ushbu   xavf,   bunday   loyiha   muvaffaqiyatli
bo'lib,   korxonani   ko'p   yillar   davomida   oziqlantirishga   qodir   ekanligi   bilan
qoplanadi.   Tayyor   echimlardan   foydalanish   va   tahlil   qilish   yangi
boshlanuvchilarga   tezda   o'z   malakalarini   oshirish   va   oddiy   loyihalarni   yaratish
imkonini beradi.
Rasmlarni   qayta   ishlash   funksiyalarini   amalga   oshiradigan   va   ochiq   kodli
MATLAB va OpenCV kutubxonalarining ikkita versiyasini ko'rib chiqamiz.
MATLAB tizimi
MATLAB qisqartmasi Matritsa laboratoriyasi, matritsa laboratoriyasi.
MATLAB - bu muammolarni hal qilish uchun dasturiy ta'minot to'plami 
texnik hisoblash, ko'plab maxsus kutubxonalar va bir xil nomdagi dasturlash tili. 
MATLAB - bu tarjimon. MATLAB ko'pgina zamonaviy operatsion tizimlarda 
ishlaydi. MATLAB dan foydalanish tadqiqot ishlarini bir necha marta tezlashtiradi, 
diqqatni algoritmni amalga oshirishga emas, balki tekshirishga qaratish imkonini 
beradi. MATLABni amalga oshirishdagi xatolar kuzatish osonroq. MATLAB da siz 
uning funksiyalarini kengaytiruvchi maxsus funksiyalar kutubxonalarini (asboblar 
qutisi) yaratishingiz mumkin. Masalan, kutubxonalar raqamli signalni qayta ishlash 
asboblar to'plami, tasvirni qayta ishlash asboblar to'plami.
Wavelet Toolbox, Filter Design Toolbox raqamli signal va tasvirni qayta 
ishlash uchun ishlatiladi.
Ilovalarni ishlab chiqish muhiti bilan chambarchas bog'liq
MATLAB, tasvirni qayta ishlash asboblar to'plami ishlab chiquvchilarni 
yechimlarni topish, kodlash va disk raskadrovka algoritmlarini topishdan ozod  qiladi, bu esa 199 ga asosiy amaliy muammoni hal qilishga kuchini jamlash 
imkonini beradi. MATLAB va Image Processing to'plami o'rganish, yangi g'oyalarni
ishlab chiqish va ularni sinab ko'rish uchun eng mos keladi. Rasmga ishlov berish 
asboblar to'plami kutubxonasi tasvirni qayta ishlashning asosiy funktsiyalari 
to'plamidir:
Turli tasvir formatlarini, video va tasvir ketma-ketligini o'qish va yozish;
GUI shablonlarini ishlab chiqishni tezlashtirish uchun interaktiv grafik 
foydalanuvchi interfeysini (GUI Builder) yaratish vositalari, uni foydalanuvchi 
vazifalari uchun sozlash imkonini beradi;
Har xil turdagi tasvirlar va rang modellariga aylantirish, palitrani 
o'zgartirish;
geometrik o'zgarishlar;
tasvirlarning fazoviy o'zgarishlari;
tasvirning tanlangan maydonini qayta ishlash;
morfologik operatsiyalar;
surma va bloklarni qayta ishlash;
chiziqli va chiziqli bo'lmagan filtrlash;
tasvir sifatini yaxshilash;
tasvirni tiklash;
tasvirni tahlil qilish.
Kutubxona funksiyalarining aksariyati m-fayl tizimida ifodalangan. Ularda 
eng ko'p ishlatiladigan tasvirni qayta ishlash algoritmlari optimal tarzda amalga 
oshiriladi. Bu funksiyalar uchun kodlar ommaviydir. MATLAB ning o'ziga xos 
xususiyati uning matritsa operatsiyalariga qaratilganligidir. Hatto doimiy ham 1 × 1 
matritsa sifatida qaraladi.Bu orientatsiya tasvirni qayta ishlash uchun juda qulay.
MATLAB tizimining afzalliklari: matritsalar bilan ishlash uchun o'rnatilgan 
operatsiyalarning ko'pligi. Bu yechim bilan bog'liq bo'lgan turli vazifalarni ham 
ancha soddalashtiradi chiziqli algebraik tenglamalar tizimi va boshqalar va tasvirlar 
bilan ishlash; Har xil matematik usullarning (sonli usullar, differensial tenglamalar, 
signallarni qayta ishlash, hisoblash geometriyasi va boshqalar) doimiy 
rivojlanayotgan kutubxonalarining boy to'plami;
MATLAB; ko'p funktsiyalar kitoblarda tasvirlangan;
Turli ma'lumotlarni (funktsiyalarning ikki o'lchovli va uch o'lchovli 
grafiklari, to'plamlar va boshqalar) tez va oddiy (ishlab chiquvchi uchun) 
vizualizatsiya qilish uchun 200 ta ajoyib imkoniyatlar;
Har doim mavjud bo'lgan buyruq qatoriga ega tarjimon
(kerakli vaqtda dasturni to'xtatib turish va ma'lum bir bosqichda olingan 
ma'lumotlarni ko'rish, ularni grafik ko'rsatish, o'zgartirish, chaqirilgan funksiya 
parametrlarini tuzatish va h.k.) mumkin, bu esa xatolarni tuzatish va tushunishni 
osonlashtiradi. dastur;
MATLABdan C++ dasturlarida va aksincha foydalanish imkoniyati 
(MATLABda siz C++ tilida yozilgan kutubxonalardan foydalanishingiz mumkin).
Shunday qilib, C ++ da yozilgan algoritmlarni sinab ko'rish mumkin,
MATLAB muhitidan foydalanish va MATLAB orqali dasturlaringizda 
MATLAB vositalaridan (masalan, ma'lumotlarni vizualizatsiya qilish) foydalaning.
Misol uchun, dasturingizga 3D grafik chiqishini qo'shish (nosozliklarni 
tuzatish uchun) juda mashaqqatli va MATLAB ga ulanish orqali u erda 
ma'lumotlarni uzatish va kerakli grafiklarni qurish mumkin.
MATLAB tilidagi tasvirlarni qayta ishlashning eng oddiy dasturi kodiga 
misol keltiramiz (qayta ishlash natijasi 15.1-rasmda keltirilgan):
A = imread ('cameraman.tif'); % rasmni A dagi o‘qish;
B = A / 2; % barcha piksellarning yorqinligini yarmiga kamaytirish;
imshow (B); % ishlov berish natijasini ko'rsatadi. 1-rasm.  MATLAB tizimi tomonidan tasvirni qayta ishlash natijasi
(kod yuqorida tavsiflangan) MATLAB tizimi tomonidan tasvirni qayta 
ishlash natij
OpenCv kutubxonasi
OpenCV (Ingliz tilidagi ochiq manbali kompyuter ko'rish kutubxonasi – 
kutubxona ochiq manbali kompyuterni ko'rish - bu kompyuterni ko'rish 
algoritmlarini, tasvirni qayta ishlashni va umumiy maqsadli ochiq kodli raqamli 
algoritmlarni amalga oshiradigan funktsiyalar kutubxonasi. Kutubxona C va C++ 
tillarida yozilgan, Linux, Windows va Mac OS operatsion tizimlarida ishlaydi, 
ko‘p yadroli protsessorlar bilan ishlay oladi. Python, Ruby, MATLAB, Java, Lua 
va boshqa tillar uchun interfeyslar faol ishlab chiqilmoqda.
OpenCV ilovaning turli sohalari uchun 500 dan ortiq funktsiyalarni o'z 
ichiga oladi: ishlab chiqarishda sifat nazorati, xavfsizlik tizimlari, tasvirni qayta 
ishlash, foydalanuvchi interfeyslari, stereoskopik ko'rish va robototexnika, 
kameralardan video olish, naqshni aniqlash, shu jumladan yuzni aniqlash, kuzatish 
ikki va uch o lchamdagi harakatlar, stereoskopik ko rishni 3D rekonstruksiya ʻ ʻ
qilish va boshqalar. OpenCV shuningdek, statistik naqshlarni aniqlash va 
klasterlash vazifalariga yo naltirilgan mashina o rganish kutubxonasini ham o z 	
ʻ ʻ ʻ
ichiga oladi.
OpenCV ko'plab ilovalar va tadqiqot loyihalarida qo'llaniladi. OpenCV ning 
asosiy modullari:  Opencv_core - asosiy funksionallik, jumladan, asosiy tuzilmalar, hisoblash 
(matematik funktsiyalar, tasodifiy sonlar generatorlari) va chiziqli algebra, DFT, 
DCT, XML va YAWL uchun I/U va boshqalar;
Opencv_imgproc - tasvirni qayta ishlash (filtrlash, geometrik o'zgartirishlar, 
rang bo'shliqlarini aylantirish va boshqalar);
Opencv_highgui - oddiy foydalanuvchi interfeysi, tasvir va video 
kiritish/chiqarish;
Opencv_ml - statistik mashinani o'rganish modellari (SVM, qarorlar 
daraxtlari, rag'batlantirilgan o'rganish va boshqalar);
Opencv_features2d - yassi primitivlarni aniqlash va tavsiflash (SURF, FAST
va boshqalar);
Opencv_video - harakat tahlili va ob'ektni kuzatish (optik oqim, harakat 
naqshlari, fonni yo'q qilish);
Opencv_objdetect - tasvirdagi ob'ektni aniqlash (Viola-Jones algoritmi 
yordamida yuzlarni topish, odamlarni HOGni tanib olish va h.k.);
202 Opencv_calib3d - kamerani kalibrlash, stereo moslashtirish va 3D 
ma'lumotlarni qayta ishlash elementlari;
Opencv_flann - eng yaqin qo'shnilarni tez qidirish uchun kutubxona
(FLANN 1.5) va OpenCV o'ramlari;
Opencv_gpu - ba'zi OpenCV funktsiyalarini tezlashtiradiCUDA, NVidia 
tomonidan quvvatlanadi.
Kutubxona hujjatlarini veb-saytda ko'rish mumkin
http://docs.opencv.org/index.html . Xulosa:
Tasvirni qayta ishlash uchun maxsus dastur muammosini hal qilish ishlab 
chiquvchining tajribasiga bog'liq. Afsuski, xuddi shu ob'ektni olish shartlarining 
biroz o'zgarishi bilan uning raqamli tasviri va ushbu tasvirni qayta ishlash usullari 
sezilarli darajada o'zgarishi mumkin: masalan, elektromagnit spektrning qizil 
diapazonida va yaqin infraqizilda olingan tasvir (rasmga qarang). 2-rasm;
Turli spektr diapazonlarida bir hududning kosmik tasvirlariga misol: a - 
infraqizil spektrga yaqin; b - qizil spektr
Quyidagi vaziyat tez-tez paydo bo'ladi: bir yoki bir nechta tasvirlar mavjud 
(juda tez-tez turli nuqsonlar bilan); ularda tasvirlangan ob'ektni tanib olish talab 
qilinadi (masalan, avtomobil raqami). Turli xil turdagi sezilarli o'zgaruvchan 
tasvirlarni qayta ishlash ko'proq san'at, hunarmandchilik emas, balki turli xil 
bilimlarga asoslangan san'atdir. Usullarni bilish va ularni qo'llashda to'g'ri ketma-
ketlikni topish tajribasi vazifani hal qilishni osonlashtiradi. Hatto doimiy ravishda 
tor toifadagi tasvirlar bilan ishlash (masalan, fotosurat portretlarini retush qilish), 
bu usullarning asoslarini bilish foydalidir.
Yozishda mualliflar quyidagi maqsadlarga erishishni maqsad qilganlar:
turli tabiatdagi raqamli tasvirlar qanday shakllanganligini ko'rsatish;
bunday tasvirlarni qayta ishlash asoslarini tavsiflash;
ular yordamida aniq amaliy masalalar qanday yechilishini ko'rsating.
Chuqurroq bilimlarni boshqa darsliklar va maxsus adabiyotlarda, 
shuningdek, Internetda topish mumkin. Yangi turdagi tasvirlarni olish ularni qayta 
ishlashning yangi usullarini talab qiladi. Yangi nazariyalarni amalga oshirish yangi
tasvirlarni ro'yxatga olish qurilmalarini yaratishga imkon beradi. Ulardan yangi 
tasvirlar va yangi ma’lumotlarni olishning bu jarayoni muqovada biroz buzib 
ko‘rsatilgan holda taqdim etilgan M.Esherning “Tuzish va ko‘tarilish” 
gravyurasidagi rohiblar yo‘li kabi cheksizdir. FOYDALANILGAN ADABIYOTLAR  RO'YXATI:
1. Vatolin, D.S. Rasmni siqish algoritmlari: usul. nafaqa / D.S. Vatolin. -      
Moskva: im. nashriyot uyi. M.V.Lomonosov, 1999 .-- 157 b.
2. Gonsales, R. Raqamli tasvirni qayta ishlash / R. Gonsales,R. Vuds: trans. 
ingliz tilidan - Moskva: Texnosfera, 2005 .-- 1072 b.
3. Juravel, I.M. Tasvirga ishlov berish nazariyasi bo'yicha qisqa kurs 
[Elektron resurs] / I.M. Juravel. - Kirish rejimi: 
http://matlab.exponenta.ru/imageprocess / book2 / 79.php. - Kirish sanasi: 
15.06.2015.
4. Kompyuter tasvirini qayta ishlash usullari / ed.V.A. Soyfer. - Moskva: 
Fizmatlit, 2003 .-- 784 b.
5. Myurrey, D.D. Grafik fayl formatlari entsiklopediyasi / D.D. Myurrey, V. 
van Reiner: trans. ingliz tilidan - Kiev: BHV, 1997. –672 p.
6. OpenCV - ochiq manbali kompyuter ko'rish kutubxonasi: http://locv.ru. 7. Priorov, A.L. Raqamli tasvirni qayta ishlash: darslik. qandaydir tarzda / 
A.L. Priorov, I.V. Apalkov, V.V. Xryashchev. - Yaroslavl: YarSU, 2007 .-- 235 p.
8. Pratt, W. Raqamli tasvirni qayta ishlash / W. Pratt: trans. Bilan Ingliz - 
Moskva: Mir, 1982. - Kitob. 2.- 480 b.

Tasvirlarga ishlov berish tizimlari. Ularning klassifikatsiyasi va qiyosiy tahlili. Reja: 1. Kirish: 2. Raqamli tasvirlarni qayta ishlash. 3. MATLAB tizimi 4. OpenCv kutubxonasi

Kirish Ushbu paketning maqsadi interaktiv tasvirni tahrirlashdir. Uning kodlari yopiq bo'lib, barcha tasvirlarni qayta ishlash tugmalar va sichqoncha kombinatsiyasini bosish orqali tasvirlarni o'zgartirish va qayta ishlash algoritmlarini tavsiflamasdan amalga oshiriladi. Ko'pgina dasturiy ta'minot tizimlarini ishlab chiquvchilari ertami-kechmi tanlovga duch kelishdi: o'zlari etishmayotgan narsani ishlab chiqish yoki tayyorni sotib olishmi? Tayyor kodlar odatda kutubxona sifatida sotiladi, lekin ochiq kodli kutubxonalar ham mavjud. Shubhasiz, agar siz mavjud kutubxonadan funktsiyani olsangiz, loyihani ishlab chiqish ancha tezroq yakunlanadi. Ishlab chiquvchi asosiy e'tiborni yordamchi infratuzilmaga emas, balki vazifaga qaratadi. Biroq, kutubxonalar odatda universal foydalanish uchun yozilgan bo'lib, ko'plab turli muammolarni hal qiladi. Ko'pincha ularning kodini tushunish juda qiyin va har doim ham muayyan muammoni hal qilish uchun maqbul emas. Agar ishlab chiquvchi o'z yechimini amalga oshirsa, u uni optimal (tajribaga ko'ra) usulda yozadi va uni o'z vazifasi uchun aniqlaydi. Kutubxonadan foydalanishda ko'plab foydalanuvchilar tomonidan sinovdan o'tgan yechim mavjud. Agar shunga qaramay, xato topilsa, Internetda siz unga duch kelgan odamlarning maslahatlarini topishingiz mumkin. Biroq, agar hech kim bu xatoga duch kelmasa yoki bu haqda hech kim yozmasa, nima uchun nimadir ishlamayotganini tushunishga ko'p vaqt sarflashingiz mumkin, chunki kutubxona kodi juda noqulay bo'lishi mumkin va har doim ham mavjud emas. Agar ishlab chiquvchi barcha kodni o'zi yozgan bo'lsa, u buni yaxshi biladi va xatoni osongina topadi. Ammo xatolar, ehtimol, ancha katta bo'ladi, chunki faqat ishlab chiquvchi ushbu kodni sinab ko'rgan. Agar u noldan kod yozayotgan bo'lsa, kutubxonada vaqt o'tishi bilan aniqlangan va kodlangan ba'zi noyob holatlar e'tibordan chetda qolishi ehtimoli bor. Rivojlanish guruhiga yangi xodim kelsa, ehtimol u kutubxonada joriy qilingan usullar bilan allaqachon ishlagan (yoki u tegishli tajribaga ega bo'lgan ishga qabul qilingan). Agar ishlab chiquvchi o'z yechimidan foydalansa, unda yangi xodim o'z ishining tafsilotlarini tushunishi kerak bo'ladi. Boshqa tomondan, kutubxonalarda allaqachon joriy

qilingan kodni o'zingiz yozish juda qiyin (ayniqsa yangi boshlanuvchilar uchun). Buni amalga oshirish uchun sizga yuqori malakali mutaxassis kerak, aks holda o'zingizning qaroringizning barcha boshqa afzalliklari bekor bo'ladi. Keling, har bir yondashuvning afzalliklari va kamchiliklarini qisqacha ko'rib chiqaylik. Afzalliklari: tez loyiha ishlab chiqish; kod ko'plab foydalanuvchilar tomonidan sinovdan o'tgan; yangi boshlanuvchilarga dastur qanday ishlashini tushuntirish mumkin; Kutubxona funktsiyasini o'zingiz amalga oshirish orqali siz kutmagan muammolarni hal qiladi; dasturchi asosiy vazifaga e'tibor qaratadi, yordamchiga emas; Kamchiliklari: odatda dasturiy ta'minot komponentlari har bir kompyuter uchun litsenziyalar bilan sotiladi va barcha litsenziyalar narxi mulkiy rivojlanish narxidan oshishi mumkin; juda ko'p sinflar, murakkab umumiy arxitektura, yuzaga keladigan xatolarni tushunish qiyin; dasturiy mahsulotda sizning vazifangiz uchun zarur bo'lgan aniq funktsiya bo'lmasligi mumkin; bu muammoni optimal tarzda hal qilishning iloji yo'q, ushbu loyiha uchun kerak bo'lmagan ko'plab funktsiyalarni yuklash talab qilinadi; kelajakda kutubxonani yangilash bilan bog'liq muammolar bo'lishi mumkin; ko'pincha loyiha bir nechta kutubxonalarni talab qiladi, ularning har biri funksiyaning faqat bir qismini ishlatadi; boshqa birovning kutubxonasiga, shuningdek, kod yozishingiz, hujjatlarni tushunishingiz kerak. O'z dizaynimizni ishlatishning afzalliklari: jamoa a'zolari dastur qanday ishlashini bilishadi;

xatolar sabablarini izlash osonroq, chunki yozilgan kod mini-kichik; eng samarali yechim; kutubxonani to'g'ri yo'nalishda rivojlantirish imkoniyati. Kamchiliklari: yaxshi kutubxona yozish uchun yuqori malakali dasturchi talab qilinadi; rivojlanish davomiyligi; ko'p sonli xatolarni o'z ichiga oladi, ayniqsa amalga oshirish bosqichida; Yangi boshlanuvchilar dastur qanday ishlashini bilishmaydi. Dasturlarni yozmang: agar ishlab chiquvchi ushbu kutubxonani yuqori sifatli amalga oshirish uchun zarur malakaga (dasturchi sifatida yoki ushbu sohada maxsus) ega bo'lmasa; biz kutubxonalarda asosiy sifatida ishlatiladigan standart funktsiyalardan biri haqida gapiramiz; mavjud kutubxona sodda va aniq yozilgan; bu yechim ancha oson bo'lishiga ishonch yo'q. Agar kutubxona tomonidan hal qilingan muammo haqiqatan ham qiyin bo'lsa, unda amalga oshirish yaxshiroq va sodda bo'ladi va boshqa birovning kutubxonasidagi xatolarni topish va tuzatishdan ko'ra yozish va tuzatish uchun kamroq vaqt va kuch sarflanadi. Bundan tashqari, ko'pincha bu asarni kutubxona muallifiga topshirish mumkin. Biz quyidagi xulosaga kelishimiz mumkin: agar siz kod yozsangiz, u holda uzoq vaqtdan beri hal qilingan muammolarning echimlarini va optimal tarzda topishga ko'p vaqt va kuch sarflanadi. O'z kutubxonangizni yaratishingiz kerak: agar kerak bo'lgan narsa tayyorni topishdan ko'ra tezroq bo'lsa; keyingi foydalanish mavjud kutubxonalar bilan mos kelmaydi. Yondashuvlarning har biri o'z omillari va xavflariga ega. Boshqa odamlarning dasturlarini qo'llashda asosiy omil dastlabki ishlab chiqish vaqtini va xarajatlarini minimallashtirishdir. Birinchi yondashuvdagi asosiy xavf - bu amalga oshirish va texnik xizmat ko'rsatish muammosi. 198 O'z-o'zini dasturlashda asosiy

omil loyihaning uzoq umr ko'rishidir. Bu loyihani ishga tushirish bilan tugamaydi, lekin u endigina boshlanmoqda, ya'ni dastlabki ishlab chiqish va sinovdan o'tkazilgandan so'ng uzoq muddatga yo'naltirilgan raqobatbardosh mahsulot mavjud. Har qanday muvaffaqiyatli nostandart yechim loyihaning asosiy jihati, uning raqobatdosh ustunligidir. Rivojlanish bosqichida, loyiha kelajakda kengaytirish va takrorlash uchun tayyor. To'liq sinov o'tkaziladi. Ishlab chiquvchilar tajribali bo'lishi kerak, bu qimmat. Ikkinchi yondashuvning xavfi bir xil: loyihaning yuqori narxi mumkin. Ushbu xavf, bunday loyiha muvaffaqiyatli bo'lib, korxonani ko'p yillar davomida oziqlantirishga qodir ekanligi bilan qoplanadi. Tayyor echimlardan foydalanish va tahlil qilish yangi boshlanuvchilarga tezda o'z malakalarini oshirish va oddiy loyihalarni yaratish imkonini beradi. Rasmlarni qayta ishlash funksiyalarini amalga oshiradigan va ochiq kodli MATLAB va OpenCV kutubxonalarining ikkita versiyasini ko'rib chiqamiz. MATLAB tizimi MATLAB qisqartmasi Matritsa laboratoriyasi, matritsa laboratoriyasi. MATLAB - bu muammolarni hal qilish uchun dasturiy ta'minot to'plami texnik hisoblash, ko'plab maxsus kutubxonalar va bir xil nomdagi dasturlash tili. MATLAB - bu tarjimon. MATLAB ko'pgina zamonaviy operatsion tizimlarda ishlaydi. MATLAB dan foydalanish tadqiqot ishlarini bir necha marta tezlashtiradi, diqqatni algoritmni amalga oshirishga emas, balki tekshirishga qaratish imkonini beradi. MATLABni amalga oshirishdagi xatolar kuzatish osonroq. MATLAB da siz uning funksiyalarini kengaytiruvchi maxsus funksiyalar kutubxonalarini (asboblar qutisi) yaratishingiz mumkin. Masalan, kutubxonalar raqamli signalni qayta ishlash asboblar to'plami, tasvirni qayta ishlash asboblar to'plami. Wavelet Toolbox, Filter Design Toolbox raqamli signal va tasvirni qayta ishlash uchun ishlatiladi. Ilovalarni ishlab chiqish muhiti bilan chambarchas bog'liq MATLAB, tasvirni qayta ishlash asboblar to'plami ishlab chiquvchilarni yechimlarni topish, kodlash va disk raskadrovka algoritmlarini topishdan ozod