2012-04-17 91 views
4

我打算檢測從C#中的字符(OCR)生成的線的端點。我想是這樣的:線端點檢測

enter image description here

我的意思是「終點」什麼是我想要得到的任何線路的兩端中的人物......例如「C」有兩個端點(一個在頂部和底部一個),如上圖所示,用紅色像素表示。我可以從「更胖」的現有掃描字符中提取單行,我可以進行邊緣檢測並進行Flood-fill分析,但似乎無法複製上述內容!任何指向文章或現有代碼的指針將非常感謝!任何代碼示例都會很好,因爲我可以輕鬆地將C++或任何.NET語言轉換爲C#。

謝謝,喬希

回答

1

既然你沒有的「終點」,但是,我建議一個定義:

  • 一個黑點是IIF所有鄰居(即黑點與曼哈頓距離終點< = 3)位於小於45度的扇區中。

找到每個相鄰黑點的角度不應太困難。對這些角度進行排序並找到範圍也並不困難,但需要注意不連續性(角度突然變化360度)。按斜率排序可能稍微快一些,但實際上並不計算角度。使用提前退出邏輯可以獲得額外的加速。

+0

好吧我會用定義更新問題。基本上我想得到的是任何行的結尾......例如'C'有兩個端點(一個在頂部,一個在底部),如上圖所示,用紅色像素表示。我還考慮過掃描整行(因爲我已經使用了黑色的像素,因爲我使用了填充算法來從PNG中選擇字符,然後使用線條細化算法將它縮小到一行)並搜索僅被另一個黑色像素包圍的黑色像素(包括對角線在內的所有方向)。 – jduncanator 2012-04-18 06:08:42

+0

@jduncanator:這個定義沒有足夠的技術來實際使用。另外,一個端點可能很容易有兩個黑色的鄰居,都在同一側。 – 2012-04-18 14:20:27