
Re: measured boundary conditions
Posted:
Nov 18, 2012 3:26 AM


"Carl S." wrote in message <k8a2o8$2sj$1@newscl01ah.mathworks.com>... > "Carl S." wrote in message <k89olv$rr$1@newscl01ah.mathworks.com>... > > "Carl S." wrote in message <k885d7$h85$1@newscl01ah.mathworks.com>... > > > "Carl S." wrote in message <k879vh$k4n$1@newscl01ah.mathworks.com>... > > > > "Bruno Luong" <b.luong@fogale.findmycountry> wrote in message <h5rf05$nb8$1@fred.mathworks.com>... > > > > > Doug, I have a hard time to explain why using pointwise Neumann condition is dangerous in a simple term. So I continue to provide indication, and hope one of them will speak to you. If you are familiarize with boundary single layer potential, you will see that the normal derivative have a jump relation related to the local value of the potential (see Colton & Kress book). This show that we can set pointwise Neumann bc at any values, though the Banach L^p norm (1<=p<infinity) of the "trace" can be anything else. There are an infinity harmonic functions that meet the *pointwise* Neumann condition. > > > > > > > > > > I might not fully understand where your Neumann data are from (I understand from measurement), but you have to be careful about how to plug them into the PDE, even if you think you can define it in the boundary.m. > > > > > > > > > > Bruno > > > > > > > > Hi, I think this is the correct place to ask my question that is about Sobolev. The codes are ; > > > > > > > > u=NeumannBoundCond(u); > > > > [u_x,u_y]=gradient(u); > > > > s=sqrt(u_x.^2 + u_y.^2); > > > > smallNumber=1e10; > > > > Nx=u_x./(s+smallNumber); % add a small positive number to avoid division by zero > > > > Ny=u_y./(s+smallNumber); > > > > curvature=div(Nx,Ny); > > > > > > > > diracPhi=Dirac(u,epsilon); > > > > areaTerm=diracPhi.*g; % balloon/pressure force > > > > > > > > edgeTerm=diracPhi.*(vx.*Nx+vy.*Ny) + diracPhi.*g.*curvature; > > > > % u=u + timestep*(lambda*EdgeTerm + alfa*areaTerm); > > > > > > > > SobolevGradEdgeTerm = (1./(Imggradient(u).^2)).*edgeTerm; > > > > u=u + timestep*(lambda*SobolevGradEdgeTerm + alfa*areaTerm); > > > > > > > > When I multiply the edgeTerm and lambda then I can see the evoluation of the active contour. But I want to use Sobolev gradient. (So, I have added the last two code lines.) In this case, when I multiply the lambda with SobolevGradEdgeTerm then the active contour disappears in the figure. What is the mistake ? > > > > > > I tried this > > > SobolevGradEdgeTerm = (1./(eye(256)gradient(u).^2)).*edgeTerm; > > > but I have still the same problem :( > > > > (eye(256)gradient(u).^2) becomes zero. Therefore, > > 1./(eye(256)gradient(u).^2)) becomes inf. Therefore, the active contour disappears > > > > How to solve this problem ? > > If I assign a small value that is 1e10.*randi(1,1) instead of zeros then the above codes causes oversegmentation :(
I have tried this temp2 = 1./(eye(size(u))gradient(u).^2); temp2(isequal(temp2, inf)) = 1e10; but temp2 have still inf values, why ? please help me

