一种基于图像分割的扫描图像去灰尘方法转让专利

申请号 : CN201110339255.7

文献号 : CN102509264B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 易尧华刘菊华苏海李帅

申请人 : 武汉大学

摘要 :

本发明提出了一种基于图像分割的扫描图像去灰尘方法。现有的扫描图像去灰尘方法是使用扫描仪进行多次扫描来对扫描原稿上的灰尘等损伤进行检测修复或根据人眼观察找出扫描图像中的灰尘区域,然后使用灰尘区域的邻近像素来替代灰尘像素,这两种方法均可以有效去除扫描图像中的灰尘,但是前者会导致扫描效率下降,而后者需要人眼参与,不够自动化。本发明所述的方法根据灰尘区域的特征将图像真实信息与灰尘区域进行自动分割,然后对属于灰尘区域的像素点进行邻域线性插值来进行修复。采用本发明所述技术方案,可以准确地自动将图像真实信息与灰尘进行分割,大大改善存在灰尘的扫描图像质量。

权利要求 :

1.一种基于图像分割的扫描图像去灰尘方法,其特征在于,包括以下步骤:

步骤1,对扫描得到的原图像A进行均值滤波,得到图像B;

步骤2,将原图像A每个像素点的像素值与图像B中相应位置处像素点的像素值求差值并取绝对值,将对第i行第j列像素点求差值并取绝对值的结果记为数值xij;比较每个像素点相应的数值xij与预设的差异阈值P,当数值xij大于等于差异阈值P时,设该像素点的标记值为1,当数值xij小于差异阈值P时,设该像素点的标记值为0;每个像素点的标记值构成差异图像C;

步骤3,通过对差异图像C进行图像区域分割,在差异图像C中查找灰尘轮廓;进行图像区域分割的具体操作步骤如下:步骤3.1,遍历差异图像C中的每一行像素点,将标记值为1的相邻像素点连接起来组成差异条;

步骤3.2,对步骤3.1得到的所有差异条进行遍历,将相邻差异条合并成一个差异区域;

步骤3.3,遍历每一个差异区域,如果某个差异区域的像素点总个数大于预设的分割上限阈值T或小于预设的分割下限阈值T’,则将这些像素点的标记值重新设为0,否则保持其标记值不变;

步骤3.4,差异图像C中标记值为1的像素点即为查找出的灰尘轮廓;

步骤4,对步骤3查找出的灰尘轮廓进行膨胀,根据膨胀后差异图像C中标记为1的像素点,得到最终查找出来的灰尘区域;进行膨胀的具体操作方式如下,遍历差异图像C中的每一个像素点,如果某个像素点的标记值为1则不做处理,如果某个像素点的标记值为0,则取该像素点的周围8个相邻像素点的标记值,如果其周围8个相邻像素点中有一个或以上的标记值为1,则将该像素点的标记值修改为1,否则保持该像素点的标记值不变;

步骤5,根据步骤4所得灰尘区域,对原图像A进行修复;对原图像A进行修复的具体方式为,根据步骤4所得灰尘区域对原图像A进行线性插值;线性插值的具体操作方式如下,遍历原图像A,当遍历到原图像A中的某个像素点时,将遍历到的像素点设为当前像素点,取当前像素点在差异图像C中相应位置处的标记值,如果标记值等于0则不进行插值;

如果标记值等于1,则在差异图像C中取当前像素点的7*7邻域中所有标记值等于0的像素点,将所取得像素点在原图像A中的像素值取平均后,作为当前像素点修复后的像素值,并将当前像素点在差异图像C中的标记值设置为0。

2.如权利要求1所述基于图像分割的扫描图像去灰尘方法,其特征在于:步骤1中对扫描得到的原图像A进行滤波时,采用3*3的均值滤波器实现。

3.如权利要求1所述基于图像分割的扫描图像去灰尘方法,其特征在于:步骤2中,差异阈值P设为6。

4.如权利要求1所述基于图像分割的扫描图像去灰尘方法,其特征在于:步骤3中,分割上限阈值T设为400,分割下限阈值T’设为5。

说明书 :

一种基于图像分割的扫描图像去灰尘方法

技术领域

[0001] 本发明属于数字图像处理领域,涉及一种基于图像分割的扫描图像去灰尘方法。

背景技术

[0002] 扫描仪将光学图像转换成适合存储、传递以及可打印的数字图像。使用扫描仪扫描原稿(包括照片、胶片、书籍等)时,由于扫描原稿表现出的人工痕迹(例如灰尘和指纹等)的影响,会导致扫描数字图像中存在灰尘等损伤现象。因此,如何准确将扫描图像中的灰尘区域检测出来,并对其进行修复一直是扫描仪需要解决的难题。
[0003] 传统的扫描图像去灰尘方法有两种,一种是通过扫描仪的光敏器件来实现,而另一种则是直接对扫描图像进行检测修复。前者是使用扫描仪以不同角度对扫描原稿进行多次扫描来对灰尘等损伤进行检测修复,该类方法已经公开了许多种方法,可以有效去除扫描图像中的灰尘,但是由于需要进行多次扫描,因此会导致扫描速度下降,影响扫描仪的生产效率;而后者一般是在第三方软件打开图像,再通过人眼观察找出扫描图像中的灰尘区域,然后灰尘区域的邻近像素的几何形状及颜色来选择使用哪一像素来替代灰尘像素,该方法也可以有效去除扫描图像中的灰尘,而且其效果会非常理想,但是由于需要借助第三方软件来实现,需要人眼参与,不够自动化,并且如果扫描图像数据很大时,工作量会非常庞大。

发明内容

[0004] 为克服现有技术缺陷,本发明提出一种基于图像分割的扫描图像去灰尘方法。
[0005] 本发明的技术方案为一种基于图像分割的扫描图像去灰尘方法,包括以下步骤:
[0006] 步骤1,对扫描得到的原图像A进行均值滤波,得到图像B;
[0007] 步骤2,将原图像A每个像素点的像素值与图像B中相应位置处像素点的像素值求差值并取绝对值,将对第i行第j列像素点求差值并取绝对值的结果记为数值xij;比较每个像素点相应的数值xij与预设的差异阈值P,当数值xij大于等于差异阈值P时,设该像素点的标记值为1,当数值xij小于差异阈值P时,设该像素点的标记值为0;每个像素点的标记值构成差异图像C;
[0008] 步骤3,通过对差异图像C进行图像区域分割,在差异图像C中查找灰尘轮廓;进行图像区域分割的具体操作步骤如下:
[0009] 步骤3.1,遍历差异图像C中的每一行像素点,将标记值为1的相邻像素点连接起来组成差异条;
[0010] 步骤3.2,对步骤3.1得到的所有差异条进行遍历,将相邻差异条合并成一个差异区域;
[0011] 步骤3.3,遍历每一个差异区域,如果某个差异区域的像素点总个数大于预设的分割上限阈值T或小于预设的分割下限阈值T’,则将这些像素点的标记值重新设为0,否则保持其标记值不变;
[0012] 步骤3.4,差异图像C中标记值为1的像素点即为查找出的灰尘轮廓;
[0013] 步骤4,对步骤3查找出的灰尘轮廓进行膨胀,根据膨胀后差异图像C中标记为1的像素点,得到最终查找出来的灰尘区域;进行膨胀的具体操作方式如下,[0014] 遍历差异图像C中的每一个像素点,如果某个像素点的标记值为1则不做处理,如果某个像素点的标记值为0,则取该像素点的周围8个相邻像素点的标记值,如果其周围8个相邻像素点中有一个或以上的标记值为1,则将该像素点的标记值修改为1,否则保持该像素点的标记值不变;
[0015] 步骤5,根据步骤4所得灰尘区域,对原图像A进行修复。
[0016] 而且,步骤5中,对原图像A进行修复的具体方式为,根据步骤4所得灰尘区域对原图像A进行线性插值;线性插值的具体操作方式如下,
[0017] 遍历原图像A,当遍历到原图像A中的某个像素点时,将遍历到的像素点设为当前像素点,取当前像素点在差异图像C中相应位置处的标记值,如果标记值等于0则不进行插值;如果标记值等于1,则在差异图像C中取当前像素点的7*7邻域中所有标记值等于0的像素点,将所取得像素点在原图像A中的像素值取平均后,作为当前像素点修复后的像素值,并将当前像素点在差异图像C中的标记值设置为0。
[0018] 而且,步骤1中对扫描得到的原图像A进行滤波时,采用3*3的均值滤波器实现。
[0019] 而且,步骤2中,差异阈值P设为6。
[0020] 而且,步骤3中,分割上限阈值T设为400,分割下限阈值T’设为5。
[0021] 本发明根据灰尘区域的特征对图像进行区域分割,可以准确地自动将图像的真实信息和灰尘进行分割;对属于灰尘区域的像素点进行7*7邻域线性插值,可以准确地对灰尘进行修复。并且,进行图像分割时的分割阈值不是固定的,可以根据灰尘的严重程度进行调整。实施时,可以将此方法集成至扫描仪驱动中,使得用户可以对扫描图像进行自动处理。

附图说明

[0022] 图1是本发明实施例的3*3均值滤波器示意图;
[0023] 图2是本发明实施例的是差异图像C示意图;
[0024] 图3是本发明实施例的差异条示意图;
[0025] 图4是本发明实施例的差异区域示意图;
[0026] 图5是本发明实施例去除不符合要求的差异区域的示意图;
[0027] 图6是本发明实施例的对差异区域进行膨胀的示意图;
[0028] 图7是本发明实施例的流程图。

具体实施方式

[0029] 本发明结合灰尘等损伤的特征,对扫描图像进行图像区域分割,将扫描图像的真实信息与灰尘区域进行准确分割,再根据灰尘像素点的临域中非灰尘的像素点进行线性插值,从而达到修复扫描图像中的灰尘区域的目的。本发明技术方案可以采用计算机软件技术运行流程,实现自动去灰。以下结合附图和实施例详细说明本发明技术方案。实施例的流程参见图7:
[0030] 步骤1,对扫描得到的原图像A进行均值滤波,得到图像B。
[0031] 实施例应用3*3的均值滤波器对扫描原图像A进行滤波,得到图像B。图1即为本发明使用的3*3均值滤波器,其中1/9表示模板内各个像素点的权重,即对模板内9个像素点的像素值相加后除以9,作为图像B中模板中心相应位置像素点的像素值。均值滤波器为现有技术,本发明不予赘述。
[0032] 步骤2,原图像A与图像B进行相减并取绝对值,即将原图像A每个像素点的像素值与图像B中相应位置处像素点的像素值求差值并取绝对值,将对第i行第j列像素点求差值并取绝对值的结果记为数值xij。然后,比较每个像素点相应的数值xij与预设的差异阈值P,当数值xij大于等于差异阈值P时,设该像素点的标记值为1,当数值xij小于差异阈值P时,设该像素点的标记值为0。
[0033] 每个像素点的标记值构成差异图像C。差异图像C中标记为1的像素即为潜在的灰尘。具体实施时,建议将差异阈值P默认为6,可以根据灰尘的严重程度进行调整,当灰尘较为轻微时,差异阈值P设置为8,中等时设置为系统默认值6,严重时设置为4。图2为差异图像C示意图,图中未进行标记的像素为0。
[0034] 步骤3,通过对差异图像C进行图像区域分割,在差异图像C中查找灰尘轮廓。该步骤根据差异图像C中标记值为1的像素点的连通性实现。
[0035] 实施例进行图像区域分割的具体操作步骤如下:
[0036] 步骤3.1,遍历差异图像C中的每一行像素点,将标记值为1的相邻像素点连接起来组成差异条。其结果如图3所示,得到一组差异条组。
[0037] 步骤3.2,对步骤3.1得到的所有差异条进行遍历,将相邻差异条合并成一个差异区域。图4为对图3进行区域分割的结果,得到一组差异区域,如图中的A、B、C三个区域。
[0038] 步骤3.3,遍历每一个差异区域,如果某个差异区域的像素点总个数大于预设的分割上限阈值T或小于预设的分割下限阈值T’,则将这些像素点的标记值重新设为0,否则保持其标记值不变。分割下限阈值T’可设为5。具体实施时,建议将分割阈值T默认为400个像素点,可以根据灰尘的严重程度进行调整,当灰尘较为轻微时,分割阈值T设置为300,中等时设置为系统默认值400,严重时设置为600。如果某个差异区域的像素点总个数大于预设的分割上限阈值T或小于预设的分割下限阈值T’, 认为其不是灰尘区域。图5为对图4进行区域筛选的结果,区域B过小,而区域C过大,因此将区域B、C标记为非灰尘区域,其中像素点的标记值重新设为0。
[0039] 步骤3.4,经步骤3.3后,此时差异图像C中标记值为1的像素点即为查找出的灰尘轮廓。
[0040] 步骤4,对步骤3查找出的灰尘轮廓进行膨胀,根据膨胀后差异图像C中标记为1的像素点,得到最终查找出来的灰尘区域。
[0041] 进行膨胀的具体操作方式为,遍历差异图像C中的每一个像素点,如果某个像素点的标记值为1则不做处理,如果某个像素点的标记值为0,则取该像素点的3*3领域的标记值。即取周围8个相邻像素点的标记值,如果其周围8个相邻像素点中有一个或以上的标记值为1,则将该像素点的标记值修改为1,否则保持该像素点的标记值不变。图6为对图5进行膨胀的结果。
[0042] 具体实施时,遍历差异图像C中的每一个像素点可以采用迭代方式完成,即先取差异图像C中的一个像素点作为当前像素点,然后判断当前像素点的标记值。如果当前像素点的标记值为1,直接从差异图像C中取下一个像素作为当前像素点,继续进行处理。如果当前像素点的标记值为0,则取当前像素点的3*3领域的标记值,如果其周围8个像素点中有一个或以上的标记值为1,则将当前像素点的标记值修改为1,从差异图像C中取下一个像素点作为当前像素点,继续进行处理;如果当前像素点周围8个像素点的标记值都为0,保持当前像素点的标记值不变为0,然后从差异图像C中取下一个像素点作为当前像素点,继续进行处理。直到处理完差异图像C中的所有像素点。
[0043] 步骤5,根据步骤4所得灰尘区域,对原图像A进行修复,处理结束。
[0044] 根据差异图像C中标记的灰尘区域对原图像A进行线性插值,即可对扫描图像中的灰尘区域进行修复。线性插值的具体操作方式如下,
[0045] 遍历原图像A中的每一个像素点,取在差异图像C中相应位置处的标记值,如果标记值等于0则不进行插值;如果标记值等于1,则取该像素点的7*7邻域中标记值等于0的像素点(即非灰尘点),对原图像A中相应位置处像素点进行线性插值,得到修复以后的像素点。
[0046] 具体实施时,遍历原图像A中的每一个像素点进行线性插值,一般是按从上到下从左到右的方式遍历,可以采用迭代方式完成:
[0047] 取原图像A中的一个像素点作为当前像素点,取在差异图像C中相应位置处的标记值,然后判断标记值。
[0048] 如果标记值等于0,则不需要进行插值,直接从原图像A中取下一个像素点作为当前像素点,继续进行处理。
[0049] 如果标记值为1,则表示该像素点是灰尘像素,需要进行插值;取该像素的7*7邻域中非灰尘的像素点进行线性插值得到修复以后的像素,线性插值方法为:在差异图像C中取当前像素点的7*7邻域中所有标记值等于0的像素点,将所取得像素点在原图像A中的像素值取平均后,作为当前像素点修复后的像素值,并将当前像素点在差异图像C中的标记值设置为0。具体实现方式可以为,遍历当前像素点的7*7邻域,将该邻域内在差异图像C中标记值为0的像素点在原图像A的像素值进行相加得到nMount,并计算该邻域内在差异图像C中标记值为0的像素点的个数nCount,将nMount除以nCount即为该像素点修复以后的像素值。经过线性插值修复以后将差异图像C中该位置的标记值修改为0,也就是说,如果当前像素点的7*7邻域中有相邻像素点是修复过的,采用修复以后的像素值参与相加得到nMount。从原图像A中取下一个像素点作为当前像素点,继续进行处理,直到处理完原图像A中的所有像素点。
[0050] 本文中所描述的具体实施例仅仅是对本发明精神作举例说明。本发明所属技术领域的技术人员可以对所描述的具体实施例做各种各样的修改或补充或采用类似的方式替代,但并不会偏离本发明的精神或者超越所附权利要求书所定义的范围。