2013-10-21 50 views
1

我的想法是對錶格進行行和列檢測,使用李克特量表檢測。欲瞭解更多詳情,請參閱此鏈接中的圖片。 http://img.docstoccdn.com/thumb/orig/42750583.png如何使用OpenCV從表格中檢測行和列

問題是:
我想輸入單元格內的值到我的程序中的2d數組。如果有符號(任何種類),則值爲1;如果爲空,則值爲0。

說明:
第一行和第一列應該是標題的位置,問題仍然是1,我可以稍後跳過第一行和第一列。

要做到這一點,我需要知道:

  1. 是否存在於細胞的標誌或不
  2. 找出行和列,所以我可以把我的二維數組正確。 (1如果有的話,否則爲0)

我是新來的OpenCV的,我只知道如何檢測邊界的存在(一些預處理,輪廓檢測和搜索approxPolyDP)。我已閱讀此帖How to remove convexity defects in a Sudoku square?但仍然,我不知道我必須做什麼..

+0

通過Hough查找行變換,檢測所有的並行,恢復表的邊界。 –

回答

1

當輸入圖像類似於您的示例圖像,那麼爲了方便,我不會使用Hough transform

在下面我提出一個簡單的方法來檢測行。這種方法只適用於輸入圖像與示例圖像相似的情況,即線條平行於圖像邊界。

  1. 計數每一行的黑色像素和黑色像素的每個列(或與強度> 0.5)
  2. 搜索每一行,並且至少包含一定數目的黑色像素的每一列。因此,請使用閾值t1
  3. 考慮以下條件。兩行(和兩列)之間的距離至少應爲t2

此後,您應該有單行和單列。只剩下一個問題(如果這對你來說是個問題)。表示列的行不是連續的。因此,您可以通過測量列線的長度來檢測表格之間的間隙。

當檢測到單元格時,您可以測量每個單元格內的像素並確定正確的單元格。

+0

對不起,我仍然不明白:(在第1點中,我應該計算每行和每列中的黑色像素的目的是什麼?在第2點中,您的目的是檢測任何符號單元格(cheklist或dot,或者被應答者寫的東西),通過搜索內部是否存在一定數量的黑色像素? – littledeveloper