一個有趣的案例 | 頁面扭曲矯正
點擊上方“小白學視覺”,選擇加"星標"或“置頂”
重磅干貨,第一時間送達
本文轉(zhuǎn)自:AI算法與圖像處理
今天要分享的內(nèi)容是關(guān)于頁面扭曲矯正的內(nèi)容,為了讓大家有一個相關(guān)的概念,下面先預覽一下效果圖

作者寫這篇文章的目的也很有意思,因為 作者的妻子是一個老師,她的學生經(jīng)常要發(fā)一些圖片的作業(yè)給她,但是難免由于拍照技術(shù)和條件等各種原因,導致批改作業(yè)的難度提升,因此作者為了他的老婆,做出來了這一套方案。(愛的魔力)

對于一些經(jīng)典的文本矯正的思路(例如Leptonica dewarping method 和 the CTM method)將問題分解為:
1. 將文本分成幾行線
2. 找到使得線平行和水平的映射或坐標變換
本文作者同樣采用了類似的思路,構(gòu)建了一個參數(shù)模型用于頁面(文本)的矯正,模型主要考慮的參數(shù):
頁面在三維空間中的旋轉(zhuǎn)向量 r
和平移向量 t指定頁面表面的兩個曲率
α andβ 頁面上n個水平跨度的垂直偏移 對于每個跨度,水平跨度中 m個點的水平偏移量
對于上面的一些參數(shù),本人的理解是頁面扭曲存在這旋轉(zhuǎn)和偏移的變換,因為把文本內(nèi)容分成幾行,因此將每一行文本看成是一條曲線,這里假設(shè)扭曲后變成三次樣條曲線,由兩個系數(shù) a 和 b 控制。垂直偏移是指分割后的每行之間的距離,水平偏移是指對每條線上設(shè)置點,用于后續(xù)的矯正變換處理。
(個人理解,可能與原文存在一點的偏差)

接下來的操作就非常牛了,作者通過對頁面進行模擬,設(shè)置不同參數(shù)用于觀察其中的規(guī)律

最后作者發(fā)現(xiàn)當設(shè)置的參數(shù)固定后,頁面上的每個關(guān)鍵點都能在圖片的平面內(nèi)找到確定的對應(yīng)點。

紅色的是文本上檢測到的關(guān)鍵點,藍色的是通過模型的重投影的點。左圖的藍色點都是共線的(假設(shè)一開始文本是直線的),而右圖是將確定頁面的姿態(tài)/形狀,使得藍色點幾乎上紅色點上。
上面是大致的實現(xiàn)原理,接下來是作者實現(xiàn)功能的主要步驟:
1、獲取頁面的邊界。這里并不是采用整幅圖去處理,而是非常的巧妙采用內(nèi)部文本內(nèi)容以及文本與邊界大致距離去確定頁面的邊界。
2、檢測文本的輪廓。通過自適應(yīng)閾值——> 膨脹+腐蝕——> 連通區(qū)域分析+PCA來近似文本

3、將文本組成跨度。

4、樣本跨度。在每個跨度上生成代表性點。

5、創(chuàng)建初始參數(shù)估計。實現(xiàn)投影到圖片平面內(nèi)。
6、優(yōu)化!使重投影的誤差變小
7、重新映射圖片和閾值。

該項目是之前用到的,今天特意分享給大家,百度搜索出來的相關(guān)內(nèi)容很少,因為個人覺得分享出來還是蠻有意義的,對于內(nèi)容的理解由于本人水平有限,可能會存在一定的偏差,但是真的是花了挺大功夫來解讀的。
使用起來并不難,但是由于作者的假設(shè),對于并非這種情況的文本,以及變形過大的矯正效果并不是非常理想。創(chuàng)作不易,希望能點個在看,轉(zhuǎn)發(fā)一手,由于缺少留言功能,因此,只能通過后臺的數(shù)據(jù)反饋才知道自己分享的內(nèi)容是否真的有幫助到大家,大家的每個閱讀在看和轉(zhuǎn)發(fā),我都非常的感謝。
交流群
歡迎加入公眾號讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器、自動駕駛、計算攝影、檢測、分割、識別、醫(yī)學影像、GAN、算法競賽等微信群(以后會逐漸細分),請掃描下面微信號加群,備注:”昵稱+學校/公司+研究方向“,例如:”張三 + 上海交大 + 視覺SLAM“。請按照格式備注,否則不予通過。添加成功后會根據(jù)研究方向邀請進入相關(guān)微信群。請勿在群內(nèi)發(fā)送廣告,否則會請出群,謝謝理解~

