用OpenCV實(shí)現(xiàn)頁面扭曲矯正
點(diǎn)擊上方“小白學(xué)視覺”,選擇加"星標(biāo)"或“置頂”
重磅干貨,第一時(shí)間送達(dá)
今天要分享的內(nèi)容是關(guān)于頁面扭曲矯正的內(nèi)容,為了讓大家有一個(gè)相關(guān)的概念,下面先預(yù)覽一下效果圖

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

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

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

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

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

3、將文本組成跨度。

4、樣本跨度。在每個(gè)跨度上生成代表性點(diǎn)。

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

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