Draw energy in active contour method

I have an enrgy equation like enter image description here

The algorithm is implemented by Lankton , and you can download the code and image code . I want to build on this code to draw an energy function. Note that F is calculated in this code. My target energy figure such as enter image description here

I tried to implement it using this code. But this is the wrong answer

  Energy=[];
  %--main loop
  for its = 1:max_its   % Note: no automatic convergence test

    %-- get the curve narrow band
    idx = find(phi <= 1.2 & phi >= -1.2)';  
    [y x] = ind2sub(size(phi),idx);

    %-- get windows for localized statistics
    xneg = x-rad; xpos = x+rad;      %get subscripts for local regions
    yneg = y-rad; ypos = y+rad;
    xneg(xneg<1)=1; yneg(yneg<1)=1;  %check bounds
    xpos(xpos>dimx)=dimx; ypos(ypos>dimy)=dimy;

    %-- re-initialize u,v,Ain,Aout
    u=zeros(size(idx)); v=zeros(size(idx)); 
    Ain=zeros(size(idx)); Aout=zeros(size(idx)); 
    F_energy=zeros(size(idx));
    %-- compute local stats
    for i = 1:numel(idx)  % for every point in the narrow band
      img = I(yneg(i):ypos(i),xneg(i):xpos(i)); %sub image
      P = phi(yneg(i):ypos(i),xneg(i):xpos(i)); %sub phi

      upts = find(P<=0);            %local interior
      Ain(i) = length(upts)+eps;
      u(i) = sum(img(upts))/Ain(i);

      vpts = find(P>0);             %local exterior
      Aout(i) = length(vpts)+eps;
      v(i) = sum(img(vpts))/Aout(i);
      F_energy(i)=sum((img(upts)-u(i)).^2)+sum((img(vpts)-v(i)).^2); %% Compute the first term in (5) without integrate
    end   

    %-- get image-based forces
    F = -(u-v).*(2.*I(idx)-u-v);
    % Compute the second term in (5) 
    u=phi<=0;
    bw2=bwperim(u);
    Length_phi=sum(sum(bw2));
    Energy=[Energy (sum(F_energy(:))+alpha.*Length_phi)];
    end

Maybe this is such a difficult task because the energy function is so complex. However, all this is implemented using the above code, with the exception of the term enrgy. I hope you understand and help me draw an enrgy function. thanks in advance

. . - . . . enter image description here

+4
1

, , ? , , , :

, :

, B (x, y), , .

, , , .

, :

Results

, X . . ( ), . .

( ):

I = imread('Mushroom.png');         %-- load the image
m = false(size(I,1),size(I,2));     %-- create initial mask
m(60:100,15:80) = true;             %-- initial mask coordinates

: 400
: 20

, .

+2

All Articles