掌桥专利:专业的专利平台
掌桥专利
首页

图像处理方法、装置和介质

文献发布时间:2023-06-19 19:30:30


图像处理方法、装置和介质

技术领域

本发明涉及图像处理领域,尤其涉及一种图像处理方法、装置和介质。

背景技术

中值滤波是图像处理领域经常用到的一种基础算法,其中需要用到大量的排序算法。在追求效率的场景下,快速中值滤波算法通常有两类:一是减少排序算法的使用范围,或者优化排序算法,但是对效率的提升依然不理想;二是使用模糊替代的方式,效率高,但是会导致图像中的坏点没有被正常识别,掩盖图像的问题,不适用于图像传感器前期的测试环节。

现有技术通常将目标像素点周围的像素点一起进行排序计算,然后取中间位置的值作为中值作为目标像素点的值,然后移动滤波窗口,计算下一个像素点,直到所有像素点计算完成。可以预见,整张图像需要运用大量的排序运算,计算量大,会导致算法效率低。因此,亟需一种新型的图像处理方法、装置和介质以改善上述问题。

发明内容

本发明的目的在于提供一种图像处理方法、装置和介质,该方法用于提升中值滤波的效率。

第一方面,本发明提供一种图像处理方法,用于对图像进行中值滤波,包括:S1,在滤波窗口第一次移动前,对所述滤波窗口内的所有像素值排序,记录排序结果;所述滤波窗口的初始位置定义于待滤波图像的边缘;S2,根据所述排序结果生成第一中值,将滤波窗口中的目标像素点的像素值替换为所述第一中值;S3,相对于待滤波图像,移动所述滤波窗口;所述滤波窗口的移动步幅小于所述滤波窗口的宽度;所述滤波窗口移动时沿所述待滤波图像的边长方向;S4,每次滤波窗口移动,以使所述滤波窗口内的部分像素值变更后,基于滤波窗口移动前的所述排序结果和移动后的滤波窗口内新增的像素值,对移动后的滤波窗口内的所有像素值排序,更新排序结果;S5,S3-S4重复N-1次,根据更新后的排序结果生成第N中值,将滤波窗口中的目标像素点的像素值替换为所述第N中值;N为待滤波图像的所有像素点数量,N取任意大于一的整数。

本发明的方法有益效果为:本申请基于滤波窗口移动前的所述排序结果和移动后的滤波窗口内新增的像素值,对移动后的滤波窗口内的所有像素值排序,更新排序结果;所述滤波窗口移动N-1次,根据更新后的排序结果生成第N中值,将滤波窗口中的目标像素点的像素值替换为所述第N中值。本申请无需使用近似或者替代运算,所有计算结果都基于原始图像,避免原始图像中的坏点像素问题被掩盖,同时,提升了排序算法的效率,即使在老旧的测试机台上都可以快速完成中值滤波过程。

可选的,所述S1包括:选取第一次移动前的滤波窗口内的像素值,生成第一数组;第一数组排序后生成第二数组;记录第二数组作为排序结果。

可选的,所述对移动后的滤波窗口内的所有像素值排序前,还包括:调用移动滤波窗口前记录的第二数组;选取移动后的滤波窗口内像素值,生成第三数组;选取所述第二数组与所述第三数组的交集,生成第四数组作为移动滤波窗口后未变更的像素值的排序结果。

可选的,所述S4和S5包括:选取所述第三数组中不属于第四数组的像素值,即所述新增的像素值,生成第五数组;将第五数组中的像素值移动至第四数组,并按照第四数组中像素值的排序方式继续排序,生成第六数组作为所述第N中值对应的排序结果;取所述第六数组的中值为所述第N中值。其有益效果在于,从第五数组新加入的像素值只需要与第四数组原有的排序结果进行比较和移动就可以完成新窗口所需的全部像素值排序过程,能够节省计算次数,提升中值滤波效率。

可选的,所述将第五数组中的像素值移动至第四数组,并按照第四数组中像素值的排序方式继续排序,包括:所述第四数组中像素值的排序方式为按像素值的大小排序成一维数组的方式;将所述第五数组中的第一像素值移动至所述第四数组的默认位置,比较第一像素值与相邻于所述默认位置的像素值的大小,根据所述比较的结果判断是否进行数值交换。

可选的,所述比较第一像素值与相邻于所述默认位置的像素值的大小,根据所述比较的结果判断是否进行数值交换包括:当相邻于所述默认位置的两个像素值不同,且其中的最大值小于所述第一像素值时,将所述第一像素值与所述最大值交换位置;当相邻于所述默认位置的两个像素值不同,且其中的最小值大于所述第一像素值时,将所述第一像素值与所述最小值交换位置。

可选的,所述比较第一像素值与相邻于所述默认位置的像素值的大小,根据所述比较的结果判断是否进行数值交换还包括:当相邻于所述默认位置的两个像素值相同并大于所述第一像素值时,将相邻于所述默认位置且靠近第四数组最小值的像素值与所述第一像素值交换位置;当相邻于所述默认位置的两个像素值相同并小于所述第一像素值时,将相邻于所述默认位置且靠近第四数组最大值的像素值与所述第一像素值交换位置;当相邻于所述默认位置的至少一个像素值等于所述第一像素值时,所述第一像素值的位置不变。

可选的,所述滤波窗口包括三行三列的像素点阵。

可选的,所述目标像素点设置为滤波窗口中心处的像素点。

可选的,所述在滤波窗口第一次移动前还包括:通过膨胀算法填充原始图片之外的区域生成所述待滤波图像,以使所述原始图片的边缘像素点能够作为所述目标像素点。

第二方面,本发明提供一种图像处理装置,用于所述第一方面中任一项所述的方法,包括处理模块和存储模块;所述处理模块用于定义滤波窗口的初始位置于待滤波图像的边缘;获取待滤波图像位于初始滤波窗口内的像素值,排序计算获得第一中值,并控制存储模块记录第一中值对应的排序结果;相对于待滤波图像,移动所述滤波窗口;所述滤波窗口的移动步幅小于所述滤波窗口的宽度;所述滤波窗口移动时沿所述待滤波图像的边长方向;每次滤波窗口移动,以使所述滤波窗口内的部分像素值变更后,基于滤波窗口移动前的所述排序结果和移动后的滤波窗口内新增的像素值,对移动后的滤波窗口内的所有像素值排序,更新排序结果;上述步骤重复N-1次,根据更新后的排序结果生成第N中值,将滤波窗口中的目标像素点的像素值替换为所述第N中值;N为待滤波图像的所有像素点数量,N取任意大于一的整数。

第三方面,本发明提供一种可读存储介质,所述可读存储介质内存储有程序,所述程序被执行时,实现第一方面中任一项所述的方法。

附图说明

图1为本发明提供的一种图像处理方法的流程示意图;

图2为本发明提供的一种滤波窗口移动前选取中值的示意图;

图3为本发明提供的一种滤波窗口移动后选取中值的示意图;

图4为本发明提供的一种像素值在数组中交换的示意图;

图5为本发明提供的一种目标像素点沿S形遍历待滤波图像的示意图;

图6为本发明提供的一种目标像素点按从左到右、从上到下的顺序遍历待滤波图像的示意图;

图7为本发明提供的一种目标像素点沿直角螺旋线遍历待滤波图像的示意图;

图8为本发明提供的一种图像处理装置的结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。除非另外定义,此处使用的技术术语或者科学术语应当为本发明所属领域内具有一般技能的人士所理解的通常意义。本文中使用的“包括”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。

图1为本发明提供的一种图像处理方法的流程示意图。

针对现有技术存在的问题,如图1所示,本发明提供了一种图像处理方法,用于对图像进行中值滤波,包括:

S1,在滤波窗口第一次移动前,对所述滤波窗口内的所有像素值排序,记录排序结果;所述滤波窗口的初始位置定义于待滤波图像的边缘;

S2,根据所述排序结果生成第一中值,将滤波窗口中的目标像素点的像素值替换为所述第一中值;

S3,相对于待滤波图像,移动所述滤波窗口;所述滤波窗口的移动步幅小于所述滤波窗口的宽度;所述滤波窗口移动时沿所述待滤波图像的边长方向;

S4,每次滤波窗口移动,以使所述滤波窗口内的部分像素值变更后,基于滤波窗口移动前的所述排序结果和移动后的滤波窗口内新增的像素值,对移动后的滤波窗口内的所有像素值排序,更新排序结果;

S5,S3-S4重复N-1次,根据更新后的排序结果生成第N中值,将滤波窗口中的目标像素点的像素值替换为所述第N中值;N为待滤波图像的所有像素点数量,N取任意大于一的整数。

值得说明的是,本申请基于滤波窗口移动前的所述排序结果和移动后的滤波窗口内新增的像素值,对移动后的滤波窗口内的所有像素值排序,更新排序结果;所述滤波窗口移动N-1次,根据更新后的排序结果生成第N中值,将滤波窗口中的目标像素点的像素值替换为所述第N中值。本申请无需使用近似或者替代运算,所有计算结果都基于原始图像,避免原始图像中的坏点像素问题被掩盖,同时,提升了排序算法的效率,即使在老旧的测试机台上都可以快速完成中值滤波过程。

在一些实施例中,所述S1包括:选取第一次移动前的滤波窗口内的像素值,生成第一数组。第一数组排序后生成第二数组。记录第二数组作为排序结果。

具体的,所述滤波窗口包括三行三列的像素点阵。

更具体的,所述滤波窗口设置为奇数行奇数列的像素点阵;本实施例中,通过将所述滤波窗口设置为奇数行奇数列的像素点阵,使得目标像素点保持为滤波窗口中心处的一个像素点,有助于简化计算。

表1为本发明提供的一种待滤波图像的像素值的分布示意图。

更具体的,如表1所示,通过滤波窗口选取位于待滤波图像左上角的3x3大小的像素点阵,获取所述像素点阵内各像素点的像素值生成第一数组。所述第一数组设置为3x3大小的二维数组。将所述第一数组中的像素值按从小到大的顺序排列为一维设置的第二数组。

另一些实施例中,所述滤波窗口包括五行五列的像素点阵。

值得说明的是,所述滤波窗口可以包括AxB大小的像素点阵。A和B均为任意大于等于3的整数。

图2为本发明提供的一种滤波窗口移动前选取中值的示意图。

如图2所示,在一些具体实施例中,所述S2包括:根据所述第二数组生成第一中值。

另一些具体实施例中,所述目标像素点设置为滤波窗口中心处的像素点。

值得说明的是,所述目标像素点可以设置为滤波窗口中任意位置的像素点。

在一些实施例中,所述对移动后的滤波窗口内的所有像素值排序前,还包括:调用移动滤波窗口前记录的第二数组。选取移动后的滤波窗口内像素值,生成第三数组。选取所述第二数组与所述第三数组的交集,生成第四数组作为移动滤波窗口后未变更的像素值的排序结果。

具体的,所述滤波窗口每次移动的距离为一个像素点,以使第四数组包含的像素数量为第二数组的像素数量的三分之二。这种设置便于减少计算量。

更具体的,如表1所示,将3x3的滤波窗口相对于待滤波图像向右移动一个像素点的距离。滤波窗口内的全部像素值向左移动一个像素点的距离,即滤波窗口最左边一列三个像素值3,5,6被删除,同时滤波窗口新增的右边一列三个像素值5,2,3。

值得说明的是,所述滤波窗口每次移动的距离可以设置为单个像素点外径的任意整数倍且小于所述滤波窗口的边长的距离,以使第四数组为非空数组。在所述滤波窗口每次移动的距离不变的情况下,所述滤波窗口包含的像素越多,本实施例能够减少的计算量越大,使得中值滤波的整体效率提高30%至50%。

图3为本发明提供的一种滤波窗口移动后选取中值的示意图。

如图3所示,在一些实施例中,所述S4和S5包括:选取所述第三数组中不属于第四数组的像素值,即所述新增的像素值,生成第五数组。将第五数组中的像素值移动至第四数组,并按照第四数组中像素值的排序方式继续排序,生成第六数组作为所述第N中值对应的排序结果。取所述第六数组的中值为所述第N中值。从第五数组新加入的像素值只需要与第四数组原有的排序结果进行比较和移动就可以完成新窗口所需的全部像素值排序过程,能够节省计算次数,提升中值滤波效率。

具体的,所述滤波窗口在所述待滤波图像中向右移动一个像素点的距离。所述第五数组对应的像素点阵与所述第一数组对应的像素点阵相邻。所述第三数组为三行三列的九个像素值。所述第四数组为按大小排列成一行的六个像素值。所述第五数组为三行一列的三个像素值。所述第六数组为按大小排列成一行的九个像素值。

更具体的,所述第五数组包括滤波窗口新增的右边一列三个像素值“5,2,3”。将所述三个像素值“5,2,3”均按照第四数组中像素值的排序方式继续排序,生成第六数组作为所述第N中值对应的排序结果。

另一些实施例中,N设置为待滤波图像所有的像素点个数。

值得说明的是,N也可以小于待滤波图像所有的像素点个数。

在一些实施例中,所述将第五数组中的像素值移动至第四数组,并按照第四数组中像素值的排序方式继续排序,包括:所述第四数组中像素值的排序方式为按像素值的大小排序成一维数组的方式。将所述第五数组中的第一像素值移动至所述第四数组的默认位置,比较第一像素值与相邻于所述默认位置的像素值的大小,根据所述比较的结果判断是否进行数值交换。

具体的,所述第四数组按从小到大的顺序排序,生成所述第五数组时,将所述第五数组按从小到大的顺序排序;本实施例通过将第五数组排序,使得第五数组中的第a个像素值移动至第四数组时都基于第五数组中的第a-1个像素值的位置;a为任意大于1且小于滤波窗口宽度值的整数。有利于减少第五数组中像素值移动时的计算,有助于提升滤波效率。

另一些实施例中,生成所述第五数组时,可以不对所述第五数组进行排序。

图4为本发明提供的一种像素值在数组中交换的示意图。

如图4所示,具体的,生成第四数组时,来自于第一数组中左上角的像素值“3”被删除。第五数组中的第一行像素值“5”来自于第三数组中右上角的像素值“5”。将像素值“3”替换为像素值“5”。同理,将第一数组中被删除的剩余像素值替换为第五数组中的剩余像素值。即将第一数组内左侧一列像素值“3,5,6”替换为第三数组内右侧一列像素值“5,2,3”,以生成第六数组。

具体的,第五数组中第一行的像素值“5”在所述第四数组的默认位置为第三数组中左上角的像素值“3”的位置。第五数组中第二行的像素值“2”在所述第四数组的默认位置为第三数组中第一列第二行的像素值“5”的位置。第五数组中第三行的像素值“3”在所述第四数组的默认位置为第三数组中第一列第三行的像素值“6”的位置。

值得说明的是,所述第五数组中第C行的像素值在所述第四数组的默认位置为第三数组第一列第C行的像素值的位置。C为任意正整数。

在一些实施例中,所述比较第一像素值与相邻于所述默认位置的像素值的大小,根据所述比较的结果判断是否进行数值交换包括:当相邻于所述默认位置的两个像素值不同,且其中的最大值小于所述第一像素值时,将所述第一像素值与所述最大值交换位置。当相邻于所述默认位置的两个像素值不同,且其中的最小值大于所述第一像素值时,将所述第一像素值与所述最小值交换位置。

在一些实施例中,所述比较第一像素值与相邻于所述默认位置的像素值的大小,根据所述比较的结果判断是否进行数值交换还包括:当相邻于所述默认位置的两个像素值相同并大于所述第一像素值时,将相邻于所述默认位置且靠近第四数组最小值的像素值与所述第一像素值交换位置。当相邻于所述默认位置的两个像素值相同并小于所述第一像素值时,将相邻于所述默认位置且靠近第四数组最大值的像素值与所述第一像素值交换位置。当相邻于所述默认位置的至少一个像素值等于所述第一像素值时,所述第一像素值的位置不变。

在一些更具体的实施例中,所述第一数组内左侧每个像素值替换为第三数组内右侧一列对应的一个像素值后,对新增的像素值排序。像素值“3”替换为像素值“5”后,比较像素值“5”与其两侧的像素值“1”和“3”。像素值“5”与像素值“3”交换位置后,比较像素值“5”与其两侧的像素值“3”和“4”。像素值“5”与像素值“4”交换位置后,比较像素值“5”与其两侧的像素值“4”和“5”。像素值“5”不再移动。

在一些实施例中,所述在滤波窗口第一次移动前还包括:通过膨胀算法填充原始图片之外的区域生成所述待滤波图像,以使所述原始图片的边缘像素点能够作为所述目标像素点。

具体的,对于3x3的滤波窗口,所述膨胀算法用于填充原始图片之外厚度为1个像素点的像素点框。

值得说明的是,对于AxB的滤波窗口,所述膨胀算法用于填充原始图片之外厚度为A/2的横向像素点阵与厚度为B/2的纵向像素点阵。横向像素点阵与纵向像素点阵组成像素点框并与原始图片相邻。

图5为本发明提供的一种目标像素点沿S形遍历待滤波图像的示意图。

如图5所示,所述目标像素点从待滤波图像的左上角开始,沿反S形遍历所述待滤波图像。

图6为本发明提供的一种目标像素点按从左到右、从上到下的顺序遍历待滤波图像的示意图。

如图6所示,所述目标像素点从待滤波图像的左上角开始,按从左到右、从上到下的顺序遍历所述待滤波图像。

图7为本发明提供的一种目标像素点沿直角螺旋线遍历待滤波图像的示意图。

如图7所示,所述目标像素点从待滤波图像的左上角开始,沿直角螺旋线遍历所述待滤波图像。

值得说明的是,所述目标像素点可以沿任意路径遍历所述待滤波图像。

图8为本发明提供的一种图像处理装置的结构示意图。

如图8所示,本发明提供一种图像处理装置,用于上述实施例中任一项所述的方法,包括处理模块和存储模块。所述处理模块用于获取待滤波图像位于初始滤波窗口内的像素值,排序计算获得第一中值,并控制存储模块记录第一中值对应的排序结果。将初始滤波窗口内的目标像素点的像素值替换为所述第一中值。移动滤波窗口,以使所述滤波窗口内的部分像素值变更。基于移动滤波窗口后未变更的像素值的排序结果和已变更的像素值,排序计算获得第N中值,并控制存储模块记录第N中值对应的排序结果。N为任意大于一的正整数。将移动后的滤波窗口内的目标像素点的像素值替换为所述第N中值。重复执行上述步骤,直到待滤波图像中所有目标像素点的像素值被替换完成,控制存储模块记录目标像素点的像素值被替换完成后生成的图片。所述存储模块用于记录所述第一中值对应的排序结果、所述第N中值对应的排序结果和所述目标像素点的像素值被替换完成后生成的图片。

应注意,本实施例中的处理模块可以是一种图像处理芯片或一种集成电路芯片,具有对图像信号的处理能力。在实现过程中,上述方法实施例的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application SpecificIntegrated Circuit,ASIC)、现成可编程门阵列(Field Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本实施例中的公开的各方法、步骤及逻辑框图。

可以理解,本实施例中的存储模块可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(Read-OnlyMemory,ROM)、可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(Random Access Memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(Static RAM,SRAM)、动态随机存取存储器(Dynamic RAM,DRAM)、同步动态随机存取存储器(Synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(Double Data RateSDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(Synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(DirectRambus RAM,DR RAM)。应注意,本文描述的系统和方法的存储器旨在包括但不限于这些和任意其它适合类型的存储器。

本发明提供一种可读存储介质,所述可读存储介质内存储有程序,所述程序被执行时,实现上述实施例中任一项所述的方法。

值得说明的是,所述方法如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得电子设备执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器、随机存取存储器、磁碟或者光盘等各种可以存储程序代码的介质。

虽然在上文中详细说明了本发明的实施方式,但是对于本领域的技术人员来说显而易见的是,能够对这些实施方式进行各种修改和变化。但是,应理解,这种修改和变化都属于权利要求书中所述的本发明的范围和精神之内。而且,在此说明的本发明可有其它的实施方式,并且可通过多种方式实施或实现。

技术分类

06120115931861