作者Leon (Achilles)
站内MATLAB
标题Re: [绘图] 想请教如何利用任一个边缘检测运算得数值
时间Tue Jan 7 23:51:25 2014
※ 引述《YoursEver (银英传出webgame!?)》之铭言:
: 抱歉,那就是我太激动了. orz.
: 基本上处理这个问题需要的就是 edge detection + haugh transform.
: 我不知道你手边的matlab版本,
: online help上, 2013b的版本能查得到"haugh"这个function,
: 但我手边的2010就没有.
呃.. 你太激动了.
而且, 我猜你应该是在讲 Hough Transform.
: implement的细节上:
: 0. 假设已经完成edge detection.
: 1. Haugh的精神在於: 对参数化後的曲线以投票的方式来决定参数.
: 2. 以找圆心半径为例,实作时你可能需要的步骤如下:
: (a) 对圆周上的每一个点,找出可能通过该点的圆心和半径.
: (实作时,相当於以圆周上的每个点依序作为圆心,画同心圆)
: (b) 上面的结果,会建议出一组得票数最高的圆心和半径.
: (每一个同心圆算一票,最多同心圆交会的那点,就是你要求的圆心;
: 实作上,请detect 2D local maximum.).
: (c) 有了圆心後,半径就能算出来了.
: (d) 依据你算出来的圆心半径,重新画个圆在你的input上.
: 一切的重点精神只在於: "将曲线参数化,然後进行投票."
: 要怎麽参数化,要怎麽投票,可以随自己高兴.
: (但是请以 好计算&有道理 为优先考量)
: 不必死板板地学讲议,课本或wiki上面的form.
恩.. 我的 PhD 是 Image Reconstruction,
不过你上面讲的那些东西, 实际上应该没办法用.
原因在於, edge detection 出来之後不是一个 perfect boundary.
而且也不会是 Binary value.
实际状况, 我个人喜欢用 Active countour + shape regularization.
你如果硬要用 Hough transform, 你可以用这个试试看
http://www.mathworks.com/matlabcentral/fileexchange/
9833-hough-transform-for-circle-detection
--
赵客缦胡缨,吾钩霜雪明。银鞍照白马,飒沓如流星。
十步杀一人,千里不留行。是了拂衣去,深藏身与名。
闲过信陵饮,脱剑膝前横。将炙啖朱亥,持觞劝侯赢。
三杯吐然诺,五岳倒为轻。眼花耳热後,意气素霓生。
就赵挥金锤,邯郸先震惊。千秋二壮士,烜赫大梁城。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 122.121.19.9
1F:→ YoursEver:=_=果然激动到拼错了; 另外,根据原po的叙述,看起来是限 01/08 00:33
2F:→ YoursEver:定用hough的; 以这题来讲,靠hough会比靠snake容易. 01/08 00:34
3F:→ YoursEver:至於我上面说的内容,10 多年前我念硕班的时候就写过了, 01/08 00:34
4F:→ YoursEver:确定可行. 01/08 00:34
5F:→ Leon:do you want to try on a harder case? 01/08 08:36
6F:→ YoursEver:For more complicated cases, of course we should 01/08 09:39
7F:→ YoursEver:adopt level-set or snake+shape prior or some other 01/08 09:39
8F:→ YoursEver:method. However, for the case mentioned above, Hough 01/08 09:40
9F:→ YoursEver:is quite enough. 01/08 09:41