手寫數字識別系統之傾斜矯正

2021-09-20 08:45:01 字數 1037 閱讀 7799

傾斜校正主要有兩種,一種是整體傾斜校正,另一種是區域性傾斜校正。

由於本文主要研究具有不規則分布的多數字識別,因此只需要關注經過提取後的數字校正問題,也就是影象的區域性校正。

目前的校正演算法有很多,比如說:

對於整體傾斜校正可以採用統計影象左右兩邊的平均畫素高度,通過計算整體傾斜度來進行校正。
這種方法對於畫素較多的影象的處理效果明顯,而且實現簡單快速,但是對於那些已經經過提取得單一數字影象並不適用,因為此時的影象一般較小,且筆畫較細,由於所需資訊太少統計後的結果並不正確。

其實校正的核心就是使影象的傾斜度的接近為0,因此可以把它看作是乙個最優化問題:

即尋找需要調整多少角度,才能使影象的傾斜度最小,可見傾斜度決定了最終影象的好壞,考慮的數字的特徵,都是具有狹長的特點,我們可以考慮將影象的高寬比最為影象傾斜度的依據。
而到底需要調整多少才合適呢,本文所採用的方法,並不估算影象的傾斜度,而是通過二分搜尋的思想,在傾斜45度的範圍內進行二分查詢,尋找最佳調整點,使其結果近似最優,其具體步驟如下:

1. 設定最大調整角度,一般傾斜度不會超過45度,如果超過調整也就沒有意義了。

3. 對於實際的調整過程,一般會選擇進行旋轉變換操作,比較簡單,但是考慮到實際人們書寫數字時的傾斜往往並不是旋轉造成的,而是可能姿勢不正而引起的側斜,因此僅僅通過旋轉並不能達到較好的效果,因此可以通過水平側向校正來實現,即保持畫素點的高度不變,僅僅通過調整水平位置,進行適當的調整。

可見,對於大多數數字影象的校正結果還是令人相當滿意的,但還是會有些許不足:

由於側向拉伸會導致影象的變形,因此對於較為細長的影象的處理效果較差,可能會出現斷層這些破壞連通性的情況。
為了解決此類問題,可以在校正前先進行適當的膨脹運算操作,這樣效果會好些。

個人主頁:tboox開源專案

原文出處:

手寫數字識別系統之傾斜矯正

傾斜校正主要有兩種,一種是整體傾斜校正,另一種是區域性傾斜校正。由於本文主要研究具有不規則分布的多數字識別,因此只需要關注經過提取後的數字校正問題,也就是影象的區域性校正。目前的校正演算法有很多,比如說 對於整體傾斜校正可以採用統計影象左右兩邊的平均畫素高度,通過計算整體傾斜度來進行校正。這種方法對...

機器學習 手寫數字識別系統

需要兩個資料報,裡邊有許多數字影象,像這樣 資料報import numpy as np import operator from os import listdir 分類函式 def classfy0 inx,dataset,labels,k 引數分別為測試樣本,訓練樣本,訓練樣本標籤,近鄰個數 d...

kNN實現手寫數字識別系統

總結 from numpy import import operator from os import listdir import numpy as np 向量化,對每個32 32的數字向量化為1 1024 def img2vector filename returnvect zeros 1,10...