颜硕彦 钱巨
摘 要:为了解决照片中移动设备屏幕图像的获取问题,提出了一种基于视觉的移动设备屏幕图像提取与规范化方法。首先使用轮廓识别算法对原始图像进行边缘检测,获得包含设备和手部的轮廓;其次,通过种子填充法从轮廓得到设备和手部的填充区域;接着在原始图像上使用基于颜色空间的皮肤检测方法得到手部区域,再与之前得到的填充区域做减运算,以得到独立的设备区域;然后再在独立设备区域的轮廓上做多边形拟合,得到设备的四个顶点;最后通过透视变化得到规范化后的设备屏幕图像。实验表明,该方法在背景不复杂且设备作为主体的照片环境下具有较高的准确率。
关键词:移动设备;图像提取;边缘检测;皮肤检测
中图分类号:TP391 文献标识码:A
A Visual Screen Extraction and Normalization
Method for Mobile Devices
YAN Shuo-yan,QIAN Ju
(College of Computer Science and Technology, Nanjing University of Aeronautics
and Astronautics,Nanjing,Jiangsu 211106, China)
Abstract:A visual screen extraction and normalization method for mobile devices is proposed to get the mobile devices screen images from photos. First, we do Canny edge detection to detect the edges of the mobile device. The detected edges may include some parts of the hand holding the device. Then, a seed filling operation is conducted on the image of edges to get the filling area of the whole device and parts of the hand. Next, we do color space based skin detection on the original image to get the filling area of the hand. After that, the area of the device can be calculated by subtracting the filling area of the hand from that of the device and parts of the hand. Four corner points of the device can be got by conducting a polygon fitting operation on the calculated area. Finally, we get the normalized device screen image by perspective transformation according to the corner points. The experiment shows that the method accurately works when the subject device is the main object in a photo and the background of the photo is not complicated.
Key words:mobile device;image extraction; edge detection;skin detection
當前移动应用多采用迭代开发的模式,当应用完成开发后,仍然需要对其进行不断优化。但是,在有限的时间内应该侧重于哪部分功能的优化是一个很难决定的问题。通过了解用户对应用不同功能的使用频率从而对功能优化设置不同的优先级是非常必要。传统的方法往往选择在应用的源码中加入数据采集功能,以返回用户使用信息给服务器。该方法实施复杂,且可能影响用户的使用体验。
因此,可以使用一种基于图像的方法来统计应用不同功能的使用频率。该方法首先收集用户在移动设备上使用目标应用的日常图片,接着从图片中提取出只包含设备屏幕的部分并作规范化处理,最后再根据设备屏幕图像判断用户正在使用的软件功能,实施统计分析。
对设备屏幕图像的提取与规范化是该方法的重点。解决该问题的方法通常有两类,一类是基于机器学习的物体检测方法,例如著名的YOLO方法[1]。赵德安等使用YOLO深度卷积神经网络实现了复杂背景下苹果的检测定位[2];王宇宁等实现了基于YOLO算法的车辆实时检测[3]。该类基于机器学习的方法往往需要大量的样本进行训练,工作量巨大,而仅使用现有的预训练模型往往无法在精度上达到要求。
另一类则是使用传统的图像处理方法,例如边缘检测、轮廓识别等。许鑫杰等开发了一种基于边缘检测的零件轮廓识别系统[4];杨静娴等实现了基于图像处理的白酒酒花轮廓检测[5];林耀海等实现了结合图像和图形特征的原木轮廓识别[6]。该类方法工作量较小,可靠性高,在一些给定的场景下也能够取得令人满意的准确率。
因此,提出了一种基于传统图像处理的移动设备屏幕图像提取与规范化方法。
1 方法原理流程
由于移动设备日常使用一般都发生在手持场景下,因此,在对设备屏幕进行检测时,需要特别注意排除人手的存在可能造成的干扰。
图1展示了对一张日常手持使用移动设备的示例图片进行屏幕提取和规范化的理想效果图。
本方法的流程如图2所示。首先,使用边缘检测和轮廓识别算法找到设备的大致轮廓。由于人手的存在,该轮廓无法直接代表设备轮廓,所以需要进一步处理以排除人手对设备轮廓检测的干扰。接着,使用多边形拟合的方法在轮廓上找到设备的四个顶点坐标。最后,通过透视矫正得到规范化后的设备屏幕图像。
2 步骤详情
2.1 边缘检测
常用的边缘检测方法包括Sobel、Laplacian、Canny等。图3是不同边缘检测算法在使用Otsu自适应阈值[7-9]的情况下得到的边缘检测结果图像。
就当前问题而言,Sobel方法具有一定抗噪能力,但是对边缘定位的准确性有所不足,对弱边缘的检测能力也有限;Laplacian算法很容易造成目标边缘信息的丢失,出现边缘不连续的情况,且抗噪能力较弱;Canny算法不容易受到噪声干扰,能够检测到真正的弱边缘,效果最好。所以本方法选用Canny算法进行边缘检测。
在使用Canny方法得到图像中边缘信息的二值图后,使用轮廓检测方法选择图像中外接矩形面积最大的轮廓作为初步识别的设备轮廓。将该轮廓重新绘制在新的图像中,如图4所示。可见,设备轮廓受到了手部轮廓的严重干扰,所以接下来需要继续排除手部轮廓的干扰。
2.2 排除手部轮廓干扰
在得到设备和手部的轮廓信息后,就可以通过种子填充法得到其区域信息。在图4中,以图像的4个角落为种子执行漫水填充,完成后再对图像中的像素全部取反,就得到了包含完整设备以及部分人手的区域,如图5(a)所示。
接下来,需要将设备区域与人手区域进行区分,以得到只有移动设备的区域。此处,可以使用基于颜色空间的皮肤检测算法[10]。
基于颜色空间的皮肤检测算法是一种利用人体肤色与周围环境颜色的差异实现的检测算法。可以应用于皮肤检测的颜色空间有很多,而应用于皮肤检测的颜色空间也有许多, 目前国际常用的比较正规的色彩空间有RGB、YCbCr、HSV、YUV、LAB等[11-12]。人体的肤色信息在不同的颜色空间中有不同的分布范围。对于在哪个颜色空间中皮肤检测能达到最佳的效果引起了许多学者的广泛关注与研究。
由于YCbCr色彩空间中蓝色色度Cb和红色色度Cr受光照强度影响不大且依赖性不大, 因此本方法采用基于YCrCb颜色空间的皮肤检测算法。
Y = 0.257*R + 0.564*G + 0.098*B + 16
Cb = -0.148*R – 0.291*G + 0.439*B + 128
Cr = 0.439*R – 0.368*G – 0.071*B + 128(1)
通过如下公式(1)可以将像素点从RGB值转换成所对应的YCbCr值。再根据人体肤色所处的Cb、Cr值的范围分割出图像中的手部区域。最终从原始图像中检测出的手部區域,如图5(b)所示。
将图5(a)记作Imixed,图5(b)记作Ihand,最后将Imixed与Ihand作减运算,即得到独立的设备区域Idevice,如图5(c)所示。
Idevice = subtract(Imixed, Ihand)(2)
在图5(c)的基础上再次进行轮廓检测,取面积最大的轮廓作为真正的设备轮廓,如图5(d)所示。
2.3 多边形拟合得到设备顶点
在得到设备的轮廓信息后,使用Douglas-Peucker算法[13]对轮廓进行多边形拟合。该算法是一种经典的线要素压缩算法,主要是通过删除曲线上的非特征点, 保留特征点来减少数据量, 即通过保留关键点, 删除次要点来达到抽稀压缩的目的。图6是该算法的示意图,其主要步骤如下:
(1)在曲线首尾两点之间连接一条直线AB,该直线为曲线的弦;
(2)得到曲线上离该直线段距离最大的点C,计算其与AB的距离d1;
(3)比较该距离与预先给定的精度阈值的大小,如果小于该阈值,则该直线段作为曲线的近似,该段曲线处理完毕;
(4)如果距离大于阈值,则用C将曲线分为两段,并分别对两段曲线进行步骤(1)~(3)的处理;
(5)当所有曲线都处理完毕时,依次连接各个分割点形成的折线,即可以作为曲线的近似。
算法1 二分法拟合设备顶点的算法
function GetDeviceCornerPoints (C): P
C: all points in device contour
P: four corner points of the device
begin
1 maxThr := 1;
2 FP := PolygonFitting(C, maxThr);
3 while count(FP) >4 do
4 minThr := maxThr;
5 maxThr := 2*maxThr;
6 FP := PolygonFitting(C, maxThr);
7 end
8 midThr := (minThr+maxThr)/2;
9 FP := PolygonFitting(C, midThr);
10while count(FP) != 4 do
11midThr := (minThr+maxThr)/2;
12FP := PolygonFitting(C, midThr);
13if count(FP) > 4 then
14minThr:= midThr
15elseif count(FP) < 4 then
16maxThr:= midThr
17end
18end
19P := FP
end
由于该算法只提供的精度阈值,无法直接设置拟合点的个数,所以此处使用二分法逐渐调整该算法的精度阈值,最终控制拟合点的个数为4个,即作为设备轮廓的四个顶点,如算法1所示。
算法2的第1-7行简单确定了需要查找的精度区间[minThr,maxThr],第8-18行则是在得到的精度区间中使用二分查找法逐渐缩小查找范围,直到得到的拟合点FP的个数为4个。
拟合的效果图如图7(a)所示。
2.4 规范化设备界面图像
由于通过拍摄得到的设备屏幕图像往往存在倾斜和透视等情况,所以在得到设备的四个顶点后,还需要对其进行透视变换以得到规范化的设备界面图像。经过透视变化最终提取得到的设备屏幕图像如图7(b)所示。
3 实验结果分析
选取多张在不同日常场景下使用多种移动设备的照片,在Python3.6环境下基于OpenCV工具进行实验,以检验该方法的准确率。
设备屏幕提取准确的要求有下列三点:
(1)最终得到的规范化图像至少包含设备完整界面图像内容85%的占比;
(2)最终得到的规范化图像中与设备界面无关的内容不超过15%的占比;
(3)最终得到的规范化图像与理想图像不存在超过10°的倾斜偏差。
此外,将选取的照片按照3种不同的条件分为以八组进行实验:
(1)简单背景,正常光照,手持状态。
(2)简单背景,正常光照,放置状态。
(3)简单背景,弱光环境,手持状态。
(4)简单背景,弱光环境,放置状态。
(5)复杂背景,正常光照,手持状态。
(6)复杂背景,正常光照,放置状态。
(7)复杂背景,弱光环境,手持状态。
(8)复杂背景,弱光环境,放置状态。
实验结果如表1和图8所示。表1按上述八个分组进行了实验结果统计,每组选取了30张图片,并按照上述的准确要求统计结果准确的图片数量和计算结果准确率。图8则是分别以单个条件为标准计算得到的准确率对比柱状图。
根据实验结果可知,在正常光照条件简单照片背景的情况下,手持与放置状态的设备图像提取结果均具有较高的准确率(精度分别为80%和83.3%),说明排除手部干扰的步骤起到了很好的效果。
而在正常光照复杂背景下,该方法则不易取得较好的效果(精度仅为60%和43.3%),一方面是因为复杂背景下有时难以得到完整闭合的设备轮廓;另一方面是因为有时会得到移动设备和背景物体的混合轮廓而难以区分;此外,复杂背景下也难以保证移动设备是照片中的主体目标,从而难以选择正确的轮廓。
此外,在弱光条件下,无论背景是否复杂,都可以得到叫高的准确率(平均精度达到了85.8%)。这是因为弱光环境模糊了照片中物体的轮廓,而设备屏幕由于自发光的原因,可以得到准确的轮廓。
4 结 论
提出了一种使用图像处理技术从日常照片中提取移动设备屏幕图像并将其规范化的方法。实验结果表明,该方法应用在背景不复杂、移动设备作为主要物体的照片中具有较高的准确率。该方法的主要流程可以概括为下面的四个步骤:
(1)通过Canny算法检测设备边缘信息;
(2)使用基于YCrCb颜色空间的皮肤检测算法排除人手对移动设备轮廓定位的干扰;
(3)使用Douglas-Peucker多边形拟合算法得到设备的四个顶点;
(4)使用透视矫正得到规范化处理后的设备屏幕图像。
参考文献
[1] REDMON J, DIVVALA S, GIRSHICK R, et al. You only look once: unified, real-time object detection[C].Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2016: 779-788.
[2] 趙德安,吴任迪,刘晓洋,等.基于YOLO深度卷积神经网络的复杂背景下机器人采摘苹果定位[J].农业工程学报,2019,35(3):164-173.
[3] 王宇宁,庞智恒,袁德明.基于YOLO算法的车辆实时检测[J].武汉理工大学学报,2016,38(10):41-46.
[4] 许鑫杰,王秀锋,鲁文其,等.基于边缘检测的零件轮廓识别系统开发[J].机电工程,2019,36(2):201-205.
[5] 杨静娴,任小洪.基于图像处理的白酒酒花轮廓检测[J].食品与机械,2019,35(12):52-55.
[6] 林耀海,杨泽灿,张泽均.结合图像和图形特征的原木轮廓识别[J].福建农林大学学报(自然科学版),2020,49(3):412-417.
[7] MEI Fang YUE Guang-xue, YU Qing-cang. The study on an application of otsu method in canny operator[C].Proceedings of The 2009 International Symposium on Information Processing (ISIP 2009),Academy Publisher, 2009: 109.
[8] 李华强,喻擎苍,方玫.Canny算子中Otsu阈值分割法的运用[J].计算机工程与设计,2008(9):2297-2299.
[9] SA Ji-ming, SUN Xiao-shuang, ZHANG Ting-ting, et al. Improved Otsu segmentation based on sobel operator[C].International Conference on Systems, 2016: 886-890.
[10]TSAGARIS A, MANITSARIS S. Colour space comparison for skin detection in finger gesture recognition[J].International Journal of Advances in Engineering & Technology, 2013, 6(4): 1431.
[11]CAO Jian-qiu, WANG Hua-qing, LAN Zhang-li. Skin color division base on modified YCrCb color space [J].Journal of Chongqing Jiaotong University (Natural Science), 2010, 3: 40.
[12]吴要领. 基于YCrCb色彩空间的人脸检测算法的设计与实现[D].成都:电子科技大学,2013.
[13]HERSHBERGER J, SNOEYINK J. An O (n log n) implementation of the Douglas-Peucker algorithm for line simplification[C].Proceedings of the tenth annual symposium on Computational geometry. 1994: 383-384.