999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

利用OpenCV實現在Android系統下的文檔去黑邊

2016-12-06 12:54:23王咸鋒
電腦與電信 2016年8期
關鍵詞:可視化系統

王咸鋒

(廣東建設職業技術學院建筑信息系,廣東 廣州 510440)

利用OpenCV實現在Android系統下的文檔去黑邊

王咸鋒

(廣東建設職業技術學院建筑信息系,廣東 廣州 510440)

本文提出一種基于開源計算機視覺庫OpenCV實現Android系統下文檔去黑邊的方法。介紹了如何在Android中使用OpenCV,詳細闡述了利用JNI調用OpenCV相關函數的具體步驟,即在調用攝像頭時,所要考慮的內容,以及采用Android NDK生成共享庫的關鍵過程。實驗結果表明,此Android應用程序對不同場景下不同種類的文檔進行實時去黑邊的功能性能良好。

可視化;去黑邊;OpenCV;系統設計

1 引言

對于商務人士來說,尤其是在出差途中,如果遇到急需用掃描儀掃描合同、文件、發票、稅單、機票或需要發傳真、郵件共享掃描文件時,這時只需拿出帶有攝像頭的智能移動設備拍攝即可。但是在拍攝的過程中,由于擺放不當、紙張折疊或其他各種因素,拍攝得到的圖像總是有多余的邊框或黑邊,給后期圖像分割、字符識別等帶來了極大的不便,嚴重影響工作效率,所以需要一款能有效解決以上問題的Android應用程序。Android應用程序是通過Android SDK(Software Development Kit)利用Java編程語言進行開發,每一個Android應用程序都運行在自己獨立的Dalvik虛擬機上,而此虛擬機支持JNI,同時伴隨著Android NDK的發布,使開發者利用第三方C/C++庫協助編寫Android程序成為可能,為在Android系統下利用OpenCV編寫計算機視覺相關應用程序的軟件開發人員提供了便利。

2 開發環境搭建

近年來OpenCV發展迅猛,隨著Android智能終端的發展,越來越多的傳統科研平臺都轉向Android移動終端。2010年6月發布的OpenCV 2.3、2.3.1版本,除提供C++接口向下兼容C接口外,還新增了Java接口,且是對準Android平臺。更重要的是以前官方不支持ndk-build,這次終于一統JNI接口調用方式,方便在Android上開發使用。2012年4月2日發布了2.4版本,支持windows/Linux、Mac/Android/IOS四大系統。自2.4版本發布之后,為了和Android的系統架構保持同步,準確來說是吸收Android框架層的優點,引入了OpenCV Manager的概念,其本質就是一個Service,用來管理OpenCV動態鏈接庫。它工作在APP和OpenCV的動態鏈接庫之間。OpenCV Manager的結構就是模仿Android的Binder機制。其架構圖如下:

圖1 OpenCV Manager架構圖

APP在運行時會首先檢查OpenCV Manager是否存在,如果不存在則會提示安裝。如果存在,就會連接這個服務,進一步初始化加載OpenCV庫。

本文的開發環境為:windows+ADT Bundle+CDT+ OpenCV-2.4.4-android-sdk。將OpenCV-2.4.4-android-sdk解壓后,會看到如下文件夾:

圖2 OpenCV-2.4.4-android-sdk解壓后的文件夾

其中sdk就是開發時要用到的數據包,samples是自帶的示例,doc是說明文檔,apk則是OpenCV Manager。手機想要運行基于OpenCV的Java接口的程序,就必須先安裝OpenCV Manager。

2.1 AndroidAPP通過Java接口調用OpenCV

2.1.1 配置

配置比較簡單,但為了保持同步,使以后在開發中可以隨意調用Java接口和JNI接口,我們仍將壓縮包解壓到跟工作空間平級的目錄。再將解壓后的sdk文件夾命名為OpenCV4Android-sdk,拷貝到新建的工作空間中。

圖3 配置時放置文件夾位置

讓這兩個文件夾平級是為了以后JNI調用時無需修改mk文件。注意解壓后會嵌套一個目錄,把它拷貝到最外層。而sdk文件夾命名和拷貝到新的工作空間則不是必須的。

打開Eclipse切換到剛創建的工作空間,右鍵import→General→Existing Projects into workspaces。選擇OpenCV解壓后的sdk數據包,導入后看是否有錯誤,如果提示找不到java.util.List數據包,那是因為沒有加載Android的SDK進來。選中項目,按快捷鍵Alter+Enter,單擊Android,選中一個SDK(要求3.0以上),單擊clean,看bin文件夾下的opencv library-2.4.4.jar是否生成,如果生成了就表示已經導入成功。

2.1.2 新建項目并引入上面的jar包

任意新建一個Android Application Project,然后選中該項目快捷鍵Alter+Enter,在下面的加庫區域點Add,將導入工作空間的opencv sdk選中:

圖4 新建項目并引入jar包

可以看到在Android Dependencies中將剛導到bin目錄下生成的jar文件導進去了,之后就可以使用opencv的API了。

3 實現過程

3.1 傳統去黑邊方法比較研究

目前針對Android的去黑邊應用較少,并且大都未能達到實時可視化,較常用的掃描儀去黑邊方法有兩種,一是將黑邊從掃描圖像中裁減掉,圖像的大小將會縮小到與原文檔相同的實際大小;二是用白色填充黑色邊緣,圖像的尺寸將保持不變。由于圖像黑邊一般比圖像內容灰度大,所以要先對灰度圖像使用開運算得到只有黑邊的圖像,再利用圖像的減法運算將黑邊去除,最終達到去除黑邊的目的,缺點是對

環境要求高,特別是光線,當高拍儀拍攝的圖像噪點較多、亮度不均勻,使得基于傳統掃描儀的去黑邊算法失效;同時,由于高拍儀是開放環境、光線變化很大,文檔放置很隨意,所以不能百分百保證去黑邊成功。

筆者在對幾種常用去黑邊方案可行性和有效性論證的基礎上,經過大量實驗得出了一種在Android系統基于OpenCV去黑邊算法,不但可以實時精準地對任意傾斜角度的文檔物體進行捕捉并去除黑邊,還可以解決傳統去黑邊方法對環境要求高、對移動的物體捕捉失效的情況。

3.2 總體設計思路

本文采用的去黑邊算法是先從視頻流中實時獲取圖像;然后對圖像進行去噪點;再進行二值化;按照預設步長和可忍耐邊界值獲取圖像的邊界點;再對四條直線方程進行規整,輸出四條直線圍成的矩形;最后將矩形實時的顯示在視頻上。流程示意圖如圖5所示。

圖5 算法流程示意圖

3.3 核心算法流程

首先,圖像平滑處理,即去噪點。圖像平滑包括空域法和頻域法兩大類。在基于空域法的圖像平滑中,常用的方法是均值濾波或中值濾波。在編程過程中,定義一個n×n的模板數組;在窗口掃描圖像過程中,可直接使用灰度值為0的像素點擴展圖像的四個邊緣。對于小的卷積核(從3×3到7×7),使用上述計算標準sigma的公式速度會更快。本文采用OpenCV的cvSmooth函數來平滑圖像。

其次,圖像二值化。為了提高處理速度,首先對圖像進行縮放的預處理,以保證圖像處理實時顯示。圖像的二值化最常用的方法就是設定閾值T,傳統方法得到的二值化在光線變化和亮度不均勻的時候效果很差,不能商用。本文使用迭代法求閾值:預先設置一個閾值T,對圖像中灰度值>T的像素點求出灰度平均值T1,圖像中灰度值<T的像素點求出灰度平均值T2,若丨T1-T2丨<△則當前T即為最佳閾值,否則取T=(T1+T2)/2循環上述比較操作。二值化算法設計如下:

圖6 二值化算法設計

本文中的二值化使用OpenCV的cvThreshold函數,該函數的典型應用是對灰度圖像進行閾值操作得到二值圖像,函數中的閾值使用上面迭代法求得,核心算法如下所示:

最后,按照預設步長和可忍耐邊界值獲取圖像的邊界點。定義某行或某列中白點占的百分比閾值為0.05,某行或

列中連續白點占的百分比閾值為0.02,連續的白點的百分比應該小于等于所有的白點的百分比,其中邊緣遍歷算法如下:

定位邊緣點算法如下:

通過這種連續定位的方式,可以快速尋找圖像邊界,并消除由于曝光亮斑帶來的困擾。并且從四個方向遍歷圖像找到四組邊界點,左邊需要從左到右遍歷,右邊需要從右往左遍歷,上邊需要從上往下遍歷,下邊需要從下往上遍歷。在具體遍歷過程中,為減少運算量和避免噪聲帶來的干擾,當白點總數>0.05和連續白點總數>0.02,才會定義為邊界。

當四個方向都遍歷結束,會在四個方向上分別得到四個點的x和y坐標。根據四個點的坐標輸出四條直線圍成的矩形,通過畫方框的方式將去黑邊的結果實時顯示在視頻窗口上。

4 Android利用OpenCV技術難點

4.1 關于如何傳遞攝像頭預覽的圖像數據給Native代碼

① 傳遞圖片路徑:這是最差的方式,速度很慢,主要用于前期開發的時候進行測試,測試Java層和Native層的互調是否正常。

② 傳遞預覽圖像的字節數組到Native層,然后將字節數組處理成RGB或者RGBA的格式,具體哪種格式要看圖像處理函數能否處理RGBA格式的,如果可以的話推薦轉換成RGBA格式,因為返回的也是RGBA格式的。轉換方式有兩種:一種方式是使用一個自定義的函數進行編碼轉換,另一種方式是使用OpenCV中的Mat和cvtColor函數進行轉換,接著調用圖像處理函數,處理完成之后,將處理的結果保存在一個整形數組中(實際上就是RGB或者RGBA格式的圖像數據),最后調用Bitmap的方法將其轉換成bitmap返回。這種方法速度也比較慢,但是比第一種方案要快很多。

③ 使用OpenCV的攝像頭:JavaCamera或者NativeCamera都行,好處是它進行了很多的封裝,可以直接將預覽圖像的Mat結構傳遞給Native層,這種傳遞是使用Mat的內存地址(long型),Native層只要根據這個地址將其封裝成Mat就可以進行處理了,另外,它的回調函數的返回值也是Mat,非常方便。這種方式速度較快。

4.2 在Android中使用OpenCV調用攝像頭

首先,是否是在原有的C/C++代碼上進行移植,如果是的話,那么盡量考慮使用ndk開發,否則使用OpenCV for Android編寫Java代碼進行開發,效率不會比native代碼低多少。

其次,如果是需要OpenCV library,是否能夠容忍運行應用還需要安裝OpenCV Manager,如果不能的話,則在開發時要考慮將OpenCV binaries添加到應用中進行static initialization,但其實使用OpenCV Manager是有很多好處的。

接著,是使用原生Android的Camera還是使用OpenCV的Camera,如果是OpenCV Camera的話,是使用Java調用攝像頭還是Native調用攝像頭。

最后,圖片如何進行傳遞,如果是單張靜態圖片進行處理的話,只需要路徑就行了,但是如果是在視頻狀態下對圖片進行處理的話,那么就只能傳遞圖像數據了,這里涉及到了Android中如何獲取預覽的圖像數據以及如何將其傳遞到底層,又如何進行轉換(一般是YUV轉成RGB)使得OpenCV可以進行處理,處理完之后,又如何將處理得到的圖片傳遞給Java層。采用圖像數據傳遞方式,可以優化的地方,包括:

① 盡量使用Mat而不要使用IplImage;

② 盡量保證你的圖像處理函數能夠處理RGBA格式的圖像;

③ 先壓縮圖像大小再對圖像進行處理;

④ 使用noise filter降低圖像中的噪聲。

5 系統展示

目前,高拍儀可視化下去黑邊系統已經實現商用,并支持多種語言版本,圖7為最初一個系統版本在PC上的模擬,根據不同需求的用戶反饋,經過后期多次修改不斷升級,實現了跨平臺的應用(Android和Windows平臺),圖8為在PC上的最新版本的系統界面,在實時跟蹤、文檔糾偏以及去黑邊方面,用戶評價良好,商用至今,實現零投訴。圖9為系統輸出對象,對比市場上現有的去黑邊應用,不但去黑邊效果顯著,并且對環境變量要求低,適用范圍廣。

圖7 可視化去黑邊系統最初版本

圖8 可視化去黑邊系統最新版本

圖9 系統實時輸出對象

6 結語

采用本文設計的系統不但能夠實現高拍儀下穩定的去黑邊,而且能夠實時顯示拍攝的內容,達到去黑邊結果可視化,使得用戶知道將要掃描的文檔是否可以正常完成去黑邊操作,保證用戶一次拍圖就能夠獲取自己想要的圖像,將高拍儀可視化的優點提到一個新的高度,同時給用戶一種革新性的體驗。

[1]Shervin Emami.Mastering Opencv with Practical Computer Vision[M].Packt PublishingLimited.2012

[2]Dr Paul Richard,JoseBraz. Computer Vision,Imaging and ComputerGraphics[M]. Springer-Verlag Berlin andHeidelberg GmbH&Co.K.2012

[3]Gary R.Bradski,AdrianKaehler.Learning OpenCV[M].O'Reilly Media,Inc,USA.2008.

[4]左飛,萬晉森,劉航.Visual C++數字圖像處理開發入門與編程實踐[M].2008.

[5]江超,艾矯燕.基于OpenCV的攝像頭動態手勢軌跡識別及其應用[J].計算機應用,2012,32(s1):128-133.

[6]許才敬.Ubuntu下基于OpenCV的Canny邊緣檢測[J].數字技術與應用,2011(1):53-54.

[7]張丘,馬利莊,高巖,等.票據圖像預處理方法的研究[J].計算機仿真,2005,22(10):208-211.

[8]王海杰.文檔影像圖像處理中的糾偏與降噪研究[D].浙江大學,2008.

Method to Remove the Black Edge of Documents inAndroid System Based on OpenCV

Wang Xianfeng
(Guangdong Construction Vocational Technology Institute,Guangzhou 510440,Guangdong)

This paper presents a method to remove the black edge of documents inAndroid system based on open source computer vision library OpenCV.It introduces how to use OpenCV in Android,describes the specific steps of using JNI to call OpenCV function,which should be considered in using the camera.It describes the key process of using Android NDK to generate sharing library.The experimental results show that this Android application has good performance in removing black edge of documents in different types under different scenarios.

visualization;remove black edge;OpenCV;system design

TP391

A

1008-6609(2016)08-0001-05

王咸鋒,男,海南澄邁人,本科,副教授,研究方向:圖形圖像處理。

廣東省科技計劃資助項目,項目編號:2009A040103002。

猜你喜歡
可視化系統
Smartflower POP 一體式光伏系統
工業設計(2022年8期)2022-09-09 07:43:20
自然資源可視化決策系統
北京測繪(2022年6期)2022-08-01 09:19:06
思維可視化
師道·教研(2022年1期)2022-03-12 05:46:47
基于Power BI的油田注水運行動態分析與可視化展示
云南化工(2021年8期)2021-12-21 06:37:54
自然資源可視化決策系統
北京測繪(2021年7期)2021-07-28 07:01:18
WJ-700無人機系統
ZC系列無人機遙感系統
北京測繪(2020年12期)2020-12-29 01:33:58
基于CGAL和OpenGL的海底地形三維可視化
基于PowerPC+FPGA顯示系統
“融評”:黨媒評論的可視化創新
傳媒評論(2019年4期)2019-07-13 05:49:14
主站蜘蛛池模板: 在线国产91| 欧美不卡二区| 亚洲无码视频一区二区三区| 国产极品粉嫩小泬免费看| 国产午夜福利在线小视频| 国产a v无码专区亚洲av| 婷婷激情五月网| 亚欧乱色视频网站大全| 欧美a在线看| 午夜激情福利视频| 国产亚洲欧美日韩在线一区| 国产制服丝袜91在线| 国产高清在线精品一区二区三区 | 国产成人啪视频一区二区三区| 亚洲综合中文字幕国产精品欧美| 色综合激情网| 九九热精品免费视频| 狠狠色成人综合首页| 日韩欧美视频第一区在线观看| 在线观看亚洲精品福利片| 国产精品综合久久久| 久久大香伊蕉在人线观看热2| 日韩不卡高清视频| 国产免费好大好硬视频| 久久久久国色AV免费观看性色| 四虎永久免费地址| 亚洲国产午夜精华无码福利| 国产丝袜丝视频在线观看| 色窝窝免费一区二区三区 | 国产97视频在线观看| 国产黑丝视频在线观看| 国产精品区视频中文字幕 | 国产精品一区二区无码免费看片| 国产精品成人久久| 一级毛片在线免费视频| 久久国产精品国产自线拍| 欧美a在线| 精品国产99久久| 久久精品视频亚洲| 青青青视频91在线 | 国产免费黄| 国产视频久久久久| 亚洲青涩在线| 国产精品毛片在线直播完整版| 伊人婷婷色香五月综合缴缴情| 免费在线国产一区二区三区精品| 国产成人综合亚洲网址| 亚洲国产欧洲精品路线久久| 在线不卡免费视频| 亚欧成人无码AV在线播放| 午夜福利网址| 欧美国产视频| 在线一级毛片| 免费观看无遮挡www的小视频| 久草热视频在线| 久久国产黑丝袜视频| 亚洲欧美成人综合| 乱人伦视频中文字幕在线| 国产自在自线午夜精品视频| 午夜少妇精品视频小电影| 国产在线拍偷自揄观看视频网站| 亚洲水蜜桃久久综合网站| 午夜啪啪福利| 4虎影视国产在线观看精品| 国产激情在线视频| a级毛片免费看| 国产精品第一区在线观看| 韩日无码在线不卡| 综合亚洲网| 国产精品漂亮美女在线观看| 在线观看国产精品第一区免费| 91亚洲视频下载| 热99re99首页精品亚洲五月天| 欧美激情网址| 精品天海翼一区二区| 亚洲欧美精品一中文字幕| 国产精品手机在线观看你懂的| 亚洲欧美综合另类图片小说区| 亚洲伊人久久精品影院| 91久久精品国产| 日韩欧美在线观看| 国产玖玖玖精品视频|