一种图像校正方法、装置、设备和介质与流程

文档序号:23727742发布日期:2021-01-26 17:49阅读:59来源:国知局
一种图像校正方法、装置、设备和介质与流程

[0001]
本发明涉及到图像处理领域,特别是涉及到一种图像校正方法、装置、设备和介质。


背景技术:

[0002]
在日常生活、工作、学习中,用手机、摄像头、扫描仪等图像采集设备获取的图像可能存在一定程度的扭曲,这种扭曲的图像不便于阅读,也不便于对图像进行进一步处理。
[0003]
目前,主要依靠photoshop、coreldraw等图像处理软件来校正扭曲的图像。然而,这种校正图像的方法不仅效率较低,而且在校正扭曲图像时难以保证校正效果。
[0004]
目前,已经有了一些比较成熟的曲线检测方法,这些被检测的曲线可以是图像中的物体边缘线,也可以是图像中画出的曲线,这使得基于图像中的曲线进行图像校正成为可能。例如,之前,本申请人已向中国国家专利局提交了名称为“一种曲线检测方法、装置、设备和介质”的发明申请,申请号为“2020107882450”,该方法主要目的是提高对沿着水平方向或其他方向有一定程度弯曲的普通曲线的检测效果和效率;通过该方法,可获得曲线点集合,还可对曲线点集合中的点进行拟合得到曲线函数。


技术实现要素:

[0005]
本发明提供了一种图像校正方法、装置、设备和介质,主要目的是实现基于曲线检测对扭曲图像进行校正。
[0006]
本发明的目的是通过以下技术方案实现的:
[0007]
第一方面,本发明提供了一种图像校正方法,所述方法包括:
[0008]
对待校正图像中的曲线进行检测,基于检测结果进行曲线拟合,得到上端校正曲线函数和下端校正曲线函数;
[0009]
基于所述上端校正曲线函数和所述下端校正曲线函数对所述待校正图像的像素点进行调整,得到第一校正图像;
[0010]
基于所述上端校正曲线函数的斜率和/或所述下端校正曲线函数的斜率对所述第一校正图像的像素点进行调整,得到第二校正图像。
[0011]
优选地,所述基于所述上端校正曲线函数和所述下端校正曲线函数对所述待校正图像的像素点进行调整,得到第一校正图像,包括:
[0012]
对所述待校正图像中每列像素点,设置上端参考点坐标(x,y01)和下端参考点坐标(x,y02);
[0013]
对所述待校正图像中每列像素点,计算所述上端校正曲线函数点坐标(x,y1)和所述下端校正曲线函数点坐标(x,y2);
[0014]
对所述待校正图像中每列像素点,计算上端标准偏移量δy1和下端标准偏移量δy2,其中,δy1=y01-y1,δy2=y02-y2;
[0015]
对所述待校正图像每列的各像素点(x,y),计算各点位置偏移量(0,δy),其中:δ
y=δy1
×
[(y02-y)/(y02-y01)]+δy2
×
[(y-y01)/(y02-y01)],或δy=δy1
×
[(y2-y)/(y2-y1)]+δy2
×
[(y-y1)/(y2-y1)];
[0016]
基于所述各点位置偏移量对所述待校正图像的像素点进行调整,得到第一校正图像。
[0017]
优选地,所述基于所述上端校正曲线函数的斜率和/或所述下端校正曲线函数的斜率对所述第一校正图像的像素点进行调整,得到第二校正图像,包括:
[0018]
对所述第一校正图像中每列,获得所述列的校正斜率k
n
,其中,下标n是所述列的列数,k
n
表示第n列的校正斜率,k
n
等于所述上端校正曲线函数在所述列的斜率绝对值或所述下端校正曲线函数在所述列的斜率绝对值或所述上端校正曲线函数在所述列的斜率绝对值与所述下端校正曲线函数在所述列的斜率绝对值的均值;
[0019]
设置所述校正斜率的梯度阈值和所述梯度阈值对应的插值列数;
[0020]
对所述第一校正图像中每列,基于所述校正斜率k
n
、所述梯度阈值和所述梯度阈值对应的插值列数,在所述列进行像素点插值调整,得到第二校正图像。
[0021]
优选地,所述梯度阈值包括阈值a和阈值b,其中,0.2≤所述阈值a≤0.4,0.5≤所述阈值b≤0.8;所述阈值a对应的插值列数为1,所述阈值b对应的插值列数为2。
[0022]
优选地,所述基于所述上端校正曲线函数的斜率和/或所述下端校正曲线函数的斜率对所述第一校正图像的像素点进行调整,得到第二校正图像,包括:
[0023]
对所述第一校正图像中每列,获得所述列的校正斜率k
n
,其中,下标n是所述列的列数,k
n
表示第n列的校正斜率,k
n
等于所述上端校正曲线函数在所述列的斜率绝对值或所述下端校正曲线函数在所述列的斜率绝对值或所述上端校正曲线函数在所述列的斜率绝对值与所述下端校正曲线函数在所述列的斜率绝对值的均值;
[0024]
对所述第一校正图像中每列,计算从第1列到所述列(第n列)的累计扭曲量f(n):
[0025][0026]
其中,f(n)为所述累计扭曲量,k
i
为第i列的所述校正斜率;
[0027]
对所述第一校正图像中每列,基于所述累计扭曲量进行像素点插值调整,得到第二校正图像。
[0028]
优选地,所述对所述第一校正图像中每列,基于所述累计扭曲量进行像素点插值调整,包括:
[0029]
设置调整系数m和m
max
:
[0030][0031]
其中,m为所述调整系数,k
max
为所述校正斜率中的最大值,c为常数且1≤c≤10,m
max
为常数且0<m
max
≤6,如果所述调整系数m>m
max
取m=m
max

[0032]
计算调整步长β:
[0033][0034]
其中,β为所述调整步长,k
max
为所述校正斜率中的最大值,m为所述调整系数;
[0035]
对所述第一校正图像中每列,计算z(n),z(n)等于f(n)
÷
β的整数部分值,其中,n
为所述列的列数,f(n)为所述累计扭曲量,β为所述调整步长;
[0036]
对所述第一校正图像中每列,计算d(n),d(n)=z(n)-z(n-1),其中,n为所述列的列数,n-1为所述列的前一列的列数;
[0037]
对所述第一校正图像中每列,在所述列(第n列)进行插入d(n)列的像素点插值调整。
[0038]
可选地,在所述对待校正图像中的曲线进行检测,基于检测结果进行曲线拟合,得到上端校正曲线函数和下端校正曲线函数之前,所述方法还包括:
[0039]
对包含目标区域的图像中的曲线进行检测,基于检测结果获得所述目标区域的四个角点坐标;
[0040]
将所述四个角点坐标范围内的图像变换成矩形图像,得到所述待校正图像。
[0041]
第二方面,本发明还提供了一种图像校正装置,所述装置包括:
[0042]
校正曲线函数获取单元,用于对待校正图像中的曲线进行检测,基于检测结果进行曲线拟合,得到上端校正曲线函数和下端校正曲线函数;
[0043]
第一校正单元,用于基于所述上端校正曲线函数和所述下端校正曲线函数对所述待校正图像的像素点进行调整,得到第一校正图像;
[0044]
第二校正单元,用于基于所述上端校正曲线函数的斜率和/或所述下端校正曲线函数的斜率对所述第一校正图像的像素点进行调整,得到第二校正图像。
[0045]
优选地,所述第一校正单元按如下方式基于所述上端校正曲线函数和所述下端校正曲线函数对所述待校正图像的像素点进行调整,得到第一校正图像:
[0046]
对所述待校正图像中每列像素点,设置上端参考点坐标(x,y01)和下端参考点坐标(x,y02);
[0047]
对所述待校正图像中每列像素点,计算所述上端校正曲线函数点坐标(x,y1)和所述下端校正曲线函数点坐标(x,y2);
[0048]
对所述待校正图像中每列像素点,计算上端标准偏移量δy1和下端标准偏移量δy2,其中,δy1=y01-y1,δy2=y02-y2;
[0049]
对所述待校正图像每列的各像素点(x,y),计算各点位置偏移量(0,δy),其中:δy=δy1
×
[(y02-y)/(y02-y01)]+δy2
×
[(y-y01)/(y02-y01)],或δy=δy1
×
[(y2-y)/(y2-y1)]+δy2
×
[(y-y1)/(y2-y1)];
[0050]
基于所述各点位置偏移量对所述待校正图像的像素点进行调整,得到第一校正图像。
[0051]
优选地,所述第二校正单元按如下方式基于所述上端校正曲线函数的斜率和/或所述下端校正曲线函数的斜率对所述第一校正图像的像素点进行调整,得到第二校正图像:
[0052]
对所述第一校正图像中每列,获得所述列的校正斜率k
n
,其中,下标n是所述列的列数,k
n
表示第n列的校正斜率,k
n
等于所述上端校正曲线函数在所述列的斜率绝对值或所述下端校正曲线函数在所述列的斜率绝对值或所述上端校正曲线函数在所述列的斜率绝对值与所述下端校正曲线函数在所述列的斜率绝对值的均值;
[0053]
设置所述校正斜率的梯度阈值和所述梯度阈值对应的插值列数;
[0054]
对所述第一校正图像中每列,基于所述校正斜率k
n
、所述梯度阈值和所述梯度阈
值对应的插值列数,在所述列进行像素点插值调整,得到第二校正图像。
[0055]
优选地,所述梯度阈值包括阈值a和阈值b,其中,0.2≤所述阈值a≤0.4,0.5≤所述阈值b≤0.8;所述阈值a对应的插值列数为1,所述阈值b对应的插值列数为2。
[0056]
优选地,所述第二校正单元按如下方式基于所述上端校正曲线函数的斜率和/或所述下端校正曲线函数的斜率对所述第一校正图像的像素点进行调整,得到第二校正图像:
[0057]
对所述第一校正图像中每列,获得所述列的校正斜率k
n
,其中,下标n是所述列的列数,k
n
表示第n列的校正斜率,k
n
等于所述上端校正曲线函数在所述列的斜率绝对值或所述下端校正曲线函数在所述列的斜率绝对值或所述上端校正曲线函数在所述列的斜率绝对值与所述下端校正曲线函数在所述列的斜率绝对值的均值;
[0058]
对所述第一校正图像中每列,计算从第1列到所述列(第n列)的累计扭曲量f(n):
[0059][0060]
其中,f(n)为所述累计扭曲量,k
i
为第i列的所述校正斜率;
[0061]
对所述第一校正图像中每列,基于所述累计扭曲量进行像素点插值调整,得到第二校正图像。
[0062]
优选地,所述对所述第一校正图像中每列,基于所述累计扭曲量进行像素点插值调整,包括:
[0063]
设置调整系数m和m
max
:
[0064][0065]
其中,m为所述调整系数,k
max
为所述校正斜率中的最大值,c为常数且1≤c≤10,m
max
为常数且0<m
max
≤6,如果所述调整系数m>m
max
取m=m
max

[0066]
计算调整步长β:
[0067][0068]
其中,β为所述调整步长,k
max
为所述校正斜率中的最大值,m为所述调整系数;
[0069]
对所述第一校正图像中每列,计算z(n),z(n)等于f(n)
÷
β的整数部分值,其中,n为所述列的列数,f(n)为所述累计扭曲量,β为所述调整步长;
[0070]
对所述第一校正图像中每列,计算d(n),d(n)=z(n)-z(n-1),其中,n为所述列的列数,n-1为所述列的前一列的列数;
[0071]
对所述第一校正图像中每列,在所述列(第n列)进行插入d(n)列的像素点插值调整。
[0072]
可选地,所述装置还包括:
[0073]
角点获取单元,用于对包含目标区域的图像中的曲线进行检测,基于检测结果获得所述目标区域的四个角点坐标;
[0074]
矩形变换单元,用于将所述四个角点坐标范围内的图像变换成矩形图像,得到所述待校正图像。
[0075]
第三方面,本发明提供了一种图像校正设备,所述设备包括至少一个处理器以及
至少一个存储器,所述存储器用于存储程序代码,当所述程序代码被所述处理器执行时,使得所述处理器执行第一方面任一所述的方法。
[0076]
第四方面,本发明提供了一种计算机可读存储介质,所述存储介质包含程序代码,当所述程序代码运行于图像校正装置时,所述程序代码用于使所述图像校正装置执行第一方面任一所述的方法。
附图说明
[0077]
图1为本申请实施例提供的一种图像校正方法的流程示意图;
[0078]
图2为本申请实施例提供的从包含目标区域的图像中变换得到目标区域矩形图像的流程示意图;
[0079]
图3为本申请实施例提供的待校正图像的示意图;
[0080]
图4为本申请实施例提供的上端校正曲线函数和下端校正曲线函数的示意图;
[0081]
图5为本申请实施例提供的获得的第一校正图像的示意图;
[0082]
图6为本申请实施例提供的获得的第二校正图像的示意图;
[0083]
图7为本申请实施例提供的包含目标区域的图像的示意图;
[0084]
图8为本申请实施例提供的在包含目标区域的图像中获得的四个角点的示意图;
[0085]
图9为本申请实施例提供的一种图像校正装置的结构框图;
[0086]
图10为本申请实施例提供的一种图像校正设备的结构框图。
具体实施方式
[0087]
为了便于本领域技术人员理解,下面结合实施例与附图对本发明作进一步说明,实施方式提及的内容并非对本发明的限定。
[0088]
图1为本申请实施例提供的一种图像校正方法的流程示意图,该方法包括:
[0089]
s101:对待校正图像中的曲线进行检测,基于检测结果进行曲线拟合,得到上端校正曲线函数和下端校正曲线函数。示例性地,见图3所示,图3为本申请实施例提供的待校正图像的示意图。示例性地,见图4所示,图4为本申请实施例提供的上端校正曲线函数和下端校正曲线函数的示意图,包括上端校正曲线401和下端校正曲线402。
[0090]
其中,上端校正曲线函数反映了上端校正曲线的横纵坐标关系,也可用上端校正曲线点集合代替。
[0091]
其中,下端校正曲线函数反映了下端校正曲线的横纵坐标关系,也可用下端校正曲线点集合代替。
[0092]
具体地,在获得扭曲的待校正图像(示例性地,见图3所示)后,对待校正图像进行校正,以减小图像扭曲。
[0093]
进一步地,本领域技术人员可采用各种方式对待校正图像中的曲线进行检测。示例性地,可采用本申请人在向中国国家专利局提交的申请号为“2020107882450”的专利申请中提出的一种曲线检测方法进行曲线检测,该方法可获取图像中的曲线点集合和曲线函数。
[0094]
可选地,可选择待校正图像的上端和下端区域作为曲线检测区域,以缩小曲线检测区域范围。示例性地,选择待校正图像上端四分之一高度的矩形区域和待校正图像下端
四分之一高度的矩形区域为曲线检测区域。
[0095]
进一步地,在对待校正图像中的曲线进行检测后,可根据实际情况对待校正图像中的曲线进行筛选,基于检测、筛选结果进行曲线拟合,得到上端校正曲线函数和下端校正曲线函数。示例性地,在本申请实施例中,选择两端横坐标间距大于待校正图像宽度二分之一的曲线作为待选择曲线;在所有待选择曲线中,选择最上端的曲线的点集合为上端校正曲线点集合,选择最下端的曲线的点集合为下端校正曲线点集合,并进行曲线拟合,得到上端校正曲线函数和下端校正曲线函数。
[0096]
示例性地,见图4所示,图4为本申请实施例提供的获得的上端校正曲线函数和下端校正曲线函数示意图,包括上端校正曲线401和下端校正曲线402。在本申请实施例中,利用了opencv(open source computer vision library,一个基于bsd许可(开源)发行的跨平台计算机视觉和机器学习软件库)的polyfit模块分别对上端校正曲线点集合和下端校正曲线点集合进行10阶多项式拟合,得到上端校正曲线函数和下端校正曲线函数。polyfit模块利用了最小二乘法将多个点拟合成一条曲线。
[0097]
s102:基于所述上端校正曲线函数和所述下端校正曲线函数对所述待校正图像的像素点进行调整,得到第一校正图像。示例性地,见图5所示,图5为本申请实施例提供的获得的第一校正图像的示意图。
[0098]
具体地,在本申请实施例中,通过以下方式基于上端校正曲线函数和下端校正曲线函数对待校正图像的像素点进行调整,得到第一校正图像:
[0099]
对待校正图像中每列像素点,设置上端参考点坐标(x,y01)和下端参考点坐标(x,y02);
[0100]
对待校正图像中每列像素点,计算上端校正曲线函数点坐标(x,y1)和下端校正曲线函数点坐标(x,y2);
[0101]
对待校正图像中每列像素点,计算上端标准偏移量δy1和下端标准偏移量δy2,其中,δy1=y01-y1,δy2=y02-y2;
[0102]
对待校正图像每列的各像素点(x,y),计算各点位置偏移量(0,δy),其中:δy=δy1
×
[(y02-y)/(y02-y01)]+δy2
×
[(y-y01)/(y02-y01)],或δy=δy1
×
[(y2-y)/(y2-y1)]+δy2
×
[(y-y1)/(y2-y1)];
[0103]
基于各点位置偏移量对待校正图像的像素点进行调整,得到第一校正图像。
[0104]
其中,对每列像素点进行校正时,需设置该列的参考点坐标,包括上端参考点坐标(x,y01)和下端参考点坐标(x,y02)。优选地,每列像素点的上端参考点坐标(x,y01)和下端参考点坐标(x,y02)的纵坐标y01和y02为固定值,并设置:y01等于上端校正曲线函数在横坐标为0时的纵坐标的值;y02等于下端校正曲线函数在横坐标为0时的纵坐标的值。
[0105]
其中,δy为计算出的各像素点的向下偏移量,可理解为待校正图像的各像素点向下移动δy后得到第一校正图像。本发明给出了两种计算δy的方式,第一种方式为:δy=δy1
×
[(y02-y)/(y02-y01)]+δy2
×
[(y-y01)/(y02-y01)];第二种方式为:δy=δy1
×
[(y2-y)/(y2-y1)]+δy2
×
[(y-y1)/(y2-y1)]。在实际应用中,应只选择其中的一种方式进行计算δy。
[0106]
其中,各像素点的向下偏移量δy可能为非整数,本领域技术人员可采用各种方法处理偏移坐标的非整数问题,例如,包含但不限于最近邻域插值法、双线性插值法。示例性
地,在本申请实施例中,采用了最近邻域插值法,即对δy进行四舍五入取整。
[0107]
优选地,在对待校正图像的像素点进行调整得到第一校正图像中,在遇到计算坐标超出待校正图像边界的情况时,可将待校正图像边界像素点的颜色值赋予第一校正图像对应点的颜色值。
[0108]
s103:基于所述上端校正曲线函数的斜率和/或所述下端校正曲线函数的斜率对所述第一校正图像的像素点进行调整,得到第二校正图像。示例性地,见图6所示,图6为本申请实施例提供的获得的第二校正图像的示意图。
[0109]
具体地,在本申请实施例中,通过以下方式基于上端校正曲线函数的斜率和/或下端校正曲线函数的斜率对第一校正图像的像素点进行调整,得到第二校正图像:
[0110]
对第一校正图像中每列,获得该列的校正斜率k
n
,其中,下标n是该列的列数,k
n
表示第n列的校正斜率,k
n
等于上端校正曲线函数在该列的斜率绝对值或下端校正曲线函数在该列的斜率绝对值或上端校正曲线函数在该列的斜率绝对值与下端校正曲线函数在该列的斜率绝对值的均值;
[0111]
设置校正斜率的梯度阈值和梯度阈值对应的插值列数;
[0112]
对第一校正图像中每列,基于校正斜率k
n
、梯度阈值和梯度阈值对应的插值列数,在该列进行像素点插值调整,得到第二校正图像。
[0113]
优选地,校正斜率的梯度阈值包括阈值a和阈值b,其中,0.2≤阈值a≤0.4,0.5≤阈值b≤0.8;阈值a对应的插值列数为1,阈值b对应的插值列数为2。
[0114]
其中,对第一校正图像中每列,基于校正斜率k
n
、梯度阈值和梯度阈值对应的插值列数,在该列进行像素点插值调整,可理解为:
[0115]
对第一校正图像中每列,如果该列的校正斜率k
n
大于等于某梯度阈值,则在该列前和/或该列后插入列数为该梯度阈值对应的插值列数的列像素点。其中,被插入的列像素点值为该列像素点值或该列前一列像素点值或该列后一列像素点值或该列像素点值与该列前一列像素点值的均值或该列像素点值与该列后一列像素点值的均值。
[0116]
示例性地,设置校正斜率的梯度阈值包括阈值a和阈值b。其中,阈值a=0.3,阈值b=0.6,阈值a对应的插值列数为1,阈值b对应的插值列数为2,对第一校正图像中的每列,进行如下像素点插值调整:
[0117]
对第一校正图像中某一列,如果该列的校正斜率k
n
=0.2,由于0.2<0.3,在该列不进行插值;对第一校正图像中另一列,如果该列的校正斜率k
n
=0.4,由于0.3≤0.4<0.6,在该列前插入一列,可将该列像素点复制给插入的新列;
[0118]
对第一校正图像中又另一列,如果该列的校正斜率k
n
=0.7,由于0.7≥0.6,在该列前插入两列,可将该列像素点复制给插入的新列。
[0119]
具体地,在本申请实施例中,还提供了另一种方式基于上端校正曲线函数的斜率和/或下端校正曲线函数的斜率对第一校正图像的像素点进行调整,得到第二校正图像:
[0120]
对第一校正图像中每列,获得该列的校正斜率k
n
,其中,下标n是该列的列数,k
n
表示第n列的校正斜率,k
n
等于上端校正曲线函数在该列的斜率绝对值或下端校正曲线函数在该列的斜率绝对值或上端校正曲线函数在该列的斜率绝对值与下端校正曲线函数在该列的斜率绝对值的均值;
[0121]
对第一校正图像中每列,计算从第1列到该列(第n列)的累计扭曲量f(n):
[0122][0123]
其中,f(n)为累计扭曲量,k
i
为第i列的校正斜率;
[0124]
对第一校正图像中每列,基于累计扭曲量进行像素点插值调整,得到第二校正图像。
[0125]
优选地,在本申请实施例中,按以下方式对第一校正图像中每列,基于累计扭曲量进行像素点插值调整:
[0126]
设置调整系数m和m
max
:
[0127][0128]
其中,m为调整系数,k
max
为校正斜率中的最大值,c为常数且1≤c≤10,m
max
为常数且0<m
max
≤6,如果m>m
max
取m=m
max

[0129]
计算调整步长β:
[0130][0131]
其中,β为调整步长,k
max
为校正斜率中的最大值,m为调整系数;
[0132]
对第一校正图像中每列,计算z(n),z(n)等于f(n)
÷
β的整数部分值,其中,n为该列的列数,f(n)为累计扭曲量,β为调整步长;
[0133]
对第一校正图像中每列,计算d(n),d(n)=z(n)-z(n-1),其中,n为该列的列数,n-1为该列的前一列的列数;
[0134]
对第一校正图像中每列,在该列(第n列)进行插入d(n)列的像素点插值调整。
[0135]
其中,对第一校正图像中每列,在该列(第n列)进行插入d(n)列的像素点插值调整,可理解为:
[0136]
对第一校正图像中每列,在该列前和/或该列后插入列数为d(n)的列像素点。其中,被插入的列像素点值为该列像素点值或该列前一列像素点值或该列后一列像素点值或该列像素点值与该列前一列像素点值的均值或该列像素点值与该列后一列像素点值的均值。
[0137]
示例性地,见图6所示,图6为本申请实施例提供的获得的第二校正图像的示意图。该示意图的获取采用了如下方式:
[0138]
设置调整系数m和m
max
,其中,k
max
为校正斜率中的最大值,常数c=6,常数m
max
=1.5,如果m>m
max
取m=m
max

[0139]
对第一校正图像中每列,在该列(第n列)进行插入d(n)列的像素点插值调整。
[0140]
具体地,如果d(n)=0,在该列不进行插值;如果d(n)=1,在该列前插入1列,被插入的列像素点值为该列像素点值与该列前一列像素点值的均值;如果d(n)≥2,在该列前插入1列,被插入的列像素点值为该列像素点值与该列前一列像素点值的均值,并且在该列后插入d(n)-1列,被插入的列像素点值为该列像素点值与该列后一列像素点值的均值,如果d(n)-1>1,存在多个均值,这种情况下按照列距离的加权值获取均值。
[0141]
可选地,在s101之后,以及s102之前,可将上端校正曲线函数的上方区域和下端校
正曲线函数的下方区域设置为背景色或透明或其他纯色。
[0142]
图2为本申请实施例提供的从包含目标区域的图像中变换得到目标区域矩形图像的流程示意图。在s101之前,即在对待校正图像中的曲线进行检测,基于检测结果进行曲线拟合,得到上端校正曲线函数和下端校正曲线函数之前,可采用如下方法从包含目标区域的图像中变换得到目标区域矩形图像(待校正图像),包括:
[0143]
s201:对包含目标区域的图像中的曲线进行检测,基于检测结果获得所述目标区域的四个角点坐标。示例性地,见图7所示,图7为本申请实施例提供的包含目标区域的图像的示意图;见图8所示,图8为本申请实施例提供的在包含目标区域的图像中获得的四个角点的示意图,包括左上角角点801、右上角角点802、右下角角点803和左下角角点804。
[0144]
其中,目标区域包含需要获取和校正的图像区域,该区域为一个四边形,目标区域的四个角点指该四边形的四个顶点。
[0145]
具体地,在本申请实施例中,通过以下方式对包含目标区域的图像中的曲线进行检测,基于检测结果获得目标区域的四个角点坐标:
[0146]
对包含目标区域的图像中的曲线进行检测,基于检测结果得到上端定位曲线点集合和下端定位曲线点集合,并获得上端定位曲线点集合的左、右两个端点a、b,获得下端定位曲线点集合的左、右两个端点d、c;
[0147]
设置定位点偏移距离δl;
[0148]
将a点沿着da方向移动δl得到a1点,将b点沿着cb方向移动δl得到b1点,将c点沿着bc方向移动δl得到c1点,将d点沿着ad方向移动δl得到d1点;
[0149]
其中,a1点、b1点、c1点、d1点分别为四个角点坐标中的左上角坐标、右上角坐标、右下角坐标和左下角坐标。
[0150]
进一步地,本领域技术人员可采用各种方式对包含目标区域的图像中的曲线进行检测。示例性地,可采用本申请人在向中国国家专利局提交的申请号为“2020107882450”的专利申请中提出的一种曲线检测方法进行曲线检测,该方法可获取图像中的曲线点集合。
[0151]
可选地,可选择包含目标区域的图像的上端和下端区域作为曲线检测区域,以缩小曲线检测区域范围。示例性地,选择包含目标区域的图像上端四分之一高度的矩形区域和包含目标区域的图像下端四分之一高度的矩形区域为曲线检测区域。
[0152]
进一步地,在对包含目标区域的图像中的曲线进行检测后,可根据实际情况对所获得的曲线进行筛选,得到上端定位曲线点集合和下端定位曲线点集合。示例性地,在本申请实施例中,选择两端横坐标间距大于包含目标区域的图像宽度二分之一的曲线作为待选择曲线;在所有待选择曲线中,选择最上端的曲线的点集合为上端定位曲线点集合,选择最下端的曲线的点集合为下端定位曲线点集合。
[0153]
进一步地,可根据实际情况设置定位点偏移距离δl。示例性地,在本申请实施例中,设置定位点偏移距离δl等于包含目标区域的图像宽度八分之一。
[0154]
s202:将所述四个角点坐标范围内的图像变换成矩形图像,得到所述待校正图像。本申请实施例采用了透视变换(perspective transformation)将所述四个角点坐标范围内的图像变换成矩形图像。示例性地,见图3所示,图3为本申请实施例提供的待校正图像的示意图,图3也是本申请实施例提供的将四个角点坐标范围内的图像变换成矩形图像的示意图。
[0155]
具体地,透视变换将源坐标范围内的图像变换成矩形图像。其中,透视变换的源坐标为已在s201中获得的四个角点坐标,透视变换的目标矩形坐标可按以下方式设置:
[0156]
计算左上角角点到右上角角点的距离,设置为目标矩形图像的宽度;
[0157]
计算左上角角点到左下角角点的距离,设置为目标矩形图像的高度;
[0158]
设置目标矩形坐标的左上角坐标为(0,0);
[0159]
设置目标矩形坐标的右上角坐标为(目标矩形图像的宽度,0);
[0160]
设置目标矩形坐标的右下角坐标为(目标矩形图像的宽度,矩形图像的高度);
[0161]
设置目标矩形坐标的左下角坐标为(0,目标矩形图像的高度)。
[0162]
示例性地,在本申请实施例中,采用了opencv的getperspectivetransform模块和warpperspective模块实现透视变换。opencv(open source computer vision library),是一个基于bsd许可(开源)发行的跨平台计算机视觉和机器学习软件库。
[0163]
基于与上述一种图像校正方法实施例相同的构思,本申请实施例还提供了一种图像校正装置,见图9所示,图9为本申请实施例提供的一种图像校正装置的结构框图,该装置包括:校正曲线函数获取单元901、第一校正单元902和第二校正单元903。
[0164]
其中,校正曲线函数获取单元901,用于对待校正图像中的曲线进行检测,基于检测结果进行曲线拟合,得到上端校正曲线函数和下端校正曲线函数;
[0165]
第一校正单元902,用于基于所述上端校正曲线函数和所述下端校正曲线函数对所述待校正图像的像素点进行调整,得到第一校正图像;
[0166]
第二校正单元903,用于基于所述上端校正曲线函数的斜率和/或所述下端校正曲线函数的斜率对所述第一校正图像的像素点进行调整,得到第二校正图像。
[0167]
具体地,第一校正单元902按如下方式基于上端校正曲线函数和下端校正曲线函数对待校正图像的像素点进行调整,得到第一校正图像:
[0168]
对待校正图像中每列像素点,设置上端参考点坐标(x,y01)和下端参考点坐标(x,y02);
[0169]
对待校正图像中每列像素点,计算上端校正曲线函数点坐标(x,y1)和下端校正曲线函数点坐标(x,y2);
[0170]
对待校正图像中每列像素点,计算上端标准偏移量δy1和下端标准偏移量δy2,其中,δy1=y01-y1,δy2=y02-y2;
[0171]
对待校正图像每列的各像素点(x,y),计算各点位置偏移量(0,δy),其中:δy=δy1
×
[(y02-y)/(y02-y01)]+δy2
×
[(y-y01)/(y02-y01)],或δy=δy1
×
[(y2-y)/(y2-y1)]+δy2
×
[(y-y1)/(y2-y1)];
[0172]
基于各点位置偏移量对待校正图像的像素点进行调整,得到第一校正图像。
[0173]
具体地,第二校正单元903按如下方式基于上端校正曲线函数的斜率和/或下端校正曲线函数的斜率对第一校正图像的像素点进行调整,得到第二校正图像:
[0174]
对第一校正图像中每列,获得该列的校正斜率k
n
,其中,下标n是该列的列数,k
n
表示第n列的校正斜率,k
n
等于上端校正曲线函数在该列的斜率绝对值或下端校正曲线函数在该列的斜率绝对值或上端校正曲线函数在该列的斜率绝对值与下端校正曲线函数在该列的斜率绝对值的均值;
[0175]
设置校正斜率的梯度阈值和梯度阈值对应的插值列数;
[0176]
对第一校正图像中每列,基于校正斜率k
n
、梯度阈值和梯度阈值对应的插值列数,在该列进行像素点插值调整,得到第二校正图像。
[0177]
优选地,校正斜率的梯度阈值包括阈值a和阈值b,其中,0.2≤阈值a≤0.4,0.5≤阈值b≤0.8;阈值a对应的插值列数为1,阈值b对应的插值列数为2。
[0178]
具体地,第二校正单元903还可按另一种方式基于上端校正曲线函数的斜率和/或下端校正曲线函数的斜率对第一校正图像的像素点进行调整,得到第二校正图像:
[0179]
对第一校正图像中每列,获得该列的校正斜率k
n
,其中,下标n是该列的列数,k
n
表示第n列的校正斜率,k
n
等于上端校正曲线函数在该列的斜率绝对值或下端校正曲线函数在该列的斜率绝对值或上端校正曲线函数在该列的斜率绝对值与下端校正曲线函数在该列的斜率绝对值的均值;
[0180]
对第一校正图像中每列,计算从第1列到该列(第n列)的累计扭曲量f(n):
[0181][0182]
其中,f(n)为累计扭曲量,k
i
为第i列的校正斜率;
[0183]
对第一校正图像中每列,基于累计扭曲量进行像素点插值调整,得到第二校正图像。
[0184]
优选地,在本申请实施例中,按以下方式对第一校正图像中每列,基于累计扭曲量进行像素点插值调整:
[0185]
设置调整系数m和m
max
:
[0186][0187]
其中,m为调整系数,k
max
为校正斜率中的最大值,c为常数且1≤c≤10,m
max
为常数且0<m
max
≤6,如果m>m
max
取m=m
max

[0188]
计算调整步长β:
[0189][0190]
其中,β为调整步长,k
max
为校正斜率中的最大值,m为调整系数;
[0191]
对第一校正图像中每列,计算z(n),z(n)等于f(n)
÷
β的整数部分值,其中,n为该列的列数,f(n)为累计扭曲量,β为调整步长;
[0192]
对第一校正图像中每列,计算d(n),d(n)=z(n)-z(n-1),其中,n为该列的列数,n-1为该列的前一列的列数;
[0193]
对第一校正图像中每列,在该列(第n列)进行插入d(n)列的像素点插值调整。
[0194]
在本申请实施例中,该装置还可包括以下单元:
[0195]
角点获取单元,用于对包含目标区域的图像中的曲线进行检测,基于检测结果获得目标区域的四个角点坐标;
[0196]
矩形变换单元,用于将四个角点坐标范围内的图像变换成矩形图像,得到待校正图像。
[0197]
本申请实施例还提供了一种图像校正设备,见图10所示,图10为本申请实施例提供的一种图像校正设备的结构框图,该设备包括:处理器1001和存储器1002。
[0198]
其中,存储器1002,用于存储程序代码。
[0199]
处理器1001,用于调用所述存储器中存储的程序代码,可按照获得的程序执行本申请中实施例所述的任一方法流程。处理器1001用于实现图9所示的校正曲线函数获取单元901、第一校正单元902和第二校正单元903所执行的方法。
[0200]
其中,在图10中,总线架构可以包括任意数量的互联的总线和桥,将由处理器1001代表的一个或多个处理器和由存储器1002代表的存储器的电路连接在一起。总线架构还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路连接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口提供接口。
[0201]
处理器1001负责管理总线架构和通常的处理,存储器1002可以存储处理器1001在执行操作时所使用的数据。
[0202]
处理器1001可以是中央处理器(cpu)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field-programmable gate array,fpga)或复杂可编程逻辑器件(complex programmable logic device,cpld)。
[0203]
本申请实施例还提供了一种计算机存储介质,用于储存为上述本申请实施例中所述的任一装置或设备所用的计算机程序代码,其包含用于执行上述本申请实施例提供的任一方法的程序。
[0204]
所述计算机存储介质可以是计算机能够存取的任何可用介质或数据存储设备,包括但不限于磁性存储器(例如软盘、硬盘、磁带、磁光盘(mo)等)、光学存储器(例如cd、dvd、bd、hvd等)、以及半导体存储器(例如rom、eprom、eeprom、非易失性存储器(nand flash)、固态硬盘(ssd))等。
[0205]
本领域内的技术人员应明白,本发明的实施例可提供为方法、设备(系统)、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
[0206]
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0207]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0208]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0209]
以上对本发明所提供的一种图像校正方法、装置、设备和介质做了详细介绍,本文中应用了个例对本发明提供的原理及实施方法进行了阐述,以上提供的实施例只是帮助理解本发明及核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1