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