% Pred spustenim prosim skontrolujte nazov nacitaneho obrazu
% Prosim odkomentujte funkciu ktoru chcete pouzit (ctrl+t)
% Prosim zakomentujte ostatne funkcie, ktore nechcete pouzit (ctrl+r)
%% zakladne cistenie
clc; clear all; close all;
%% spracovanie obrazu
Im_ihla=imread('IMG002.jpg');
G_ihla=rgb2gray(Im_ihla);
G_ihla=imadjust(G_ihla);
%%  prevod na ciernobiely obraz
VYSL_bw=im2bw(G_ihla,0.45);%0,51, experimentalne ziskane data
VYSL_bw= imcomplement(VYSL_bw);
h = fspecial('average', [5 5]);
VYSL_bw=imfilter(VYSL_bw,h);
[x,y,x1,y1]=search2(VYSL_bw);% search2 najde koncove body
x_rot=abs(x1-x);
y_rot=abs(y1-y);
konst=57.29577951; %radian to degrees
if(y1<y) % podmienka smeru otacania
angle=-(atan(x_rot/y_rot)*konst);
else
angle=(atan(x_rot/y_rot)*konst);
end
Im_rot=imrotate(VYSL_bw,angle);
figure(1)
subplot(2,2,1);
imshow(VYSL_bw);
hold on;
X=[x x1];
Y=[y y1];
plot(Y,X);title(['Angle before rotation is set to ',num2str(angle),' degree'])
[x,y,x1,y1]=search2(Im_rot);
subplot(2,2,2);
imshow(Im_rot);
hold on;
X=[x x1];
Y=[y y1];
plot(Y,X);title(['Image was rotated by',num2str(angle),' degree'])
[x,y,x1,y1]=search2(Im_rot);% rotacia druhy krat 
x_rot=abs(x1-x);
y_rot=abs(y1-y);
if(y1<y)
angle=-(atan(x_rot/y_rot)*konst);
else
angle=-(atan(x_rot/y_rot)*konst);
end
Im_rot=imrotate(Im_rot,angle);
subplot(2,2,3);
imshow(Im_rot);
hold on;
[x,y,x1,y1]=search2(Im_rot);
X=[x x1];
Y=[y y1];
plot(Y,X);title(['Angle is ',num2str(angle),' degree'])
% imcrop
[x,y,x1,y1]=search2(Im_rot);
tolerance=30 ;% v pixeloch
tolerance2=30;% v pixeloch
Im_crop = imcrop(Im_rot, [(y-tolerance2) (x-tolerance*10)  (y1-y+tolerance2*2)  (x1-x+tolerance*10*2)]);
figure(2)
imshow(Im_crop);
hold on;
[x,y,x1,y1]=search2(Im_crop);
X=[x x1];
Y=[y y1];
plot(Y,X)
%% ohnutie tela
Ohnutie=search_ohnutie(Im_crop,X(1));
%% opotrebovany hrot
% [hodnotahrotu]=search_hrot(Im_crop);
%% diera v tele
% diera=search_diera(Im_crop);
%% zlom v tele alebo zle nasnimana ihla
% zlom=search_zlom(VYSL_bw);
%% vyhladanie uska
% % vypocitam relativnu vzdialenost od lavej strany 10%
% [rows,cols]=size(Im_crop);
% show_prec=10; %percento zadane
% show_prec=show_prec/100;
% vzdial=round(cols*show_prec);
% Im_usko=imcrop(Im_crop,[0 0 vzdial rows]);
% % hladanie uska
% usko=100; % v pixeloch, po kalibracii je treba prepocitat pixle na mm
% toler_uska=10; % v percentach
% Usko=search_usko2(Im_usko,usko,toler_uska);
% figure(3)
% imshow(Im_usko);