徐興豐,李慶華,2,杜 軍
(1.山東師范大學(xué) 物理與電子科學(xué)學(xué)院,山東 濟(jì)南 250014;2.齊魯工業(yè)大學(xué) 電氣工程與自動(dòng)化學(xué)院,山東 濟(jì)南 250353)
基于OpenCV的拍照?qǐng)D像傳真信息采集處理方法研究*
徐興豐1,李慶華1,2,杜 軍1
(1.山東師范大學(xué) 物理與電子科學(xué)學(xué)院,山東 濟(jì)南 250014;2.齊魯工業(yè)大學(xué) 電氣工程與自動(dòng)化學(xué)院,山東 濟(jì)南 250353)
傳統(tǒng)的傳真掃描在封閉的環(huán)境下成像條件苛刻——單一的紙質(zhì)版內(nèi)容,信息采集不方便,信息表達(dá)的形式不夠豐富。在OpenCV平臺(tái)上,利用攝像頭直接采集信息,無需進(jìn)行拆卷處理,也不再局限于紙質(zhì)載體。對(duì)采集到的圖片信息進(jìn)行灰度化、銳化和閾值分割等操作,然后編碼生成傳真文件進(jìn)行傳真,方便傳真的信息采集。這種做法解決了攝像頭采集信息后數(shù)據(jù)量過大、不利于傳輸和傳真格式轉(zhuǎn)換等問題。
OpenCV;傳真文件;圖像處理;信息采集
如今,通信技術(shù)快速發(fā)展,一些人口密集的區(qū)域都已經(jīng)有Internet接入,圖像、聲音、視頻等傳輸十分方便,即便是網(wǎng)絡(luò)傳真機(jī)也可以傳輸文字、圖片的多種格式的文件,傳統(tǒng)的傳真通信受到了很大的沖擊。但是,在某些特殊場(chǎng)合,比如保密性要求較高的軍隊(duì)且在只有PSTN網(wǎng)絡(luò)的情況下,傳真仍是較為理想的數(shù)據(jù)通信方式。而對(duì)于需要真跡傳遞的政府和企業(yè),傳真通信在其中也扮演者著不可替代的角色[1]。在信息時(shí)代的大背景下,傳真通信也需要不斷改進(jìn),適應(yīng)不斷提高的通信需求。在沒有Internet分布的區(qū)域,可以連入PSTN的情況下,可以通過傳真機(jī)進(jìn)行數(shù)據(jù)通信。但是,老式的傳真機(jī)體積比較大,信息采集也不方便。目前,要將頁式傳真圖像用傳真機(jī)傳輸,圖像信息要經(jīng)過掃描系統(tǒng),在控制軟件的控制下進(jìn)行傳輸。掃描系統(tǒng)由光/電轉(zhuǎn)換器件、精密齒輪、步進(jìn)電機(jī)、控制邏輯電路和光源系統(tǒng)等組成。該系統(tǒng)的作用就是通過光電耦合器件將光信號(hào)轉(zhuǎn)換為電信號(hào),常用的光電耦合器件有CCD和CIS兩種類型[2]。
掃描成像必須掃描的是紙質(zhì)內(nèi)容,任何信息都必須轉(zhuǎn)化為可以在紙質(zhì)平面上表達(dá)的信息才能被傳真機(jī)傳輸給對(duì)方。為了優(yōu)化信息采集,利用攝像頭直接拍攝,采集到的信息可以是二維紙質(zhì)版內(nèi)容,也可以是三維事物的本身,比如辦公室的人員座次分布、河流走向等。
攝像頭直接成像方便信息采集,但生成的文件是jpg文件或bmp文件,包含顏色信息,數(shù)據(jù)量相對(duì)于黑白圖像較大,并不適合直接通過PSTN傳真?;赑STN的傳真多是黑白的TIFF文件(標(biāo)簽圖像文件格式),有對(duì)應(yīng)的傳真協(xié)議規(guī)范,不能發(fā)送除了通用傳真文件TIFF文件外的其他文件格式[3-4]。由于攝像頭采集的圖像數(shù)據(jù)量太大,不能傳輸?shù)葐栴},需要對(duì)采集到的信息進(jìn)行處理轉(zhuǎn)換,生成適合傳輸?shù)奈募3R姷膱D像處理庫有ImageStone、GIMP、CxImage和OpenCV等。其中,OpenCV是一個(gè)開源的機(jī)器視覺庫,它包括圖像處理和視覺算法,MLL統(tǒng)計(jì)分類器,HighGui、Gui圖像和視頻輸入輸出,CxCore基本結(jié)構(gòu)和算法,Xml支持繪圖函數(shù)。基于OpenCV的程序開發(fā)具有跨平臺(tái)、可移植性好、獨(dú)立性好、源代碼公開、具備強(qiáng)大的圖像和矩陣運(yùn)算能力、運(yùn)行速度快等優(yōu)點(diǎn)[5],所以,可以使用OpenCV類庫,控制攝像頭采集需要的信息,并對(duì)采集到的信息進(jìn)行處理。本文主要研究了在OpenCV平臺(tái)之上利用OpenCV的相關(guān)函數(shù),配合必要的硬件資源,采集并保存圖像信息。對(duì)采集到的圖像信息做進(jìn)一步的處理壓縮,使之更適合傳真?zhèn)鬏?,且保證信息的相對(duì)完整性。在實(shí)際工作中,壓縮文件,轉(zhuǎn)換編碼格式,可以生成可傳真的文件。具體實(shí)現(xiàn)流程如圖1所示。
圖1 可傳真文件生成流程
在PSTN網(wǎng)絡(luò)上傳真,在沒有傳真機(jī)的情況下,可以將傳真Modem與PSTN網(wǎng)絡(luò)連接,Modem的控制端連接計(jì)算機(jī),計(jì)算機(jī)就可以控制Modem,實(shí)現(xiàn)傳真功能。具體傳真模式如圖2所示。本實(shí)驗(yàn)采用臺(tái)式機(jī),Windows7 32位系統(tǒng),裝有Visual Studio 2010.Modem是D-TECHS的I-56em。計(jì)算機(jī)與Modem通過串行通訊接口相連,對(duì)其進(jìn)行控制。在軟件方面,需要配置OpenCV。OpenCV開發(fā)庫的配置主要是設(shè)置預(yù)先編譯的頭文件路徑和動(dòng)態(tài)鏈接庫的路徑,將OpenCV的庫文件和頭文件添加到項(xiàng)目的包含目錄中即可[6]。
本實(shí)驗(yàn)使用的攝像頭免驅(qū)動(dòng)安裝,可以自動(dòng)被操作系統(tǒng)識(shí)別。OpenCV庫有攝像頭的類,VideoCapture,利用VideoCapture::open()函數(shù)打開攝像頭;用Picture Control控件來顯示圖像,Picture Control可以動(dòng)態(tài)地加載圖像,可以設(shè)置大小、顏色等屬性。同時(shí),采用動(dòng)態(tài)加載圖像的方式,可以實(shí)時(shí)預(yù)覽攝像頭拍攝的信息。
定義一個(gè)矩陣mat類存儲(chǔ)攝像頭采集到的數(shù)據(jù),mat類同時(shí)也有將矩陣數(shù)據(jù)轉(zhuǎn)換成圖像數(shù)據(jù)Iplimage的函數(shù),然后可以將Iplimage保存。將保存到內(nèi)存中的數(shù)據(jù)通過定時(shí)器OnTimer不斷地保存,加載到Picture Control控件中顯示,就可以實(shí)現(xiàn)預(yù)覽的功能。在實(shí)際工作中,需要采集哪幅圖像,只需將圖像通過函數(shù) imwrite(“文件名”,攝像頭數(shù)據(jù))保存。如此,圖像的預(yù)覽、適時(shí)采集和保存工作就可以完成。
圖2 傳真模式圖
攝像頭采集信息生成圖片時(shí)可能會(huì)產(chǎn)生噪聲,也可能會(huì)產(chǎn)生多余的信息,占用過多的存儲(chǔ)空間,不宜傳輸。圖像信息處理的目的就是突出信息的主要內(nèi)容,減少對(duì)存儲(chǔ)空間的占用,保留必要的信息。圖像處理流程如圖3所示。
圖3 圖像信息處理流程
由于攝像頭采集到的原始圖像為彩色圖像數(shù)據(jù),圖像中包含大量的彩色信息,在處理中會(huì)花費(fèi)較多的存儲(chǔ)開銷,必將降低系統(tǒng)的處理速度,而且彩色圖像也不能傳真,所以要先對(duì)圖像進(jìn)行灰度化處理[7]。
灰度化常用的處理方法有最大值、平均值和加權(quán)平均值方法,OpenCV有自己的灰度化函數(shù),自帶方法和加權(quán)平均法的處理效果相當(dāng)。OpenCV的灰度化處理函數(shù),即cvCvtColor(img,img1,CV_BGR2GRAY),可以將彩色圖像img轉(zhuǎn)化為灰度圖像img1。
文本旋轉(zhuǎn)是由于攝像頭在采集圖像時(shí)未能按照文本的行列水平采集所導(dǎo)致的現(xiàn)象。在實(shí)際應(yīng)用中,為了方便識(shí)別,需要對(duì)文本進(jìn)行幾何矯正。文本圖像有一個(gè)明顯的特征,即每行文字之間都有一段空白間隔。文本與空白間隔在頻域之間的頻譜有明顯的差別。當(dāng)文本旋轉(zhuǎn)時(shí),頻譜也跟著旋轉(zhuǎn),因此,可利用這種時(shí)頻特性計(jì)算文本圖像的DFT變換。DFT變換后,其低頻部分在邊界的四角,高頻在圖像的中心位置,將高頻和低頻互換實(shí)現(xiàn)中心移動(dòng),就可以看到文本圖像頻譜有明顯的傾斜直線,然后通過霍夫變換計(jì)算出斜線的傾斜角度,利用仿射變換就可以完成文本圖像的矯正[8]。
用攝像頭拍照,由于信息采集者操作不合理和硬件設(shè)備的限制,可能伴有較強(qiáng)的隨機(jī)干擾和系統(tǒng)噪聲,背景比較復(fù)雜。通常情況下,需要使用圖像銳化技術(shù)等圖像增強(qiáng)技術(shù)抑制圖像的背景噪聲、增強(qiáng)圖像紋理和邊界細(xì)節(jié),提升圖像的某些重要信息特征[9]。圖像銳化等圖像增強(qiáng)技術(shù)能夠?qū)⒈惶幚淼膱D像轉(zhuǎn)化為對(duì)傳真來說質(zhì)量和效果更好的圖像。
OpenCV常用的2種用來銳化的算子有sobel和laplacian的二階離散過程,本實(shí)驗(yàn)用sobel算子,函數(shù)原型為Void Sobel(InputArray src,OutputArray dst,int depth,int dx,int dy,int ksize=3,double scale=1,double delta=0,int borderType=BORDER_DEAFAULT),該函數(shù)使用sobel算子計(jì)算src中的一幅圖像的二階導(dǎo)數(shù)。參數(shù)ddepth表示輸出圖像的深度,Ksize表示核的大小,希望的導(dǎo)數(shù)階為dx和dy。使用scale可以建立用于計(jì)算導(dǎo)數(shù)的尺度因子。另外,參數(shù)vordeType表示邊界類型。
閾值分割是對(duì)圖像信息的進(jìn)一步壓縮,保留必要的信息,這樣可以使后期生成的文件更小,更能滿足傳輸要求。閾值化操作就是利用像素點(diǎn)分布規(guī)律,設(shè)定閾值進(jìn)行像素點(diǎn)的分割,進(jìn)而得到二值化圖像。常用經(jīng)典方法有OSTU、固定閾值、自適應(yīng)閾值、雙閾值半閾值操作,本實(shí)驗(yàn)采用自適應(yīng)閾值分割的方法進(jìn)行閾值分割[10]。
在實(shí)際應(yīng)用中,固定閾值很難達(dá)到理想的分割效果,目標(biāo)和背景區(qū)域通常是相互依存在圖像塊中,而自適應(yīng)閾值分割通過像素鄰域塊的分布特征來自適應(yīng)確定區(qū)域的二值化閾值。函數(shù)原型如下:VoidAdaptiveThreshold(InputArray src,OutputArray dst,double maxValue,int adaptiveMethod,int thresholdType,int blockSize,double c).在此函數(shù)中,參數(shù)src表示源圖像數(shù)組;dst表示輸出圖像數(shù)組;maxvalue表示預(yù)設(shè)滿足條件的最大值;cvAdaptiveMethod表示自適應(yīng)閾值算法選擇ADAPTIVE_THRESH_MEAN_CADAPTIVE_THRESH_GAUSSIAN_C;thresholdType表示閾值類型THRESH_BINAY或THRESH_BINARY_INV;blocksize表示鄰域塊大小,用來計(jì)算區(qū)域閾值,一般選擇為3,5,7……參數(shù)c表示從均值或加權(quán)均值提取的常數(shù)。
攝像頭采集的信息傳真之后,對(duì)方可以用網(wǎng)絡(luò)傳真機(jī)接收,也可以用傳統(tǒng)傳真機(jī)接收。如果對(duì)方使用的是網(wǎng)絡(luò)傳真機(jī),接收到的傳真文件可以在計(jì)算機(jī)上用圖片瀏覽器打開,也可以進(jìn)行縮小放大等尺度變換,可以選擇一個(gè)方便識(shí)別的方式查看。如果對(duì)方使用的是傳統(tǒng)傳真機(jī),接收到的傳真文件需要打印之后才可查看。此時(shí),需要在發(fā)送傳真之前調(diào)整傳真文件的尺寸,使文件打印之后適應(yīng)A4紙的大小。
利用本文所述程序處理后的圖片,水平和垂直分辨率皆是96(每英寸96個(gè)點(diǎn))。A4紙的大小是8.3×11.7(英寸)。所以A4紙可以放下的像素點(diǎn)約為797×1 124,本實(shí)驗(yàn)設(shè)置的圖像像素點(diǎn)為760×1100,實(shí)現(xiàn)函數(shù)如下:
IplImage*x,*y;
y=cvCreateImage(cvSize(760,1100),8,1);
x=cvLoadImage("源文件",0);
cvResize(x,y,CV_INTER_LINEAR);
Y圖像可以在A4紙上正常打印。
圖片保存成灰度圖像后,需要轉(zhuǎn)化成傳真的編碼格式,生成可以供傳真發(fā)送的文件。傳真文件的編碼格式根據(jù)傳真機(jī)傳送圖像和記錄方式的不同,有黑白和彩色之分。該實(shí)驗(yàn)采用二值傳真編碼。編碼傳真格式利用的是libtiff的dither函數(shù),該函數(shù)利用抖動(dòng)算法將灰度圖像轉(zhuǎn)化為二值圖像,同時(shí),可以改變圖像的壓縮編碼格式。在本實(shí)驗(yàn)中,直接調(diào)用libtiff下的可執(zhí)行程序,在dos下運(yùn)行指令為“tiffdither-c g3‘源文件’‘目標(biāo)文件’”。生成的目標(biāo)文件采用CCITT T.4協(xié)議壓縮,可以用傳真方式發(fā)送。
圖4和圖5為2組實(shí)驗(yàn)的圖像對(duì)比和占用存儲(chǔ)空間的概述,第一幅為拍攝的原圖,存儲(chǔ)空間較大,第二幅是經(jīng)處理程序處理后的圖片,第三幅是經(jīng)過編碼生成的傳真TIFF文件,第四幅是傳真掃描后生成的文件。從2組實(shí)驗(yàn)所得的結(jié)果來分析,攝像頭拍攝后,最終生成的文件和掃描生成的文件效果相差不大,有些細(xì)節(jié)會(huì)更清晰,存儲(chǔ)空間會(huì)有20%~30%的增加,但與未處理的圖片比較,文件占用的存儲(chǔ)減少50~70倍,旋轉(zhuǎn)的文本得到糾正,處理效果明顯,符合傳真的條件。
本文所提出的用OpenCV控制攝像頭采集傳真圖像是一種新的嘗試,它豐富了傳真內(nèi)容的表達(dá)形式,方便了傳真信息的采集?;贠penCV的程序開發(fā),是在前輩研究的基礎(chǔ)上完成工作,讓編程更加簡單,減少了不必要的工作量,方便可靠、處理效果明顯。
傳真文件的編碼調(diào)用了libtiff中的dither程序,讓文件以傳真的編碼格式存儲(chǔ)。在圖像信息的處理方面,圖像信息的處理還可以進(jìn)一步優(yōu)化,實(shí)現(xiàn)更好的處理效果,這是需要后期繼續(xù)研究的。
圖4 實(shí)驗(yàn)一結(jié)果
圖5 實(shí)驗(yàn)二結(jié)果
[1]劉文柱.數(shù)字傳真通信[M].成都:電子科技大學(xué)出版社,2000:1-17.
[2]劉立柱.傳真圖像和傳真信號(hào)處理原理與技術(shù)[M].北京:國防工業(yè)出版社,2006:11-22.
[3]趙付強(qiáng),李允俊.無紙傳真協(xié)議的研究與實(shí)現(xiàn)[J].科技信息,2012(27):57-58.
[4]陸宗琪.C/C++圖像處理編程[M].北京:清華大學(xué)出版社,2005:104-109.
[5]秦小文,溫志芳,喬維維.基于OpenCV的圖像處理[J].電子測(cè)試,2011(7):39-41.
[6]蘇慧娟,于正林,張桂林.基于OpenCV的圖像處理[J].科技資訊,2014(8):18-19.
[7]江進(jìn).基于灰度化及邊緣檢測(cè)算法的車牌識(shí)別技術(shù)研究[J].電腦與微電子技術(shù),2014(1):38-41.
[8]吳軍,侯德文,劉江.一種快速的文檔圖像傾斜角檢測(cè)算法[J].電子技術(shù)與軟件工程,2015(2):106-108.
[9]劉軍,龔云祥,金蕾.基于FPGA實(shí)現(xiàn)傳真圖像處理算法的方法[J].微電子學(xué)與計(jì)算機(jī),2013,30(4):79-82.
[10]朱偉,趙春光,歐慶樂,等.OpenCV圖像編程實(shí)例[M].北京:電子工業(yè)出版社,2016:76-84.
本文部分參考文獻(xiàn)因著錄項(xiàng)目不全被刪除。
TP391.41
A
10.15913/j.cnki.kjycx.2018.01.001
2095-6835(2018)01-0001-04
山東省中青年科學(xué)家基金(BS2013DX031)
徐興豐(1993—),男,山東濟(jì)寧人,碩士在讀,主要研究電路系統(tǒng)和傳真圖像處理。李慶華(1977—),男,博士,副教授,主要從事機(jī)器視覺和信號(hào)與信息處理方面的研究。杜軍(1973—),女,通信作者,碩士,副教授,主要研究無線傳感器網(wǎng)絡(luò)及信號(hào)處理。
〔編輯:白潔〕