陳南南 李鴻翔 林聰明 彭榮超 廈門大學嘉庚學院信息科學與技術(shù)學院
關(guān)鍵字: 圖書館 座位管理 預約 空座檢測
高校的圖書館是重要的學習空間,特別是考試之前,高校學生日益增多,而校園中的圖書館座位資源有限,不合理占座的現(xiàn)象已經(jīng)司空見慣。目前各高校圖書館的藏書資源、目錄資源等都實現(xiàn)了計算機管理,唯獨座位資源還停留在人工管理階段。
為了合理管理圖書館座位資源,部分高校開發(fā)了圖書館座位管理系統(tǒng),但這些系統(tǒng)在使用過程中也存在以下一些問題。
(1)占座問題。目前的圖書館管理系統(tǒng)大多是通過校園一卡通或其他身份驗證方式確定讀者身份,隨后通過圖書館的觸摸屏設(shè)備或計算機查詢圖書館座位分布和實時使用情況,根據(jù)顯示屏顯示的座位閑置情況選擇座位,讀者流量較多時也可選擇自動排座。這種方式一定程度上解決了圖書館座位無序就坐的問題,但也引發(fā)了新的“占座”問題。部分讀者在刷卡選座后離開圖書館長時間未回,甚至出現(xiàn)替人刷卡占座的現(xiàn)象,導致真正有需求的讀者無法使用圖書館座位資源。
(2)成本高。為了解決圖書館座位預約后,座位空置“占座”問題,有的高校使用人工的方式定時巡查座位,長時間空閑的座位將被回收。這種方式增加了人力成本。在有的研究中,通過增加了紅外線感應(yīng)器對座位情況進行檢測 。這種方式需要對所有座位進行改造,增加了部署的難度和成本。
(3)離館與短時離座難以區(qū)分
無論是人工方式或是自動方式,都需要對長時間無人的座位進行回收,但如何區(qū)分離館和短時離座也是一個難題。若使用人工方式巡查回收,工作人員無法長時間駐留座位附近判斷用戶是離館還是短時離座,經(jīng)常會造成誤判,引發(fā)誤會和矛盾。有的高校通過校園卡預約后可使用圖書館座位資源,每次有效時間為兩小時。繼續(xù)使用,須在下一時段前30分鐘內(nèi)進行續(xù)約,超時后座位會被自動釋放。一些認真學習的學生通常會忘記按時續(xù)約,造成座位被強行回收。
針對以上情況,本文提出了一種基于攝像頭空座檢測的圖書館座位管理系統(tǒng)。
主要包括以下功能:
(1)座位信息實時檢測
統(tǒng)帶有網(wǎng)絡(luò)攝像頭等圖像抓取設(shè)備,繼而將圖像傳至服務(wù)器再經(jīng)過圖像識別算法處理,將圖書館的每一個位置的情況實時反饋到前端網(wǎng)站上,用戶根據(jù)空座信息進行座位預訂。
(2)座位預訂功能
用戶登錄網(wǎng)站根據(jù)圖書館座位實時狀態(tài),可以直接在網(wǎng)站上進行預訂,預訂
后在規(guī)定時限內(nèi)到達圖書館,若用戶未在時限內(nèi)抵達圖書館,將取消預約并歸還座位。
(3)續(xù)約功能
在圖書館期間,若臨時有事需要離開,用戶可以根據(jù)自己需要離開的時間,
選擇是否續(xù)約,若不續(xù)約直接離開,系統(tǒng)只為用戶保留座位10分鐘。選擇續(xù)約,系統(tǒng)將為用戶重新預訂該位置,但回到座位后需手動解除續(xù)約,超過30分鐘后“不回來”或者“不解除續(xù)約狀態(tài)”都視為放棄座位。極大程度地提高了系統(tǒng)的靈活性。
(4)查詢及修改功能
預訂好座位后,因故無法到達圖書館,可以取消預約。也可查詢當前預約情況。
(5)違規(guī)記錄
對于預約后,無故未到達圖書館或惡意預約占座等行為記錄至數(shù)據(jù)庫,同時制定規(guī)則限制其在某段時間內(nèi)使用預約功能。
圖1 系統(tǒng)功能示意圖
如圖2所示,本文提出的圖書館座位管理系統(tǒng)包括攝像頭模塊、服務(wù)器模塊、客戶端模塊、空座檢測模塊。
服務(wù)端模塊通過接收攝像頭拍攝傳回的圖像進行空座檢測,更新數(shù)據(jù)庫信息,并處理用戶的預約和查詢請求。
云服務(wù)器使用linux centos版本系統(tǒng)運行服務(wù)端程序,與攝像頭之間的通信不斷的通過websocket定時收發(fā)數(shù)據(jù),攝像頭通過無線wifi模塊進行數(shù)據(jù)的發(fā)送。
在socket服務(wù)器框架中,通過設(shè)置客戶端連接對應(yīng)一個Connection對象,完成對象的onMessage、onClose等回調(diào),同時提供了向客戶端發(fā)送數(shù)據(jù)send接口與關(guān)閉連接close接口,以及其它一些必要的接口。在此基礎(chǔ)上通過tcp協(xié)議進行數(shù)據(jù)的傳輸,服務(wù)端將接收到的數(shù)據(jù)信息通過相關(guān)的算法進行處理和分析,存儲至對應(yīng)的mysql關(guān)系數(shù)據(jù)庫表中,服務(wù)端基于ngnix環(huán)境下運行,使用php語言對客戶端開放各個請求接口,返回相應(yīng)的請求數(shù)據(jù),對于部分長時間不改變的數(shù)據(jù)而言,會使用緩存集群redis或者memory進行數(shù)據(jù)上的緩存,提高服務(wù)端的數(shù)據(jù)返回速度,客戶端數(shù)據(jù)的接收速率,將速率提升至毫秒級返回,提升用戶體驗水平。
同時,在用戶數(shù)據(jù)請求量龐大時,必須進行高并發(fā)處理,通過反向代理達到負載均衡,即將工作任務(wù)分發(fā)至各個服務(wù)器,使得每個服務(wù)器能正常運行,否則系統(tǒng)會崩潰重啟。對于服務(wù)端與客戶端之間交互數(shù)據(jù)的安全性,各個接口請求的數(shù)據(jù),進行MD5的32位不規(guī)則加密,達到防篡改的目的。
客戶端是用戶預訂和查詢的交互界面,為了方便使用,分別設(shè)計了PC端頁面和基于Android的APP客戶端。
用戶可以通過客戶端進行座位的查看、篩選、預訂。對于已經(jīng)進行了座位預訂的用戶,同樣可以查看自己所預訂位置的信息,進行續(xù)約、退訂、改選座位等操作。除主要的預訂座位功能,用戶可以查看到圖書館不同時段的人數(shù)分布情況、圖書館近日新聞等信息,同時可以對該系統(tǒng)進行留言反饋。
Android端采用了Retrofit+RxJava + OkHttp的網(wǎng)絡(luò)框架 ,其中Retrofit 負責請求的數(shù)據(jù)和請求的結(jié)果,使用接口的方式呈現(xiàn)。OkHttp 負責請求的過程,RxJava 負責異步,以及各種線程之間的切換。圖片加載使用Glide圖片加載庫, 服務(wù)端返回圖片鏈接url, 用Glide加載顯示圖片。Android界面如圖2所示。
圖2 Android客戶端界面
空座檢測模塊負責將下位機攝像頭傳回服務(wù)器的圖像信息通過圖像識別算法轉(zhuǎn)化成座位信息并存入數(shù)據(jù)庫。
首先使用網(wǎng)絡(luò)攝像頭拍攝現(xiàn)場圖像,通過FTP發(fā)送到服務(wù)器,服務(wù)器使用shell腳本將圖片拷貝到圖像識別工程中,工程將檢測得到的座位信息存放在數(shù)據(jù)庫,供客戶端提取。
識別工程中的算法通過“不同光照條件下的閾值選擇”、“感興趣區(qū)域”、“標記識別”、“移動物體檢測”以及一些邏輯程序來判斷各個座位的實時狀態(tài)。
(1)不同光照條件下的閾值選擇
針對同一個環(huán)境,在不同光照強度下采集到的圖片需要有合理的閾值去處理,才能夠識別出標記,以及檢測到物體移動。在本系統(tǒng)采用的方案是,先采集優(yōu)越環(huán)境下不同光照強度下的圖片,采集圖片四個角落各取4個像素點共16個像素點計算平均灰度值,再找出適合的閾值,將它們的對應(yīng)關(guān)系制成表格。當使用時,對拍攝到的圖片同樣進行平均灰度值的計算,再查表選擇閾值。
(2)有效區(qū)域
采集到一張圖片并不是圖中所有信息都是有效信息,將圖片中有效區(qū)域“裁剪”出來,即將座位的部分提取出來,減少后續(xù)算法的計算量,提高算法效率,如圖3所示,將座位從整張圖片中提取出來。
圖3 有效區(qū)域提取
(3)標記識別
為了判斷是否空座有多種方法,比如識別人體輪廓,識別人臉等,這些識別精確率高,但算法復雜度大。本系統(tǒng)僅需檢測空座信息,無需識別具體用戶。因此在座位(或桌面也可)上放置標記,利用ORB(Oriented FAST and Rotated BRIEF)特征檢測與匹配來尋找圖片中椅子上的標記,若無標記則表明非空座,識別效果如圖所示。
ORB算法是基于FAST特征檢測與BRIEF特征描述子匹配實現(xiàn),并在它們原來的基礎(chǔ)上做了改進與優(yōu)化[4]。
FAST特征點是沒有尺度不變性的,所以通過構(gòu)建高斯金字塔,然后在每一層金字塔圖像上檢測角點,來實現(xiàn)尺度不變性。ORB選擇了BRIEF作為特征描述方法,但是BRIEF是沒有旋轉(zhuǎn)不變性的,所以需要給BRIEF加上旋轉(zhuǎn)不變性,把這種方法稱為“Steer BREIF”。
圖4 空座標記識別
(4)移動物體檢測
用標記識別方法可以判斷空座,但有些用戶會使用書包等物品遮蓋標記,從而造成座位有人的假象,而本人長時間離館,造成資源浪費。因此,增加判斷遮擋物是否是移動物體的方式區(qū)分人體和占座物品。系統(tǒng)使用改進的幀間差分法來判斷圖片區(qū)域內(nèi)是否存在移動物體。
首先采集3幀圖像,其次對圖像進行邊緣提取得到連續(xù)的3幀邊緣圖像, 然后對兩組相鄰的邊緣圖像差分運算,也就是進行3幀差分,把兩次差分后的圖像再進行“與”運算,然后根據(jù)圖像信息使用自適應(yīng)迭代閾值的計算方法進行二值化處理,最后通過圖像形態(tài)學處理(腐蝕、膨脹等)完成確定移動物體的區(qū)域 。
(5)空座檢測模塊流程
最后通過一些簡單邏輯結(jié)合以上技術(shù),從而使整個識別流程合理運作,提取出正確、有效的座位信息。
首先,開啟所有座位的標記檢測及運動物體檢測,只有當一個座位的標記被覆蓋以及存在運動物體兩個條件同時成立時,并且兩個條件在將來20秒內(nèi)沒有發(fā)生改變才判斷該座位此時有人使用,如圖5所示。保持20秒不改變的理由是防止路過現(xiàn)象。
當一個座位被預訂或者用戶選擇了續(xù)約座位,將關(guān)閉該座位的標記檢測及運動檢測,直到用戶通過刷卡簽到和返回座位,將重新打開該座位的檢測。
圖5 入座狀態(tài)檢測過程
若一旦一個座位的狀態(tài)從被使用變?yōu)闊o人使用,則開啟計時,超出10分鐘則視為離開即放棄座位。在10分鐘內(nèi)一旦該座位的狀態(tài)從無人狀態(tài)轉(zhuǎn)換為被使用,則再將來20秒中的檢測內(nèi)一旦出現(xiàn)該座位無人,則判定為“路過”,不會關(guān)閉10分鐘的離開計時。如20秒內(nèi)的檢測中一直保持被使用狀態(tài),則表示用戶短時離開并回到座位了,關(guān)閉10分鐘的離開計時,用戶繼續(xù)使用座位。
本文通過分析目前高校圖書館管理系統(tǒng)中存在的一些問題,設(shè)計和實現(xiàn)了一個通過攝像頭傳輸?shù)膱D像進行空座檢測從而進行圖書館座位管理的系統(tǒng)。系統(tǒng)的主要優(yōu)點包括:第一,無需人工,自動檢測空座;第二,使用網(wǎng)絡(luò)攝像頭,每個攝像頭可檢測多個座位,無需對圖書館線路進行過多改造,成本低;第三,功能設(shè)計人性化,暫時離座可保留座位。當然,一切的管理制度都離不開用戶的遵守,良好的學習閱讀環(huán)境需要系統(tǒng)和人的共同努力。