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

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

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

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

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

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

3、將文本組成跨度。

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

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

總結(jié)
該項(xiàng)目是之前用到的,今天特意分享給大家,百度搜索出來(lái)的相關(guān)內(nèi)容很少,因?yàn)閭€(gè)人覺(jué)得分享出來(lái)還是蠻有意義的,對(duì)于內(nèi)容的理解由于本人水平有限,可能會(huì)存在一定的偏差,但是真的是花了挺大功夫來(lái)解讀的。
使用起來(lái)并不難,但是由于作者的假設(shè),對(duì)于并非這種情況的文本,以及變形過(guò)大的矯正效果并不是非常理想。創(chuàng)作不易,希望能點(diǎn)個(gè)在看,轉(zhuǎn)發(fā)一手,由于缺少留言功能,因此,只能通過(guò)后臺(tái)的數(shù)據(jù)反饋才知道自己分享的內(nèi)容是否真的有幫助到大家,大家的每個(gè)閱讀在看和轉(zhuǎn)發(fā),我都非常的感謝。
好消息!
小白學(xué)視覺(jué)知識(shí)星球
開(kāi)始面向外開(kāi)放啦??????
下載1:OpenCV-Contrib擴(kuò)展模塊中文版教程 在「小白學(xué)視覺(jué)」公眾號(hào)后臺(tái)回復(fù):擴(kuò)展模塊中文教程,即可下載全網(wǎng)第一份OpenCV擴(kuò)展模塊教程中文版,涵蓋擴(kuò)展模塊安裝、SFM算法、立體視覺(jué)、目標(biāo)跟蹤、生物視覺(jué)、超分辨率處理等二十多章內(nèi)容。 下載2:Python視覺(jué)實(shí)戰(zhàn)項(xiàng)目52講 在「小白學(xué)視覺(jué)」公眾號(hào)后臺(tái)回復(fù):Python視覺(jué)實(shí)戰(zhàn)項(xiàng)目,即可下載包括圖像分割、口罩檢測(cè)、車道線檢測(cè)、車輛計(jì)數(shù)、添加眼線、車牌識(shí)別、字符識(shí)別、情緒檢測(cè)、文本內(nèi)容提取、面部識(shí)別等31個(gè)視覺(jué)實(shí)戰(zhàn)項(xiàng)目,助力快速學(xué)校計(jì)算機(jī)視覺(jué)。 下載3:OpenCV實(shí)戰(zhàn)項(xiàng)目20講 在「小白學(xué)視覺(jué)」公眾號(hào)后臺(tái)回復(fù):OpenCV實(shí)戰(zhàn)項(xiàng)目20講,即可下載含有20個(gè)基于OpenCV實(shí)現(xiàn)20個(gè)實(shí)戰(zhàn)項(xiàng)目,實(shí)現(xiàn)OpenCV學(xué)習(xí)進(jìn)階。 交流群
歡迎加入公眾號(hào)讀者群一起和同行交流,目前有SLAM、三維視覺(jué)、傳感器、自動(dòng)駕駛、計(jì)算攝影、檢測(cè)、分割、識(shí)別、醫(yī)學(xué)影像、GAN、算法競(jìng)賽等微信群(以后會(huì)逐漸細(xì)分),請(qǐng)掃描下面微信號(hào)加群,備注:”昵稱+學(xué)校/公司+研究方向“,例如:”張三 + 上海交大 + 視覺(jué)SLAM“。請(qǐng)按照格式備注,否則不予通過(guò)。添加成功后會(huì)根據(jù)研究方向邀請(qǐng)進(jìn)入相關(guān)微信群。請(qǐng)勿在群內(nèi)發(fā)送廣告,否則會(huì)請(qǐng)出群,謝謝理解~

