1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
| Mat=imread('imag.bmp');
[H,W]=size(Mat)
for i=1:1:H
for j=1:1:W
s=(i-1)*W+j;
x(s,1)=i;
x(s,2)=j;
u(s)=1;
if Mat(i,j)<210
u(s)=-1;
end
end
end
for i=1:1:H*W
for j=1:1:W*W
G(i,j)=u(i)*u(j)*(x(i,:)*x(j,:)'+1)^4;
A(i,j)=0;
if i==j
A(i,j)=-1;
end
end
Aeq(i)=u(i);
e(i)=1;
B1(i)=0;
x1(i)=0;
Ib(i)=0;
Ub(i)=1000;
end
B=B1';
Ib=Ib';
Ub=Ub';
Beq=0;
x0=x1';
[a,fval] = fmincon(@(a)1/2*a'*G*a-e*a,x0,A,B,Aeq,Beq,Ib,Ub)
n=0;
for i=1:1:100
n=n+a(i)*u(i)*(x(i,:)*x(1,:)'+1)^4;
end
b=u(1)-n;
for h=1:1:10
A=0;
B=0;
C=0;
D=0;
E=0;
for i=1:1:100
A=A+a(i)*u(i)*x(i,2)^4;
B=B+a(i)*u(i)*3*(h*x(i,1)+1)*x(i,2)^3;
C=C+a(i)*u(i)*6*(h*x(i,1)+1)^2*x(i,2)^2;
D=D+a(i)*u(i)*((h*x(i,1)+1)^2*x(i,2)+3*(h*x(i,1)+1)^3*x(i,2)+(h*x(i,1)+1)*x(i,2)^3);
E=E+a(i)*u(i)*(h*x(i,1)+1)^4;
end
E=E+b;
P=[A B C D E];
r=roots(P);
for i=1:1:4
if imag(r(i))==0
if r(i)>=0
figure(1),plot(r(i),h,'og'),hold on;
end
end
end
end
figure(2),imshow(Mat); |
Partager