1

我正在嘗試平滑形態操作。我已經在圖像1上完成了4 * 4侵蝕和4 * 4擴張(我盡最大努力實現侵蝕和擴張)。然後,我檢測到最大的斑點來濾除噪音。然後我的下一步是平滑形象操作的圖像2,這樣我就可以填補圖像輪廓內的空白。 我使用下面的代碼段來填補使用aforge的差距。但是這種方法不會返回填充AForge.net的孔不工作

public Bitmap fillGap(Bitmap image) 
     { 

      FillHoles filter = new FillHoles(); 
      filter.MaxHoleHeight = 5; 
      filter.MaxHoleWidth = 5; 
      filter.CoupledSizeFiltering = false; 
      filter.Apply(image); 
      return image; 
     } 

我的下一步是糾正它的方法是什麼?

Skin Detected Image Morphological Image

回答

1

根據該API documentation,所述Apply方法離開源圖像不變。無論是更換你的方法的最後兩行:

return filter.Apply(image); 

或使用ApplyInPlace方法,而不是Apply

filter.ApplyInPlace(image); 
return image; 

BTW,是MaxHoleHeightMaxHoleWidth集到足夠大的價值?

+0

仍功能不起作用。有沒有圖像格式(8bbp)丟失? – TNC 2012-08-02 20:21:39

+0

根據FillHoles類文件,圖像必須是8bpp二進制,是的。我真的沒有太多的經驗與自己的圖書館,放在安全的一面,也許你可以創建一個源圖像的克隆,並在克隆圖像上應用FillHoles過濾器? 'var clonedImg = Image.Clone(image,PixelFormat.Format8bppIndexed);'。我不確定這是否足以讓圖像易受FillHoles濾鏡影響,但至少值得一試? – 2012-08-02 20:44:18

+0

也許你還需要在'FillHoles'過濾器之前應用'Threshold'過濾器。看看[this](http://stackoverflow.com/q/11005067/650012)SO問題。 – 2012-08-02 20:49:46