蘭林濤,桂 彥,鄭鎮潮,柳鄧一漫,羅 京,王 朦
(長沙理工大學計算機與通信工程學院,湖南 長沙 410114)
基于Qt開源框架的跨平臺圖像修復系統設計與實現
蘭林濤,桂彥,鄭鎮潮,柳鄧一漫,羅京,王朦
(長沙理工大學計算機與通信工程學院,湖南 長沙410114)
目前,圖像修復技術已經在數字圖像處理領域中具有了實際的應用價值,尤其在部分受損圖像還原、去除圖像中遮擋物等方面可以取得良好的效果。本文著力于結合現有圖像修復技術的功能需求,實現能夠運行于主流操作系統平臺的、且具有良好用戶體驗的跨平臺圖像修復系統。在設計圖像修復系統的過程中,考慮到多平臺編譯使用的需求,我們采用了Qt開源框架用于用戶交互界面的處理,實現了Windows、Linux和MacOS三大主流操作系統的覆蓋。本文的研究內容主要包括以下兩個方面:(1)圖像修復算法實現。(2)用戶交互界面的設計與實現。通過良好的用戶交互設計實現了圖像修復系統。
Qt框架;跨平臺;圖像修復系統
本文著錄格式:蘭林濤,桂彥,鄭鎮潮,等. 基于Qt開源框架的跨平臺圖像修復系統設計與實現[J]. 軟件,2016,37(8):47-50
圖像修補(Image Inpainting)是計算機圖形學與計算機視覺領域內一項具有挑戰性的難題[1],其主要目的是利用已有的圖像信息,將圖像中缺失區域部分的信息進行還原。在實際應用方面,圖像修復系統可應用于受損圖像的復原、去除圖像水印日期等。本文采用了一種交互式的快速圖像修補方法[1],通過先由用戶交互確定圖像的結構信息[2]進行結構化修補,而后再采用紋理合成方法[3-4]進行紋理區域填充,以達成實現圖像修復的目的。
Qt是一個跨平臺的C++應用程序開發框架,擁有GNU LGPL v. 2.1、GNU GPL v. 3.0以及商業授權三種授權方式,其跨平臺的特性使得它支持包括Windows、Linux、Mac OS在內的多種操作系統。目前,包括LG、Panasonic、Navico在內的多家企業均采用了Qt平臺作為開發框架,體現了Qt作為開發框架具有的廣泛應用價值。
為了使系統能夠實現跨平臺目標以及具有高效率的圖像修復能力,我們采用了C++作為主要編程語言,Qt平臺作為用戶界面框架,實現了高效、可應用于多平臺的圖像修復系統。
2.1整體架構
基于Qt開源框架的跨平臺圖像修復系統總體上分為兩個子系統,分別為以圖像修復算法為主體的圖像修復系統和以用戶操作為主體的交互系統,這兩部分系統如圖1所示。

圖1 系統整體架構圖Fig. 1 Overall system architecture
2.2系統運行環境及框架版本要求
基于Qt開源框架的跨平臺圖像修復系統主要通過結構修補與紋理修補算法實現預期目標。在修復過程中,主要性能開銷在于頻繁對像素進行讀寫與使用CPU資源進行紋理修復計算所耗費的時間。系統實現所采用的QImage本身提供了高效的像素讀取與設定接口,但由于其運行時存儲圖像數據會占用較大的內存空間,過小的運行內存會導致程序發生虛擬內存交換從而降低其I/O性能,因此推薦使用擁有更高運行頻率的CPU與更大內存空間的計算平臺運行本系統。
本系統設計的另一個目標為跨平臺,即還可編譯運行在Linux、Mac OS平臺上,系統配置要求與Windows平臺要求相同。為了實現良好的運行效果,在系統編寫階段便要求所有功能函數均實用Qt框架提供的庫函數,不直接調用系統提供的API,以保證兼容性。由于Qt框架本身具有跨平臺特性,因而在框架所支持的操作系統范圍內,只要代碼調用的功能不涉及某一系統專有的特性與功能函數即可實現跨平臺的目標。本系統采用的Qt版本為5.5.1。
3.1系統總體流程圖
系統采用單界面操作方式,通過點按功能按鈕與鼠標交互實現對應功能。系統總的工作流程如圖2所示。
3.2圖像修復算法流程圖
圖像修復算法的過程依次分為用戶繪制修補區域與結構曲線、結構修補和圖像紋理修補三個部分,圖像修復流程如圖3所示。在打開待修復的圖像之后,用戶首先交互指定待修復區域;然后,用戶在待修復區域中繪制結構信息,其中,結構信息主要指的是圖像中直線型的結構。我們將從已繪制結構曲線的延長線上選取候選圖像子塊進行結構修補。最后是在大面積紋理區域的修補。當系統在掃描到任意一個待修補像素點時,則采用紋理合成方法[3-4]進行修復,直至圖像修復完畢。

圖2 系統工作流程圖Fig. 2 Work flowchart for image inpainting system

圖3 圖像修復算法流程圖[1]Fig. 3 Flowchart of Image inpainting algorithm[1]
4.1顯示界面模塊
4.1.1圖像縮放模塊設計思路
圖像縮放模塊兼具圖像顯示功能,主要作用為將待修復圖像信息顯示在GUI界面上,通過對顯示圖像內容進行縮放可兼顧高分辨率圖像的精準選區與繪制結構功能,提高繪制的準確性。程序默認縮放大小為100%,可根據用戶需要在10%~300%間自由縮放。
Qt平臺顯示圖像的控件為QGraphicsView,運行時可讀入QImage內容進行顯示。系統的圖像處理信息存儲在QImage內,每次顯示均使用獨立的QImage進行縮放處理[5],保證圖像數據不受顯示縮放干擾。
4.1.2指針響應模塊設計思路
考慮到傳統的鼠標樣式(箭頭)不適用于圖像區域選取的定位,通過QCursor的setCursor函數動態改變鼠標樣式,以實現更好的指示效果。在QGraphicsView顯示范圍內,鼠標指針樣式為十字形,保證精準定位,在顯示外部則恢復為箭頭形。
4.1.3界面元素響應模塊設計思路
Qt提供了QHBoxLayout、QVBoxLayout、QGridLayout等的基本布局管理,分別是水平排列布局、垂直排列布局和網格排列布局[6]。布局之間可以相互嵌套實現自適應窗口大小的效果,在本系中主要采用了QHBoxLayout與QVBoxLayout相互嵌套的形式實現自適應窗口大小功能,其中界面布局設計如圖4(a)所示,以及程序界面布局效果如圖4(b)所示。
4.2輔助功能模塊
4.2.1坐標系轉換模塊設計思路
在使用圖像縮放功能、載入高分辨率圖片時,QGraphicsView會自動調用滾動塊進行圖片顯示,此時用戶操作獲取的鼠標坐標仍然為以QGraphicsView模塊左上角為原點的坐標,需要進行坐標系轉換為基于圖像的坐標系以保證未知區域選取與圖像結構曲線繪制的準確[7]。

圖4 用戶交互界面實現Fig. 4 User interface implementation
4.2.2文件存儲模塊設計思路
Qt原生提供了多個可操作圖像的類,其中QImage可在具有文件讀取、存儲功能的同時提供了可對單個像素進行編輯的接口,為簡化程序提供了可能。QImage支持的文件包括BMP、JPG、JPEG、PNG等常用圖像格式的讀取與保存。
在QImage中,開發者可通過setPixel函數對圖像中單個像素點的RGB值進行設定,該函數可接收三個參數,分別為需要操作像素的坐標和需要設置的顏色值。在32-bit下的像素操作如圖5所示。
4.2.3撤銷恢復模塊設計思路
系統采用QImage存儲運行時的圖像信息,使用Stack來實現撤銷/恢復功能,在每個用戶操作前自動將保存當前圖像信息的指針至Stack中,在需要時返回。由于QImage在打開圖像時對內存占用較高,當程序實例對圖像操作次數過多時,會因保存撤銷信息而占用較大的內存,這是接下來需要解決的一個問題。

圖5 QImage在32-bit下的像素操作Fig. 5 QImage pixel operation under 32-bit
4.2.4加速鍵模塊設計思路
系統用戶操作方式采用了鼠標交互與鍵盤輸入相結合的方式,用戶可通過鼠標實現所有系統功能,也可以通過鍵盤的加速鍵加速操作。
Qt對每個界面元素均提供了keypressevent[7]函數用于響應用戶的鍵盤操作。每當用戶操作鍵盤時,系統將發射一個信號通知程序,并傳入一個QKeyEvent作為具體按鍵的載體。QKeyEvent類中有函數key和modifier,key函數返回的是發生時間的按鍵值,modifier返回的是修飾鍵[8],通過重載keypressevent函數即可實現加速鍵功能。
我們開發的基于QT開源框架的跨平臺圖像修復系統,首先在Windows環境下進行了功能實現與交互設計,實現了預期的圖像修復功能。圖6中測試用圖展示了系統在對圖像目標移除(水印處理)的應用場景,圖6(a)的“Think”字樣經過處理后被抹去,修復后的效果如圖6(b)所示。圖6中的(c)、(d)為在對具有破損圖像修復后的結果。另外,還采用了Ubuntu系統作為Linux平臺的測試環境。

圖6 圖像修復效果圖Fig. 6 Image inpainting results
利用上述的圖像修復算法與用戶交互設計完成的圖像修復系統,可運行于Windows、Linux、MacOS等多個平臺,通過用戶選定修補區域與繪制結構信息完成修補工作。經過多次代碼調試與界面美化,上述功能都能夠實現并達到了預期設計目標。當然,本圖像修復系統還是需要繼續優化的,通過優化修復算法、簡化用戶操作流程、改變運行時數據存儲結構實現更高的修復效率與更低的計算機性能要求,我們將在以后的研究中繼續優化改進。
[1] 路平. 快速結構化圖像修補[J]. 中國圖象圖形學報, 2010, (6): 931-935. Lu P.Fast Structural Image Completion[J]. Journal of Image and Graphics, 2010, (6):931-935. (in Chinese)
[2] Sun J, Shum H Y. Image completion with structure propagation: ACM, US7502521[P]. 2009.
[3] Michael Ashikhmin. Synthesizing Natural Textures. 2001 ACM Symposium on Interactive 3D Graphics, 217–226, March 2001.
[4] 胡云康, 姜 蘇, 吳志榮, 等. 基于改進的紋理合成圖像修復算法[J]. 軟件, 2016, 37(4): 60-63. Hun Y K, Jiang S, Wu Z L, An Improved Image Restoration Algorithm Based on Texture Synthesis[J]. Software, 2016, 37(4): 60-63.
[5] 薩默菲爾德. Qt高級編程[M]. 電子工業出版社, 2011. SummerfieldM. Qt advanced programming[M]. Beijing: Electronic Industry Press, 2011. (in Chinese)
[6] 徐睿, 韋璐. 基于QT 的數字邏輯虛擬實驗平臺設計[J].軟件, 2016, 37(01): 101-104. Xu R, Wei L. Design of Digital Logic Virtual Experiment Platform Based on QT[J]. Software, 2016,37(01):101-104.
[7] 何建倉, 侯澤民. 嵌入式Qt環境下繪圖軟件的設計與實現[J]. 軟件, 2014, 35(5): 45-47. He J C, Hou Z M. The design and implementation of drawing software under the embedded Qt environment[J]. Software, 2016, 35(5): 45-47.
[8] 曹素娥, 楊澤民. 基于Qt的ATM機系統的分析與設計[J].軟件, 2014, 35(1): 1-3, 31. Cao S E, Yang Z M. Analysis and Design of ATM System Based on Qt[J]. Software, 2014, 35(1): 1-3, 31.
Design and Implementation of Image Inpainting System Based on Qt Open Source Framework
LAN Lin-tao, GUI Yan, ZHENG Zhen-chao, LIU Deng-yi-mang, LUO Jing, WANG Meng
(School of Computer and Communication Engineering, Changsha University of Science and Technology, Changsha 410114, China)
At present, image inpainting technology has practical application in the field of digital image processing, especially region filling and object removal in the image. In this paper, we focus on the functional requirements of the existing image inpainting technology, which devote to develop an image inpainting system with a good user experience. During image inpainting system design, taking into account the multi-platform compiler use demanded, we use Qt for the user interface, which is compatible with Windows, Linux and Mac OS. The research content of this paper mainly includes the following two aspects: (1) the realization of image inpainting algorithm. (2) the design and implementation of user interface. The image inpainting system is realized through the good user interaction design.
Qt open source framework; Cross-platform; Image inpainting system
TP311
A
10.3969/j.issn.1003-6970.2016.08.010
2016年長沙理工大學教學改革研究項目(項目編號:JG1660);2016年長沙理工大學大學生研究性學習和創新性實驗計劃項目(長理工大教[2016]7號-133)。
蘭林濤(1996-),男,本科生,主要研究方向:模式識別與圖像處理。
通訊聯系人: 桂彥,講師,碩士生導師,博士,主要研究方向:圖像處理、模式識別。