專案記錄 圓形邊緣修正方法探索3

2021-07-31 05:34:55 字數 488 閱讀 4699

方法:從圓心向每個點移動,只要遇到非mask標記點,則替換當前邊界點。

結果:實踐效果不好,多個孤立點被替換之後,容易重合為同一點。

for(int j=0;jint sx=centerx-vecresult[j].x;

int sy=centery-vecresult[j].y;

int maxmove=max(abs(sx),abs(sy));

if(sx!=0)sx=sx/abs(sx);

if(sy!=0)sy=sy/abs(sy);

int newx=centerx-sx;

int newy=centery-sy;

intpos=newy*swidth+newx;

while(pmaskbuf[pos] && maxmove)

vecresult[j].x=newx;

vecresult[j].y=newy;

}

專案記錄 圓形邊緣修正方法探索1

問題 目前分割得到的圓形邊緣和理想邊緣相比,部分向外偏離,需要向內收縮 探索方法1 假設在理想情況下,圓形物體的掩膜是絕對正確的。此時可以遍歷當前的邊緣點,判斷每個邊緣點的兩側的掩膜標記是否不同。如果兩側的鄰域點掩膜都為0,說明該邊緣點偏外,需要向內收縮,使用最近的掩膜點來替換掉越界了的點。但是此方...

專案記錄 圓形邊緣修正方法探索2

問題 目前分割得到的圓形邊緣和理想邊緣相比,部分向外偏離,需要向內收縮 探索方法1 假設在理想情況下,圓形物體的掩膜是絕對正確的。此時可以遍歷當前的邊緣點,判斷每個邊緣點的兩側的掩膜標記是否不同。如果兩側的鄰域點掩膜都為0,說明該邊緣點偏外,需要向內收縮,使用最近的掩膜點來替換掉越界了的點。探索方法...

專案記錄 處理兩個相交圓方法探索3

問題 原圖中存在兩個部分重疊的圓,多餘的圓會影響邊緣提取的正確度,所以需要從邊緣中去掉另乙個交疊圓上的點。方法 使用之前的方法刪除錯誤的邊緣點之後,餘下的點中還存在偏離的點需要進一步修正。由於邊界的起點不一定正確,所以先遍歷邊界點,找出離中心最近的點,從該點出發來查詢待 修正的點。判斷是否需要修正的...