基于CIELAB颜色模型的数字照片背景色替换
2016-08-05胡苏阳黄水源陈智毅
胡苏阳 黄水源 陈智毅
1(南昌大学信息工程学院 江西 南昌 330031)2(江西省人力资源和社会保障厅信息中心 江西 南昌 330030)
基于CIELAB颜色模型的数字照片背景色替换
胡苏阳1黄水源1陈智毅2
1(南昌大学信息工程学院江西 南昌 330031)2(江西省人力资源和社会保障厅信息中心江西 南昌 330030)
摘要利用数字图像处理技术对通过扫描仪获取的图片进行处理以获得其中的数字照片是日常数据采集工作中很常见的一种手段。首先进行彩色照片区域的分割以得到没有倾斜的照片区域。底色替换阶段先使用k-means算法计算出照片的背景颜色值,然后计算灰度值掩模,之后与纯白色进行混合得到替换结果。最后进行缩放、填补、裁切,从而完成整个处理过程。实验表明,该方法具有很高的实用性,并且实现简单。现阶段该方法仅使用了像素点的颜色信息,今后将改进加入像素点的空间位置信息,以提高处理成功率。
关键词照片背景色替换k-means算法灰度值掩模CIELAB颜色空间
0引言
纸质申请表的右上方固定矩形区域内粘贴有彩色照片,经扫描仪扫描得到整张申请表的数字图片。利用数字图像处理技术对扫描得到的申请表数字图片进行处理,将分割后的照片的背景替换为白色,得到符合要求的申请人的数字照片。这种照片数据采集模式被广泛应用于公安、人事部门。本文所讨论的方法是基于CIELAB颜色空间下颜色间的距离来完成人头像部分的分割,再进一步处理之后得到符合要求的数字照片。
CIELAB颜色空间在生产和生活中有着广泛的应用。许莉等提出了一种基于Lab颜色空间的运动目标检测方法。他们选择Lab三通道的颜色特征作为前景/背景的分类特征,将亮度与反应色彩本质的色度分开处理,得到每个像素在各个通道的不同信息,然后采用背景差和帧差结合的差分检测模型分别进行背景更新处理,最后再进行背景差分得到运动目标[1]。杨飚等基于Lab颜色空间,完成了双行车牌的定位。他们提出的方法能快速而精准地对双行车牌进行定位,受光线、背景等干扰因素影响较少,而且可以对脏牌、污牌进行准确的定位[2]。姜继春等对在Lab、LUV、YCbCr以及YIQ颜色空间下进行手写体文字图像聚类效果的分析比较,发现在Lab颜色空间下对手写体文字具有较好的提取效果,有利于后续的文字识别[3]。
1应用背景
江西省社会保障卡信息中心需要对在系统中缺失照片的参保人进行数字照片采集工作,现拟定如下方案:系统生成与某个参保人相对应的唯一序列号,打印软件生成与序列号对应的Code39条形码图案,与参保人的个人信息一起按照制定的格式打印成纸质申请表。在下发给参保人并粘贴照片后进行回收,工作人员再使用高速彩色扫描仪对申请表进行扫描,得到整张申请表的数字图片。利用基于数字图像处理技术编制的软件,完成条形码的识别,以及参保人粘贴的照片的处理。尽管这是一个特定的应用场合,但这种照片数据的采集方式在生产生活中具有广阔的应用场合。
本算法的流程图和照片处理部分的模块图如图1所示。本文算法是在CIELAB颜色空间下,计算灰度值掩模,并应用到背景色替换过程中。本文提出的处理算法已经在OpenCV库的基础上进行了实现,并成功应用到江西省社会保障卡的照片采集工作中,实现了照片的背景替换,大大加快了照片采集工作进度,节约了人力资源。本算法由于利用灰度值掩模对照片进行背景色替换,相对于利用二值掩模,在背景色和人物头像邻接区域能取得更好的处理效果,从而提高了处理成功率。
整个软件处理阶段的工作主要由两个部分构成:申请表上条形码的识别和照片的处理。条形码的值是与申请人一一对应的,成功识别条形码后便与申请人粘贴的照片进行关联。目前已经有公司提供成熟可靠的商业库来完成图片中条形码的识别,比如说Inlite Research公司开发的ClearImage Barcode 1D Pro,支持对图片质量低、有倾斜、缺损的条形码的识别[4]。ZBar是一套支持从多种数据源读取条形码的开源软件套装,它可从视频流、图片、原始亮度感应器中读取条形码值,具有灵活、高效、代码精简、跨平台等特性[5]。照片处理部分需要完成的工作为:利用数字图像处理技术处理扫描得到的申请表图片,获得满足条件的申请人的数字照片。处理后得到的照片需满足卡商制卡的照片要求,即照片空间大小为358×441像素,背景色为白色的数字照片。由于第一部分的工作已经有成熟可靠的库完成了条形码的识别工作,本文对余下部分的照片处理部分进行论述。
图1 算法流程图和照片处理部分模块图
2处理流程
2.1整体结构
整个照片处理阶段的流程分为3个子模块,其中彩色照片区域分割子模块完成对照片实际区域的分割;底色替换子模块完成照片背景色的替换;缩放填补裁切子模块对照片进行变换以满足大小要求。本文提出的基于灰度值掩模的背景色替换算法,作用于底色替换模块。在底色替换阶段,利用计算得到的灰度值掩模对照片的背景色进行替换,可以达到比二值掩模更好的处理效果。
对A4纸的申请表,经扫描仪扫描得到整张申请表的数字图片记为G,Ga为包含照片区域的一个较小的矩形区域。如图2所示:
图2 整体结构
先对Ga进行形态学闭操作处理以去除彩色照片附近的细线或污点,获得照片的实际区域,之后进行仿射变换得到没有歪斜的照片区域Gb。对Gb进行背景色替换操作得到白底照片Gc。最后进行缩放、填补、裁切操作以得到处理结果Gd。本文的其他部分均延续上述记法。
2.2彩色照片区域分割
针对某种固定设计的申请表,如果以固定的分辨率进行扫描,粘贴彩色照片的区域一定包含于某个位置和大小相对固定的矩形的子图像区域内,即Ga。本阶段的工作是将照片部分从整张扫描得到的图片中分割出来,以方便之后的处理工作。
在Ga中由于照片周围可能存在着申请表的分隔线以及申请人的笔迹和污点等低亮度值像素,且这些像素区域相对于照片区域显得细且小,所以在对Ga以亮度二值化后进行形态学闭操作后可以腐蚀掉这些像素[6]。申请人可能在粘贴照片时照片出现不同程度的倾斜,在扫描时纸张的倾斜都可能导致照片区域的倾斜。在进行下一步处理之前,需要对倾斜的照片进行校正。尽管照片区域可能出现倾斜,但照片区域仍然是一个矩形。可以先计算这个区域的最小外接矩形即照片区域,然后将这个外界矩形旋转到没有倾斜。本处理阶段完成后,得到的图片Gb作为输入进行底色替换。
如图3(a)所示,为了得到彩色照片的实际区域,必须先将周围存在的申请表照片周围的细线去除掉。对二值化后的图像进行形态学闭操作之后,得到的图片如图3(c)所示,可以发现细线部分已经去除。注意照片区域右下角不规则的高亮度部分,但在这张图片中不影响最小外接矩形的计算。这也是本处理方法的一个缺点,如果在照片中申请人穿浅色衣物,造成照片区域出现高亮度值区域,那么依据亮度值的形态学闭操作计算得到的照片区域可能与实际照片区域有偏差。照片的最小外接矩形的四个顶点以小圆圈示于图3(d)中。根据计算得到的外接矩形的坐标将照片区域旋转到没有倾斜的照片区域即Gb,如图3(e)所示。
图3 彩色照片区域分割
2.3底色替换
本文所使用的方法在Lab颜色空间下根据每个像素与背景色的距离,进行计算得到一个值在[0,255]范围内的灰度掩模。使用这个掩模将Gb映射为白底目标的照片Gc。大致的处理思想为:在一个较小的取样区域内利用k-means聚类算法计算得到某张照片的背景色。通过计算每个像素在CIELAB颜色空间下和背景色的距离,生成一个灰度值掩模。再利用建立的灰度值掩模完成背景色的替换工作。
2.3.1背景色的计算
图4 取样区域
CIE L*a*b*(CIELAB)是惯常用来描述人眼可见的所有颜色的最完备的色彩模型。不像RGB和CMYK色彩空间,Lab颜色被设计来接近人类视觉[7,8]。由于本任务需要将背景色替换为白色,CIELAB适合衡量两种颜色之间的距离,且与人眼判定颜色差别一致,故CIELAB颜色空间特别适合本任务的需求。由于证件照中前景像素分布的特点,照片区域左上方的区域通常都是背景区域。可以将照片区域左上方的一个矩形区域作为取样区域,对落在取样区域内的像素点的颜色值进行k-means聚类[9,10],选取数目最多的一个类的中心作为背景色的值。由于照片边缘可能出现污染,表面不均匀造成扫描后图片的杂色,取样矩形相对于照片区域左上方顶点在水平和垂直方向有较小的偏移值。取样区域的位置示意如图4所示,左上方的矩形区域为设定的取样区域。
对取样区域内的像素点的颜色值进行k-means聚类,结果得到k(我们取k=5)个类集合S={S1,S2,…,Sk}和与类对应的类中心μ={μ1,μ2,…,μk} 。那么有:
(1)
B=μp
(2)
其中p为聚类元素最多的类的标号,B为背景颜色向量。
2.3.2灰度值掩模的建立
在上一步计算得到了图片背景色B之后,需要计算一个空间大小与Gb一致、每个像素的取值范围为[0,255]的灰度值掩模M(x,y)。这个掩模M(x,y)决定了Gb中原始像素映射到Gc中的值。我们先定义在Lab颜色空间下两种颜色的距离,采用Euclidean距离,则有:
(3)
其中a、b为两种颜色向量,ak、bk为Lab颜色空间下每个分量的值。定义灰度值掩模M(x,y)如下:
(4)
D=D(Gb(x,y),B)
(5)
其中(x,y)为像素的空间坐标,D即在Lab颜色空间下照片像素颜色与背景颜色B的距离。tl与tu为两个选定的阈值,0≤tl 1 // 2 //计算灰度值掩模 3 // 4 void GenerateGrayMask(const Mat& labMat, 5 Mat& mask_gray, Vec3b bk, int tl, int tu) 6 { 7 Mat_ 8 mask_gray = Mat::zeros(labMat.size(), 9CV_8UC1); 10 for (int i = 0; i < _Ilab.rows; ++i) 11for (int j = 0; j < _Ilab.cols; ++j){ 12double diff= 13Distance(_Ilab(i,j), bk); 14if ( diff< tu){ 15if (diff < tl) 16mask_gray.at 17else 18mask_gray.at 19(uchar)(255-255*(diff - tl)/(tu - tl)); 20} 21} 22 } 初步计算得到的灰度值掩模可能在头像的内部存在孔洞(如嘴唇颜色与背景色接近等情况),使用区域填充算法对孔洞进行填充以消除该影响。对于实际头像区域外,与背景色差别D>tl的区域,它们的区域面积相对于实际头像区域的面积小很多,所以实际的头像区域为计算得到的灰度值掩模中面积最大的连通区域。 图5 M与D的映射关系 2.3.3计算替换结果 在上一步骤得到灰度值掩模M(x,y)后,结合Gb(x,y)和M(x,y)计算以白色为背景色的照片Gc(x,y)。对Gb的每个像素的RGB颜色分量使用下式计算对应像素Gc的RGB分量值。 Gc(x,y)=α×255+(1-α)×Gb(x,y) (6) α=M(x,y)/255 (7) 对于M(x,y)=255的像素点,对应的Gc(x,y)=255,即白色,上述变换将背景色替换为白色;对于M(x,y)=0的像素点,对应的Gc(x,y) =Gb(x,y),上述变换保持了非背景区域的颜色值;对于M(x,y)∈(0,255)的像素值,Gc(x,y)为Gb(x,y)和纯白的线性混合,靠近背景色(M接近255)的像素混入更多的白色,反之更接近前景色。核心代码如下: 1 // 2 //计算源彩色照在灰度值掩护模作用下的替换结果 3 // 4 void AddMasked(const Mat& src 5 , const Mat& mask, Mat & dst) 6 { 7double alpha, beta; 8for (int i = 0; i < src.rows; ++i) 9for (int j = 0; j < src.cols; ++j){ 10alpha = mask.at 11beta = 1 - alpha; 12Vec3b s = src.at 13dst.at 14(alpha * 255 + beta * s[0]); 15dst.at 16(alpha * 255 + beta * s[1]); 17dst.at 18(alpha * 255 + beta * s[2]); 19} 20 } 图6为对某张照片进行计算灰度值掩模,再计算替换背景色结果的示例。其中展示了一般的二值掩模的处理结果,该二值掩模仅仅利用了单一阈值区分背景色和前景色。通过比较可以发现,相比二值掩模的处理结果,利用灰度值掩模进行替换的结果中人物头像头发边缘的处理结果更尽如人意,显得更加自然。 图6 背景色替换 2.4缩放、填补、裁切 需要的照片空间大小为358×441像素,即水平方向为358像素,垂直方向为441像素。上一过程得到的处理结果Gc一般不能满足大小要求,所以要对Gc进行处理以得到满足要求的照片Gd。 假设要求照片的水平/垂直比为x0/y0(这里为358/441),上一过程得到的Gc的水平/垂直比为x/y,那么需要对Gc进行等比例的缩放操作后,再进行填补或裁切操作以得到满足要求的照片。如果x/y 3实验评估 为了验证本文提出处理方法在实际处理应用中的有效性,本部分分别从实际处理效果、实际应用的统计结果和与单纯的二值掩模进行替换的运算速度三方面进行分析。本实验的数据来源为江西省社会保障卡申请表经扫描仪扫描得到的图片。扫描仪采用的是Kodak i1220 plus scanner,扫描配置颜色位深度为24位,分辨率400 dpi。软件系统运行在一台操作系统为Windows 7的个人计算机上,处理器为Intel Core i5-2450M(主频为2.5 GHz),内存2 GB。 3.1实际处理效果 经过大量的前期对比实验,取下限阈值tl=20、上限阈值tu=45时,采用此算法的替换效果较好,故在tl=20、tu=45、二值掩模单阈值t=45时进行处理效果的对比试验。 本文选取了4张具有代表性的人物照片进行了运行结果演示,如图7所示。对于背景色不同的照片,本算法能较好地完成处理任务,相对于二值掩模的处理效果更好。对于人物边缘和背景颜色相近和背景色不均匀的情况,灰度值掩模替换比二值掩模替换效果好。注意第一列第二行中,利用二值掩模替换造成人物面部左下部一些部位的缺失。在第二列第二行中,人物头发出现了间断,而在第二列第三行中头发的细节得到了保留,但照片左下角也有不期望得到的模糊的背景。比较第三列和其它列的照片,对于背景色均匀的照片,使用灰度值掩模替换和二值掩模替换的处理效果差别不大。第四列第三行的照片人物头像和背景详解部分残存了部分蓝色。总的来说,本算法利用灰度值掩模进行背景色替换在处理效果上是优于利用二值掩模进行背景色替换的。 图7 处理效果比较 3.2实际应用中成功率分析 本文所讨论的处理方法已经应用到江西省社保卡生产的照片数据采集工作中,经过一段时间的系统运行,发现经过程序的处理可以大大降低照片采集工作的强度。扫描纸质申请表得到的图片,在程序处理过后所得到的照片在人工审查过程中可以分为3类:处理合格、需要人工进一步修改、处理失败。处理合格指的是程序处理的结果已经满足所有的要求。需要人工进一步修改的指的是程序处理结果有小的瑕疵,需要在程序处理的结果之上擦除部分背景色。处理失败指的是程序将某些区域的前景色替换成了白色,必须在原图上进行人工处理的。其中第2、3类需要人工进行处理,但第2类需要的人工工作量少于第3种情况的工作量,仅仅需要操作员使用图片编辑软件进行一些简单的擦除工作便可。 对程序处理的10 000张左右的扫描图片的处理结果进行人工分类,统计结果如表1所示。 表1 处理结果统计 从表1中可以看出,该处理方法的成功率为55.0%,仅13.2%的图片需要完全通过人工方法处理。如果能进一步控制所贴照片的质量,如避免张贴色彩不均匀、背景色和人物衣服颜色过于接近的照片,处理成功率应该会更高。该方法相对于全部人工处理可以大量减少工作量,提高照片采集工作效率。 3.3与单纯二值掩模处理进行替换的运算速度比较 对10 000张左右的扫描图片分别使用灰度值掩模和单纯的二值掩模进行处理,统计平均处理时间。即在聚类个数k=5, 下限阈值tl=20,上限阈值tu=45,二值掩模单阈值t=45的条件下,得出的结论如表2所示。 表2 灰度值掩模和二值掩模替换运行速度比较 表2中分别统计了利用灰度值掩模和二值掩模对同一批扫描图片的整个处理阶段时间和底色替换阶段时间。可以发现利用灰度值掩模进行底色替换虽然慢了12.5%,但是处理的效果却远远好于单纯利用二值掩模的处理结果,这种代价是值得的。 4结语 使用数字图像处理方法对通过扫描仪获得的数字图片进行处理,得到数字照片,是在现实照片数据采集工作中经常采用的一种模式。本文提出了一种易于实现且实用性高的处理方法。对处理流程进行了详尽的描述,实践检测结果显示这种处理方法是实用的,可以大大地提高照片采集的工作效率。 本处理方法由彩色照片区域分割、底色替换、缩放和填补(裁切)三个子流程构成。针对某个固定的矩形区域应用形态学闭操作,之后计算它的最小外接矩形得到照片区域,经过仿射变换以得到没有倾斜的彩色照片区域。底色替换子流程先使用k-means聚类算法计算出背景色,之后计算对应的灰度值掩模,再使用灰度值掩模对彩色照片区域进行背景色替换。最后进行相应的缩放、填补、裁切操作使照片满足大小要求。 本文提出的处理方法也存在一些不足。背景颜色的替换仅仅根据照片的颜色信息,仅利用了每个像素点颜色和背景色的颜色距离生成灰度值掩模,而忽视了像素点的空间位置信息,因为照片中人的头像区域往往呈现了某个固定的一个形状模式。该方法涉及到的阈值均为固定值,而不是自适应的。由于上述原因,该处理方法具有较大的局限性。对于背景色和前景颜色相近、照片拍摄时背景幕布颜色不均、照片中人物身穿浅色衣服的处理不好等情况,处理效果不好。之后的工作包括改进系列算法,利用像素点的空间位置信息并基于动态自适应的阈值,提高处理的成功率,降低人工干预程度。 参考文献 [1] 许莉,王敏,温月.基于Lab颜色空间的运动目标检测[J].华中科技大学学报:自然科学版,2013,41(S1):219-222. [2] 杨飚,杨芩.Lab颜色空间和形态学处理相结合的双行车牌定位方法[J].科学技术与工程,2014,14(26):108-110. [3] 姜继春,王晓红,许秦蓉.基于Lab颜色空间的手写文字提取算法研究[J].包装工程,2014,35(7):139-143. [4] Inlite Research Inc.Barcode Recognition[EB/OL].[2014-09-09][2015-03-20] http:// www.inliteresearch.com/products/index.php. [5] Jeff Brown.ZBar bar code reader[EB/OL].(2010-03-25) [2015-03-20] http://zbar.sourceforge.net/. [6] Gonzalez R C.Digital Image Processing[M].2nd ed.New Jersey:Prentice Hall,2011. [7] 赵秀萍.CIELAB色空间及应用[J].印刷质量与标准化,2003,(5):11-13. [8] Macadam D L.Visual sensitivities to color differences in daylight[J].JOSA, 1942, 32(5):247-273. [9] Huang Z, Ng M K.A note on k-modes clustering[J].Journal of Classification,2003,20(2): 257-261. [10] Chaturvedi A, Green P E, Caroll J D.K-modes clustering[J].Journal of Classification, 2001,18(1):35-55. 收稿日期:2015-03-16。胡苏阳,硕士生,主研领域:数字图像处理。黄水源,副教授。陈智毅,工程师。 中图分类号TP391.41 文献标识码A DOI:10.3969/j.issn.1000-386x.2016.07.053 REPLACING DIGITAL PORTRAIT PHOTO BACKGROUND COLOUR BASED ON CIELAB COLOUR MODEL Hu Suyang1Huang Shuiyuan1Chen Zhiyi2 1(SchoolofInformationEngineering,NanchangUniversity,Nanchang330031,Jiangxi,China)2(InformationCenter,DepartmentofHumanResourcesandSocialSecurityofJiangxiProvince,Nanchang330030,Jiangxi,China) AbstractUsing digital image processing technology to process the scanned images to obtain digital portrait photos in them is a very common means in routine data collection. First it segments the colour portrait photo area so as to obtain an area without slant. In background colour replacement stage, it calculates the background colour value by k-means clustering algorithm, then calculates the greyscale mask, and blends with pure white colour afterwards to obtain the replacement results. Finally, it makes scaling, padding and cropping operations so that completes the whole process. Experiment indicates that this method has high practicality, and is easy to implement. At present stage the method just uses the colour information of pixels, in the future the amelioration work will add pixels spatial position information so as to improve the success rate of processing. KeywordsPhoto background colour replacementK-means clustering algorithmGreyscale maskCIELAB colour space