camscanner(掃描全能王)功能解析與復現 - 頁面矯正


朋友邀我協作一個免費簡易掃描APP,於是這幾天把頁面矯正提上來思考。整理一些心得,以此錄之,填充下這塊被我冷落到凋零的園區(希望后面能勤快點)。

 

不少blog給出邊緣+hough,可以解決部分情況。就通用性而言,有很多細節需要考慮:

 - 比如頁面里本身就自帶很多線,或者背景本身有線干擾

- 比如頁面本身不完整,不完全存在4邊

-比如頁面有弧度,hough下直線響應不明顯

 

我的思路(有借鑒,基本原創,如雷同了,真不是抄的):

- 輸入圖像(來自網上,如有不妥請留言,我盡快更換掉;選這個,主要想看線條復雜,邊界不是很明晰的測試,前處理灰度化了)

  

- 邊緣與線段分割:我選用 Edge Drawing / Edge Line (也可以利用canny + hough給出)

  亮綠為邊緣,暗綠+紅色端點為線段,我控制線段比較嚴格,線段比較碎,所以我加了后面的合並步驟

  

- 把夾角小於設定值且端點距離相近的線合並 (同時給出每條線的響應值:梯度值越高得分也高,線越長也有相應加成)

  把長度很短的去掉

  

- 通過提取的線,由響應值排序,獲取前面N條線(我自己 N = 16,也就是最多保留N條),為了通用性,把輸入圖像的4個邊,分配一個小的響應值,也加入到候選線集(N = 20 最多情況)

  

- 設計候選矩形框評估函數准則 (給定任意4個直線方程):

        *通過相鄰直線夾角最大為原則,進行排列(預處理)

   *組合四邊形4個角越接近90度,得分越高

        *把非凸的四邊形去掉

   *把面積小於頁面某個設定值的去掉(我設了 0.2 * W * H)

   *線段(前面提取的線段)對應計算邊(2直線計算所得)重疊率越高,得分有加成

   *寬高比越接近0.707,得分有輕微加成

   *越滿足平行四邊形,得分有輕微加成

    *4個線段響應值越高,得分越高

- 通過上述准則,暴力【(N-4)*(N-5)*(N-6)*(N-7) 最多這么多個矩形組合】檢索,獲得最佳的4條線,輸出角點,並對角點按形變最小原則進行順時針排序, 主要是些幾何運算,其實速度很快

  中間一些組合框示意

  

  最高得分

   

- 幾何校正與增強

  

 

剛編了.so。等我不懶的時候,弄個win版的給大家試試。

如果路過的你有更好的思路,歡迎留言!

 

鏈接:https://pan.baidu.com/s/1BLkiOA4dUG9ErkEVhmgjtA 
提取碼:vcsm

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM