كد:
%% initializeing the program
clc;
clear all;
close all;
%%
n=16;
l0=imread('left0.jpg');
l0=rgb2gray(l0);
l0=im2bw(l0,0.5);
%%
l1=imread('left1.jpg');
l1=rgb2gray(l1);
l1=im2bw(l1,0.5);
%%
l2=imread('left2.jpg');
l2=rgb2gray(l2);
l2=im2bw(l2,0.5);
%%
l3=imread('left3.jpg');
l3=rgb2gray(l3);
l3=im2bw(l3,0.5);
%%
l4=imread('left4.jpg');
l4=rgb2gray(l4);
l4=im2bw(l4,0.5);
%%
l5=imread('left9.jpg');
l5=rgb2gray(l5);
l5=im2bw(l5,0.5);
%%
l44=imread('left8.jpg');
l44=rgb2gray(l44);
l44=im2bw(l44,0.5);
%%
l33=imread('left7.jpg');
l33=rgb2gray(l33);
l33=im2bw(l33,0.5);
%%
r0=imread('right0.jpg');
r0=rgb2gray(r0);
r0=im2bw(r0,0.5);
%%
r1=imread('right1.jpg');
r1=rgb2gray(r1);
r1=im2bw(r1,0.5);
%%
r2=imread('right2.jpg');
r2=rgb2gray(r2);
r2=im2bw(r2,0.5);
%%
r3=imread('right3.jpg');
r3=rgb2gray(r3);
r3=im2bw(r3,0.5);
%%
r4=imread('right4.jpg');
r4=rgb2gray(r4);
r4=im2bw(r4,0.5);
%%
r5=imread('right9.jpg');
r5=rgb2gray(r5);
r5=im2bw(r5,0.5);
%%
r11=imread('right5.jpg');
r11=rgb2gray(r11);
r11=im2bw(r11,0.5);
%%
r22=imread('right6.jpg');
r22=rgb2gray(r22);
r22=im2bw(r22,0.5);
%%
r33=imread('right7.jpg');
r33=rgb2gray(r33);
r33=im2bw(r33,0.5);
%%
r44=imread('right8.jpg');
r44=rgb2gray(r44);
r44=im2bw(r44,0.5);
subplot(2,6,1);
imshow(l0);
subplot(2,6,2);
imshow(l1);
subplot(2,6,3);
imshow(l2);
subplot(2,6,4);
imshow(l3);
subplot(2,6,5);
imshow(l4);
subplot(2,6,6);
imshow(l5);
subplot(2,6,7);
imshow(r0);
subplot(2,6,8);
imshow(r1);
subplot(2,6,9);
imshow(r2);
subplot(2,6,10);
imshow(r3);
subplot(2,6,11);
imshow(r4);
subplot(2,6,12);
imshow(r5);
figure;
% x[n,10000]
x=[reshape(l0,1,[]);reshape(l1,1,[]);reshape(l2,1,[]);reshape(l3,1,[]);reshape(l4,1,[]);reshape(l5,1,[]);
reshape(r0,1,[]);reshape(r1,1,[]);reshape(r2,1,[]);reshape(r3,1,[]);reshape(r4,1,[]);reshape(r5,1,[]);
reshape(r11,1,[]);reshape(r22,1,[]);reshape(r33,1,[]);reshape(r44,1,[]);
];
% t[n,6]
t=[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 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;
];
%%
b=zeros(1,6);
b_old=zeros(1,6);
y_in=zeros(1,6);
y=zeros(1,6);
w=zeros(10000,6);
w_old=zeros(10000,6);
s=0;
epoch=0;
%%
while s==0
epoch=epoch+1;
for i=1:n
for k=1:6
y_in(k)=0;
for j=1 : 10000
y_in(k)=y_in(k)+ w(j,k)*x(i,j);
end
y_in(k)=y_in(k)+b(k);
if(y_in(k)>0)
y(k)=1;
elseif (y_in(k)<0)
y(k)=-1;
else
y(k)=0;
end
if(t(i,k)~=y(k))
for z=1:10000
w(z,k)=w(z,k)+x(i,z)*t(i,k);
end
b(k)=b(k)+t(i,k);
end
end
end
if ((w_old==w))
s=1;
else
w_old=w;
b_old=b;
end
end
%%
[fn,path]=uigetfile('*.jpg','select your hand to count its finger');
test=imread([path,fn]);
test=imresize(test,[100 100]);
test=rgb2gray(test);
test=im2bw(test,0.5);
test=reshape(test,1,[]);
% test
y=0;
%r=randi(20)+1
result=zeros(1,6);
for k=1:6
for i=1:10000
y=y+test(i)*w(i,k);
end
y=y+b(k);
if(y>=0)
result(k)=1;
else
result(k)=-1;
end
y=0;
end
disp(['Your Output array is : ']);
disp(result);
if result== [ 1 -1 -1 -1 -1 -1]
disp('<moch maste>');
imshow (l0);
elseif result== [ -1 1 -1 -1 -1 -1]
disp('1 finger');
imshow(l1);
elseif result==[-1 -1 1 -1 -1 -1]
disp('2 finger');
imshow(l2);
elseif result==[ -1 -1 -1 1 -1 -1]
disp('3 finger');
imshow(l3)
elseif result== [ -1 -1 -1 -1 1 -1]
disp('4 finger');
imshow(l4);
elseif result==[ -1 -1 -1 -1 -1 1 ]
disp('5 finger');
imshow(l9)
else
disp('Im sorry');
end