📄 report.html
字号:
<UL><LI>edges are identified via the image gradient and labeling</LI><LI>snakes start moving in random directions</LI><LI>once a snake attaches itself to an edge, it tags the edge as belongingto it - no other snake can attach after that</LI><LI>all edges get themselves one snake</LI><LI>if there are "unemployed" snakes, delete them</LI><LI>if there are edges left with no snakes attached to them, put more snakesin the colony let them attach to edges left</LI><LI>after that each snakes proceeds "snapping" itself onto theedge more and more, possibly breaking up at discontinuities and stretching</LI><LI>if no snakes change significanty, we are done and have an edge map,mapped with snakes</LI></UL></UL><H4><A HREF="#Index">to TOP</A></H4><P><HR></P><H4><A NAME="answers"></A>Answers to the Questions</H4><P>1. What algorithm did the snake demo use? Explain it? What are its limitations?</P><UL><P>The given snake algorithm implemented a dynamic programming snake optimizationstrategy (for details see the paper <I>"Using Dynamic Programmingfor Minimizing the Energy of Active Contours in the Presense of Hard Constraints"</I>by Amir A. Amini, Saed Tehrani, and Terry E. Weymouth). The differencefrom my implemetation of the greedy strategy was that the image force wascalculated at just one point (and there was a possibility to switch fromthe image force based on the gradient and the image itself), not over aneighborhood and that iterations of control point movement (adjustment)and optimization was done over the whole span of control points simultaneously.</P><P>Limitations of the algorithm include:</P><UL><LI>an inability to deal with discintinuities in the edge the snake isattracted to (the snake should be split in two at the point of discontinuity)</LI><LI>inability to "snap to" a very high curvature objects (e.g.,circle)</LI><LI>points "bunching up" on a high curvature edge</LI><LI>very limited "radius" of sensitivity to the large valuesof the image gradient</LI></UL></UL><P>2. What does your method do that is different then the give one? Explainit? What are the limitations?</P><UL><P>See <A HREF="#solution">How I solved it</A>, <A HREF="#assumptions">Assumptionsand Weaknesses</A>, and the answer to the previous question for a detaileddiscussion.</P></UL><P>3. How sensitive are the algorithms to setting the parameters alphaand beta? Why?</P><UL><P>The algorithms are quite sensitive to the values of those parameters.For example, setting alpha to a large value makes the snake control points"bunch up" on the areas of high curvature and ultimately convergeto a single point because alpha affects the weight that the algorithm assignsto the energy measure based on, effectively, the distance between the points.Large values of alpha also cause the snake to be resistant to the abruptchanges in the first derivative. Hence, no sharp edges are detected whenlarge values of alpha are used. I kept alpha very small, mainly to preventpoints from "bunching up."</P><P>Large values of beta force the snake to become a straight line - thecurvature is minimized in this case. However, I kept the value of betarelatively large but less than gamma (image force coefficient ), so thatif one control point is strongly attracted to an edge, it stays there sinceimage forces are strong and at the same time forces the nearest controlpoint unaffected (yet) by the image force to minimize the curvature dueto a large beta. When that control point moves quite close to the edge(and control point on the edge) so that image forces become strong, it"snaps" to the edge, now regardless of the beta since image forcesare stronger. This chain continues until all the control points are forcedonto the edge.</P><P>Small values of beta make the snake less "energetic" to minimizeits curvature.</P><P>I always kept values of gamma quite large since image force is by farthe most important element of the energy estimate - it forces the snakeonto the edge which is what we ultimately want.</P></UL><P>4. How stable are the algorithms with respect to initial placement ofthe snake in the image? Why?</P><UL><P>The stability of my implementation is much better due to a relativelylarge area of exploration for moving a control point to a new location.Placing just one control point on the edge forces the whole snake to "snap"to the edge due to the reasons described in the answer to the previousquestion.</P></UL><P>5. How stable are the algorithms with respect to the time step? Why?</P><UL><P>Time step bears no relevance to the stability of the algorithms workingon single still images. However, if we have to track an object/edge throughdifferent frames of a motion sequence, then we have to worry about thetime step - the smaller it is, the better. If we have a very small timestep we can track objects moving even at very large speeds since objectdisplacement from frame to frame is going to be relatively small and myimplementation of the algorithm will track the edge very well, because,as I already mentioned, the "exploration area" is relativelylarge. The stability of the given algorithm with respect to the time stepwas worse.</P></UL><P><HR></P><H4><A NAME="results"></A>Results</H4><P>1. Image 1.</P><P>Initial snake placement</P><P><IMG SRC="img1.jpg" SGI_SRC="/tmp_mnt/net/ac89/www-db3/classes/cs7322_97_spring/participants/template/midterm/ex1.gif" HEIGHT=410 WIDTH=519></P><P>Snake after 40 iterations of the algorithm (note the slow convergencedue to the small X and Y ranges)</P><P><IMG SRC="img1_1.jpg" SGI_SRC="/tmp_mnt/net/ac89/www-db3/classes/cs7322_97_spring/participants/template/midterm/ex1.gif" HEIGHT=410 WIDTH=519></P><P>2. Image 2.</P><P>Initial snake placement</P><P><IMG SRC="img2.jpg" SGI_SRC="/tmp_mnt/net/ac89/www-db3/classes/cs7322_97_spring/participants/template/midterm/ex2.gif" HEIGHT=410 WIDTH=519></P><P>Snake after 5 iterations of the algorithm (fast convergence - due tolarge values of X and Y ranges and small time step)</P><P><IMG SRC="img2_1.jpg" ALT="Image 2" SGI_SRC="/tmp_mnt/net/ac89/www-db3/classes/cs7322_97_spring/participants/template/midterm/ex2.gif" HEIGHT=410 WIDTH=518></P><P>3. Image 3 (next frame of the previous image)</P><P>Snake after 3 iterations of the algorithm (fast convergence - due tolarge values of X and Y ranges and small time step)</P><P><IMG SRC="img3_1.jpg" SGI_SRC="/tmp_mnt/net/ac89/www-db3/classes/cs7322_97_spring/participants/template/midterm/ex2.gif" HEIGHT=410 WIDTH=519></P><P>4. Image 4 (next frame of the previous image)</P><P>Snake after 3 iterations of the algorithm (fast convergence - due tolarge values of X and Y ranges and small time step)</P><P><IMG SRC="img4_1.jpg" SGI_SRC="/tmp_mnt/net/ac89/www-db3/classes/cs7322_97_spring/participants/template/midterm/ex2.gif" HEIGHT=410 WIDTH=519></P><H4><A HREF="#Index">to TOP</A></H4><P><HR></P><H4><A NAME="code"></A>Source Code</H4><UL><LI><A HREF="./snake_demo.m"><TT>snake_demo.m</TT> </A>: the main module</LI><LI><TT><A HREF="./snake.m">snake.m</A></TT>: the implementation of thegreedy snake optimization algorithm (one pass)</LI><LI><TT><A HREF="./clipValue.m">clipValue.m</A>:</TT> make a value passedto it as a parameter to lie within a range specified</LI><LI><TT><A HREF="./continuityEstimate.m">continuityEstimate.m</A>:</TT>calculates an estimate of the snake's continuity</LI><LI><TT><A HREF="./curvatureEstimate.m">curvatureEstimate.m</A>:</TT> calculatesan estimate of the snake's curvature</LI><LI><TT><A HREF="./imageForces.m">imageForces.m</A>:</TT> calculates anestimate of the image forces applied to the snake's control point in theneighborhood defined by the parameters passed to the function</LI></UL><P><HR></P><ADDRESS>Roman Khramets, <I><A HREF="mailto:khramez@cc.gatech.edu">khramez@cc.gatech.edu</A></I></ADDRESS></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -