2016-11-16 24 views
4

我有6個字母的圖像,我希望將它分成6個圖像,每個字母各有1個字母。 我使用此功能:圖像c中的單獨字母#

public static List<UnmanagedImage> ApplyBlobExtractor (UnmanagedImage unmanaged) 
     { 
      // Extract blobs 
      BlobCounter blobCounter = new BlobCounter(); 
      blobCounter.ObjectsOrder = ObjectsOrder.XY; 
      blobCounter.ProcessImage (unmanaged); 

      // Add blobs into list 
      Blob[] blobs = blobCounter.GetObjects (unmanaged, false); 
      List<UnmanagedImage> unmanagedList = new List<UnmanagedImage> (blobs.Length); 
      foreach (Blob blob in blobs) 
       unmanagedList.Add (blob.Image); 

      return unmanagedList; 
     } 

的問題是,有時字母彼此接觸,這使功能識別2個字母作爲單一一個。有沒有辦法改善我的功能或創建一個更好的?

這是給出錯誤的結果圖像的例子: enter image description here

的功能是給我2個圖像,而不是6.

圖片1:enter image description here

圖2:enter image description here

+7

試圖擊敗captcha?這將是一個艱難的。 – dymanoid

+0

@kadzu設置最大字母寬度的閾值。在你的例子中,你說你得到了2張圖片,而不是6張。現在,採用2組中的每一組 - 當然,這應該超過最大字母閾值 - 並以不同的方式與它們一起工作。也許侵蝕,然後再次blob反擊?只是玩弄形態圖像操作。 – Elia

回答

0

您可以嘗試使用羣集方法作爲開始。

快速測試與Python的scikit spectral clustering給了我這樣的結果:

enter image description here

我不知道在C#中存在什麼雖然。