Matlab dasturining tavsifi Insonni barmoq izlari bilan identifikatsiyalashni amalga oshiradigan dastur quyidagi ishlov berish funktsiyalarini o’z ichiga oladi.
Tasvirni yaxshilash uchun oldindan ishlovni amalga oshiradigan func_ improve () funktsiyasidan foydalaning. Ushbu funktsiya parametr sifatida tasvirni oladi, keyin rasm segmentatsiyasini, yo’nalishni va filtrlashni bajarish uchun kerakli funktsiyalarni bajarish uchun kerakli qiymatlarni parametr sifatida o’tkazish uchun chaqiriladi, masalan, tasvirlarni qabul qilish uchun blktamano - blok hajmi o’zgaradi va treys uchun belgilangan qiymat . Ichki jarayon qaytib kelgan o’zgaruvchilar, tasvirni qayta ishlash natijasi bilan tugallanganda Funktsiya kodi:
function [ binim, mask, oimg ] = func_improve( img ) blktamano = 5; thresh = 0.085; norm = rgcment(enhimg, blktamano, thresh); oimg = rgort(norm, 1, 3, 3);
[norm, mask] = rgcment(enhimg, blktamano, thresh);
[freq, medfreq] = rgfr(norm, mask, oimg, 32, 5, 5, 15); binim = rgfi(norm, oimg, medfreq.*mask, 0.5, 0.5, 1) > 0; end
Maxsus nuqtalarni tanlash uchun ushbu func_ improve () funktsiyasi vazifasini amalga oshiradigan getFingers () funktsiyasidan foydalaning va keyin barmoq izi tasvirining parametrlarini hisoblab chiqadi. Quyida funktsiya kodining bir qismi ko’rsatilgan. Rasmni yaxshilaganidan so’ng, getFingers () funktsiyasi bwmorph () funktsiyasini chaqirib, tasvir skeletlari topilishi jarayonini amalga oshiradi. So’ngra, bwmorph () funktsiyasining natijasini olish uchun, ushbu funktsiyaning ichida, formulalarni (3) qo’llash orqali tasvirning skeletlari topilgan minutlarni izlang. Keyin clcMinute () funktsiyasini chaqiradi, ortiqcha bo’lmagan parchalarning piksellarini olib tashlaydi va tasvir shablonining natijalarini vektorini hosil qiladi.
Funktsiya kodi:
function [ result ] = getFingers( img)
[ binim, mask, oimg ] = func_improve(img); thinn = bwmorph(inv_binim, ‘thin’,Inf); contMin = 1;
minussi(contMin, :) = [0,0,0] CN = 0; sx=0; sy=0; for i = 1:8
t1 = p(thinn, x, y, i); t2 = p(thinn, x, y, i+1); CN = CN + abs (t1-t2); end cn = cn / 2;
if cn ~= 3 && cn ~= 4 || m == 1
for n=1:8
if reverse_p == 0 || iter > 1 [ta, xa, ya] = p(thinn, x1, y1, n); else
[ta, xa, ya] = p(thinn, x1, y1, 9-n); end
if ta == 1 && (xa ~= p1x || ya ~= p1y) && (xa ~= x
|| ya ~= y)
p1x = x1; p1y = y1; x1 = xa; y1 = ya; break; end end end
result=clsMinute(minussi,CN,thinn);
end
O’chirishlarni olib tashlash uchun clcMinute () funktsiyasi mavjud bo’lib, ushbu funktsiya tasvirni piksellar bilan ko’zdan kechiradi, MINUCIUS ning vektorining qiymatini kirish parametri sifatida oladi va unga mos keladigan juftlarni px va py vektorlarini x va y koordinatalari bilan to’ldiradi va keyin tasvirni aylantirish uchun aylanish jarayonida ishlatiladigan bayroqchani belgilaydi va belgilaydi qaysi piksellar haqiqiy, tugatish va bifurkatsiyaga to’g’ri keladi.
Funktsiya kodi:
function [indic] = clsMinute(m, CN, img) index = 1; indc = [];
for i = 1:size(m,1) p_x m(i,1);
p_y = m(i,2); p_d = 0; l_x = 0; l_y = 0; flag = 0;
while flag == 0 && CN(i) == 1
ind = 1;
while flag == 0 && ind <= size(m,1)
if p_x == m(ind,1) && p_y == m(ind,2)
flag = 1;
continue; end
ind = ind + 1; end
for j = 1:8
[t,nx,ny] = p(img, p_x, p_y, j);
if t == 1 && (nx ~= l_x || ny ~= l_y)
l_x = p_x;
l_y = p_y;
p_x = nx;
p_y = ny;
break; end end
p_d = p_d + 1; end if flag == 0
indic(index) = i;
index = index + 1; end
Barmoq izini ma’lumotlar bazasida saqlangan andozalar bilan taqqoslash uchun evalitsion () funktsiyasidan foydalanamiz. Fmatching () funktsiyasi TEMP1 va TEMP2 bilan solishtirish uchun ikkita andozani oladi va tashqi funktsiya tramfor () yordamida ishlashni amalga oshiradi. TEMP1 uchun count1 o’zgaruvchilar qiymatlarini va TEMP2 uchun count2 qiymatlarini mos ravishda, o’lcham funktsiyasi bilan belgilangan oralig’ida naqshlar ustidan yineleyak uchun ishlatiladi. Shabloni o’tkazish jarayonidan so’ng baholash () funktsiyasi tegishli daqiqalar orasidagi masofani hisoblash uchun chaqiriladi.
Funktsiya kodi:
function [ S ] = fmatching( TEMP1, TEMP2) disp(TEMP1); disp(TEMP2);
if nargin==2;
flag=0; end TEMP1= TEMP1(TEMP1(:,3)<4,:); TEMP2= TEMP2(TEMP2(:,3)<4,:);
cont1=size(TEMP1,1);
cont2=size(TEMP2,1);
bi=0; bj=0; ba=0; S=0;
for
i=1:cont1
T1=tramfor(TEMP1,i);
for j=1:cont2
if TEMP1(i,3)== TEMP2(j,3) T2=tramfor(TEMP2,j);
for a=-3:3 T3=tramfor(T2,a*pi/180);
sm=evaluation(T1,T3);
if SS=sm; end
evaluation() funktsiyasi shablonlarning har birining hajmi va spetsifikatsiyasini aniqlaydigan va x, y koordinatalari bilan juftliklar orasidagi masofani hisoblashlar operatsiyasini amalga oshiradigan ichki funktsiyani chiroylik () funktsiyasida aylantirilgan shablonlarga mos keladigan T1 va T2 o’zgaruvchilarni oladi. Masofalar dx va dy qiymatlari bilan ifodalanadi, bu funktsiyaning bajarilishi oxirida masofa hisoblash operatsiyalari natijalari bilan o’zgaruvchan sm ga qaytariladi. Funktsiya kodi:
function [ sm ] = evaluation( T1, T2 )
Cont1=size(T1,1);
Cont2=size(T2,1); n=0;
T=15;
TT=14;
for i=1:Cont1
Encuent =0; j=1;
while (Encuent ==0) && (j<=Cont2) dx=(T1(i,1)-T2(j,1));
dy=(T1(i,2)-T2(j,2));
d=sqrt(dx^2+dy^2);
if dDTeta=abs(T1(i,3)-T2(j,3))*180/pi;
DTeta=min(DTheta,360-DTeta);
if DTetan=n+1;
Encuent =1;
end end
III. BARMOQ IZLARI TASVIRLARINI TAHLIL QILUVCHI
Do'stlaringiz bilan baham: |