Tasvirlarga ishlov berish tizimlari. Ularning klassifikatsiyasi va qiyosiy tahlili.
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