線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1304
推到 Plurk!
推到 Facebook!

邊界平滑及面積計算

尚未結案
williams8807
一般會員


發表:40
回覆:37
積分:15
註冊:2003-11-22

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-09-22 15:19:44 IP:163.28.xxx.xxx 未訂閱
請問各位高手: 1.如何能將左圖不平滑的邊界修正的像右圖平滑一點呢?   (邊界點座標我已知道) 2.下面是我實際測試的影像(8bit 灰階),黑線是邊界,請問有什麼方法能算出邊界內部的面積呢? 發表人 - williams8807 於 2004/09/22 15:21:05
TheMoon
中階會員


發表:17
回覆:95
積分:67
註冊:2002-06-05

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-09-22 17:45:54 IP:202.39.xxx.xxx 未訂閱
引言: 請問各位高手: 1.如何能將左圖不平滑的邊界修正的像右圖平滑一點呢? (邊界點座標我已知道) A:使用Bezier Curve應該可以解決,請參考以下網址, http://delphi.ktop.com.tw/topic.php?topic_id=27949 http://delphi.ktop.com.tw/topic.php?topic_id=33321 http://homepages.borland.com/efg2lab/Graphics/Jean-YvesQueinecBezierCurves.htm 2.下面是我實際測試的影像(8bit 灰階),黑線是邊界,請問有什麼方法能算出邊界內部的面積呢? A:從您給的影像發現被圈選的區域是一個完全封閉的區塊, 因此您可以直接統計此區塊內的點數,即可算出其面積大小了。 (可用標示填充法scan整張圖)
williams8807
一般會員


發表:40
回覆:37
積分:15
註冊:2003-11-22

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-09-23 15:52:08 IP:163.28.xxx.xxx 未訂閱
可否請TheMoon大大提示一下「標示填充法」的scan順序是如何呢?    謝謝!
TheMoon
中階會員


發表:17
回覆:95
積分:67
註冊:2002-06-05

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-09-25 12:19:58 IP:202.39.xxx.xxx 未訂閱
Hello williams8807  我後來想到一個方法應該可以更方便求出區塊的面積, 就是先在封閉區塊中填入某個顏色, 再計算此種顏色的 class="code"> 演算方法如下(僅程式片段): //設定頂點 TPoint P[7]; P[0]=Point(50,200); P[1]=Point(100,150); P[2]=Point(200,290); P[3]=Point(400,200); P[4]=Point(60,100); P[5]=Point(70,160); P[6]=Point(50,200); //由頂點計算區塊重心,因為FloodFill()會用到 int CX,CY; CX=(int)((P[0].x+P[1].x+P[2].x+P[3].x+P[4].x+P[5].x)/6); CY=(int)((P[0].y+P[1].y+P[2].y+P[3].y+P[4].y+P[5].y)/6); //繪圖 Img2->Canvas->Pen->Color=clBlack; Img2->Canvas->Brush->Color=clRed; Img2->Canvas->Brush->Style=bsSolid; Img2->Canvas->PolyBezier(P,6); Img2->Canvas->FloodFill(CX,CY,clBlack,fsBorder); 繪圖結果如下: 最後再計算圖中您所填入顏色的色點個數即可。 另外,如果您不想在原來讀入的影像上作修改, 可再加入一個與原影像大小相等的TImage物件, 然後將封閉區塊繪製到上面後再作計算也行。
系統時間:2024-05-21 1:04:54
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!