发明内容
本申请实施例的目的在于提供一种图像拼接方法、装置、设备和存储介质,充分利用每个小镜头(采集器)获取的子图像之间的重叠区域和非重叠区域的图像信息,综合考虑两个区域的图像特征,分别进行像素处理,进而生成原始图像的拼接图像,降低拼接图像的网格噪声,使拼接图像更加连续,更加平滑。
本申请实施例第一方面提供了一种图像拼接方法,包括:获取待处理的原始图像,所述原始图像由多个采集器采集的多个子图像组成;在所述原始图像中,将非过曝区域的图像划分为重叠区域和非重叠区域;所述重叠区域为多个所述子图像的像素坐标在所述原始图像中相互重叠的区域;分别对所述重叠区域和所述非重叠区域进行像素处理,生成所述重叠区域的第一像素信息和所述非重叠区域的第二像素信息;根据所述第一像素信息和所述第二像素信息,将所述重叠区域和所述非重叠区域进行图像拼接,生成所述原始图像的拼接图像。
于一实施例中,还包括:判断所述原始图像中是否存在过曝区域;若所述原始图像中存在所述过曝区域,针对所述原始图像中的所述过曝区域,选取所述子图像的像素坐标不存在相互重叠的区域为有效区域;计算所述有效区域的第三像素信息;根据所述第一像素信息、所述第二像素信息和第三像素信息进行图像拼接,生成所述原始图像的所述拼接图像。
于一实施例中,所述判断所述原始图像中是否存在过曝区域包括:计算所述原始图像中每个像素点的梯度信息;于所述原始图像中,查找是否存在所述梯度信息小于预设的梯度阈值、并且像素值在预设的像素范围内的第一像素点,若存在,则所述第一像素点所在的区域为所述过曝区域。
于一实施例中,对所述重叠区域进行像素处理,生成所述重叠区域的第一像素信息的步骤,包括:分别计算所述重叠区域中每个重叠像素点的重叠次数;根据所述重叠像素点的像素值和所述重叠次数,分别计算所述重叠像素点的平均像素值,所述第一像素信息中包括每个所述重叠像素点所述平均像素值。
于一实施例中,对所述非重叠区域进行像素处理,生成所述非重叠区域的第二像素信息的步骤,包括:为所述非重叠区域中的每个非重叠像素点的像素值赋予预设权重,生成每个所述非重叠像素点的加权像素值,所述第二像素信息中包括每个所述非重叠像素点的所述加权像素值。
于一实施例中,所述预设权重大于1。
于一实施例中,所述在所述原始图像中,将非过曝区域的图像划分为重叠区域和非重叠区域,包括:针对所述非过曝区域,分别计算所述多个采集器获得的每个所述子图像的像素坐标;选取所述子图像的像素坐标存在相互重叠的图像区域为所述重叠区域,剩余的图像区域为所述非重叠区域。
本申请实施例第二方面提供了一种图像拼接装置,包括:获取模块,用于获取待处理的原始图像,所述原始图像由多个采集器采集的多个子图像组成;划分模块,用于在所述原始图像中,将非过曝区域的图像划分为重叠区域和非重叠区域;所述重叠区域为多个所述子图像的像素坐标在所述原始图像中相互重叠的区域;处理模块,用于分别对所述重叠区域和所述非重叠区域进行像素处理,生成所述重叠区域的第一像素信息和所述非重叠区域的第二像素信息;拼接模块,用于根据所述第一像素信息和所述第二像素信息,将所述重叠区域和所述非重叠区域进行图像拼接,生成所述原始图像的拼接图像。
于一实施例中,还包括:判断模块,用于判断所述原始图像中是否存在过曝区域;选取模块,用于若所述原始图像中存在所述过曝区域,针对所述原始图像中的所述过曝区域,选取所述子图像的像素坐标不存在相互重叠的区域为有效区域;计算模块,用于计算所述有效区域的第三像素信息;所述拼接模块还用于根据所述第一像素信息、所述第二像素信息和第三像素信息进行图像拼接,生成所述原始图像的所述拼接图像。
于一实施例中,所述判断模块用于:计算所述原始图像中每个像素点的梯度信息;于所述原始图像中,查找是否存在所述梯度信息小于预设的梯度阈值、并且像素值在预设的像素范围内的第一像素点,若存在,则所述第一像素点所在的区域为所述过曝区域。
于一实施例中,所述处理模块用于:分别计算所述重叠区域中每个重叠像素点的重叠次数;根据所述重叠像素点的像素值和所述重叠次数,分别计算所述重叠像素点的平均像素值,所述第一像素信息中包括每个所述重叠像素点所述平均像素值。
于一实施例中,所述处理模块还用于:为所述非重叠区域中的每个非重叠像素点的像素值赋予预设权重,生成每个所述非重叠像素点的加权像素值,所述第二像素信息中包括每个所述非重叠像素点的所述加权像素值。
于一实施例中,所述预设权重大于1。
于一实施例中,所述划分模块用于:针对所述非过曝区域,分别计算所述多个采集器获得的每个所述子图像的像素坐标;选取所述子图像的像素坐标存在相互重叠的图像区域为所述重叠区域,剩余的图像区域为所述非重叠区域。本申请实施例第三方面提供了一种电子设备,包括:存储器,用以存储计算机程序;处理器,用以执行本申请实施例第一方面及其任一实施例的方法,以对多个原始的子图像进行图像拼接。
本申请实施例第四方面提供了一种非暂态电子设备可读存储介质,包括:程序,当其藉由电子设备运行时,使得所述电子设备执行本申请实施例第一方面及其任一实施例的方法。
本申请提供的图像拼接方法、装置、设备和存储介质,对原始图像的漏光区域和非漏光区域采用不同的处理方式,针对非漏光区域,首先将多个原始子图像中非漏光区域的图像划分为重叠区域图像和非重叠区域的图像,然后分别对两个区域的图像进行不同的像素处理,最后综合两个区域的像素信息进行图像拼接,生成拼接图像,如此,针对非漏光区域的图像,充分利用了每个采集器获取的子图像之间的重叠区域和非重叠区域的图像信息,综合考虑两个区域的图像特征,分别进行像素处理,降低了拼接图像的网格噪声,使拼接图像更加连续,更加平滑。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。在本申请的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
如图1所示,本实施例提供一种电子设备1,包括:至少一个处理器11和存储器12,图1中以一个处理器为例。处理器11和存储器12通过总线10连接,存储器12存储有可被处理器11执行的指令,指令被处理器11执行,以使电子设备1可执行下述的实施例中方法的全部或部分流程,以以对多个原始的子图像进行图像拼接。
于一实施例中,电子设备1可以是手机、笔记本电脑、台式计算机、或者多台计算机组成的运算系统等设备。
于一实施例中,电子设备1还可以包括多个图像采集器13,每个采集器13分别通过总线10与处理器11和存储器12连接。比如多个采集器13可以是摄像头阵列,用于采集多个原始的子图像。
请参看图2A,其为本申请一实施例的指纹识别场景,包括:电子设备1,电子设备1上设置有指纹识别模块14,指纹识别模块14由小型摄像头阵列组成,采集器13可以是小型摄像头阵列。当用户手指触摸或按压指纹识别模块14时,触发摄像头阵列采集用户的手指的原始图像,多个摄像头采集多个原始的子图像,组成待处理的原始图像。电子设备1获取到原始图像后,对原始图像进行重新拼接,生成拼接图像,拼接图像可以作为后续指纹识别的指纹图像。
于一实施例中,以5*5lens array(镜头阵列)为例,假设每个小lens(镜头)获取的子图像为20*20pixel(像素),设备获取的原始raw图是一张由5个20*20矩阵拼接而成的100*100大小的原始图像(如图2B所示)。在实际场景中,重叠区域可能是不均匀的,假设中间两个lens之间重叠区域为6个pixel,两侧lens之间重叠区域为3个pixel,即五个lens的像素位置为:[0:20][17:37][31:51][45:65][62:82],则按照上述方式可以选取每个小lens不重叠区域拼接成一张[20*2+(20-3-3)*3]2=82*82pixel大小的拼接图像(如图2C所示)。
于一实施例中,上述五个lens的重叠区域也可以是均匀的,比如五个lens的像素位置为:[0:20][17:37][34:54][51:71][68:88],则按照上述方式可以选取每个小lens不重叠区域拼接成一张88*88pixel大小的拼接图像。
然而,每个摄像头之间距离比较近,图像采集范围存在重叠,导致子图像之间具有重叠的部分,在图像拼接过程中综合考虑重叠区域和非重叠区域的图像特征,分别进行像素处理,可以降低拼接图像的网格噪声,使拼接图像更加连续,更加平滑。
请参看图3,其为本申请一实施例的图像拼接方法,该方法可由图1所示的电子设备1来执行,并可以应用于如图2A至图2B所示的指纹识别场景中,以对摄像头阵列采集的多个原始的子图像进行图像拼接。该方法包括如下步骤:
步骤301:获取待处理的原始图像,原始图像由多个采集器13采集的多个子图像组成。
在本步骤中,多个采集器13可以是手机指纹识别模块14的摄像头阵列,也可以是手机外接的图像采集器13,多个采集器13之间的采集范围存在重叠部分。采集器13实时采集目标物体(手指)的多个子图像,多个子图像组成目标物体的原始图像。
步骤302:在原始图像中,将非过曝区域的图像划分为重叠区域和非重叠区域。重叠区域为多个子图像的像素坐标在原始图像中相互重叠的区域。
在本步骤中,可以预先设定多个采集器13的采集范围之间的重叠范围的大小,比如可以预先设定摄像头阵列的每个摄像头采集的子图像之间的重叠范围大小。非过曝区域的图像可以是纹采集过程中的非漏光区域的指纹图像。据此,可以再原始图像中,将非过曝区域的图像划分为重叠区域的图像和非重叠区域的图像。
步骤303:分别对重叠区域和非重叠区域进行像素处理,生成重叠区域的第一像素信息和非重叠区域的第二像素信息。
在本步骤中,原始的非过曝区域图像中的重叠区域中,存在不同的子图像的信息,而非重叠区域中仅仅包含单个子图像的信息,因此具有不同的图像特征,可以分别采用不同的方式对二者进行像素处理,可以使得到的第一像素信息和第二像素信息最大限度的清楚表征用户指纹的实际图像。
步骤304:根据第一像素信息和第二像素信息,将重叠区域和非重叠区域进行图像拼接,生成原始图像的拼接图像。
在本步骤中,第一像素信息可以用来表征重叠区域中每个像素点的像素特征,第二像素信息表征非重叠区域中每个像素点的像素特征。可以按照像素点在原始图像上的位置排序,将第一像素信息和第二像素信息进行拼接,进而实现重叠区域和非重叠区域进行图像拼接,生成原始图像的拼接图像,如此,拼接图像中包含了重叠区域和非重叠区域的图像特征,避免浪费采集器13的采集信息。
上述图像拼接方法,针对非过曝区域,首先将摄像头阵列采集的多个原始子图像划分为重叠区域图像和非重叠区域的图像,然后分别对两个区域的图像进行不同的像素处理,最后综合两个区域的像素信息进行图像拼接,生成拼接图像,如此,充分利用了每个摄像头获取的子图像之间的重叠区域和非重叠区域的图像信息,综合考虑两个区域的图像特征,分别进行像素处理,降低了拼接图像的网格噪声,使拼接图像更加连续,更加平滑。
请参看图4,其为本申请一实施例的图像拼接方法,该方法可由图1所示的电子设备1来执行,并可以应用于如图2A至图2B所示的指纹识别场景中,以对摄像头阵列采集的多个原始的子图像进行图像拼接。该方法包括如下步骤:
步骤401:获取待处理的原始图像,原始图像由多个采集器13采集的多个子图像组成。详细参见上述实施例中对步骤301的描述。
步骤402:判断原始图像中是否存在过曝区域,,若是进入步骤405,否则进入步骤403。
在本步骤中,在实际指纹图像采集场景中,用户手指可能存在未能正对采集区域或者按压时方位偏移等情况,此时会造成部分摄像头过度曝光或漏光,采集得到的图像的过曝区域会对非过曝区域产生影响,形成一个亮度逐渐变化的过渡区域,不利于指纹识别的结果,为了不放大过曝区域对非过曝区域的影响,首先在原始图像中将漏光区域区分出来,即选取过度曝光的第一像素点所在的区域作为过曝区域,然后进入步骤405进行后续处理。剩余的第二像素点所在区域作为非过曝区域,然后进入步骤403进行后续处理。
于一实施例中,步骤402可以包括:计算原始图像中每个像素点的梯度信息。于原始图像中,查找梯度信息小于预设的梯度阈值、并且像素值在预设的像素范围内的第一像素点,第一像素点所在的区域为过曝区域,剩余的第二像素点所在区域作为非过曝区域。
在本步骤中,以5*5lens array(镜头阵列)为例,假设每个小lens(镜头)获取的子图像为20*20pixel(像素),设备获取的原始raw图是一张由5个20*20矩阵拼接而成的100*100大小的原始图像(如图2B所示)。实际场景中,由于raw图过曝区域比较平滑,可以利用梯度信息(某一像素值与其八邻域像素之差)来将每个小lens分为漏光和非漏光两种状态,进而区分出原始raw图像的过曝区域和非过曝区域。首先计算原始图像中每个像素点的梯度信息,当像素点的八邻域中最小梯度信息小于梯度阈值时,并且像素值在预设的像素范围内时,则该像素点为过曝区域内的第一像素点。不符合上述标准的其他像素点所在的区域近视非过曝区域。
于一实施例中,梯度阈值可以为12,可以基于历史过曝区域图像的梯度信息统计得到,原则是足够小的梯度阈值,以使其表征漏光场景下采集的图像信息。
于一实施例中,假设raw图像像素的最大值为H,则预设的像素范围可以是9/10H至H。双重判断标准,可以使区分出来的过曝区域更加准确。
步骤403:针对非过曝区域,分别计算多个采集器13获得的每个子图像的像素坐标。
在本步骤中,对于非过曝区域的图像,全面采集用户指纹的图像,不存在漏光导致的不良影响,可以根据摄像头的设定参数,分别计算每个摄像头采集的子图像所占用的像素坐标。以正方形的摄像头为例,计算过程如下:
针对非过曝区域的每个lens,采用如下公式逐像素点计算像素坐标(dx,dy):
其中,dxj表示第j列的小镜头在x方向上的像素坐标起始量,dyi表示第i行的小镜头在y方向上的像素坐标起始量。lens_size代表每个小lens大小,本实施例每个小lens可以为20*20pixel,则lens_size=20。overlap表示lens的子图像之间重叠区域大小,本实施例中中间内部的重叠区域大小为6pixel。lens_number表示镜头阵列每行每列的lens个数,本实施例中为5。i表示原始图像的行数,本实施例中i=0,1,2……。j表示原始图像的列数,本实施例中j=0,1,2……。
于一实施例中,由于镜头式阵列最外圈的小lens只有一部分与其它lens重叠,本实施例中最外圈的小lens重叠区域大小为3pixel因此在计算偏移量时要单独考虑。中间的镜头会有左、右两个镜头相邻,最外一圈角的镜头(i=0且j=0时或者i=lens number-1且j=lens number-1时)只与一个镜头相邻,因此只有一半的偏移,当i=0,且j=0,可采用上述dxj、dyi的公式结合如下公式计算:
当i=lens number-1,且j=lens number-1时,可采用上述dxj、dyi的公式结合如下公式计算:
其中,dx0表示第0列的小镜头在x方向上的像素坐标起始量,dy0表示第0行的小镜头在y方向上的像素坐标起始量,dxlens number-1表示第lens number-1列的小镜头在x方向上的像素坐标起始量,dylens number-1表示第dylens number-1行的小镜头在y方向上的像素坐标起始量。
步骤404:选取子图像的像素坐标存在相互重叠的图像区域为重叠区域,然后进入步骤406。剩余的图像区域为非重叠区域,然后进入步骤408。
在本步骤中,计算出子图像的像素坐标后,就可以清楚的计算出哪些子图像的像素点是重叠在一起的,比如子图像A的像素坐标中dx的取值范围是0~18,子图像B的像素坐标中dx的取值范围是10~28,则子图像A和子图像B在dx方向上的重叠范围为10~18,如此可以计算出dy方向上的重叠范围,进而可以据此选取子图像的像素坐标存在相互重叠的图像区域为重叠区域,后续计算执行步骤406。而不符合重叠标准的图像区域就是非重叠区域,后续计算执行步骤408。
步骤405:针对原始图像中的过曝区域,选取子图像的像素坐标不存在相互重叠的区域为有效区域,计算有效区域的第三像素信息。进入步骤409。
在本步骤中,若原始图像中存在过曝区域,对于漏光区域的图像,为了避免放大过曝区域对过曝区域的影响,不会对无用的过曝信息进行拼接融合,因此仅仅选取子图像的像素坐标不存在相互重叠的区域作为有效区域,并计算出有效区域的第三像素信息用于后续的图像拼接,然后进入步骤409。
于一实施例中,针对过曝区域,可以如图2B至图2C所示的方式计算有效区域的第三像素信息。详细参见上述实施例的描述。步骤406:分别计算重叠区域中每个重叠像素点的重叠次数。
在本步骤中,可以生成与raw图像相同大小的mask矩阵,矩阵值为全1,与raw图像采取相同的像素处理算法,记录每个像素点的累加次数,一次重叠即为两个镜头重叠区域的一次累加,这里的mask就加1,如此可以计算出重叠区域中每个重叠像素点的重叠次数。
步骤407:根据重叠像素点的像素值和重叠次数,分别计算重叠像素点的平均像素值,第一像素信息中包括每个重叠像素点平均像素值,然后进入步骤409。
在本步骤中,以像素点Q为例,假设步骤406中计算出像素点Q处的重叠次数为n(n为大于或等于零的整数),所有重叠像素点Q的像素值分别为P1,P2……Pn,则可以采用如下公式计算像素点Q的平均像素值PQ:
步骤408:为非重叠区域中的每个非重叠像素点的像素值赋予预设权重,生成每个非重叠像素点的加权像素值,预设权重大于1,第二像素信息中包括每个非重叠像素点的加权像素值,进入步骤409。
在本步骤中,对于非漏光区域的每个小镜头的非重叠区域,在像素处理时会给予更高的权重,为每个非重叠像素点的像素值赋予预设权重,预设权重大于1,预设权重可以为1.2,使其占比更高。本实施例中,非重叠区域的14pixel权重增大,可以直接将非重叠区域中的每个像素点的像素值乘1.2,得到对应的加权像素值。
步骤409:根据第一像素信息、第二像素信息和第三像素信息,进行图像拼接,生成原始图像的拼接图像。
于一实施例中,以如图2B所示的raw图像为例,可以采用如下公式计算拼接图像的大小L(单位pixel):
L=[lens_size*2+(lens_size-overlap)*(lens_number-2)]2
则如图2B所示的raw图像的拼接图像大小为20*2+(20-6)*3=82*82pixel。
如图5所示,为本实施例经过上述像素处理方法处理后得到的像素分布图,非重叠区域S1像素处理的是通过更多的权重来进行增强,也就是步骤408中赋予预设权重值1.2,直接增大其信号强度。对于重叠区域S2,如果有两个镜头1和镜头2重叠区域像素点Q,则实际拼接图像中像素点Q的像素值为(pixel1+pixel2)/2。这里的2是重叠次数,用两张图像的信息来做平均。
于一实施例中,原始图像以指纹图像为例,由于raw图像中的噪声强于指纹信号,从图例分析不好区别两种拼接算法在噪声和指纹纹线上的差异,下面采取相同的去噪算法将raw图转化为更易于对比的去噪图像。
上述图像拼接方法,通过融合每个小镜头的重叠区域,最大限度的利用到每个小镜头获取到的指纹信息,对于每个小镜头的非重叠区域,在拼接时会给予更高的权重,使其占比更高。对比仅使用每个小镜头不重叠区域的拼接方案,在后续使用相同去噪算法的基础上,本实施例获得的指纹图像可以明显提升在干冷等弱指纹场景的图像质量,并降低图像噪声。同时,考虑到镜头阵列模组的特殊性,在漏光按偏场景,图像的过曝区域会对非过曝区域产生影响,形成一个亮度逐渐变化的过渡区域,为了不放大过曝区域对过曝区域的影响,在漏光场景,只保留非重叠的部分图像用于图像拼接,不对无用的过曝信息进行拼接融合,提高拼接图像的准确度。
如图6A所示,为较强指纹信号raw图去噪后的对比示意图,区域S3内的图像为直接选取不重叠区域拼接算法得到的拼接图像效果,区域S4内的图像为如图3和/或图4中图像拼接方法得到的拼接图像的效果。
如图6B所示,为较弱指纹信号raw图去噪后的对比示意图。区域S5内的图像为直接选取不重叠区域拼接算法得到的拼接图像效果,区域S6内的图像为如图3和/或图4中图像拼接方法得到的拼接图像的效果。
如图6A至图6B中比对示意图,在强指纹场景,本实施例的图像拼接算法得到的指纹信号更加稳定,且噪声降低很多,指纹更为平滑。在弱指纹场景,本实施例的图像拼接算法拼接融合能较大程度的降低图像中的噪声,且指纹信号更加稳定,提升弱指纹场景的指纹识别能力。
请参看图7,其为本申请一实施例的图像拼接装置700,该装置应用于图1所示的电子设备1,并可以应用于如图2A至图2B所示的指纹识别场景中,以对摄像头阵列采集的多个原始的子图像进行图像拼接。该装置包括:获取模块701、划分模块702、处理模块703和拼接模块704,各个模块的原理关系如下:
获取模块701,用于获取待处理的原始图像,原始图像由多个采集器13采集的多个子图像组成。详细参见上述实施例中对步骤301的描述。
划分模块702,用于在原始图像中,将非过曝区域的图像划分为重叠区域和非重叠区域。重叠区域为多个子图像的像素坐标在原始图像中相互重叠的区域。详细参见上述实施例中对步骤302的描述。
处理模块703,用于分别对重叠区域和非重叠区域进行像素处理,生成重叠区域的第一像素信息和非重叠区域的第二像素信息。详细参见上述实施例中对步骤303的描述。
拼接模块704,用于根据第一像素信息和第二像素信息,将重叠区域和非重叠区域进行图像拼接,生成原始图像的拼接图像。详细参见上述实施例中对步骤304的描述。
于一实施例中,还包括:判断模块705,用于判断原始图像中是否存在过曝区域;选取模块706,用于若原始图像中存在过曝区域,针对原始图像中的过曝区域,选取子图像的像素坐标不存在相互重叠的区域为有效区域;计算模块707,用于计算有效区域的第三像素信息;拼接模块704还用于根据第一像素信息、第二像素信息和第三像素信息进行图像拼接,生成原始图像的拼接图像。
于一实施例中,判断模块705用于:计算原始图像中每个像素点的梯度信息;于原始图像中,查找是否存在梯度信息小于预设的梯度阈值、并且像素值在预设的像素范围内的第一像素点,若存在,则第一像素点所在的区域为过曝区域。
于一实施例中,处理模块703用于:分别计算重叠区域中每个重叠像素点的重叠次数;根据重叠像素点的像素值和重叠次数,分别计算重叠像素点的平均像素值,第一像素信息中包括每个重叠像素点平均像素值。
于一实施例中,处理模块703还用于:为非重叠区域中的每个非重叠像素点的像素值赋予预设权重,生成每个非重叠像素点的加权像素值,第二像素信息中包括每个非重叠像素点的加权像素值。
于一实施例中,预设权重大于1。
于一实施例中,划分模块702用于:针对非过曝区域,分别计算多个采集器获得的每个子图像的像素坐标;选取子图像的像素坐标存在相互重叠的图像区域为重叠区域,剩余的图像区域为非重叠区域。上述图像拼接装置700的详细描述,请参见上述实施例中相关方法步骤的描述。
本发明实施例还提供了一种非暂态电子设备可读存储介质,包括:程序,当其在电子设备上运行时,使得电子设备可执行上述实施例中方法的全部或部分流程。其中,存储介质可为磁盘、光盘、只读存储记忆体(Read-Only Memory,ROM)、随机存储记忆体(RandomAccess Memory,RAM)、快闪存储器(Flash Memory)、硬盘(Hard Disk Drive,缩写:HDD)或固态硬盘(Solid-State Drive,SSD)等。存储介质还可以包括上述种类的存储器的组合。
虽然结合附图描述了本发明的实施例,但是本领域技术人员可以在不脱离本发明的精神和范围的情况下作出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。