CN114418890B - 光照不均文本图像处理方法 - Google Patents
光照不均文本图像处理方法 Download PDFInfo
- Publication number
- CN114418890B CN114418890B CN202210068610.XA CN202210068610A CN114418890B CN 114418890 B CN114418890 B CN 114418890B CN 202210068610 A CN202210068610 A CN 202210068610A CN 114418890 B CN114418890 B CN 114418890B
- Authority
- CN
- China
- Prior art keywords
- kernel
- pixel
- image
- value
- sqrt
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 74
- 238000005286 illumination Methods 0.000 title claims abstract description 44
- 238000012545 processing Methods 0.000 title claims description 30
- 238000003672 processing method Methods 0.000 claims abstract description 9
- 230000002708 enhancing effect Effects 0.000 claims abstract description 5
- 239000011159 matrix material Substances 0.000 claims description 53
- 125000004122 cyclic group Chemical group 0.000 claims description 39
- 238000007667 floating Methods 0.000 claims description 18
- 238000011084 recovery Methods 0.000 claims description 9
- 230000008569 process Effects 0.000 claims description 8
- 230000011218 segmentation Effects 0.000 claims description 8
- 239000013598 vector Substances 0.000 claims description 8
- 230000000052 comparative effect Effects 0.000 claims description 6
- 238000004364 calculation method Methods 0.000 claims description 5
- 238000012935 Averaging Methods 0.000 claims description 4
- 238000012937 correction Methods 0.000 claims description 4
- 238000006243 chemical reaction Methods 0.000 claims description 3
- 238000001914 filtration Methods 0.000 claims description 3
- 230000010354 integration Effects 0.000 claims description 3
- 238000012856 packing Methods 0.000 claims description 3
- 238000000926 separation method Methods 0.000 claims 1
- 230000009466 transformation Effects 0.000 description 7
- 230000000694 effects Effects 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 6
- 239000003086 colorant Substances 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 238000002474 experimental method Methods 0.000 description 3
- 238000012015 optical character recognition Methods 0.000 description 3
- 230000007547 defect Effects 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000002347 injection Methods 0.000 description 1
- 239000007924 injection Substances 0.000 description 1
Classifications
-
- G06T5/94—
-
- G06T5/70—
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/10—Segmentation; Edge detection
- G06T7/136—Segmentation; Edge detection involving thresholding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/90—Determination of colour characteristics
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/20—Special algorithmic details
- G06T2207/20004—Adaptive image processing
Abstract
本发明公开了一种光照不均文本图像处理方法,目的是对光照不均文本图像进行有效预处理,以辅助文本图像中的文字检测和识别。其特征在于先还原过暗或者过亮处的细节,减小一张图像过亮和过暗处的对比度,再用局部阈值二值化方法对增强后的文本图像进行分割,得到最终处理好的清晰二值图像。采用本发明能够针对文本图像上出现的由于遮蔽物或者其他外部环境因素造成的部分光照遮挡或者局部过亮、局部过暗的问题进行处理,能减小亮暗处的对比度,增强文本图像的细节,得到清晰的二值图像。
Description
技术领域
本发明涉及计算机领域图像处理方法,尤其指对光照不均匀文本图像进行处理的方法。
背景技术
文本图像是只含文字的图像,例如印刷体文档等。由于拍照技术、拍摄条件等制约,得到的文本图像往往存在光照不均、角度倾斜、文字模糊等情况。这种低质量的文本图像不仅不利于保存和后续研究,也不利于光学字符识别,导致实验中对文本图像中文字的检测和识别率从90%以上下降到60%多。
目前处理光照不均图像已经有了一些研究,主要是用图像增强或图像二值化技术。其中图像增强的已有方法有直方图均衡化、Gamma变换、Laplace变换和Retinex算法等,但这四种方法都有各自的缺陷,其中,直方图均衡化后的图像灰度级减少,某些细节消失,某些图像,如直方图有高峰,经处理后对比度会不自然的过分增强,灰度级不平坦;Gamma变换只适用于图像整体偏亮或偏暗,当图像整体偏暗时,扩展灰度级,图像整体偏亮时,压缩灰度级,但不适用于图像一部分偏亮而另一部分偏暗的特殊情况;Laplace变换在增强图像细节方面效果很好,但由于进行二阶微分操作,在突出细节的同时,往往会产生较多的噪声;对于Retinex算法,原图过亮的地方处理后清晰度较差,再经二值化后较为模糊。
图像二值化分为全局二值化和局部阈值二值化方法,经典的全局二值化方法有OTSU算法,经典的局部阈值二值化方法有Wellner自适应阈值算法、Niblack算法和Sauvola算法等。但这四种方法都有各自的缺陷,其中,OTSU算法是全局二值化方法,虽然时间复杂度低,但用一个固定的阈值分割整个灰度值不均匀的图像,会造成噪点块较多,清晰度差;Wellner自适应阈值算法单纯将像素点R*R邻域内所有像素的均值作为该像素点的自适应阈值,这种做法易导致相邻像素之间的像素值突变,产生噪点,且清晰度差;Niblack算法则过于强调图像细节,直接给标准差乘以可调系数,从而造成局部噪点;Sauvola算法相对以上三种算法效果更好,但时间复杂度高,相当耗时。上述所有局部阈值二值化相比于全局二值化方法,虽然时间复杂度稍大,但针对亮暗对比差异较大的图像,若采用全局二值化,会导致以亮暗分界线为界,一侧较为清晰,一侧十分模糊且带有噪点的现象。
目前针对光照不均文本图像最常见的方法是改进文本图像的二值化方法,以期获得更为准确的分割阈值,从而尽可能消除光照不均的影响。但是由于文本图像中像素量大,文字信息量多,单一地采用改进文本图像的二值化方法,图像中会有很多噪声块,清晰度差。而单一的图像增强方法大多用于自然场景,例如增强夜间场景的细节,很少有人将单一的图像增强算法用于处理光照不均的文本图像。
目前还没有公开文献涉及将图像增强方法与二值化方法相结合,对光照不均造成的低质量文本图像进行处理的技术方案。目前仅有少量文献将这两种技术结合用于处理光照不均的自然场景图像(例如单纯的风景、动植物图像均称为自然场景图像),没有应用于文本图像的,因为文本图像包含大量文字,过于细节,很难保证处理的效果。如何为光照不均的文本图像,使得得到清晰的二值图像是图像处理领域技术人员极为关注的技术问题。(注:由于本发明得到的结果是二值图像,而自然图像都是彩色的,因此不适用于自然图像)
发明内容
本发明要解决的技术问题是提供一种光照不均文本图像处理方法,针对文本图像上出现的由于遮蔽物或者其他外部环境因素造成的部分光照遮挡或者局部过亮、局部过暗的问题进行处理,减小亮暗处的对比度,增强文本图像的细节,得到清晰的二值图像。
为了解决上述技术问题,本发明的技术方案为:先还原图像上光照过强导致的过亮处或者阴影遮挡导致的过暗处的细节,减小图像过亮和过暗处的对比度,得到增强后的文本图像,再用局部阈值二值化方法对增强后的文本图像进行分割,得到最终处理好的清晰二值图像。
本发明具体技术方案是:
第一步,对光照不均文本图像Img(由于本发明研究的是相机拍照下的光照不均图像,因此在实验时所用图像均为彩色图像)进行图像增强,恢复图像上光照过强导致的过亮处或者阴影遮挡导致的过暗处的图像细节,方法为:
1.1对Img(Img为彩色图像,有3个通道,分别记为R,G,B通道,对应三原色,每个通道的高为H,宽为W,用R(x,y)表示R通道中第x列第y行像素点的像素值,G(x,y)表示G通道中第x列第y行像素点的像素值,B(x,y)表示B通道中第x列第y行像素点的像素值,0£x£W-1,0£y£H-1,Img的维度为H×W×3,像素大小为H×W)的颜色进行分通道处理,每个通道分量像素值由整数型(int)转换为浮点数(float),并对RGB三个通道求均值,得到通道求均值后的新图像I,方法是:
1.1.1将Img各像素的灰度值由整数型(int)转换为浮点数(float),得到转换后的图像Img1。
1.1.2使用python的numpy库中的np.sum函数,对Img的所有像素点的像素值在第三个维度(即R、G、B通道)求和,得到图像Img1。np.sum函数的输入参数为输入数组a=Img,数组的维度axis=2,其他保持默认值。具体来说,Img1的第x列第y行像素点的像素值Img1(x,y)=R(x,y)+G(x,y)+B(x,y),得到的Img1的维度为H×W。
1.1.3将Img1的每个像素点的像素值除以3,得到新图像I(I的维度为H×W)。使用Python中的numpy库的divide函数,直接令I=Img1/3,实质上就是将Img1的每个像素值Img1(x,y)除以3后赋值给I(x,y)(0£x£W-1,0£y£H-1),即得到新图像I,至此实现1.1中对Img的R,G,B通道求均值的操作。
1.2采用多尺度加权平均的方法对I进行图像增强,得到增强后的图像T,方法是:
1.2.1初始化三个与I同维度(I的维度为H×W)的全0矩阵T0,T1,T2。T0,T1,T2的行数等于H,列数等于W;
1.2.2定义三个高斯滤波的高斯尺度常量向量C,取值为C=[15,80,200],C[0]=15,C[1]=80,C[2]=200。
1.2.3初始化变量i=0。
1.2.4如果i<3,转1.2.5,否则转1.2.6。
1.2.5对C[i],采用Retinex算法(Rahman Z U,Jobson D J,Woodell G A.用于自动图像增强的Retinex处理[J].SPIE会议录-国际光学工程学会,2004,13:100-110.),对T0,T1,T2进行Retinex处理,方法是:
1.2.5.1使用Python的numpy库中的np.log10函数对I取对数,得到取对数后的图像I’,即令I’=np.log10(I),将I的所有像素点的像素值取对数,I’的维度为H×W。
1.2.5.2以C的第i个元素C[i]为参数,对I进行高斯滤波(Rahman Z U,Jobson DJ,Woodell G A.用于自动图像增强的Retinex处理[J].SPIE会议录-国际光学工程学会,2004,13:100-110.),得到高斯滤波后的图像g(I);
1.2.5.3使用Python的numpy库中的np.log10函数对g(I)取对数,得到滤波取对数后的图像g’,即令g’=np.log10(g(I)),将g(I)的所有像素点的像素值取对数,g’的维度为H×W。
1.2.5.4令Ti=Ti+I’-g’;
1.2.5.5令i=i+1,转1.2.4;
1.2.6将T0,T1,T2取平均值,得到平均值T=(T0+T1+T2)/3,T即为增强后的图像,T、T0、T1和T2均为维度为H×W的矩阵。
1.3对1.2步得到的T进行色彩平衡处理,方法是:
1.3.1令Img的像素总数total=H×W;
1.3.2计算T的色彩平衡的上下界,得到色彩平衡上界high_val,色彩平衡下界low_val,方法是:
1.3.2.1使用Python中的np.unique(T,return_count,unique,counts)函数获得T中每个像素的像素值由小到大的排序向量unique和T中每个像素值出现次数对应的个数列表counts。np.unique函数有两个输入(T和return_count),两个输出(unique和counts),一个输入参数为输入数组T,另一个输入参数为布尔值return_count,return_count的意思是“是否需要返回列表counts”,return_count在此设置为True;unique为输出的T中每个像素的像素值由小到大的排序向量,counts为T中每个像素值出现次数对应的个数列表。
1.3.2.2初始化一个中间变量current=0,用于计算像素值是否在色彩平衡的上下界内,令像素值上界阈值为high_clip=0.99,像素值下界阈值为low_clip=0.01;
1.3.2.3用python中的zip函数将unique和counts打包成一个二元组序列,命名为像素值个数统计二元组{(u0,c0),…,(uk,ck),…,(uK,cK)},unique和counts的长度均为K。二元组集合中包含K个元素,其中第k个元素为(uk,ck),0£k£K-1,uk为T中从小到大排序的第k个像素值,ck代表T中像素值为uk的像素点的个数;
1.3.2.4对于二元组集合中的每个元素做色彩平衡,得到色彩平衡的像素值上下界,方法是:
1.3.2.4.1令循环变量k=0;
1.3.2.4.2如果0£k£K-1,转1.3.2.4.3,否则转1.3.3;
1.3.2.4.3如果current/total的浮点值小于low_clip,执行1.3.2.4.4,否则直接执行1.3.2.4.5;
1.3.2.4.4令色彩平衡下界low_val=uk;
1.3.2.4.5如果current/total的浮点值小于high_clip,执行1.3.2.4.6,否则直接执行1.3.2.4.7;
1.3.2.4.6令色彩平衡上界high_val=uk;
1.3.2.4.7令current=current+ck,令k=k+1,转1.3.2.4.2;
1.3.3使用Python中numpy库的np.minimum(x1,x2)函数和np.maximum(x1,x2)函数对T进行色彩均衡处理,得到色彩均衡处理后的图像T’,即令T’=np.maximum(np.minimum(T,high_val),low_val)。其中,np.minimum(x1,x2)函数的输入参数为比较大小的第一个数组x1,x1=T,比较大小的第二个数组x2=high_val,其他保持默认值;np.maximum(x1,x2)函数的输入参数为比较大小的第一个数组x1,x1=np.minimum(T,high_val),比较大小的第二个数组x2=low_val,其他保持默认值。经过上述处理,T中像素值大于high_val的像素点被赋值为high_val,使得太亮的像素变暗,T中像素值等于high_val的像素点保持不变,T中像素值小于low_val的像素点赋值为low_val,使得太暗的像素变亮,T中像素值等于low_val的像素点保持不变。色彩均衡处理后的图像记为T’。
1.4将T’每个分量像素值由整数型(int)转换为浮点数(float),得到浮点处理后的图像P。使用Python中numpy库的np.max函数和np.min函数(注:当np.max函数中参数为多个值时,返回其中最大的值,当参数为整个矩阵,返回矩阵中最大的元素;当np.min函数中参数为多个值时,返回其中最小的值,当参数为整个矩阵,返回矩阵中最小的元素;)将T’中的每个分量像素值按公式P=[(T’-np.min(T’))/(np.max(T’)-np.min(T’))]×255.0+1.0进行转换(np.min(T’)返回T’中最小的元素,np.max(T’)返回T’中最大的元素),得到P,维度为H×W,记P中任意一个元素为P(x,y)(0£x£H-1,0£y£W-1)。
1.5计算彩色恢复因子A,再用A对R,G,B三个通道进行图像增强处理,方法是:
1.5.1初始化一个与原始彩色图像Img同维度的全0矩阵M,M维度为H×W×3;
1.5.2对M的元素M(x,y,0),M(x,y,1)和M(x,y,2)(0£x£H-1,0£y£W-1),进行明暗处理并进行彩色恢复:
1.5.2.1令循环变量x=0,转1.5.2.2;
1.5.2.2如果0£x£H-1,转1.5.2.3,否则转1.5.3;
1.5.2.3令循环变量y=0,转1.5.2.4;
1.5.2.4如果0£y£W-1,转1.5.2.5,否则转1.5.2.9;
1.5.2.5使用Python中numpy库的函数np.max,获得原始彩色图像Img中Img(x,y)点的三通道R(x,y),G(x,y)和B(x,y)三者的最大值L,即令L=np.max(R(x,y),G(x,y),B(x,y))。
1.5.2.6使用Python中numpy库的函数np.minimum,令彩色恢复因子A等于256/L和P(x,y)/I(x,y)(色彩均衡的结果除以均值)中的最小值,即令A=np.min(256/L,P(x,y)/I(x,y));
1.5.2.7对Img的三个通道的值进行彩色恢复后赋值给M(x,y,0),M(x,y,1)和M(x,y,2),即令M(x,y,0)=A×R(x,y),M(x,y,1)=A×G(x,y),M(x,y,2)=A×B(x,y),通过该式看出,像素点(x,y)的像素值较小时,放大(x,y)的像素值,使暗点变亮;像素点(x,y)的像素值较大时,缩小(x,y)的像素值,使亮点变暗;
1.5.2.8令循环变量y=y+1,转1.5.2.4;
1.5.2.9令循环变量x=x+1,转1.5.2.2;
1.5.3使用Python中numpy库的函数np.uint8将M中元素值转换为8位无符号整数,即得到整个图像增强后的图像M’,此时M’仍是彩色图像。
第二步,对1.5.3中得到的M’进行局部二值化,根据坐标为(x,y)像素点邻域内的灰度均值与标准方差来动态计算像素点(x,y)的二值化阈值。
2.1使用Python中cv2库中的函数cv2.cvtColor将M’转换为灰度图E,E的维度为H×W,其中,cv2.cvtColor函数的输入参数为需要转换的图像src,src=M’,图像转换类型code=cv2.COLOR_BGR2GRAY表示将BGR转换成灰度图,其他保持默认值。记E中任意一个元素为E(x,y)(0£x£H-1,0£y£W-1)。
2.2设定滑动窗口大小为h_kernel×w_kernel(从键盘接收用户输入的h_kernel和w_kernel,设定时要求h_kernel和w_kernel为奇数,一般h_kernel×w_kernel取31×31效果最佳),h_kernel为滑动窗口的高,w_kernel为滑动窗口的宽;
2.3计算E各个像素点的积分和开方积分,方法是:
2.3.1初始化积分矩阵integral和开方积分矩阵integral_sqrt均为和E维度一致的全0矩阵(维度为H×W),integral和integral_sqrt中的元素均定义为整数类型;
2.3.2令循环变量x=0;
2.3.3如果0£x£H-1,转2.3.4,否则转2.4;
2.3.4令按行求积分中间变量sum1=0,令开方积分的中间变量sqrt_sum=0;
2.3.5令循环变量y=0;
2.3.6如果0£y£W-1,转2.3.7对像素值之和sum1和像素值开方之和sqrt_sum进行更新,否则转2.3.12更新循环变量;
2.3.7令sum1=sum1+E(x,y),sqrt_sum=np.sqrt(E(x,y))(此处使用numpy库中的np.sqrt函数),sum1为E中第x行从坐标为(x,0)的像素点到坐标为(x,y)的像素点为止的像素值之和,sqrt_sum为E中第x行从坐标为(x,0)的像素点到坐标为(x,y)的像素点为止的像素值开方之和;
2.3.8若x=0,转2.3.9,否则转2.3.10。
2.3.9令integral(x,y)=sum1,令integral_sqrt(x,y)=sqrt_sum。
2.3.10令integral(x,y)=sum1+integral(x-1,y),integral_sqrt(x,y)=sqrt_sum+integral_sqrt(x-1,y);
2.3.11令循环变量y=y+1,转2.3.6;
2.3.12令循环变量x=x+1,转2.3.3;
最终计算得到的integral(x,y)值为以E(0,0),E(x,0),E(0,y)和E(x,y)为四个顶点的矩形内所有像素点的像素值之和,integral_sqrt(x,y)值为以E(0,0),E(x,0),E(0,y)和E(x,y)为四个顶点的矩形内所有像素点的像素值开方之和。
2.4初始化5个与E同维度(维度为H×W)的全0矩阵,分别记做diff,sqrt_diff,mean,std和threshold矩阵;diff矩阵的元素diff(x,y)(0£x£H-1,0£y£W-1)用于记录以E(x,y)为中心,大小为h_kernel×w_kernel的邻域内所有像素点的像素值之和;sqrt_diff矩阵的元素sqrt_diff(x,y)(0£x£H-1,0£y£W-1)用于记录以E(x,y)为中心,大小为h_kernel×w_kernel的邻域内所有像素点的像素值开方之和;mean矩阵的元素mean(x,y)(0£x£H-1,0£y£W-1)用于记录以E(x,y)为中心,大小为h_kernel×w_kernel的邻域内所有像素点像素值的均值;std矩阵的元素std(x,y)(0£x£H-1,0£y£W-1)用于记录以E(x,y)为中心,大小为h_kernel×w_kernel的邻域内所有像素点的像素值的标准方差;threshold矩阵的元素threshold(x,y)(0£x£H-1,0£y£W-1)用于记录二值化E(x,y)的阈值。初始化这五个矩阵的具体过程为:
2.4.1使用Python的numpy库中的np.zeros函数初始化diff为float类型的全0矩阵,维度与E相同,为H×W。np.zeros函数的输入参数为全0矩阵的形状shape=(H,W),全0矩阵的数据类型dtype=float,其他保持默认值;
2.4.2使用Python的numpy库中的np.zeros函数初始化sqrt_diff为float类型的全0矩阵,维度与E相同,为H×W;
2.4.3使用Python的numpy库中的np.zeros函数初始化mean为float类型的全0矩阵,维度与E相同,为H×W;
2.4.4使用Python的numpy库中的np.zeros函数初始化std为float类型的全0矩阵,维度与E相同,为H×W;
2.4.5使用Python的numpy库中的np.zeros函数初始化threshold为float类型的全0矩阵,维度与E相同,为H×W;
2.5计算邻域的半径whalf(所有元素的邻域半径均为whalf),计算方法为whalf=h_kernel/2;
2.6对E中所有元素求出二值化的阈值,即求出阈值矩阵threshold中的每个元素的值,最后根据矩阵threshold对E中所有元素E(x,y)(0£x£H-1,0£y£W-1)进行二值化,方法是:
2.6.1令循环变量x=0;
2.6.2如果0£x£H-1,转2.6.3,否则循环结束,得到最终二值化的E,转第三步;
2.6.3令循环变量y=0;
2.6.4如果0£y£W-1,转2.6.5,否则转2.6.28;
2.6.5计算出以像素点(x,y)为中心,大小为h_kernel×w_kernel的滑动窗口的最左端、最右端、顶部和底部的坐标值,以及滑动窗口的面积,方法是:
2.6.5.1计算以当前像素点(x,y)为中心,大小为h_kernel×w_kernel的滑动窗口最左端坐标值xmin,为防止取到图像外左边的点,xmin取0和x-whalf的最大值,在此使用Python中自带的max函数,即令xmin=max(0,x-whalf);
2.6.5.2计算以当前像素点(x,y)为中心,大小为h_kernel×w_kernel的滑动窗口顶部的坐标值ymin,为防止取到图像外上边的点,ymin取0和y-whalf的最大值,在此使用Python中自带的max函数,即令ymin=max(0,y-whalf);
2.6.5.3计算以当前像素点(x,y)为中心,大小为h_kernel×w_kernel的滑动窗口最右端坐标值xmax,为防止取到图像外右边的点,xmax取x-1和x+whalf的最小值,在此使用Python中自带的min函数,即令xmax=min(x-1,x+whalf);
2.6.5.4计算以当前像素点(x,y)为中心,大小为h_kernel×w_kernel的滑动窗口底部坐标值ymax,为防止取到图像外下边的点,ymax取y-1和w1+whalf的最小值,在此使用Python中自带的min函数,即令ymax=min(w1-1,w1+whalf);
2.6.5.5计算以当前像素点(x,w1)为中心,大小为h_kernel×w_kernel的滑动窗口的面积,记作area,计算公式为area=(xmax-xmin+1)×(ymax-ymin+1),转2.6.6;
2.6.6判断以当前像素点(x,y)为中心,大小为h_kernel×w_kernel的滑动窗口是否位于图像的左上角:若xmin=0且ymin=0,说明像素点(x,y)的滑动窗口左边界和上边界分别与整个图像的左边界和上边界重合,转2.6.7,否则说明像素点(x,y)的滑动窗口没有位于整个图像的左上角,转2.6.9;
2.6.7令diff(x,y)=integral(xmax,ymax);
2.6.8令sqrt_diff(x,y)=integral_sqrt(xmax,ymax),转2.6.21;
2.6.9判断以当前像素点(x,y)为中心,大小为h_kernel×w_kernel的滑动窗口是否位于图像的顶部:若xmin>0且ymin=0,说明像素点(x,y)的滑动窗口上边界与整个图像的上边界重合,转2.6.10,否则说明像素点(x,y)的滑动窗口上边界没有与整个图像的上边界重合,转2.6.12;
2.6.10计算以E(x,y)为中心,大小为h_kernel×w_kernel的邻域内所有像素点的像素值之和,diff(x,y)=integral(xmax,ymax)-integral(xmin-1,ymax);
2.6.11计算以E(x,y)为中心,大小为h_kernel×w_kernel的邻域内所有像素点的像素值开方之和,sqrt_diff(x,y)=integral_sqrt(xmax,ymax)-integral_sqrt(xmin-1,ymax),转2.6.21;
2.6.12判断以当前像素点(x,y)为中心,大小为h_kernel×w_kernel的滑动窗口是否位于图像E的左侧边缘:若xmin=0且ymin>0,说明像素点(x,y)的滑动窗口左边界与图像E的左边界重合,转2.6.13,否则说明像素点(x,y)的滑动窗口左边界没有与图像E的左边界重合,转2.6.15;
2.6.13计算以E(x,y)为中心,大小为h_kernel×w_kernel的邻域内所有像素点的像素值之和,diff(x,y)=integral(xmax,ymax)-integral(xmax,ymax-1);
2.6.14计算以E(x,y)为中心,大小为h_kernel×w_kernel的邻域内所有像素点的像素值开方之和,sqrt_diff(x,y)=integral_sqrt(xmax,ymax)-integral_sqrt(xmax,ymax-1),转2.6.21;
2.6.15计算以当前像素点(x,y)为中心,大小为h_kernel×w_kernel的滑动窗口到右下角顶点的灰度值和diagsum,diagsum=integral(xmax,ymax)+integral(xmin-1,ymin-1);
2.6.16计算以当前像素点(x,y)为中心,大小为h_kernel×w_kernel的滑动窗口到左上角顶点的灰度值和idiagsum,idiagsum=integral(xmax,ymin-1)+integral(xmin-1,ymax);
2.6.17令diff[x,y]=diagsum-idiagsum,得到以(x,y)为中心、大小h_kernel×w_kernel的邻域内灰度值的和;
2.6.18计算当前像素点(x,y)大小为h_kernel×w_kernel的滑动窗口到右下角顶点的灰度值和的开平方值sqdiagsum,sqdiagsum=integral_sqrt(xmax,ymax)+integral_sqrt(xmin-1,ymin-1);
2.6.19计算当前像素点(x,y)大小为h_kernel×w_kernel的滑动窗口到左上角顶点的灰度值和的开平方值sqidiagsum,sqidiagsum=integral_sqrt(xmax,ymin-1)+integral_sqrt(xmin-1,ymax);
2.6.20令sqrt_diff(x,y)=sqdiagsum-sqidiagsum,得到以(x,y)为中心,大小h_kernel×w_kernel的邻域内灰度值和的开平方值sqrt_diff(x,y),转2.6.21;
2.6.21计算以(x,y)为中心点,大小为h_kernel×w_kernel的邻域内灰度值的均值mean(x,y),mean(x,y)=diff(x,y)/area;
2.6.22计算以(x,y)为中心点,大小为h_kernel×w_kernel的邻域内灰度值的标准差std(x,y),std(x,y)=sqrt((sqrt_diff(x,y)-sqrt(diff(x,y))/area)/(area-1));
2.6.23计算分割当前点(x,y)的阈值threshold(x,y),threshold(x,y)=mean(x,y)×(1+k'×((std(x,y)/128)-1)),其中k'为修正参数,默认值为0.1;
2.6.24用阈值threshold(x,y)二值化分割当前点(x,y),即若E(x,y)<threshold(x,y),转2.6.25,否则执行2.6.26;
2.6.25令(x,y)的像素值E(x,y)=0,转2.6.27;
2.6.26令(x,y)的像素值E(x,y)=255,转2.6.27;
2.6.27令循环变量y=y+1,转2.6.4;
2.6.28令循环变量x=x+1,转2.6.2。
第三步,通过第二步得到光照不均处理的结果图像E,E为摆脱了光照不均影响的清晰的二值图像,结束。
与现有方法相比,采用本发明可获得以下有益效果:
(1)本发明第一步采用图像增强算法对光照不均的文本图像进行图像增强,本发明的图像增强算法与传统的直方图均衡化、Gamma变换、Laplace变换、CLAHE算法相比,基于多尺度的Retinex——MSR的结果做了偏差线性加权,再通过计算出彩色恢复因子A,把数据根据原始RGB的比例映射到每个通道,使得在保留原始颜色分布的基础上增强图像,更能突出在过暗或过亮处图像的细节,能够更加有效地还原彩色图像的真实样貌,且避免局部颜色失真;
(2)本发明第二步采用局部阈值二值化分割技术对(1)图像增强的结果进行二值化分割得到最终的二值图。采用局部二值化,能够有针对性地对每个像素点的邻域内像素值分布进行计算,从而对每个像素点采用合适的阈值进行二值化分割,不易丢失局部特征,尽可能多地保留图像细节。与常用的局部二值化技术Niblack相比,不像Niblack算法那样直接给标准差乘以可调系数,而是以自适应的方式放大了标准差的作用,从而二值化阈值更加灵活,明显减少了结果二值图中的噪点,使得二值图更加清晰,方便了后续的光学字符识别等工作。
附图说明
图1为本发明整体的流程图。
图2为实验采用的光照不均的原图。
图3为图2经过第一步图像增强后得到的结果图。
图4为图3经过第二步局部二值化分割后得到的结果图。
具体实施方式
图1为本发明总体流程图:如图1所示,
本发明包括以下步骤:
第一步,对光照不均文本图像Img(如图2所示的存在严重光照不均现象的原图)进行图像增强,恢复图像上光照过强导致的过亮处或者阴影遮挡导致的过暗处的图像细节,方法为:
1.1对Img(Img为彩色图像,有3个通道,分别记为R,G,B通道,对应三原色,每个通道的高为H,宽为W,用R(x,y)表示R通道中第x列第y行像素点的像素值,G(x,y)表示G通道中第x列第y行像素点的像素值,B(x,y)表示B通道中第x列第y行像素点的像素值,0£x£W-1,0£y£H-1,Img的维度为H×W×3,像素大小为H×W)的颜色进行分通道处理,每个通道分量像素值由整数型(int)转换为浮点数(float),并对RGB三个通道求均值,得到通道求均值后的新图像I,方法是:
1.1.1将Img各像素的灰度值由整数型(int)转换为浮点数(float),得到转换后的图像Img1。
1.1.2使用python的numpy库中的np.sum函数,对Img的所有像素点的像素值在第三个维度(即R、G、B通道)求和,得到图像Img1。np.sum函数的输入参数为输入数组a=Img,数组的维度axis=2,其他保持默认值。具体来说,Img1的第x列第y行像素点的像素值Img1(x,y)=R(x,y)+G(x,y)+B(x,y),得到的Img1的维度为H×W。
1.1.3将Img1的每个像素点的像素值除以3,得到新图像I(I的维度为H×W)。使用Python中的numpy库的divide函数,直接令I=Img1/3,实质上就是将Img1的每个像素值Img1(x,y)除以3后赋值给I(x,y)(0£x£W-1,0£y£H-1),即得到新图像I,至此实现1.1中对Img的R,G,B通道求均值的操作。
1.2采用多尺度加权平均的方法对I进行图像增强,得到增强后的图像T,方法是:
1.2.1初始化三个与I同维度(I的维度为H×W)的全0矩阵T0,T1,T2。T0,T1,T2的行数等于H,列数等于W;
1.2.2定义三个高斯滤波的高斯尺度常量向量C,取值为C=[15,80,200],C[0]=15,C[1]=80,C[2]=200。
1.2.3初始化变量i=0。
1.2.4如果i<3,转1.2.5,否则转1.2.6。
1.2.5对C[i],采用Retinex算法(Rahman Z U,Jobson D J,Woodell G A.用于自动图像增强的Retinex处理[J].SPIE会议录-国际光学工程学会,2004,13:100-110.),对T0,T1,T2进行Retinex处理,方法是:
1.2.5.1使用Python的numpy库中的np.log10函数对I取对数,得到取对数后的图像I’,即令I’=np.log10(I),将I的所有像素点的像素值取对数,I’的维度为H×W。
1.2.5.2以C的第i个元素C[i]为参数,对I进行高斯滤波(Rahman Z U,Jobson DJ,Woodell G A.用于自动图像增强的Retinex处理[J].SPIE会议录-国际光学工程学会,2004,13:100-110.),得到高斯滤波后的图像g(I);
1.2.5.3使用Python的numpy库中的np.log10函数对g(I)取对数,得到滤波取对数后的图像g’,即令g’=np.log10(g(I)),将g(I)的所有像素点的像素值取对数,g’的维度为H×W。
1.2.5.4令Ti=Ti+I’-g’;
1.2.5.5令i=i+1,转1.2.4;
1.2.6将T0,T1,T2取平均值,得到平均值T=(T0+T1+T2)/3,T即为增强后的图像,T、T0、T1和T2均为维度为H×W的矩阵。
1.3对1.2步得到的T进行色彩平衡处理,方法是:
1.3.1令Img的像素总数total=H×W;
1.3.2计算T的色彩平衡的上下界,得到色彩平衡上界high_val,色彩平衡下界low_val,方法是:
1.3.2.1使用Python中的np.unique(T,return_count,unique,counts)函数获得T中每个像素的像素值由小到大的排序向量unique和T中每个像素值出现次数对应的个数列表counts。np.unique函数有两个输入(T和return_count),两个输出(unique和counts),一个输入参数为输入数组T,另一个输入参数为布尔值return_count,return_count的意思是“是否需要返回列表counts”,return_count在此设置为True;unique为输出的T中每个像素的像素值由小到大的排序向量,counts为T中每个像素值出现次数对应的个数列表。
1.3.2.2初始化一个中间变量current=0,用于计算像素值是否在色彩平衡的上下界内,令像素值上界阈值为high_clip=0.99,像素值下界阈值为low_clip=0.01;
1.3.2.3用python中的zip函数将unique和counts打包成一个二元组序列,命名为像素值个数统计二元组{(u0,c0),…,(uk,ck),…,(uK,cK)},unique和counts的长度均为K。二元组集合中包含K个元素,其中第k个元素为(uk,ck),0£k£K-1,uk为T中从小到大排序的第k个像素值,ck代表T中像素值为uk的像素点的个数;
1.3.2.4对于二元组集合中的每个元素做色彩平衡,得到色彩平衡的像素值上下界,方法是:
1.3.2.4.1令循环变量k=0;
1.3.2.4.2如果0£k£K-1,转1.3.2.4.3,否则转1.3.3;
1.3.2.4.3如果current/total的浮点值小于low_clip,执行1.3.2.4.4,否则直接执行1.3.2.4.5;
1.3.2.4.4令色彩平衡下界low_val=uk;
1.3.2.4.5如果current/total的浮点值小于high_clip,执行1.3.2.4.6,否则直接执行1.3.2.4.7;
1.3.2.4.6令色彩平衡上界high_val=uk;
1.3.2.4.7令current=current+ck,令k=k+1,转1.3.2.4.2;
1.3.3使用Python中numpy库的np.minimum(x1,x2)函数和np.maximum(x1,x2)函数对T进行色彩均衡处理,得到色彩均衡处理后的图像T’,即令T’=np.maximum(np.minimum(T,high_val),low_val)。其中,np.minimum(x1,x2)函数的输入参数为比较大小的第一个数组x1,x1=T,比较大小的第二个数组x2=high_val,其他保持默认值;np.maximum(x1,x2)函数的输入参数为比较大小的第一个数组x1,x1=np.minimum(T,high_val),比较大小的第二个数组x2=low_val,其他保持默认值。经过上述处理,T中像素值大于high_val的像素点被赋值为high_val,使得太亮的像素变暗,T中像素值等于high_val的像素点保持不变,T中像素值小于low_val的像素点赋值为low_val,使得太暗的像素变亮,T中像素值等于low_val的像素点保持不变。色彩均衡处理后的图像记为T’。
1.4将T’每个分量像素值由整数型(int)转换为浮点数(float),得到浮点处理后的图像P。使用Python中numpy库的np.max函数和np.min函数将T’中的每个分量像素值按公式P=[(T’-np.min(T’))/(np.max(T’)-np.min(T’))]×255.0+1.0进行转换(np.min(T’)返回T’中最小的元素,np.max(T’)返回T’中最大的元素),得到P,维度为H×W,记P中任意一个元素为P(x,y)(0£x£H-1,0£y£W-1)。
1.5计算彩色恢复因子A,再用A对R,G,B三个通道进行图像增强处理,方法是:
1.5.1初始化一个与原始彩色图像Img同维度的全0矩阵M,M维度为H×W×3;
1.5.2对M的元素M(x,y,0),M(x,y,1)和M(x,y,2)(0£x£H-1,0£y£W-1),进行明暗处理并进行彩色恢复:
1.5.2.1令循环变量x=0,转1.5.2.2;
1.5.2.2如果0£x£H-1,转1.5.2.3,否则转1.5.3;
1.5.2.3令循环变量y=0,转1.5.2.4;
1.5.2.4如果0£y£W-1,转1.5.2.5,否则转1.5.2.9;
1.5.2.5使用Python中numpy库的函数np.max,获得原始彩色图像Img中Img(x,y)点的三通道R(x,y),G(x,y)和B(x,y)三者的最大值L,即令L=np.max(R(x,y),G(x,y),B(x,y))。
1.5.2.6使用Python中numpy库的函数np.minimum,令彩色恢复因子A等于256/L和P(x,y)/I(x,y)(色彩均衡的结果除以均值)中的最小值,即令A=np.min(256/L,P(x,y)/I(x,y));
1.5.2.7对Img的三个通道的值进行彩色恢复后赋值给M(x,y,0),M(x,y,1)和M(x,y,2),即令M(x,y,0)=A×R(x,y),M(x,y,1)=A×G(x,y),M(x,y,2)=A×B(x,y),通过该式看出,像素点(x,y)的像素值较小时,放大(x,y)的像素值,使暗点变亮;像素点(x,y)的像素值较大时,缩小(x,y)的像素值,使亮点变暗;
1.5.2.8令循环变量y=y+1,转1.5.2.4;
1.5.2.9令循环变量x=x+1,转1.5.2.2;
1.5.3使用Python中numpy库的函数np.uint8将M中元素值转换为8位无符号整数,即得到整个图像增强后的图像M’,此时M’仍是彩色图像。
图3为图2经过图像增强后得到的结果图M’,可以看出增强后的图像M’在阴影处的细节被很好地恢复出来,突出了较暗处的文字特征,且没有产生严重的偏色。
第二步,对1.5.3中得到的M’进行局部二值化,根据坐标为(x,y)像素点邻域内的灰度均值与标准方差来动态计算像素点(x,y)的二值化阈值。
2.1使用Python中cv2库中的函数cv2.cvtColor将M’转换为灰度图E,E的维度为H×W,其中,cv2.cvtColor函数的输入参数为需要转换的图像src,src=M’,图像转换类型code=cv2.COLOR_BGR2GRAY表示将BGR转换成灰度图,其他保持默认值。记E中任意一个元素为E(x,y)(0£x£H-1,0£y£W-1)。
2.2设定滑动窗口大小为h_kernel×w_kernel(从键盘接收用户输入的h_kernel和w_kernel,设定时要求h_kernel和w_kernel为奇数,一般h_kernel×w_kernel取31×31效果最佳),h_kernel为滑动窗口的高,w_kernel为滑动窗口的宽;
2.3计算E各个像素点的积分和开方积分,方法是:
2.3.1初始化积分矩阵integral和开方积分矩阵integral_sqrt均为和E维度一致的全0矩阵(维度为H×W),integral和integral_sqrt中的元素均定义为整数类型;
2.3.2令循环变量x=0;
2.3.3如果0£x£H-1,转2.3.4,否则转2.4;
2.3.4令按行求积分中间变量sum1=0,令开方积分的中间变量sqrt_sum=0;
2.3.5令循环变量y=0;
2.3.6如果0£y£W-1,转2.3.7对像素值之和sum1和像素值开方之和sqrt_sum进行更新,否则转2.3.12更新循环变量;
2.3.7令sum1=sum1+E(x,y),sqrt_sum=np.sqrt(E(x,y))(此处使用numpy库中的np.sqrt函数),sum1为E中第x行从坐标为(x,0)的像素点到坐标为(x,y)的像素点为止的像素值之和,sqrt_sum为E中第x行从坐标为(x,0)的像素点到坐标为(x,y)的像素点为止的像素值开方之和;
2.3.8若x=0,转2.3.9,否则转2.3.10。
2.3.9令integral(x,y)=sum1,令integral_sqrt(x,y)=sqrt_sum。
2.3.10令integral(x,y)=sum1+integral(x-1,y),integral_sqrt(x,y)=sqrt_sum+integral_sqrt(x-1,y);
2.3.11令循环变量y=y+1,转2.3.6;
2.3.12令循环变量x=x+1,转2.3.3;
最终计算得到的integral(x,y)值为以E(0,0),E(x,0),E(0,y)和E(x,y)为四个顶点的矩形内所有像素点的像素值之和,integral_sqrt(x,y)值为以E(0,0),E(x,0),E(0,y)和E(x,y)为四个顶点的矩形内所有像素点的像素值开方之和。
2.4初始化5个与E同维度(维度为H×W)的全0矩阵,分别记做diff,sqrt_diff,mean,std和threshold矩阵;diff矩阵的元素diff(x,y)(0£x£H-1,0£y£W-1)用于记录以E(x,y)为中心,大小为h_kernel×w_kernel的邻域内所有像素点的像素值之和;sqrt_diff矩阵的元素sqrt_diff(x,y)(0£x£H-1,0£y£W-1)用于记录以E(x,y)为中心,大小为h_kernel×w_kernel的邻域内所有像素点的像素值开方之和;mean矩阵的元素mean(x,y)(0£x£H-1,0£y£W-1)用于记录以E(x,y)为中心,大小为h_kernel×w_kernel的邻域内所有像素点像素值的均值;std矩阵的元素std(x,y)(0£x£H-1,0£y£W-1)用于记录以E(x,y)为中心,大小为h_kernel×w_kernel的邻域内所有像素点的像素值的标准方差;threshold矩阵的元素threshold(x,y)(0£x£H-1,0£y£W-1)用于记录二值化E(x,y)的阈值。初始化这五个矩阵的具体过程为:
2.4.1使用Python的numpy库中的np.zeros函数初始化diff为float类型的全0矩阵,维度与E相同,为H×W。np.zeros函数的输入参数为全0矩阵的形状shape=(H,W),全0矩阵的数据类型dtype=float,其他保持默认值;
2.4.2使用Python的numpy库中的np.zeros函数初始化sqrt_diff为float类型的全0矩阵,维度与E相同,为H×W;
2.4.3使用Python的numpy库中的np.zeros函数初始化mean为float类型的全0矩阵,维度与E相同,为H×W;
2.4.4使用Python的numpy库中的np.zeros函数初始化std为float类型的全0矩阵,维度与E相同,为H×W;
2.4.5使用Python的numpy库中的np.zeros函数初始化threshold为float类型的全0矩阵,维度与E相同,为H×W;
2.5计算邻域的半径whalf(所有元素的邻域半径均为whalf),计算方法为whalf=h_kernel/2;
2.6对E中所有元素求出二值化的阈值,即求出阈值矩阵threshold中的每个元素的值,最后根据矩阵threshold对E中所有元素E(x,y)(0£x£H-1,0£y£W-1)进行二值化,方法是:
2.6.1令循环变量x=0;
2.6.2如果0£x£H-1,转2.6.3,否则循环结束,得到最终二值化的E,转第三步;
2.6.3令循环变量y=0;
2.6.4如果0£y£W-1,转2.6.5,否则转2.6.28;
2.6.5计算出以像素点(x,y)为中心,大小为h_kernel×w_kernel的滑动窗口的最左端、最右端、顶部和底部的坐标值,以及滑动窗口的面积,方法是:
2.6.5.1计算以当前像素点(x,y)为中心,大小为h_kernel×w_kernel的滑动窗口最左端坐标值xmin,为防止取到图像外左边的点,xmin取0和x-whalf的最大值,在此使用Python中自带的max函数,即令xmin=max(0,x-whalf);
2.6.5.2计算以当前像素点(x,y)为中心,大小为h_kernel×w_kernel的滑动窗口顶部的坐标值ymin,为防止取到图像外上边的点,ymin取0和y-whalf的最大值,在此使用Python中自带的max函数,即令ymin=max(0,y-whalf);
2.6.5.3计算以当前像素点(x,y)为中心,大小为h_kernel×w_kernel的滑动窗口最右端坐标值xmax,为防止取到图像外右边的点,xmax取x-1和x+whalf的最小值,在此使用Python中自带的min函数,即令xmax=min(x-1,x+whalf);
2.6.5.4计算以当前像素点(x,y)为中心,大小为h_kernel×w_kernel的滑动窗口底部坐标值ymax,为防止取到图像外下边的点,ymax取y-1和w1+whalf的最小值,在此使用Python中自带的min函数,即令ymax=min(w1-1,w1+whalf);
2.6.5.5计算以当前像素点(x,w1)为中心,大小为h_kernel×w_kernel的滑动窗口的面积,记作area,计算公式为area=(xmax-xmin+1)×(ymax-ymin+1),转2.6.6;
2.6.6判断以当前像素点(x,y)为中心,大小为h_kernel×w_kernel的滑动窗口是否位于图像的左上角:若xmin=0且ymin=0,说明像素点(x,y)的滑动窗口左边界和上边界分别与整个图像的左边界和上边界重合,转2.6.7,否则说明像素点(x,y)的滑动窗口没有位于整个图像的左上角,转2.6.9;
2.6.7令diff(x,y)=integral(xmax,ymax);
2.6.8令sqrt_diff(x,y)=integral_sqrt(xmax,ymax),转2.6.21;
2.6.9判断以当前像素点(x,y)为中心,大小为h_kernel×w_kernel的滑动窗口是否位于图像的顶部:若xmin>0且ymin=0,说明像素点(x,y)的滑动窗口上边界与整个图像的上边界重合,转2.6.10,否则说明像素点(x,y)的滑动窗口上边界没有与整个图像的上边界重合,转2.6.12;
2.6.10计算以E(x,y)为中心,大小为h_kernel×w_kernel的邻域内所有像素点的像素值之和,diff(x,y)=integral(xmax,ymax)-integral(xmin-1,ymax);
2.6.11计算以E(x,y)为中心,大小为h_kernel×w_kernel的邻域内所有像素点的像素值开方之和,sqrt_diff(x,y)=integral_sqrt(xmax,ymax)-integral_sqrt(xmin-1,ymax),转2.6.21;
2.6.12判断以当前像素点(x,y)为中心,大小为h_kernel×w_kernel的滑动窗口是否位于图像E的左侧边缘:若xmin=0且ymin>0,说明像素点(x,y)的滑动窗口左边界与图像E的左边界重合,转2.6.13,否则说明像素点(x,y)的滑动窗口左边界没有与图像E的左边界重合,转2.6.15;
2.6.13计算以E(x,y)为中心,大小为h_kernel×w_kernel的邻域内所有像素点的像素值之和,diff(x,y)=integral(xmax,ymax)-integral(xmax,ymax-1);
2.6.14计算以E(x,y)为中心,大小为h_kernel×w_kernel的邻域内所有像素点的像素值开方之和,sqrt_diff(x,y)=integral_sqrt(xmax,ymax)-integral_sqrt(xmax,ymax-1),转2.6.21;
2.6.15计算以当前像素点(x,y)为中心,大小为h_kernel×w_kernel的滑动窗口到右下角顶点的灰度值和diagsum,diagsum=integral(xmax,ymax)+integral(xmin-1,ymin-1);
2.6.16计算以当前像素点(x,y)为中心,大小为h_kernel×w_kernel的滑动窗口到左上角顶点的灰度值和idiagsum,idiagsum=integral(xmax,ymin-1)+integral(xmin-1,ymax);
2.6.17令diff[x,y]=diagsum-idiagsum,得到以(x,y)为中心、大小h_kernel×w_kernel的邻域内灰度值的和;
2.6.18计算当前像素点(x,y)大小为h_kernel×w_kernel的滑动窗口到右下角顶点的灰度值和的开平方值sqdiagsum,sqdiagsum=integral_sqrt(xmax,ymax)+integral_sqrt(xmin-1,ymin-1);
2.6.19计算当前像素点(x,y)大小为h_kernel×w_kernel的滑动窗口到左上角顶点的灰度值和的开平方值sqidiagsum,sqidiagsum=integral_sqrt(xmax,ymin-1)+integral_sqrt(xmin-1,ymax);
2.6.20令sqrt_diff(x,y)=sqdiagsum-sqidiagsum,得到以(x,y)为中心,大小h_kernel×w_kernel的邻域内灰度值和的开平方值sqrt_diff(x,y),转2.6.21;
2.6.21计算以(x,y)为中心点,大小为h_kernel×w_kernel的邻域内灰度值的均值mean(x,y),mean(x,y)=diff(x,y)/area;
2.6.22计算以(x,y)为中心点,大小为h_kernel×w_kernel的邻域内灰度值的标准差std(x,y),std(x,y)=sqrt((sqrt_diff(x,y)-sqrt(diff(x,y))/area)/(area-1));
2.6.23计算分割当前点(x,y)的阈值threshold(x,y),threshold(x,y)=mean(x,y)×(1+k'×((std(x,y)/128)-1)),其中k'为修正参数,默认值为0.1;
2.6.24用阈值threshold(x,y)二值化分割当前点(x,y),即若E(x,y)<threshold(x,y),转2.6.25,否则执行2.6.26;
2.6.25令(x,y)的像素值E(x,y)=0,转2.6.27;
2.6.26令(x,y)的像素值E(x,y)=255,转2.6.27;
2.6.27令循环变量y=y+1,转2.6.4;
2.6.28令循环变量x=x+1,转2.6.2。
第三步,通过第二步得到光照不均处理的结果图像E,E为摆脱了光照不均影响的清晰的二值图像,结束。
图4为图3经过第二步局部阈值二值化分割后得到的最终结果图E,可以看出经过局部二值化分割后的图像,之前较暗处或较亮处的文字细节被完全恢复,且没有像其他局部二值化算法那样产生局部噪点。
总的来看,采用本发明能够很好地处理光照不均的文本图像,将过亮或过暗处的文字细节完整地恢复出来,且不产生局部噪点,对OCR和文本图像的恢复和保存具有重要意义。
Claims (10)
1.一种光照不均文本图像处理方法,其特征在于包括以下步骤:
第一步,对光照不均文本图像Img进行图像增强,恢复图像上光照过强导致的过亮处或者阴影遮挡导致的过暗处的图像细节,方法为:
1.1对彩色图像Img的颜色进行分通道处理,每个通道分量像素值由整数型即int转换为浮点数即float,并对R,G,B三个通道求均值,得到通道求均值后的新图像I,像素大小为H×W方法是:
1.1.1将Img各像素的灰度值由整数型转换为浮点数;
1.1.2使用python的numpy库中的np.sum函数,对Img的所有像素点的R,G,B通道像素值求和,得到图像Img1;np.sum函数的输入参数为输入数组a=Img,数组的维度axis=2,其他保持默认值;Img1的第x列第y行像素点的像素值Img1(x,y)=R(x,y)+G(x,y)+B(x,y),得到的Img1的维度为H×W;H为Img的R,G,B三个通道的通道的高,W为通道的宽;R(x,y)表示Img的R通道中第x列第y行像素点的像素值,G(x,y)表示Img的G通道中第x列第y行像素点的像素值,B(x,y)表示Img的B通道中第x列第y行像素点的像素值,0≤x≤W-1,0≤y≤H-1;Img的维度为H×W×3,像素大小为H×W;
1.1.3将Img1的每个像素点的像素值除以3,得到新图像I,I的维度为H×W;使用Python中的numpy库的divide函数,直接令I=Img1/3,即将Img1的每个像素值Img1(x,y)除以3后赋值给I(x,y),得到新图像I;
1.2采用多尺度加权平均的方法对I进行图像增强,得到增强后的图像T,T为维度为H×W的矩阵;
1.3对T进行色彩平衡处理,得到色彩均衡处理后的图像T’,方法是:
1.3.1令Img的像素总数total=H×W;
1.3.2计算T的色彩平衡的上下界,得到色彩平衡上界high_val,色彩平衡下界low_val;
1.3.3对T进行色彩均衡处理,将T中像素值大于high_val的像素点赋值为high_val,使得太亮的像素变暗,将T中像素值等于high_val的像素点保持不变,将T中像素值小于low_val的像素点赋值为low_val,使得太暗的像素变亮,T中像素值等于low_val的像素点保持不变,得到色彩均衡处理后的图像T’;
1.4将T’中每个分量像素值由整数型转换为浮点数,得到浮点处理后的图像P;使用Python中numpy库的np.max函数和np.min函数将T’中的每个分量像素值按公式P=[(T’-np.min(T’))/(np.max(T’)-np.min(T’))]×255.0+1.0进行转换,得到P,维度为H×W,记P中任意一个元素为P(x,y),np.min(T’)表示T’中最小的元素,np.max(T’)表示T’中最大的元素;
1.5计算彩色恢复因子A,采用A对R,G,B三个通道进行图像增强处理,方法是:
1.5.1初始化一个与原始彩色图像Img同维度的全0矩阵M,M维度为H×W×3;
1.5.2对M的元素M(x,y,0),M(x,y,1)和M(x,y,2)进行明暗处理并进行彩色恢复;
1.5.3使用Python中numpy库的函数np.uint8将M中元素值转换为8位无符号整数,即得到整个图像增强后的图像M’,此时M’仍是彩色图像;
第二步,对M’进行局部二值化,根据坐标为(x,y)像素点邻域内的灰度均值与标准方差动态计算像素点(x,y)的二值化阈值,方法是:
2.1使用Python中cv2库中的函数cv2.cvtColor将M’转换为灰度图E,E的维度为H×W,其中,cv2.cvtColor函数的输入参数为需要转换的图像src,src=M’,图像转换类型code=cv2.COLOR_BGR2GRAY表示将BGR转换成灰度图,其他保持默认值;记E中任意一个元素为E(x,y);
2.2设定滑动窗口大小为h_kernel×w_kernel,h_kernel为滑动窗口的高,w_kernel为滑动窗口的宽,h_kernel和w_kernel为奇数;
2.3计算E各个像素点的积分和开方积分,得到积分矩阵integral和开方积分矩阵integral_sqrt,integral和integral_sqrt中的元素均为整数类型,integral(x,y)值为以E(0,0),E(x,0),E(0,y)和E(x,y)为四个顶点的矩形内所有像素点的像素值之和,integral_sqrt(x,y)值为以E(0,0),E(x,0),E(0,y)和E(x,y)为四个顶点的矩形内所有像素点的像素值开方之和;
2.4初始化5个与E同维度的全0矩阵,分别记做diff,sqrt_diff,mean,std和threshold矩阵;diff矩阵的元素diff(x,y)用于记录以E(x,y)为中心,大小为h_kernel×w_kernel的邻域内所有像素点的像素值之和;sqrt_diff矩阵的元素sqrt_diff(x,y)用于记录以E(x,y)为中心,大小为h_kernel×w_kernel的邻域内所有像素点的像素值开方之和;mean矩阵的元素mean(x,y)用于记录以E(x,y)为中心,大小为h_kernel×w_kernel的邻域内所有像素点像素值的均值;std矩阵的元素std(x,y)用于记录以E(x,y)为中心,大小为h_kernel×w_kernel的邻域内所有像素点的像素值的标准方差;threshold矩阵的元素threshold(x,y)用于记录二值化E(x,y)的阈值;
2.5计算邻域的半径whalf,whalf=h_kernel/2;
2.6对E中所有元素求出二值化的阈值,即求出矩阵threshold中的每个元素的值,最后根据矩阵threshold对E中所有元素E(x,y)进行二值化,方法是:
2.6.1令循环变量x=0;
2.6.2如果0≤x≤H-1,转2.6.3,否则得到最终二值化的E,转第三步;
2.6.3令循环变量y=0;
2.6.4如果0≤y≤W-1,转2.6.5,否则转2.6.28;
2.6.5计算出以像素点(x,y)为中心,大小为h_kernel×w_kernel的滑动窗口的最左端坐标值xmin、最右端坐标值xmax、顶部坐标值ymin和底部坐标值ymax,以及滑动窗口的面积area;
2.6.6判断以当前像素点(x,y)为中心,大小为h_kernel×w_kernel的滑动窗口是否位于图像的左上角:若xmin=0且ymin=0,说明像素点(x,y)的滑动窗口左边界和上边界分别与整个图像的左边界和上边界重合,转2.6.7,否则说明像素点(x,y)的滑动窗口没有位于整个图像的左上角,转2.6.9;
2.6.7令diff(x,y)=integral(xmax,ymax);
2.6.8令sqrt_diff(x,y)=integral_sqrt(xmax,ymax),转2.6.21;
2.6.9判断以当前像素点(x,y)为中心,大小为h_kernel×w_kernel的滑动窗口是否位于图像的顶部:若xmin>0且ymin=0,说明像素点(x,y)的滑动窗口上边界与整个图像的上边界重合,转2.6.10,否则说明像素点(x,y)的滑动窗口上边界没有与整个图像的上边界重合,转2.6.12;
2.6.10计算以E(x,y)为中心,大小为h_kernel×w_kernel的邻域内所有像素点的像素值之和,diff(x,y)=integral(xmax,ymax)-integral(xmin-1,ymax);
2.6.11计算以E(x,y)为中心,大小为h_kernel×w_kernel的邻域内所有像素点的像素值开方之和,sqrt_diff(x,y)=integral_sqrt(xmax,ymax)-integral_sqrt(xmin-1,ymax),转2.6.21;
2.6.12判断以当前像素点(x,y)为中心,大小为h_kernel×w_kernel的滑动窗口是否位于图像E的左侧边缘:若xmin=0且ymin>0,说明像素点(x,y)的滑动窗口左边界与图像E的左边界重合,转2.6.13,否则说明像素点(x,y)的滑动窗口左边界没有与图像E的左边界重合,转2.6.15;
2.6.13计算以E(x,y)为中心,大小为h_kernel×w_kernel的邻域内所有像素点的像素值之和,diff(x,y)=integral(xmax,ymax)-integral(xmax,ymax-1);
2.6.14计算以E(x,y)为中心,大小为h_kernel×w_kernel的邻域内所有像素点的像素值开方之和,sqrt_diff(x,y)=integral_sqrt(xmax,ymax)-integral_sqrt(xmax,ymax-1),转2.6.21;
2.6.15计算以当前像素点(x,y)为中心,大小为h_kernel×w_kernel的滑动窗口到右下角顶点的灰度值和diagsum,diagsum=integral(xmax,ymax)+integral(xmin-1,ymin-1);
2.6.16计算以当前像素点(x,y)为中心,大小为h_kernel×w_kernel的滑动窗口到左上角顶点的灰度值和idiagsum,idiagsum=integral(xmax,ymin-1)+integral(xmin-1,ymax);
2.6.17令diff[x,y]=diagsum-idiagsum,得到以(x,y)为中心、大小h_kernel×w_kernel的邻域内灰度值的和;
2.6.18计算当前像素点(x,y)大小为h_kernel×w_kernel的滑动窗口到右下角顶点的灰度值和的开平方值sqdiagsum,sqdiagsum=integral_sqrt(xmax,ymax)+integral_sqrt(xmin-1,ymin-1);
2.6.19计算当前像素点(x,y)大小为h_kernel×w_kernel的滑动窗口到左上角顶点的灰度值和的开平方值sqidiagsum,sqidiagsum=integral_sqrt(xmax,ymin-1)+integral_sqrt(xmin-1,ymax);
2.6.20令sqrt_diff(x,y)=sqdiagsum-sqidiagsum,得到以(x,y)为中心,大小h_kernel×w_kernel的邻域内灰度值和的开平方值sqrt_diff(x,y),转2.6.21;
2.6.21计算以(x,y)为中心点,大小为h_kernel×w_kernel的邻域内灰度值的均值mean(x,y),mean(x,y)=diff(x,y)/area;
2.6.22计算以(x,y)为中心点,大小为h_kernel×w_kernel的邻域内灰度值的标准差std(x,y),std(x,y)=sqrt((sqrt_diff(x,y)-sqrt(diff(x,y))/area)/(area-1));
2.6.23计算分割当前点(x,y)的阈值threshold(x,y),threshold(x,y)=mean(x,y)×(1+k'×((std(x,y)/128)-1)),其中k'为修正参数;
2.6.24用阈值threshold(x,y)二值化分割当前点(x,y),即若E(x,y)<threshold(x,y),转2.6.25,否则执行2.6.26;
2.6.25令(x,y)的像素值E(x,y)=0,转2.6.27;
2.6.26令(x,y)的像素值E(x,y)=255,转2.6.27;
2.6.27令循环变量y=y+1,转2.6.4;
2.6.28令循环变量x=x+1,转2.6.2;
第三步,得到光照不均处理的结果图像E,E为摆脱了光照不均影响的清晰的二值图像,结束。
2.如权利要求1所述的光照不均文本图像处理方法,其特征在于1.2步采用多尺度加权平均的方法对I进行图像增强的方法是:
1.2.1初始化三个与I同维度的全0矩阵T0,T1,T2;T0,T1,T2的行数等于H,列数等于W;
1.2.2定义三个高斯滤波的高斯尺度常量向量C,取值为C=[15,80,200],C[0]=15,C[1]=80,C[2]=200;
1.2.3初始化变量i=0;
1.2.4如果i<3,转1.2.5,否则转1.2.6;
1.2.5对C[i],采用Retinex算法对T0,T1,T2进行Retinex处理,方法是:
1.2.5.1使用Python的numpy库中的np.log10函数对I取对数,得到取对数后的图像I’,即令I’=np.log10(I),将I的所有像素点的像素值取对数,I’的维度为H×W;
1.2.5.2以C的第i个元素C[i]为参数,对I进行高斯滤波,得到高斯滤波后的图像g(I);
1.2.5.3使用Python的numpy库中的np.log10函数对g(I)取对数,得到滤波取对数后的图像g’,即令g’=np.log10(g(I)),将g(I)的所有像素点的像素值取对数,g’的维度为H×W;
1.2.5.4令Ti=Ti+I’-g’;
1.2.5.5令i=i+1,转1.2.4;
1.2.6将T0,T1,T2取平均值,得到平均值T=(T0+T1+T2)/3,T即为增强后的图像,T,T0,T1和T2均为维度为H×W的矩阵。
3.如权利要求1所述的光照不均文本图像处理方法,其特征在于1.3.2步计算T的色彩平衡的上下界的方法是:
1.3.2.1使用Python中的np.unique(T,return_count,unique,counts)函数获得T中每个像素的像素值由小到大的排序向量unique和T中每个像素值出现次数对应的个数列表counts;np.unique函数有两个输入即T和return_count,两个输出即unique和counts,一个输入参数为输入数组T,另一个输入参数为布尔值return_count,return_count的意思是“是否需要返回列表counts”,return_count在此设置为True;
1.3.2.2初始化一个中间变量current=0,用于计算像素值是否在色彩平衡的上下界内,令像素值上界阈值high_clip=0.99,令像素值上界阈值下界阈值low_clip=0.01;
1.3.2.3用python中的zip函数将unique和counts打包成一个二元组序列,命名为像素值个数统计二元组{(u0,c0),…,(uk,ck),…,(uK,cK)},unique和counts的长度均为K;二元组集合中包含K个元素,其中第k个元素为(uk,ck),0≤k≤K-1,uk为T中从小到大排序的第k个像素值,ck代表T中像素值为uk的像素点的个数;
1.3.2.4对于二元组集合中的每个元素做色彩平衡,得到色彩平衡的像素值上下界,方法是:
1.3.2.4.1令循环变量k=0;
1.3.2.4.2如果0≤k≤K-1,转1.3.2.4.3,否则结束;
1.3.2.4.3如果current/total的浮点值小于low_clip,执行1.3.2.4.4,否则直接执行1.3.2.4.5;
1.3.2.4.4令色彩平衡下界low_val=uk;
1.3.2.4.5如果current/total的浮点值小于high_clip,执行1.3.2.4.6,否则直接执行1.3.2.4.7;
1.3.2.4.6令色彩平衡上界high_val=uk;
1.3.2.4.7令current=current+ck,令k=k+1,转1.3.2.4.2。
4.如权利要求1所述的光照不均文本图像处理方法,其特征在于1.3.3步对T进行色彩均衡处理的方法是:使用Python中numpy库的np.minimum(x1,x2)函数和np.maximum(x1,x2)函数,得到色彩均衡处理后的图像T’,即T’=np.maximum(np.minimum(T,high_val),low_val);其中,np.minimum(x1,x2)函数的输入参数为比较大小的第一个数组x1,x1=T,比较大小的第二个数组x2=high_val,其他保持默认值;np.maximum(x1,x2)函数的输入参数为比较大小的第一个数组x1,x1=np.minimum(T,high_val),比较大小的第二个数组x2=low_val,其他保持默认值。
5.如权利要求1所述的光照不均文本图像处理方法,其特征在于1.5.2步对M的元素M(x,y,0),M(x,y,1)和M(x,y,2),进行明暗处理并进行彩色恢复的方法是:
1.5.2.1令x=0,转1.5.2.2;
1.5.2.2如果0≤x≤H-1,转1.5.2.3,否则结束;
1.5.2.3令y=0,转1.5.2.4;
1.5.2.4如果0≤y≤W-1,转1.5.2.5,否则转1.5.2.9;
1.5.2.5使用Python中numpy库的函数np.max,获得原始彩色图像Img中Img(x,y)点的三通道R(x,y),G(x,y)和B(x,y)三者的最大值L,即令L=np.max(R(x,y),G(x,y),B(x,y));
1.5.2.6使用Python中numpy库的函数np.minimum,令彩色恢复因子A等于256/L和P(x,y)/I(x,y)中的最小值,即令A=np.min(256/L,P(x,y)/I(x,y));
1.5.2.7对Img的三个通道的值进行彩色恢复后赋值给M(x,y,0),M(x,y,1)和M(x,y,2),即令M(x,y,0)=A×R(x,y),M(x,y,1)=A×G(x,y),M(x,y,2)=A×B(x,y),使得像素点(x,y)的像素值较小时,放大(x,y)的像素值,使暗点变亮;像素点(x,y)的像素值较大时,缩小(x,y)的像素值,使亮点变暗;
1.5.2.8令循环变量y=y+1,转1.5.2.4;
1.5.2.9令循环变量x=x+1,转1.5.2.2。
6.如权利要求1所述的光照不均文本图像处理方法,其特征在于2.2步所述h_kernel取31,w_kernel取31。
7.如权利要求1所述的光照不均文本图像处理方法,其特征在于2.3步所述计算E各个像素点的积分和开方积分的方法是:
2.3.1初始化积分矩阵integral和开方积分矩阵integral_sqrt均为和E维度一致的全0矩阵,integral和integral_sqrt中的元素均定义为整数类型;
2.3.2令循环变量x=0;
2.3.3如果0≤x≤H-1,转2.3.4,否则结束;
2.3.4令按行求积分中间变量sum1=0,令开方积分的中间变量sqrt_sum=0;
2.3.5令循环变量y=0;
2.3.6如果0≤y≤W-1,转2.3.7对像素值之和sum1和像素值开方之和sqrt_sum进行更新,否则转2.3.12更新循环变量;
2.3.7令sum1=sum1+E(x,y),sqrt_sum=np.sqrt(E(x,y)),sum1为E中第x行从坐标为(x,0)的像素点到坐标为(x,y)的像素点为止的像素值之和,sqrt_sum为E中第x行从坐标为(x,0)的像素点到坐标为(x,y)的像素点为止的像素值开方之和;
2.3.8若x=0,转2.3.9,否则转2.3.10;
2.3.9令integral(x,y)=sum1,令integral_sqrt(x,y)=sqrt_sum;
2.3.10令integral(x,y)=sum1+integral(x-1,y),integral_sqrt(x,y)=sqrt_sum+integral_sqrt(x-1,y);
2.3.11令循环变量y=y+1,转2.3.6;
2.3.12令循环变量x=x+1,转2.3.3。
8.如权利要求1所述的光照不均文本图像处理方法,其特征在于2.4步所述初始化diff,sqrt_diff,mean,std和threshold这五个矩阵的具体过程为:
2.4.1使用Python的numpy库中的np.zeros函数初始化diff为float类型的全0矩阵,维度与E相同,为H×W;np.zeros函数的输入参数为全0矩阵的形状shape=(H,W),全0矩阵的数据类型dtype=float,其他保持默认值;
2.4.2使用Python的numpy库中的np.zeros函数初始化sqrt_diff为float类型的全0矩阵,维度与E相同;
2.4.3使用Python的numpy库中的np.zeros函数初始化mean为float类型的全0矩阵,维度与E相同;
2.4.4使用Python的numpy库中的np.zeros函数初始化std为float类型的全0矩阵,维度与E相同;
2.4.5使用Python的numpy库中的np.zeros函数初始化threshold为float类型的全0矩阵,维度与E相同。
9.如权利要求1所述的光照不均文本图像处理方法,其特征在于2.6.5步所述计算出以像素点(x,y)为中心,大小为h_kernel×w_kernel的滑动窗口的最左端、最右端、顶部和底部的坐标值,以及滑动窗口的面积的方法是:
2.6.5.1计算以当前像素点(x,y)为中心,大小为h_kernel×w_kernel的滑动窗口最左端坐标值xmin,为防止取到图像外左边的点,xmin取0和x-whalf的最大值,在此使用Python中自带的max函数,即令xmin=max(0,x-whalf);
2.6.5.2计算以当前像素点(x,y)为中心,大小为h_kernel×w_kernel的滑动窗口顶部的坐标值ymin,为防止取到图像外上边的点,ymin取0和y-whalf的最大值,在此使用Python中自带的max函数,即令ymin=max(0,y-whalf);
2.6.5.3计算以当前像素点(x,y)为中心,大小为h_kernel×w_kernel的滑动窗口最右端坐标值xmax,为防止取到图像外右边的点,xmax取x-1和x+whalf的最小值,在此使用Python中自带的min函数,即令xmax=min(x-1,x+whalf);
2.6.5.4计算以当前像素点(x,y)为中心,大小为h_kernel×w_kernel的滑动窗口底部坐标值ymax,为防止取到图像外下边的点,ymax取y-1和w1+whalf的最小值,使用Python中自带的min函数,即令ymax=min(w1-1,w1+whalf);
2.6.5.5计算以当前像素点(x,w1)为中心,大小为h_kernel×w_kernel的滑动窗口的面积,记作area,计算公式为area=(xmax-xmin+1)×(ymax-ymin+1),结束。
10.如权利要求1所述的光照不均文本图像处理方法,其特征在于2.6.23步所述修正参数k'默认值为0.1。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210068610.XA CN114418890B (zh) | 2022-01-20 | 2022-01-20 | 光照不均文本图像处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210068610.XA CN114418890B (zh) | 2022-01-20 | 2022-01-20 | 光照不均文本图像处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114418890A CN114418890A (zh) | 2022-04-29 |
CN114418890B true CN114418890B (zh) | 2024-01-23 |
Family
ID=81275152
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210068610.XA Active CN114418890B (zh) | 2022-01-20 | 2022-01-20 | 光照不均文本图像处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114418890B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103578084A (zh) * | 2013-12-09 | 2014-02-12 | 西安电子科技大学 | 基于亮通道滤波的彩色图像增强方法 |
CN106780375A (zh) * | 2016-12-02 | 2017-05-31 | 南京邮电大学 | 一种低照度环境下的图像增强方法 |
CN110443807A (zh) * | 2019-06-27 | 2019-11-12 | 中国地质大学(武汉) | 一种基于亮度均衡的光照不均匀图像阈值分割方法 |
CN111986120A (zh) * | 2020-09-15 | 2020-11-24 | 天津师范大学 | 一种基于帧累加和多尺度Retinex的低光照图像增强优化方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8520966B2 (en) * | 2009-03-30 | 2013-08-27 | The Neat Company | Image background enhancement for color images |
-
2022
- 2022-01-20 CN CN202210068610.XA patent/CN114418890B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103578084A (zh) * | 2013-12-09 | 2014-02-12 | 西安电子科技大学 | 基于亮通道滤波的彩色图像增强方法 |
CN106780375A (zh) * | 2016-12-02 | 2017-05-31 | 南京邮电大学 | 一种低照度环境下的图像增强方法 |
CN110443807A (zh) * | 2019-06-27 | 2019-11-12 | 中国地质大学(武汉) | 一种基于亮度均衡的光照不均匀图像阈值分割方法 |
CN111986120A (zh) * | 2020-09-15 | 2020-11-24 | 天津师范大学 | 一种基于帧累加和多尺度Retinex的低光照图像增强优化方法 |
Also Published As
Publication number | Publication date |
---|---|
CN114418890A (zh) | 2022-04-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112288658A (zh) | 一种基于多残差联合学习的水下图像增强方法 | |
US20050175253A1 (en) | Method for producing cloud free and cloud-shadow free images | |
Zhang et al. | A naturalness preserved fast dehazing algorithm using HSV color space | |
CN113628152B (zh) | 一种基于多尺度特征选择性融合的暗光图像增强方法 | |
JPH0799581A (ja) | 画像処理装置 | |
CN114331873A (zh) | 一种基于区域划分的非均匀光照彩色图像校正方法 | |
CN111754433B (zh) | 一种航拍图像去雾方法 | |
Srinivas et al. | Remote sensing image segmentation using OTSU algorithm | |
CN112785534A (zh) | 一种动态场景下去鬼影多曝光图像融合方法 | |
Bugeau et al. | Influence of color spaces for deep learning image colorization | |
CN114418890B (zh) | 光照不均文本图像处理方法 | |
CN116862809A (zh) | 一种低曝光条件下的图像增强方法 | |
Han et al. | Locally adaptive contrast enhancement using convolutional neural network | |
CN110930358A (zh) | 一种基于自适应算法的太阳能面板图像处理方法 | |
US20230186446A1 (en) | Image processing methods and systems for low-light image enhancement using machine learning models | |
Liu et al. | A shadow imaging bilinear model and three-branch residual network for shadow removal | |
US20220188991A1 (en) | Method and electronic device for managing artifacts of image | |
CN113256533B (zh) | 基于msrcr的自适应低照度图像增强方法及系统 | |
Gasparyan et al. | Iterative retinex-based decomposition framework for low light visibility restoration | |
CN115033721A (zh) | 基于大数据的图像检索方法 | |
Chengtao et al. | Improved dark channel prior dehazing approach using adaptive factor | |
CN115829848A (zh) | 处理图形符号的方法、装置和计算机可读存储介质 | |
Dixit et al. | Image Contrast Optimization using Local Color Correction and Fuzzy Intensification | |
Zini et al. | Shallow camera pipeline for night photography rendering | |
CN106952243A (zh) | Uuv近海面红外图像自适应归并直方图拉伸增强方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |