字符粘连切分方法
目的
本方法目的在于解決英文字母OCR中存在的字符粘連問題,使得算法的運算結果更為準確。化學式中存在的粘連問題主要有以下幾個特點:一是字符種類較少,大都由常見化學元素的組合和基本的數字構成;二是字符的寬度基本一致,一般不存在一大一小的情況,這方便了我們使用字符寬度這一定界條件而又不影響切分的準確性;最后一個是字符的走向大都是水平方向,因此我們在切割時只需要考慮豎直向的切割即可。
解決對象
需要去除粘連的幾種情況大致總結如下:
2.1. 粘連區域窄。粘連的粘連線較窄,這意味著兩個有效字符之間的距離很近,因此在切割時在它們中間設置一個切分點即可。按照粘連線的數量,大致又能分為以下兩種。
?2.1.1.粘連線單一。兩個字符之間只存在一個單一的粘連線,如下圖1所示。
?2.1.2. 多條粘連線。兩個字符之間不止一條粘連線,如下圖2所示。
2.2. 粘連區域寬。粘連的粘連線較寬,在切分的時候需要考慮兩個字符之間大致的間隔距離,將不需要的部分剔除掉。如下圖3所示。
粘連區域窄的情況
3.1. 單一粘連線的情況,以圖1 為例。在Matlab里描繪其上、下輪廓如下圖4,圖5所示,上下相減得到整體的輪廓圖如圖6所示。
算法從左到右遍歷整體輪廓圖,發現上升沿就做標記。在所有上升沿中按照如圖7所示的條件取有效上升沿。根據所有有效上升沿切分整張圖。效果如圖8所示。
3.2. 多條粘連線的情況,以圖2為例。若仍然采用上下輪廓相減的方法,會出現如圖9的情況。
整體輪廓圖沒有實效性,不能用之進行切分分析。因此考慮采用縱向像素點累積的方法,得到如圖10的真實像素分布。
針對這個像素分布圖做前面的切分處理,便可得到較準確的結果,如下圖11所示
粘連區域寬的情況
以圖3為例。沿用之前的方法得到上、下和整體輪廓圖,如圖12、13、14。問題在于相鄰兩個有效的上升之間的距離很遠,導致切分時第一個字母后面帶有很長的粘連線,如圖15所示。
因此考慮引入下降沿的方法來確定一個字符的邊界。按照尋找有效上升沿的方法得到一系列有效下降沿(默認最左為一個上升沿,最右為一個下降沿)。從左至右遍歷整張圖片,切下所有相鄰上升沿和下降沿之間的部分,算法如圖16所示,作為最后結果,切分效果如圖17所示。
綜合
由于我們在做切分工作時,并不能事先了解目標粘連屬于上述哪一種類型,因此需要一個差別處理的工作使得算法具備普適性。針對單線粘連還是多線粘連的問題,統一的解決辦法是將兩種方法(輪廓法和像素累積法)得到的有效上升沿都列出來,并對它們一一進行評價。由于像素點累積的方法出現的上升沿較多,因此準確性較之輪廓線法更低,所以給像素累積法得到的上升沿賦較低的初始分。然后再對每一個上升沿做考量,如果它的周圍出現了比它分數更高的上升沿,就把它舍去;如果沒有,就把它令為一個切分點。針對粘連線長短不一的問題,解決的辦法是如果檢測到一個切分點之后的1.5*字符寬度內都沒有新的有效上升沿出現,則直接在此切分點后一個字符寬度距離處取一切分點再繼續檢測,直到圖片末尾。運用以上的辦法,可以比較方便地將三種不同粘連情況綜合處理。
需改進的部分
6.1. 利用打分的機制對上升沿作評價的方法很科學,可以考慮引入一個更全面的打分機制,比如上升沿的深度、上升跨度等參數都可以作為打分指標列入,最后根據分數高低來確定具體的切分點位置。
6.2. 文章只考慮了豎直向切分的情況,如果出現上下方向的粘連,應該尋找相應的解決辦法。
總結
- 上一篇: EfficientNeRF
- 下一篇: 《面试宝典》:检验是否为合格的初中级程序