一种图像坏点检测方法和装置与流程

文档序号:11621249阅读:289来源:国知局
一种图像坏点检测方法和装置与流程

本发明涉及计算机技术安全领域,特别涉及一种图像坏点检测方法和装置。



背景技术:

随着科学技术的进步,现有的摄像头传感器的分辨率不断增加。以前的坏点检测算法,主要是针对中小分辨率的传感器的坏点检测,对于分辨率高的传感器而言,很多算法坏点检测速度慢,无法做到在线检测。同时,现有的坏点检测方法(如基于lut的方法)需要占用mem、消耗芯片面积,随着isp输入分辨率的不断提高,其面积消耗成几十倍上升。同时,随着生活水平的提高,人们对图像质量有了更高的要求,用户的眼睛对一张图片上有突出的亮点或者暗点是非常敏感的,图像上的坏点将直接影响到用户的感官体验。



技术实现要素:

为此,需要提供一种图像坏点检测的技术方案,用以解决现有的坏点检测算法芯片消耗面积、坏点检测率低、无法满足大分辨率的传感器需求等问题。

为实现上述目的,发明人提供了一种图像坏点检测方法,所述方法包括以下步骤:

以当前像素点为中心像素点,获取图像上nxm大小的像素区块;

获取nxm大小的像素区块内所有像素点的像素值,并根据像素值的大小将所获取的所有像素点进行顺序排列,得到一像素值序列,每一排列后的像素点对应一排列编号;

计算像素值序列的中位数,得到像素中值;

根据预设边界阈值,从像素值序列中确定一个指定小像素值和一个指定大像素值,所述指定小像素值为排列编号为编号指定小值的像素点对应的像素值,所述编号指定小值为像素值最小的像素点的排列编号与预设边界阈值的差的绝对值;所述指定大像素值为排列编号为编号指定大值的像素点对应的像素值,所述编号指定大值为像素值最大的像素点的排列编号与预设边界阈值的差的绝对值;

计算指定大像素值与指定小像素值之差,确定第一差值;

根据当前像素点与像素中值的大小关系,确定当前像素点的像素类型,并根据当前像素点的像素类型确定第二差值;

对第一差值和第二差值进行第一判断,并记录第一判断结果,所述第一判断包括:判断第二差值与第一差值的商是否大于第一预设误差,若是则判定当前像素点为疑似坏点,否则判定当前像素点为非疑似坏点。

进一步地,所述方法还包括步骤:

对像素值序列中所有像素点进行第二判断,并记录第二判断结果,所述第二判断包括:判定像素值序列中,排列编号位于编号指定大值与编号最大值之间或者位于编号最小值与编号指定小值之间的像素点为疑似坏点,以及判定排列编号位于其他范围内的像素点为非疑似坏点;所述编号最大值为像素值最大的像素点对应的排列编号,所述编号最小值为像素值最小的像素点对应的排列编号。

进一步地,所述方法还包括步骤:

对第一判断结果、第二判断结果进行第一逻辑运算,若第一逻辑运算结果为真则判定当前像素点为坏点,若第一逻辑运算结果为假则判定当前像素不是坏点。

进一步地,所述方法还包括步骤:

计算以当前像素点为中心,预设像素区块内所有像素点在不同预设方向上的二阶梯度均值,每一个预设方向对应一个二阶梯度均值;

对计算得出的所有二阶梯度均值取最小值,得到最小二阶梯度均值并记录;

计算预设像素区块内像素点对应的纹理值,得到纹理值;

对最小二阶梯度均值与纹理值进行第三判断,并记录第三判断结果,所述第三判断包括:判断最小二阶梯度均值与纹理值的差是否大于第二预设误差,若是则判定当前像素点为疑似坏点,否则判定当前像素点为非疑似坏点。

进一步地,所述方法还包括步骤:

对第一判断结果和第三判断结果进行第二逻辑运算,若第二逻辑运算结果为真则判定当前像素点为坏点,若第二逻辑运算结果为假则判定当前像素不是坏点。

进一步地,所述方法还包括步骤:

对第一判断结果、第二判断结果和第三判断结果进行第三逻辑运算,若第三逻辑运算结果为真则判定当前像素点为坏点,若第三逻辑运算结果为假则判定当前像素不是坏点。

进一步地,在步骤“判定当前像素点为坏点”之后还包括步骤:

对判定为坏点的像素点采用像素中值替换其原有的像素值。

进一步地,在步骤“判定当前像素点为坏点”之后还包括步骤:

根据当前像素点的像素类型,对判定为坏点的像素点采用指定小像素值或指定大像素值替换其原有的像素值。

进一步地,所述像素类型包括max型和min型,在步骤“根据当前像素点的像素类型,对判定为坏点的像素点采用指定小像素值或指定大像素值替换其原有的像素值”具体包括:

当前像素点的值大于像素中值时,则确定当前像素点的像素类型为max型,对判定为坏点的像素点采用指定大像素值替换其原有的像素值;

当前像素点的值小于像素中值时,则确定当前像素点的像素类型为min型,对判定为坏点的像素点采用指定小像素值替换其原有的像素值。

进一步地,所述步骤“计算指定大像素值与指定小像素值之差,确定第一差值”包括:

计算指定大像素值与指定小像素值之差,得到第一中间差值;

判断第一中间差值是否大于预设第一差值,若是则确定第一中间差值为第一差值,否则确定预设第一差值为第一差值。

进一步地,所述像素类型包括max型和min型,步骤“根据当前像素点与像素中值的大小关系,确定当前像素点的像素类型,并根据当前像素点的像素类型确定第二差值”包括:

当前像素点的值大于像素中值时,则确定当前像素点的像素类型为max型,所述第二差值为当前像素点的像素值与指定小像素值之差;

当前像素点的值小于像素中值时,则确定当前像素点的像素类型为min型,所述第二差值为指定大像素值与当前像素点的像素值之差。

进一步地,所述步骤“以当前像素点为中心像素点,获取图像上nxm大小的像素区块”包括:

以当前像素点为中心像素点,从图像上获取txs子块,再从所述txs子块中获取nxm像素区块。

进一步地,所述txs子块为5x5子块,则所述nxm大小的像素区块为3x3子块。

进一步地,所述图像为bayer格式图像,像素点的像素通道包括gr通道、gb通道、b通道和r通道,则每个像素点对应的像素值为gr通道分量值、gb通道分量值、r通道分量值、b通道分量值中的一种。

进一步地,所述方法包括:

以当前像素点的下一像素点为中心像素点,并判断下一像素点是否为疑似坏点,并记录判断结果;重复上述步骤,直至nxm大小的像素区块内所有像素点均遍历完成。

发明人还提供了一种图像坏点检测装置,所述装置包括获取单元、排序单元、指定像素确定单元、计算单元、判断单元;所述获取单元包括像素区块获取单元和像素获取单元;所述计算单元包括差值计算单元和像素中值计算单元,所述差值计算单元包括第一差值计算单元和第二差值计算单元;所述判断单元包括第一判断单元;

所述像素区块获取单元用于以当前像素点为中心像素点,获取图像上nxm大小的像素区块;

所述像素获取单元用于获取nxm大小的像素区块内所有像素点的像素值,所述排序单元用于根据像素值的大小将所获取的所有像素点进行顺序排列,得到一像素值序列,每一排列后的像素点对应一排列编号;

所述像素中值计算单元用于计算像素值序列的中位数,得到像素中值;

所述指定像素确定单元用于根据预设边界阈值,从像素值序列中确定一个指定小像素值和一个指定大像素值,所述指定小像素值为排列编号为编号指定小值的像素点对应的像素值,所述编号指定小值为像素值最小的像素点的排列编号与预设边界阈值的差的绝对值;所述指定大像素值为排列编号为编号指定大值的像素点对应的像素值,所述编号指定大值为像素值最大的像素点的排列编号与预设边界阈值的差的绝对值;

所述第一差值计算单元用于计算指定大像素值与指定小像素值之差,确定第一差值;

所述第二差值计算单元用于根据当前像素点与像素中值的大小关系,确定当前像素点的像素类型,并根据当前像素点的像素类型确定第二差值;

所述第一判断单元用于对第一差值和第二差值进行第一判断,并记录第一判断结果,所述第一判断包括:判断第二差值与第一差值的商是否大于第一预设误差,若是则判定当前像素点为疑似坏点,否则判定当前像素点为非疑似坏点。

进一步地,所述判断单元还包括第二判断单元;

所述第二判断单元用于对像素值序列中所有像素点进行第二判断,并记录第二判断结果,所述第二判断包括:判定像素值序列中,排列编号位于编号指定大值与编号最大值之间或者位于编号最小值与编号指定小值之间的像素点为疑似坏点,以及判定排列编号位于其他范围内的像素点为非疑似坏点;所述编号最大值为像素值最大的像素点对应的排列编号,所述编号最小值为像素值最小的像素点对应的排列编号。

进一步地,所述装置还包括逻辑运算单元;

所述逻辑运算单元用于对第一判断结果、第二判断结果进行第一逻辑运算,若第一逻辑运算结果为真则判定当前像素点为坏点,若第一逻辑运算结果为假则判定当前像素不是坏点。

进一步地,所述计算单元包括二阶梯度均值计算单元、最小二阶梯度均值计算单元、纹理值计算单元,所述判断单元包括第三判断单元;

所述二阶梯度均值计算单元用于计算以当前像素点为中心,预设像素区块内所有像素点在不同预设方向上的二阶梯度均值,每一个预设方向对应一个二阶梯度均值;

所述最小二阶梯度均值计算单元用于对计算得出的所有二阶梯度均值取最小值,得到最小二阶梯度均值并记录;

所述纹理值计算单元用于计算预设像素区块内像素点对应的纹理值,得到纹理值;

所述第三判断单元用于对最小二阶梯度均值与纹理值进行第三判断,并记录第三判断结果,所述第三判断包括:判断最小二阶梯度均值与纹理值的差是否大于第二预设误差,若是则判定当前像素点为疑似坏点,否则判定当前像素点为非疑似坏点。

进一步地,所述装置还包括逻辑运算单元;

所述逻辑运算单元用于对第一判断结果和第三判断结果进行第二逻辑运算,若第二逻辑运算结果为真则判定当前像素点为坏点,若第二逻辑运算结果为假则判定当前像素不是坏点。

进一步地,所述装置还包括逻辑运算单元;

所述逻辑运算单元用于对第一判断结果、第二判断结果和第三判断结果进行第三逻辑运算,若第三逻辑运算结果为真则判定当前像素点为坏点,若第三逻辑运算结果为假则判定当前像素不是坏点。

进一步地,所述装置还包括坏点替换单元,所述坏点替换单元用于对判定为坏点的像素点采用像素中值替换其原有的像素值。

进一步地,所述装置还包括坏点替换单元,所述坏点替换单元用于根据当前像素点的像素类型,对判定为坏点的像素点采用指定小像素值或指定大像素值替换其原有的像素值。

进一步地,所述像素类型包括max型和min型,“坏点替换单元用于根据当前像素点的像素类型,对判定为坏点的像素点采用指定小像素值或指定大像素值替换其原有的像素值”具体包括:

当前像素点的值大于像素中值时,则确定当前像素点的像素类型为max型,坏点替换单元用于对判定为坏点的像素点采用指定大像素值替换其原有的像素值;

当前像素点的值小于像素中值时,则确定当前像素点的像素类型为min型,坏点替换单元用于对判定为坏点的像素点采用指定小像素值替换其原有的像素值。

进一步地,所述“第一差值计算单元用于计算指定大像素值与指定小像素值之差,确定第一差值”包括:

第一差值计算单元用于计算指定大像素值与指定小像素值之差,得到第一中间差值,并判断第一中间差值是否大于预设第一差值,若是则确定第一中间差值为第一差值,否则确定预设第一差值为第一差值。

进一步地,所述像素类型包括max型和min型,“第二差值计算单元用于根据当前像素点与像素中值的大小关系,确定当前像素点的像素类型,并根据当前像素点的像素类型确定第二差值”包括:

当前像素点的值大于像素中值时,则确定当前像素点的像素类型为max型,第二差值计算单元用于计算当前像素点的像素值与指定小像素值之差,得到第二差值;

当前像素点的值小于像素中值时,则确定当前像素点的像素类型为min型,第二差值计算单元用于计算指定大像素值与当前像素点的像素值之差,得到第二差值。

进一步地,所述“像素区块获取单元用于获取以当前像素点为中心像素点、图像上nxm大小的像素区块”包括:

像素区块获取单元用于获取以当前像素点为中心像素点、图像上txs大小的子块,再从所述txs子块中获取nxm像素区块。

进一步地,所述txs子块为5x5子块,则所述nxm大小的像素区块为3x3子块。

进一步地,所述图像为bayer格式图像,像素点的像素通道包括gr通道、gb通道、b通道和r通道,则每个像素点对应的像素值为gr通道分量值、gb通道分量值、r通道分量值、b通道分量值中的一种。

进一步地,所述装置还包括遍历单元;

所述遍历单元用于以当前像素点的下一像素点为中心像素点,并判断下一像素点是否为疑似坏点,并记录判断结果;重复上述步骤,直至nxm大小的像素区块内所有像素点均遍历完成。

本发明具有以下优点:基于图像上的坏点属性(坏点的像素值一般远大于或远小于同一个像素区块内其他像素点的平均像素值)来查找坏点,极大缩小了坏点检测装置的硬件面积。同时对图像上的像素点逐一排查,有利于发现更多的疑似坏点,进而在疑似坏点中进行排查,有效提高坏点检测的效率。

附图说明

图1为本发明一实施方式涉及的bayer格式图像的示意图;

图2为本发明一实施方式涉及的预设边界值与指定像素点的对应关系的示意图;

图3为本发明一实施方式涉及的计算最小二阶梯度均值的示意图;

图4-a为本发明一实施方式涉及的坏点检测和替换后的图像前后对比图;

图4-b为本发明另一实施方式涉及的坏点检测和替换后的图像前后对比图;

图4-c为本发明另一实施方式涉及的坏点检测和替换后的图像前后对比图;

图5为本发明一实施方式涉及的图像坏点检测方法的流程图;

图6为本发明另一实施方式涉及的图像坏点检测方法的流程图;

图7为本发明另一实施方式涉及的图像坏点检测方法的流程图;

图8为本发明一实施方式涉及的第一逻辑运算过程的示意图;

图9为本发明一实施方式涉及的第二逻辑运算过程的示意图;

图10为本发明一实施方式涉及的第三逻辑运算过程的示意图;

图11为本发明一实施方式涉及的图像坏点检测装置的示意图;

附图标记说明:

101、获取单元;111、像素区块获取单元;121、像素获取单元

102、判断单元;112、第一判断单元;122、第二判断单元;132、第三判断单元;

103、计算单元;

113、像素中值计算单元;

123、二阶梯度均值计算单元;

133、最小二阶梯度均值计算单元;

143、纹理值计算单元;

153、差值计算单元;151、第一差值计算单元;152、第二差值计算单元;

104、记录单元;

105、逻辑运算单元;

106、排序单元;

107、坏点替换单元;

108、指定像素确定单元;

109、遍历单元。

具体实施方式

为详细说明技术方案的技术内容、构造特征、所实现目的及效果,以下结合具体实施例并配合附图详予说明。

请参阅图1,为本发明一实施方式涉及的bayer格式图像的示意图。本发明中的待检测的图像为bayer格式图像,像素点的像素通道包括gr通道、gb通道、b通道和r通道,则每个像素点对应的像素值为gr通道分量值、gb通道分量值、r通道分量值、b通道分量值中的一种。从图1中可以看出,bayer格式图像是按照一定规则进行排列的,具体是以2x2窗口为基础复制重复排列,每一2x2窗口中包括了4个像素点,4个像素点的通道分量值在2x2窗口中的排列方式可以不同,但是gr通道分量值和gb通道分量值必须处于相对位置(即2x2窗口中的斜对角位置)。

请参阅图5,所述方法包括以下步骤:

首先进入步骤s501以当前像素点为中心像素点,获取图像上nxm大小的像素区块。在本实施方式中,步骤s501包括:以当前像素点为中心像素点,从图像上获取txs子块,再从所述txs子块中获取nxm像素区块。进一步地,所述txs子块为5x5子块,则所述nxm大小的像素区块为3x3子块。在raw域中,可以先从整张图像中先获取5x5大小的子块,在从5x5子块中抽取3x3同通道的窗口。在其他实施例中,txs和nxm还可以为其他数值大小的子块,例如txs为9x9大小的子块,则nxm可以为该9x9大小子块中抽取的5x5子块;再比如txs为5x9大小的子块,则nxm可以为该5x9子块中抽取的3x5子块,以及txs为9x5大小的子块,则nxm可以为该9x5子块中抽取的5x3子块等等。若当前像素点位于图像的边缘位置,则可以获取当前像素点右边和下边的像素子区块,例如子区块只占预设大小的像素区块的1/4,可以将所获取的子区块的像素点对称到左边和上边,从而构成完整的nxm像素区块,当前像素点依然为整个像素区块的中心像素点。简言之,像素区块大小的选择可以根据实际需求而确定。为了便于说明,本发明以nxm为3x3为例,对图5中的方法作进一步说明。

而后进入步骤s502获取nxm大小的像素区块内所有像素点的像素值,并根据像素值的大小将所获取的所有像素点进行顺序排列,得到一像素值序列,每一排列后的像素点对应一排列编号。

而后进入步骤s503计算像素值序列的中位数,得到像素中值;

而后进入步骤s504根据预设边界阈值,从像素值序列中确定一个指定小像素值和一个指定大像素值,所述指定小像素值为排列编号为编号指定小值的像素点对应的像素值,所述编号指定小值为像素值最小的像素点的排列编号与预设边界阈值的差的绝对值;所述指定大像素值为排列编号为编号指定大值的像素点对应的像素值,所述编号指定大值为像素值最大的像素点的排列编号与预设边界阈值的差的绝对值。

如图2所示,以nxm大小的像素区块为3x3子块为例,图中序号0-8表示按照从小到大排列后的像素点对应的排列编号,当预设边界值为0时,指定小像素值为编号为0的像素点对应的像素值,即整个像素值序列中的最小值,指定大像素值为编号为8的像素点对应的像素值,即整个像素值序列中的最大值;当预设边界值为1时,指定小像素值为编号为1的像素点对应的像素值,即整个像素值序列中的第二小的像素值,指定大像素值为编号为7的像素点对应的像素值,即整个像素值序列中的第二大的像素值;当预设边界值为2时,指定小像素值为编号为2的像素点对应的像素值,即整个像素值序列中的第三小的像素值,指定大像素值为编号为6的像素点对应的像素值,即整个像素值序列中的第三大的像素值;以此类推。

而后进入步骤s505计算指定大像素值与指定小像素值之差,确定第一差值。在本实施方式中,步骤s505包括:计算指定大像素值与指定小像素值之差,得到第一中间差值;判断第一中间差值是否大于预设第一差值,若是则确定第一中间差值为第一差值,否则确定预设第一差值为第一差值。

而后进入步骤s506根据当前像素点与像素中值的大小关系,确定当前像素点的像素类型,并根据当前像素点的像素类型确定第二差值。在本实施方式中,所述像素类型包括max型和min型,步骤s506包括:当前像素点的值大于像素中值时,则确定当前像素点的像素类型为max型,所述第二差值为当前像素点的像素值与指定小像素值之差;当前像素点的值小于像素中值时,则确定当前像素点的像素类型为min型,所述第二差值为指定大像素值与当前像素点的像素值之差。

对于一个像素点正常(不存在坏点)的3x3预设区块来说,区块内的大部分像素点存在着关联,它们之间的像素点不会相差太大。在区块范围较小时,可以用集群来表示区块内所有像素点,指定小像素值和指定大像素值分别标识着该集群的上限和下限。第一差值表示这个集群的高度,第二差值表示当前像素点(中心像素点)的偏离程度。如果当前像素点是坏点,那么第二差值将远大于第一差值,因而可以通过设置预设值进行比较,来判断当前像素点是否是疑似坏点。

因而在步骤s506后可以对第一差值和第二差值进行第一判断,并记录第一判断结果。所述第一判断包括:步骤s507判断第二差值与第一差值的商是否大于第一预设误差,若是则进入步骤s508判定当前像素点为疑似坏点,否则进入步骤s509判定当前像素点为非疑似坏点。

第一预设误差的选取可以根据实际需要进行调整,例如可以根据当前像素点像素通道的不同配置不同的第一预设误差值,具体为:当前像素点的像素通道为r通道或b通道时,第一预设误差值选取上比当前像素点的像素通道为g通道(包括gr通道和gb通道)时来得小,因为人眼对r通道或b通道的敏感程度不如g通道。通过针对不同像素通道设置不同的第一预设误差值,可以有效提高坏点检测的准确率。若第二差值与第一差值的商远大于第一预设差值,说明当前像素点的像素值远比区块内其他像素点的像素值来得大或来得小,因而可以判定当前像素点为疑似坏点。

如图6所示,所述方法还包括步骤:对像素值序列中所有像素点进行第二判断,并记录第二判断结果。所述第二判断包括:步骤s601判定像素值序列中,像素点的排列编号是否位于编号指定大值与编号最大值之间或者位于编号最小值与编号指定小值之间,若是则进入步骤s602判定该像素点为疑似坏点,否则进入步骤s603判定该像素点为非疑似坏点。所述编号最大值为像素值最大的像素点对应的排列编号,所述编号最小值为像素值最小的像素点对应的排列编号。

对于一个像素区块内,可能只存在着一个坏点,也有可能存在着多个坏点,因而需要通过图6所示的方法进行排查。具体做法就是将区块内所有像素点按照顺序排列(从大到小或者从小到大排列)后,默认判定位于两端部分的像素点为疑似坏点。以图2中nxm像素区块为3x3子块为例,图中序号0-8表示按照从小到大排列后的像素点对应的排列编号。当预设边界值为1时,指定小像素值为编号为1的像素点对应的像素值,即整个像素值序列中的第二小的像素值,指定大像素值为编号为7的像素点对应的像素值,即整个像素值序列中的第二大的像素。根据第四判断过程,将判定排列编号为0、1、7、8的像素点为疑似坏点。同理,当预设边界值为2时,将判定排列编号为0、1、2、6、7、8的像素点为疑似坏点。预设边界值为其他数值的情况,以此类推。

如图8所示,所述方法还包括步骤:对第一判断结果、第二判断结果进行第一逻辑运算,若第一逻辑运算结果为真则判定当前像素点为坏点,若第一逻辑运算结果为假则判定当前像素不是坏点。第一逻辑运算可以为“与”运算,即第一判断结果和第二判断结果均判断当前像素点为疑似坏点时,才认定当前像素点为坏点,否则认定当前像素点不是坏点。

在某些实施例中,对于同一个像素点,可以采用图5和图6的方法进行多次计算,并记录每次经过这两种方法的判断结果,对于每一次记录的第一判断结果和第二判断结果均进行第一逻辑运算,而后统计最终第一逻辑结果。当第一逻辑运算判定当前像素点是坏点的次数占第一逻辑运算总次数的比例大于预设比例时,才认定当前像素点为坏点。优选的,在每一次计算过程中,可以调整相关预设参数,如预设边界阈值、第一预设误差的值等,通过反复多次的计算,可以有效提高坏点检测的精度。

如图7所示,在某些实施例中,所述方法还包括步骤:

首先进入步骤s701计算以当前像素点为中心,预设像素区块内所有像素点在不同预设方向上的二阶梯度均值,每一个预设方向对应一个二阶梯度均值。为了便于说明,下面以预设像素区块为以当前像素点为中心、3x3大小的子块为例,对步骤s701做进一步说明。在另一些实施例中,预设像素区块的大小也可以与nxm像素区块大小不同,具体根据实际需要进行选取。

如图3所示,3x3子块被划分为4个预设方向(包括水平方向、垂直方向、135度方向和45度方向)。以水平方向为例,其包含这三组像素点,像素点c1、c2、c3为一组,像素点c4、c5、c6为一组,像素点c7、c8、c9为一组,每一组像素点都对应一个二阶梯度值。二阶梯度是图像处理领域一种最有效的找边方法,以像素点c1、c2、c3这组为例,二阶梯度值可以通过以下公式计算得出:a1=2*c2-c1-c3,其中,a1为二阶梯度值,c1、c2、c3分别为像素点c1、c2、c3对应的像素值,像素点c1、c2、c3位于同一条直线上,像素点c2位于像素点c1和像素点c3之间。同理,对于像素点c4、c5、c6以及像素点c7、c8、c9也可以计算得出对应的二阶梯度值a2和a3,再对a1、a2、a3取平均值,即可得到在水平方向的二阶梯度均值。垂直方向上同理可得,同样可以得到一个在垂直方向的二阶梯度均值。

对于135度方向而言,在计算该方向的二阶梯度均值时,由于135度方向上的直线只涵盖了c4、c8,为了便于计算,因而将像素点c7一起并入c4、c8的分组中。即将像素点c1、c5、c9分为一组,像素点c4、c7、c8分为一组,像素点c2、c3、c6分为一组。以像素点c4、c7、c8为例,二阶梯度值可以通过以下公式计算得出:a4=2*c7-c4-c8。同样也可以算出其他两组对应的二阶梯度值a5和a6,再对a4、a5、a6取平均值,即可得到在135度方向的二阶梯度均值。45度上同理可得,同样可以得到一个在45度方向的二阶梯度均值。

在某些实施例中,预设像素区块还可以为其他大小,如5x5子块、3x5子块、7x7子块等。对于5x5子块而言,以计算水平方向上的二阶梯度均值为例,水平方向上的二阶梯度均值为5个水平方向上二阶梯度值的平均值,假设某一个水平方向上的从左到右像素点依次为c1、c2、c3、c4、c5,则在该水平方向上的二阶梯度值可以通过以下方式得到:先计算c1、c2像素值的平均值,得到c1’;而后计算c4、c5像素值的平均值,得到c2’;再通过公式2c3-c1’-c2’得到该水平方向的二阶梯度值。其余4个水平方向的二阶梯度值的求法同理可得,取5个二阶梯度值的平均值即为5x5子块像素点对应的水平方向上的二阶梯度均值。其余方向二阶梯度均值的求法可以5x5水平二阶梯度均值以及3x3在其余方向的二阶梯度均值的求法,此处不再赘述。

对于7x7子块而言,同样以计算水平方向上的二阶梯度均值为例,水平方向上的二阶梯度均值为7个水平方向上二阶梯度值的平均值,假设某一个水平方向上的从左到右像素点依次为c1、c2、c3、c4、c5、c6、c7,则在该水平方向上的二阶梯度值可以通过以下方式得到:先计算c1、c2、c3像素值的平均值,得到c3’;再计算c3、c4、c5像素值的平均值,得到c4’;而后计算c5、c6、c7像素值的平均值,得到c5’;再通过公式2c4’-c3’-c5’得到该水平方向的二阶梯度值。其余4个水平方向的二阶梯度值的求法同理可得,取7个二阶梯度值的平均值即为7x7子块像素点对应的水平方向上的二阶梯度均值。其余方向二阶梯度均值的求法可以7x7水平二阶梯度均值以及3x3在其余方向的二阶梯度均值的求法,此处不再赘述。

而后可以进入步骤s702对计算得出的所有二阶梯度均值取最小值,得到最小二阶梯度均值并记录。同样以预设像素区块为3x3子块为例,最小二阶梯度均值即为4个方向上计算得出的4个二阶梯度均值中的最小值。最小二阶梯度均值即为“边”,如果当前像素点是坏点,那么最小二阶梯度均值往往较大,因而可以通过事先确定一预设阈值,再将最小二阶梯度均值与预设阈值进行比较,进而判断当前像素点是否是坏点。

而后可以进入步骤s703计算预设像素区块内像素点对应的纹理值,得到纹理值。像素区块的纹理值反映了该像素区块内所具备的高频信息的丰富程度,纹理值越丰富,其对应的梯度值也就越大。如图3的3x3子块的纹理值可以通过以下方式计算得出:texture=(|△31|+|△64|+|△97|+|△71|+|△82|+|△93|+|△91|)/7。其中,texture表示纹理值,△31=c3-c1(c3、c1分别为像素点c3、c1对应的像素值)。即分别计算3x3子块内,除了中心像素点之外,其余像素点中两两不相邻的像素点之间的梯度均值。对于其他大小的子块,同理可得,此处不再赘述。

而后对最小二阶梯度均值与纹理值进行第三判断,并记录第三判断结果。所述第三判断包括:步骤s704判断最小二阶梯度均值与纹理值的差是否大于第二预设误差,若是则进入步骤s705判定当前像素点为疑似坏点,否则进入步骤s706判定当前像素点为非疑似坏点。第二预设误差的选值可以根据实际需要自定义,在本实施方式中,所述第二预设误差根据当前像素点的通道类型确定,理由如第一预设误差的选值。

如图9所示,所述方法还包括步骤:对第一判断结果和第三判断结果进行第二逻辑运算,若第二逻辑运算结果为真则判定当前像素点为坏点,若第二逻辑运算结果为假则判定当前像素不是坏点。第二逻辑运算可以为“与”运算,即第一判断结果和第三判断结果均判断当前像素点为疑似坏点时,才认定当前像素点为坏点,否则认定当前像素点不是坏点。

如图10所示,所述方法还包括步骤:对第一判断结果、第二判断结果和第三判断结果进行第三逻辑运算,若第三逻辑运算结果为真则判定当前像素点为坏点,若第三逻辑运算结果为假则判定当前像素不是坏点。第三逻辑运算可以为“与”运算,即第一判断结果、第二判断结果、第三判断结果均判断当前像素点为疑似坏点时,才认定当前像素点为坏点,否则认定当前像素点不是坏点。这样有利于图像边缘高频信息的保护,达到更好的保护效果,提高坏点检测的准确率。当然,在其他实施例中,第三逻辑运算还可以为其他运算,例如三个判断中有两个判断结果判定当前像素点为疑似坏点时,第三逻辑运算结果为真,否则为假。

当第一逻辑运算、第二逻辑运算、第三逻辑运算中的任一项结果判定当前像素点为坏点时,就可以对当前像素点进行替换。在某些实施例中,对坏点进行替换可以通过以下方式实现:对判定为坏点的像素点采用、像素中值替换其原有的像素值。像素中值即nxm大小的像素区块内所有像素点按照顺序排列后的中位数,采用该值替换坏点,可以有效缩小当前像素点与区块内其他像素点之间的差值,达到修复坏点、保持图像细节的目的。

在某些实施例中,对坏点进行替换可以通过还以下方式实现:根据当前像素点的像素类型,对判定为坏点的像素点采用指定小像素值或指定大像素值替换其原有的像素值。具体包括:当前像素点的值大于像素中值时,则确定当前像素点的像素类型为max型,对判定为坏点的像素点采用指定大像素值替换其原有的像素值;当前像素点的值小于像素中值时,则确定当前像素点的像素类型为min型,对判定为坏点的像素点采用指定小像素值替换其原有的像素值。对于坏点而言,其本身可能也会携带一些图像信息,如果采用像素中值进行完全替换,不利于保留这些图像信息,而采用此方案相较于采用像素中值进行替换坏点的方案,可以更好地保持图像细节。

至此,就完成了一个像素点(当前像素点)是否为坏点的检测,对于一幅图像而言,其包含着许多像素点,在当前像素点检测完毕后,需要开始下一像素点的检测,因而所述方法包括:以当前像素点的下一像素点为中心像素点,并判断下一像素点是否为疑似坏点,并记录判断结果;重复上述步骤,直至nxm大小的像素区块内所有像素点均遍历完成。在实际应用过程中,对于每一像素点的判断,可以根据图8至图10中的任意一种方法来判断当前像素点是不是坏点,还可以选用这几种方法的组合进行综合性判断,也可以反复执行多次这几种方法的组合来判断。简言之,坏点检测方法选择上有多种选择,检测人员可以根据实际需要来选用。检测效果如图5-a、图5-b、图5-c所示,每幅图中的左边表示原始图像,中间表示检测出的坏点,右边表示经过坏点替换修复的图像,可以明显看出右边的图像比左边图像整体更加平滑,用户的感官体验更好。

请参阅图11,为本发明一实施方式涉及的图像坏点检测装置的示意图。所述图像为bayer格式图像,像素点的像素通道包括gr通道、gb通道、b通道和r通道,则每个像素点对应的像素值为像素值为gr通道分量值、gb通道分量值、r通道分量值、b通道分量值中的一种。所述装置包括获取单元101、排序单元106、指定像素确定单元108、计算单元103、判断单元102、记录单元104;所述获取单元101包括像素区块获取单元111和像素获取单元121;所述计算单元103包括差值计算单元153和像素中值计算单元113,所述差值计算单元153包括第一差值计算单元151和第二差值计算单元152;所述判断单元102包括第一判断单元112;

所述像素区块获取单元111用于以当前像素点为中心像素点,获取图像上nxm大小的像素区块;

所述像素获取单元121用于获取nxm大小的像素区块内所有像素点的像素值,所述排序单元用于根据像素值的大小将所获取的所有像素点进行顺序排列,得到一像素值序列,每一排列后的像素点对应一排列编号;

所述像素中值计算单元113用于计算像素值序列的中位数,得到像素中值;

所述指定像素确定单元108用于根据预设边界阈值,从像素值序列中确定一个指定小像素值和一个指定大像素值,所述指定小像素值为排列编号为编号指定小值的像素点对应的像素值,所述编号指定小值为像素值最小的像素点的排列编号与预设边界阈值的差的绝对值;所述指定大像素值为排列编号为编号指定大值的像素点对应的像素值,所述编号指定大值为像素值最大的像素点的排列编号与预设边界阈值的差的绝对值;

所述第一差值计算单元151用于计算指定大像素值与指定小像素值之差,确定第一差值;

所述第二差值计算单元152用于根据当前像素点与像素中值的大小关系,确定当前像素点的像素类型,并根据当前像素点的像素类型确定第二差值;

所述第一判断单元112用于对第一差值和第二差值进行第一判断,所述记录单元104用于记录第一判断结果,所述第一判断包括:判断第二差值与第一差值的商是否大于第一预设误差,若是则判定当前像素点为疑似坏点,否则判定当前像素点为非疑似坏点。

在使用图像坏点检测装置时,首先像素区块获取单元111以当前像素点为中心像素点,获取图像上nxm大小的像素区块。在本实施方式中,像素区块获取单元111以当前像素点为中心像素点,从图像上获取txs子块,再从所述txs子块中获取nxm像素区块。进一步地,所述txs子块为5x5子块,则所述nxm大小的像素区块为3x3子块。在raw域中,可以先从整张图像中先获取5x5大小的子块,在从5x5子块中抽取3x3同通道的窗口。在其他实施例中,txs和nxm还可以为其他数值大小的子块,例如txs为9x9大小的子块,则nxm可以为该9x9大小子块中抽取的5x5子块;再比如txs为5x9大小的子块,则nxm可以为该5x9子块中抽取的3x5子块,以及txs为9x5大小的子块,则nxm可以为该9x5子块中抽取的5x3子块等等。简言之,像素区块大小的选择可以根据实际需求而确定,为了便于说明,本发明以nxm为3x3为例作进一步说明。

像素获取单元121获取nxm大小的像素区块内所有像素点的像素值,所述排序单元用于根据像素值的大小将所获取的所有像素点进行顺序排列,得到一像素值序列,每一排列后的像素点对应一排列编号。

像素中值计算单元113计算像素值序列的中位数,得到像素中值。

指定像素确定单元108根据预设边界阈值,从像素值序列中确定一个指定小像素值和一个指定大像素值。所述指定小像素值为排列编号为编号指定小值的像素点对应的像素值,所述编号指定小值为像素值最小的像素点的排列编号与预设边界阈值的差的绝对值;所述指定大像素值为排列编号为编号指定大值的像素点对应的像素值,所述编号指定大值为像素值最大的像素点的排列编号与预设边界阈值的差的绝对值;

第一差值计算单元151计算指定大像素值与指定小像素值之差,确定第一差值。具体包括:第一差值计算单元用于计算指定大像素值与指定小像素值之差,得到第一中间差值,并判断第一中间差值是否大于预设第一差值,若是则确定第一中间差值为第一差值,否则确定预设第一差值为第一差值。

第二差值计算单元152根据当前像素点与像素中值的大小关系,确定当前像素点的像素类型,并根据当前像素点的像素类型确定第二差值。在本实施方式中,所述像素类型包括max型和min型,第二差值具体可以通过以下方式确定:当前像素点的值大于像素中值时,则确定当前像素点的像素类型为max型,第二差值计算单元用于计算当前像素点的像素值与指定小像素值之差,得到第二差值;当前像素点的值小于像素中值时,则确定当前像素点的像素类型为min型,第二差值计算单元用于计算指定大像素值与当前像素点的像素值之差,得到第二差值。

对于一个像素点正常(不存在坏点)的3x3预设区块来说,区块内的大部分像素点存在着关联,它们之间的像素点不会相差太大。在区块范围较小时,可以用集群来表示区块内所有像素点,指定小像素值和指定大像素值分别标识着该集群的上限和下限。第一差值表示这个集群的高度,第二差值表示当前像素点(中心像素点)的偏离程度。如果当前像素点是坏点,那么第二差值将远大于第一差值,因而可以通过设置预设值进行比较,来判断当前像素点是否是疑似坏点。

因而第一判断单元112对第一差值和第二差值进行第一判断,所述记录单元104记录第一判断结果,所述第一判断包括:判断第二差值与第一差值的商是否大于第一预设误差,若是则判定当前像素点为疑似坏点,否则判定当前像素点为非疑似坏点。

在某些实施例中,所述判断单元102还包括第二判断单元122,所述第二判断单元122用于对像素值序列中所有像素点进行第二判断,所述记录单元用于记录第二判断结果,所述第二判断包括:判定像素值序列中,排列编号位于编号指定大值与编号最大值之间或者位于编号最小值与编号指定小值之间的像素点为疑似坏点,以及判定排列编号位于其他范围内的像素点为非疑似坏点;所述编号最大值为像素值最大的像素点对应的排列编号,所述编号最小值为像素值最小的像素点对应的排列编号。

在某些实施例中,所述装置还包括逻辑运算单元105,所述逻辑运算单元105用于对第一判断结果、第二判断结果进行第一逻辑运算,若第一逻辑运算结果为真则判定当前像素点为坏点,若第一逻辑运算结果为假则判定当前像素不是坏点。第一逻辑运算可以为“与”运算,即第一判断结果和第二判断结果均判断当前像素点为疑似坏点时,才认定当前像素点为坏点,否则认定当前像素点不是坏点。

在某些实施例中,所述计算单元103包括二阶梯度均值计算单元123、最小二阶梯度均值计算单元133、纹理值计算单元143,所述判断单元102包括第三判断单元132;

所述二阶梯度均值计算单元123用于计算以当前像素点为中心,预设像素区块内所有像素点在不同预设方向上的二阶梯度均值,每一个预设方向对应一个二阶梯度均值;

所述最小二阶梯度均值计算单元133用于对计算得出的所有二阶梯度均值取最小值,得到最小二阶梯度均值并记录;

所述纹理值计算单元143用于计算预设像素区块内像素点对应的纹理值,得到纹理值;

所述第三判断单元132用于对最小二阶梯度均值与纹理值进行第三判断,所述记录单元用于记录第三判断结果,所述第三判断包括:判断最小二阶梯度均值与纹理值的差是否大于第二预设误差,若是则判定当前像素点为疑似坏点,否则判定当前像素点为非疑似坏点。

在某些实施例中,所述装置还包括逻辑运算单元105,所述逻辑运算单元105用于对第一判断结果和第三判断结果进行第二逻辑运算,若第二逻辑运算结果为真则判定当前像素点为坏点,若第二逻辑运算结果为假则判定当前像素不是坏点。第二逻辑运算可以为“与”运算,即第一判断结果和第三判断结果均判断当前像素点为疑似坏点时,才认定当前像素点为坏点,否则认定当前像素点不是坏点。

在某些实施例中,所述逻辑运算单元105用于对第一判断结果、第二判断结果和第三判断结果进行第三逻辑运算,若第三逻辑运算结果为真则判定当前像素点为坏点,若第三逻辑运算结果为假则判定当前像素不是坏点。第三逻辑运算可以为“与”运算,即第一判断结果、第二判断结果、第三判断结果均判断当前像素点为疑似坏点时,才认定当前像素点为坏点,否则认定当前像素点不是坏点。这样有利于图像边缘高频信息的保护,达到更好的保护效果,提高坏点检测的准确率。当然,在其他实施例中,第三逻辑运算还可以为其他运算,例如三个判断中有两个判断结果判定当前像素点为疑似坏点时,第三逻辑运算结果为真,否则为假。

当逻辑运算单元进行第一逻辑运算、第二逻辑运算、第三逻辑运算中的任一项并判定当前像素点为坏点时,就可以对当前像素点进行替换。

在某些实施例中,所述装置还包括坏点替换单元107,所述坏点替换单元107用于对判定为坏点的像素点采用像素中值替换其原有的像素值。像素中值即nxm大小的像素区块内所有像素点按照顺序排列后的中位数,采用该值替换坏点,可以有效缩小当前像素点与区块内其他像素点之间的差值,达到修复坏点、保持图像细节的目的。

在另一些实施例中,所述坏点替换单元107用于根据当前像素点的像素类型,对判定为坏点的像素点采用指定小像素值或指定大像素值替换其原有的像素值。所述像素类型包括max型和min型,“坏点替换单元用于根据当前像素点的像素类型,对判定为坏点的像素点采用指定小像素值或指定大像素值替换其原有的像素值”具体包括:当前像素点的值大于像素中值时,则确定当前像素点的像素类型为max型,坏点替换单元用于对判定为坏点的像素点采用指定大像素值替换其原有的像素值;当前像素点的值小于像素中值时,则确定当前像素点的像素类型为min型,坏点替换单元用于对判定为坏点的像素点采用指定小像素值替换其原有的像素值。对于坏点而言,其本身可能也会携带一些图像信息,如果采用像素中值进行完全替换,不利于保留这些图像信息,而采用此方案相较于采用像素中值进行替换坏点的方案,可以更好地保持图像细节。

至此,就完成了一个像素点(当前像素点)是否为坏点的检测,对于一幅图像而言,其包含着许多像素点,在当前像素点检测完毕后,需要开始下一像素点的检测。因而所述装置还包括遍历单元109,所述遍历单元109用于以当前像素点的下一像素点为中心像素点,并判断下一像素点是否为疑似坏点,并记录判断结果;重复上述步骤,直至nxm大小的像素区块内所有像素点均遍历完成。在实际应用过程中,对于每一像素点的判断,可以根据图8至图10中的任意一种方法来判断当前像素点是不是坏点,还可以选用这几种方法的组合进行综合性判断,也可以反复执行多次这几种方法的组合来判断。简言之,坏点检测方法选择上有多种选择,检测人员可以根据实际需要来选用。检测效果如图5-a、图5-b、图5-c所示,每幅图中的左边表示原始图像,中间表示检测出的坏点,右边表示经过坏点替换修复的图像,可以明显看出右边的图像比左边图像整体更加平滑,用户的感官体验更好。

本发明具有以下优点:基于图像上的坏点属性(坏点的像素值一般远大于或远小于同一个像素区块内其他像素点的平均像素值)来查找坏点,极大缩小了坏点检测装置的硬件面积。同时对图像上的像素点逐一排查,有利于发现更多的疑似坏点,进而在疑似坏点中进行排查,有效提高坏点检测的效率。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括……”或“包含……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的要素。此外,在本文中,“大于”、“小于”、“超过”等理解为不包括本数;“以上”、“以下”、“以内”等理解为包括本数。

本领域内的技术人员应明白,上述各实施例可提供为方法、装置、或计算机程序产品。这些实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。上述各实施例涉及的方法中的全部或部分步骤可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机设备可读取的存储介质中,用于执行上述各实施例方法所述的全部或部分步骤。所述计算机设备,包括但不限于:个人计算机、服务器、通用计算机、专用计算机、网络设备、嵌入式设备、可编程设备、智能移动终端、智能家居设备、穿戴式智能设备、车载智能设备等;所述的存储介质,包括但不限于:ram、rom、磁碟、磁带、光盘、闪存、u盘、移动硬盘、存储卡、记忆棒、网络服务器存储、网络云存储等。

上述各实施例是参照根据实施例所述的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到计算机设备的处理器以产生一个机器,使得通过计算机设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机设备以特定方式工作的计算机设备可读存储器中,使得存储在该计算机设备可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机设备上,使得在计算机设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已经对上述各实施例进行了描述,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改,所以以上所述仅为本发明的实施例,并非因此限制本发明的专利保护范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1