Masalani yechishning algoritmi
1.
Boshlash
2.
i,j : i
j
)
2
2
(
)
1
1
(
=
=
L
D
L
D
bajarish
3.
Delete(Array,j), Delete(Array,i)
,
2
)
1
2
2
2
2
)
T
(T
)
)
-y
(y
)
-x
(x
(
aMax)
- a
a
(aMin
)
-y
(y
)
-x
(x
(
j
i
j
i
j
i
i
j
j
i
j
i
=
+
+
41
4.
i,j : i
j
5.
bajarish Delete(Array,j), Delete(Array,i)
8.
Tugatish
Icki dastur tavsifi
Subdoutine NextDotCW
NextDotCW usuli, chiziqning konturidagi navbatdagi nuqtani qidirishni "soat
yo’nalishi bo’yicha" amalga oshiradi, buning natijasida chiziq kontur atrofida
kesiladi. Bu distortionlarni tuzatish uchun algoritmni amalga oshirish uchun
mo’ljallangan va kirish tasvirida jonsizlarni qidirishda ishlatiladi. Kichik dasturning
sxemasi Rasm. 2.7.
CPoint TFingPicture :: KeyingiDotCW (const CPoint nuqta, int va vec)
Ushbu subroutine uchun kirish: CPoint nuqta - ma’lumotlar strukturasi - nuqta {x,
y} dan siz qo’shni nuqtani topishingiz kerak; int vec - oldingi o’tishning yo’nalishi,
va [0..7]. Qidiruvni tezlashtirish uchun foydalaniladi; COLORREF clMas [9] -
atrofdagi nuqtalarning ranglar majmuasi; Ushbu muntazamli chiqimlar quyida
keltirilgan: CPoint incXY [8] - qo’shni fikrlarni koordinatalari; PointPoint nuqta
nuqtasiga ulashgan newDot - topilgan nuqta CPoint. Nuqtadan topilgan ulashgan
nuqtaga o’tish "soat yo’nalishi bo’yicha" yo’lni hosil qiladi.
Subdutin NextDotCCW NextDotCCW usuli, chiziq konturidagi navbatdagi
nuqtani qidirishni "soat teskari yo’nalishda" amalga oshiradi, buning natijasida
chiziq kontur bo’ylab harakatlanadi. Bu distortionlarni tuzatish uchun algoritmni
amalga oshirish uchun mo’ljallangan va kirish tasvirida jonsizlarni qidirishda
ishlatiladi.
Kichik dasturning sxemasi Rasm.
Sintaksis:
CPoint TFingPicture ::
KeyingiDotSCW (const CPoint nuqta, int va vec)
,
2
)
1
2
2
2
2
)
T
(T
)
)
-y
(y
)
-x
(x
(
aMax)
- a
a
(aMin
)
-y
(y
)
-x
(x
(
j
i
j
i
j
i
i
j
j
i
j
i
=
+
+
42
Ushbu subroutine uchun kirish: CPoint nuqta - ma’lumotlar strukturasi - nuqta {x,
y} dan siz qo’shni nuqtani topishingiz kerak; int vec - oldingi o’tishning yo’nalishi,
va [0..7]. Qidiruvni tezlashtirish uchun foydalaniladi; COLORREF clMas [9] -
atrofdagi nuqtalarning ranglar majmuasi; Ushbu muntazamli chiqimlar quyida
keltirilgan: CPoint incXY [8] - qo’shni fikrlarni koordinatalari; PointPoint nuqta
nuqtasiga ulashgan newDot - topilgan nuqta CPoint. Nuqta nuqtadan topilgan
ulashgan nuqtaga o’tish soatbo’yicha teskari tomonga buriladi "KeyingiDotCW"
sxemasi
Rasm. 2.7
Dastur sxemasi «NextDotSCW»
begin
Конец
1.
i =
vec,
2.
step =
0;
3.
newdot
= dot;
clMas[i+1]
< clMas[i]
4.
vec=(i
+1)%8;
5.
newdot.
x=dot.x
+incXY[vec].x
6.
newdot.
Да
Нет
7.
i =
(i+1)%8;
step++;
step <= 8
Да
Нет
43
Rasm. 2.8
1.5.3. Subroutine LookPic
LookPic subroutine yuklangan tasvirni qayta ishlash va papillar satrlari ro’yxatini
olish uchun mo’ljallangan. Har bir yo’nalish bitta nuqta bilan belgilanadi {x, y}.
Kichik dasturning sxemasi Rasm. 2.9.
Sintaksis:
ro’yxati TAnalysePicture :: LookPic ()
Ushbu subroutine uchun kirish:
TFingPicture * pic - ishlov berish uchun yuklangan xotirada bitmap ko’rsatgichi
Ushbu muntazamli chiqimlar quyida keltirilgan:
ro’yxati Map - rastrdagi papillar satrlari ro’yxati.
begin
end
8.
i =
vec,
9.
step =
0;
10.
newdot
= dot;
clMas[i+1]
< clMas[i]
11.
vec=(i+1)
%8;
12.
newdot.x=
dot.x+incXY[(8-
vec)%8].x;
13.
newdot.y=
Да
Нет
14.
i =
(i+1)%8;
step++;
step <= 8
Да
Нет
44
Amaldagi o’zgaruvchilar:
Xarita - papillar naqshidagi qayta ishlangan chiziqlar ro’yxati, har bir yo’nalish {x,
y} nuqtasiga to’g’ri keladi.
Amaliy qo’llanmalar:
Pic.GetPixel (x, y) - rastr pic bo’yicha koordinatalar (x, y) bilan piksel rangini
beradi;
ClearLine (pic, x, y) - rasmni rastrdagi GetPixel (x, y) rangli maydonni o’chiradi.
"LookPic" sxemasi
45
ha
begin
pic != null
ha
Yo’q
Rasm
yuklanmadi
Map = null
i = 0
j = 0
Map = LookPic()
i = 0
ChangeN = 0
{I,j}
Ì
Map
ClearLine(pic, i, j)
j < pic.width
Yo’q
ha
i < pic.height
end
Yo’q
pic.GetPixel(I,j)
==
черный
ha
j = 0
i++
A
A
j++
B
B
Yo’q
Rasm. 2.9
ChangeLine subroutine
ChangeLine subroutine rastrdagi chiziqni o’zgartirish uchun, yopishqoqlik va
tanaffusni to’g’rilaydi. Kichik dasturning sxemasi Rasm. 2.10.
Sintaksis:
int TAnalysePicture :: ChangeLine (ro’yxat :: iterator _dot, ro’yxat
& _map)
46
Ushbu subroutine uchun kirish:
TFingPicture * pic - ishlov berish uchun yuklangan xotirada bitmapga ko’rsatgich;
list :: iterator _dot - ishlayotgan mavjud satrga ko’rsatgich;
ro’yxati & _map - rastrdagi qayta ishlangan chiziqlar ro’yxati.
Ushbu muntazamli chiqimlar quyida keltirilgan:
int changeN - rastrda tuzilgan o’zgarishlar soni;
TFingPicture * pic - kirish tasvirini qayta ishlash natijasida o’zgarishi mumkin.
Amaldagi o’zgaruvchilar:
Dot0, nuqta nuqta - ishlangan liniyaning konturiga tegishli. Boshlang’ich qiymati
dot0 = _dot hisoblanadi.
vec0, vec1 - ananaviy yo’nalish;
keyingi bosqichga o’tish uchun qadam-qadam;
alfaTest pappillar konturining kuchli egriligini aniqlaydigan oldindan belgilangan
sobitdir.
Amaliy qo’llanmalar:
GetVec (dot0, dot1) - dot0 dan dot1gacha yo’nalish;
NextDotCW (dot0, qadam) - nuqta nuqtalari orqali nuqta koordinatalarini olish.
Adezyon va sinishi, ssp.
«ChangeLine» sxemasi
47
begin
dot1=NextDotCW
(dot0, step);
vec0=GetVec
(dot0, dot1);
Dot0 = dot1;
dot1=NextDotCW
(dot0, step);
vec1=GetVec
(dot0, dot1);
end
Нет
|vec1
– vec0|
< alphaTest
Да
Да
Birlashtirishmi?
Нет
changeN++
chiziqlarini ajratish
Да
ajralish
changeN++
birlashtirish
Нет
Boshlang’ich
nuqtaga borish
Да
Нет
Rasm. 2.10
ReadPic muntazamligi
Rastrdagi ananaviy funktsiyalarni qidirish uchun ReadPic subroutine dasturini ishga
tushiring. Kichik dasturning sxemasi Rasm. 2.11.
Sintaksis:
TAbsFing TAnalysePicture :: ReadPic (ro’yxat :: iterator_dot)
Ushbu subroutine uchun kirish:
48
TFingPicture * pic - ishlov berish uchun yuklangan xotirada bitmapga ko’rsatgich;
list :: iterator _dot ishlov berilayotgan joriy satrning ko’rsatgichidir.
Ushbu muntazamli chiqimlar quyida keltirilgan:
TAbsFing absfing - ananaviy funktsiyalar parametrlari ro’yxati. 2.1.3.
Amaldagi o’zgaruvchilar:
Dot0, nuqta nuqta - ishlangan liniyaning konturiga tegishli. Boshlang’ich qiymati
dot0 = _dot;
vec0, vec1 - ananaviy yo’nalish;
keyingi bosqichga o’tish uchun qadam-qadam;
alfaTest pappillar konturining kuchli egriligini aniqlaydigan oldindan belgilangan
sobitdir.
Amaliy qo’llanmalar:
GetVec (dot0, dot1) - dot0 dan dot1gacha yo’nalish;
NextDotCW (dot0, qadam) - nuqta nuqtalari orqali nuqta koordinatalarini olish.
Bo’linish va tugatish-ga qarang.
DotsFilter subroutine DotsFilter subroutine topilgan ananaviy funktsiyalar
ro’yxatini tartiblashtirish va vazifalar ro’yxatini ajratib ko’rsatish uchun
mo’ljallangan. Kichik dasturning sxemasi
Rasm. 2.12. Sintaksis: int
TAnalysePicture :: DotsFilter (TAbsFing & _dots) Ushbu subroutine uchun kirish:
TAbsFing & _dots - rastrda topilgan ballar ro’yxati, papillar modelining ob’ekt
tavsifiga mos kelmasligi kerak bo’lgan kerakli nuqtalarga qo’shimcha ravishda -
mintions, ortiqcha, doimiy bo’lmagan nuqtalarni o’z ichiga oladi.
Ushbu muntazamli chiqimlar quyida keltirilgan:
TAbsFing _dots - parametr parametrlari ro’yxati, format formatda tavsiflanadi
Amaliy qo’llanmalar:
Kesish (nuqta) - bu nuqta kesiklar va begona jismlar tomonidan yaratilgan ballarni
nazarda tutadimi (2.4.4-bandga qarang);
Filtr (dot1, dot2) - filtrlash holati (2.4.4-bandga qarang).
"ReadPic" sxemasi
49
Начало
dot1=NextDotCW
(dot0, step);
vec0=GetVec
(dot0, dot1);
Dot0 = dot1;
dot1=NextDotCW
(dot0, step);
vec1=GetVec
(dot0, dot1);
Конец
Нет
|vec1
– vec0|
< alphaTest
Да
Да
Раздвоение?
Нет
Type =
раздвоение
Да
Окончание?
Type =
окончание
Нет
Пройдена
начальная
точка
Да
A
B
A
B
Alpha =
ориентация
локальной особенности
absFing +=
{dot0, Alpha, Type}
Нет
Rasm. 2.11
50
Sxema podprogrammi «DotsFilter»
Начало
i = 0
Delete(_dots, i)
Конец
Нет
Порез(_dots[i])
?
Нет
i < |_dots|
Да
i++
Да
A
A
i = 0
j = I +1
Delete(_dots, i)
Delete(_dots, j)
Нет
Filter(_dots[i],
_dots[j])?
Да
j++
Нет
j < |_dots|
Да
i++
j = i+1
Нет
i < |_dots|-1
Да
Rasm. 2.12
Subroutine AnalysePicture
AnalyzePicture subroutine yuklangan tasvirni qayta ishlash va keyinchalik saqlash
va taqqoslash uchun undan ob’ekt tasvirini olish uchun mo’ljallangan. Kichik
dasturning sxemasi Rasm. 2.13.
Sintaksis:
51
TAbsFing TAnalysePicture :: AnalysePicture ()
Ushbu subroutine uchun kirish:
TFingPicture * pic - ishlov berish uchun yuklangan xotirada bitmapga ko’rsatgich.
Ushbu muntazamli chiqimlar quyida keltirilgan:
TAbsFing Mutlaq parametrlar mutlaq nuqtalarining koordinatalarini qayta
ro’yxatlash, format par. 2.1.3.
Amaldagi o’zgaruvchilar:
Pappillar naqshidagi qayta ishlangan chiziqlarning xaritalar ro’yxati, har bir satr {x,
y} nuqtasiga to’g’ri keladi;
ChangeN - rastrdagi o’zgarishlar sonini saqlaydi.
Amaliy qo’llanmalar:
LookPic - chop etishdagi satrlar ro’yxatini qaytaradi;
ChangeLine (i, Map) - chiziqni rastrga sozlash, yopishqoqlik va jarliklardan xalos
bo’lish;
ReadPic - muayyan fikrlar parametrlari ro’yxatini qaytaradi, sek. 2.1.3;
DotsFilter (Ret) - muayyan nuqtalarni ajratish, paragraf shartlariga qarang. 2.4.
Sinov bayonnomasi
Dasturning maqsadi. Dasturning asosiy maqsadi - papillon naqshlarining
strukturaviy vakili bilan taqqoslash asosida barmoq izlari bilan shaxsni aniqlash.
Sinov holatlarida ko’plab test barmoq izlari bo’lishi kerak va barmoq izi ularni bir-
biri bilan taqqoslash uchun kamida ikkita nusxada taqdim etilishi kerak.
Scheme subroutine "AnalysePicture".
52
Да
begin
pic != null
Да
Yo’q
Ko’rsatilma
gan rasmlar
Map = null
Ret = null
Map = LookPic()
i = 0
ChangeN = 0
ChangeN +=
ChangeLine(i,
Map)
i++
i < |Map|
Нет
Да
ChangeN > 0
Нет
Map = LookPic()
i = 0
Ret +=
ReadPic(i, Map)
i++
Да
i < |Map|
Нет
DotsFilter(Ret)
end
Rasm. 2.13
Xom ma’lumotlar
Test uchun turli xil odamlar va turli yoshdagi 50 ga yaqin bosim qo’llanildi. Rasm.
2.14, 2.15, 2.16 barmoq izlari bazasida o’zlari va boshqa barmoq izlari bilan
solishtirilishi kerak bo’lgan papillar modelining bir nechta tasvirlari. Tasviriy
ma’lumot barmoqni qorishtirish va oq qog’ozga qo’llash orqali olingan, undan keyin
bosim skaner qilingan va bmp fayllari sifatida kompyuterda saqlangan. Shu tarzda
olingan bosim yuqori sifatli emas, shuning uchun dasturning barcha bosqichlarini
to’liq tekshirishingiz mumkin.
53
Rasm. 2.14 va 2.15 da barmoq izlari bir xil barmoqni ko’rsatadi, ya’ni dastur
natijasida ular mos kelishi kerak. Rasm. 2.16 oldingi ikkita barmoq izidan farqli
o’laroq barmoq izi. Asl tasvir A1
Rasm. 2.14
A2 da’slepki ma’nisleri
Rasm. 2.15
B da’slepki ma’nisleri
54
Rasm. 2.16
1.5.8. Viktorina ishlari
Ichki tizimning natijasi. 2.17, 2.18, 2.19 kirish barmoq izlarining ingl.
Strukturaviy tavsif A1
Rasm. 2.17
A2 B ni’n’ strukturali’q ko’rinisi
55
Rasm. 2.18
B ni’n’ strukturali’q ko’rinisi
Rasm. 2.19
56
Tizim dasturiy sinovlari barmoq izini aniqlash Tizim dasturiy ta’minotini sinab
ko’rish uchun tasvirlarni sinovdan o’tkazish qism 2.6.6 da tasvirlangan kiritishga
topshirildi. Testlar 2-ilovada keltirilgan dasturchilar qo’llanmasiga va 3-ilovada
keltirilgan foydalanuvchi qo’llanmasiga muvofiq amalga oshirildi. Natijada Rasm.
2.17, 2.18, 2.19.
Olingan tizimli namoyishlar kirish tasvirlari bilan ingl. Taqqoslash orqali tekshirish
qiyin bo’lgan kirish tasvirlarini aniq tasvirlab beradi. Bosimlarda taxminan 40..50
soniyani tashkil etganligi statistik jihatdan aniqlandi, bu qiymat barmoq hajmiga
qarab keng chegaralarda farq qilishi mumkin. Sinov suratlari navbati bilan 19, 40,
37 ni topdi. Kichikroq miqdordagi test tasvirlari faqat to’liq chop etishning
bo’laklari va B belgisi katta barmoqdan kattaroq ko’rsatkich barmog’i ekanligi bilan
izohlanadi.
Qo’shimcha 4da siz A1 (1.bmp), A2 (R1_3rotate2.bmp) bosimlari bir-biriga
o’xshash va 1R1_1.bmp nashrida o’xshash ekanligini ko’rishingiz mumkin, chunki
ular o’ng qo’lning bosh barmog’ining barcha tasvirlari shaxs B belgisi (3l2_2.bmp)
A1 va A2 ning hech biriga to’g’ri kelmaydi, ammo 3l2_1.bmp bilan mos keladi, bu
ham to’g’ri natijadir, bu boshqa shaxsning o’ng qo’lining ko’rsatkich barmoq izlari.
Tajriba shuni ko’rsatdiki, ishlab chiqilgan dasturiy ta’minot o’xshash barmoq
izlarini taqqoslash va qidirishga qodir, ya’ni barmoq izini boshqaradigan shaxsni
aniqlash mumkin. Olingan natijalar kutilgan natijalarga to’g’ri keladi va qo’lda
taqqoslash bilan mos keladi. Buni tekshirish uchun 4-ilovada mavjud bo’lgan barcha
bosimlarning to’liq taqqoslanishi ko’zda tutilgan.
Dastur bilan bir qatorda, tahlil qilish va taqqoslash parametrlarini kichik tuzatishdan
keyin alfavitning harflarini tan olish uchun tuzilgan. Tasdiqlash uchun ma’lumotlar
bazasiga 2-rasmda ko’rsatilgan belgilar majmui kiritilgan. 2.20, keyinchalik alifboga
nisbatan Rasm. 2.21.
Ma’lumotlar bazasi alifbosi
57
Rasm. 2.20
Solishtirish alifbesi
Rasm. 2.21
Natijada, ishlab chiqilgan algoritm, eng kam o’zgarishlardan so’ng, belgilarni
aniqlash uchun mos bo’ldi. Ish natijalari 5-ilovada keltirilgan.
58
XULOSA
Qilingan ishlar natijasida shunga o’xshash barmoq izlarini qidirishni
avtomatlashtirish uchun uslub ishlab chiqildi va ushbu usul uchun dastur amalga
oshirildi. Dastur ananaviy funktsiyalarni ta’kidlab, odamni barmoq izlari bilan
avtomatik ravishda aniqlash uchun oqilona vaqtni beradi. Qo’lda aniqlash bilan
taqqoslaganda, tezlik va qulaylikdagi sezilarli daromad olinadi.
Ishlab chiqilgan kichik tizim identifikatsiya qilish tizimining ajralmas qismi
hisoblanadi. Ishlov berish bosib chiqarish sifatini yaxshilash imkonini beradi.
Olingan xarakterlar tasvirni juda yaxshi ta’riflaydi, bu tasvir saqlash uchun qulay va
yuqori darajada aniqlik bilan tanishishga imkon beradi.
Yaratilgan kichik tizim vahiyning rastr namoyishini kompakt saqlash va undan ko’p
avtomatlashtirish va boshqa faoliyat yo’nalishlari bo’yicha yanada rivojlantirish
uchun mos keladigan tizimli vakolatga aylantirish uchun mo’ljallangan tadqiqot
quyi tizimi sifatida qaralishi kerak.
Rivojlangan tizim yangi funktsional funktsiyalarni amalga oshiradi -
avtomatlashtirilgan strukturaviy tahlil uchun tasvirlarni tayyorlash.
59
Do'stlaringiz bilan baham: |