发明名称 基于能量最小化框架的文档图像倾斜度检测与纠正方法
摘要 本发明提出了一种基于能量最小化框架的文档图像倾斜度检测和纠正方法,该方法的研究对象为机打文档图像,文档图像中的内容可以是文字、表格、图片等。本发明首先需要使用扫描仪将文档扫描成电子文档图像,然后估算前景像素状态信息,然后利用前景像素状态信息构建能量函数,然后利用图像处理技术和直线拟合技术计算初始的倾斜度,最后进行能量最小化过程得到最终的倾斜度并将文档图像进行纠正。本发明能适用于多种不同类型的文档,使得倾斜度检测更加精确,在保证精度的同时也提高了倾斜度检测的速度。
申请公布号 CN103400130B 申请公布日期 2016.07.20
申请号 CN201310321375.3 申请日期 2013.07.22
申请人 哈尔滨工业大学 发明人 邬向前;卜巍;唐有宝
分类号 G06K9/32(2006.01)I 主分类号 G06K9/32(2006.01)I
代理机构 代理人
主权项 基于能量最小化框架的文档图像倾斜度检测与纠正方法,其特征在于,该方法包括三个过程:(1)计算前景像素状态信息在计算前景像素状态信息之前,首先对扫描得到的文档图像进行二值化,用黑色表示前景,白色表示背景像素,给定一个前二值文档图像I之后,前景像素的状态计算过程如下:一个边界框定义为一个文档图像的边界,用P记作整个前景像素的集合,(W,H)记作文档图像I的大小,那么对每一个前景像素p∈P,它的状态信息为s<sub>p</sub>=(x<sub>p</sub>,y<sub>p</sub>,w<sub>p</sub>,h<sub>p</sub>),其中x<sub>p</sub>,y<sub>p</sub>,w<sub>p</sub>,h<sub>p</sub>分别为p到图像最左、最上、最右和最下边的距离;(2)利用直线拟合技术估算初始倾斜度接下来利用文档图像中最外围的前景像素的状态信息来估算初始倾斜度,一个边界框有四个边:上、下、左和右,对每一边都能得到其最外围的前景像素状态信息子集,用以下方式得到上边最外围前景像素状态信息子集,记为<img file="FSB0000151710440000013.GIF" wi="168" he="48" /><maths num="0001"><math><![CDATA[<mrow><mtable><mtr><mtd><mrow><mi>T</mi><mi>S</mi><mo>=</mo><munderover><mrow><mi></mi><mo>&cup;</mo></mrow><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>W</mi></munderover><msub><mi>s</mi><mi>i</mi></msub></mrow></mtd></mtr><mtr><mtd><mrow><msub><mi>y</mi><mi>i</mi></msub><mo>&Element;</mo><msub><mi>s</mi><mi>i</mi></msub><mo>&cap;</mo><msub><mi>y</mi><mi>i</mi></msub><mo>=</mo><mi>m</mi><mi>i</mi><mi>n</mi><mo>{</mo><msub><mi>y</mi><mi>p</mi></msub><mo>|</mo><msub><mi>y</mi><mi>p</mi></msub><mo>&Element;</mo><msub><mi>s</mi><mi>p</mi></msub><mo>&cap;</mo><msub><mi>x</mi><mi>p</mi></msub><mo>&Element;</mo><msub><mi>s</mi><mi>p</mi></msub><mo>&cap;</mo><msub><mi>x</mi><mi>p</mi></msub><mo>=</mo><mi>i</mi><mo>}</mo></mrow></mtd></mtr></mtable><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow></mrow>]]></math><img file="FSB0000151710440000011.GIF" wi="1464" he="234" /></maths>将TS中每个元素的x<sub>p</sub>做为x坐标,y<sub>p</sub>作为y坐标画图,图中的点拟合成一条直线,边界框剩下的三边都经过该处理,将使用直线拟合的技术来估算文档图像的初始倾斜度,在直线拟合之前先对TS进行采样,用如下方式将TS划分为N个互不重叠的部分STS<sub>i</sub>:<img file="FSB0000151710440000012.GIF" wi="1441" he="361" />N=32,接下来用如下方式构建一个子集FTS,即计算每个部分STS<sub>i</sub>中y<sub>i</sub>最小的那个前景像素状态信息:<maths num="0002"><math><![CDATA[<mrow><mtable><mtr><mtd><mrow><mi>F</mi><mi>T</mi><mi>S</mi><mo>=</mo><munderover><mrow><mi></mi><mo>&cap;</mo></mrow><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>N</mi></munderover><mrow><mo>(</mo><msub><mi>s</mi><mi>i</mi></msub><mo>&cap;</mo><msub><mi>s</mi><mi>i</mi></msub><mo>&Element;</mo><msub><mi>STS</mi><mi>i</mi></msub><mo>)</mo></mrow></mrow></mtd></mtr><mtr><mtd><mrow><msub><mi>y</mi><mi>i</mi></msub><mo>&Element;</mo><msub><mi>s</mi><mi>i</mi></msub><mo>&cap;</mo><msub><mi>y</mi><mi>i</mi></msub><mo>=</mo><mi>min</mi><mo>{</mo><msub><mi>y</mi><mi>p</mi></msub><mo>|</mo><msub><mi>y</mi><mi>p</mi></msub><mo>&Element;</mo><msub><mi>s</mi><mi>p</mi></msub><mo>&cap;</mo><msub><mi>s</mi><mi>p</mi></msub><mo>&Element;</mo><msub><mi>STS</mi><mi>i</mi></msub><mo>}</mo></mrow></mtd></mtr></mtable><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>3</mn><mo>)</mo></mrow></mrow>]]></math><img file="FSB0000151710440000021.GIF" wi="1378" he="223" /></maths>进行采样操作完之后,需要通过以下方式进一步消除没用的状态信息得到有效的用来进行直线拟合的状态信息VTS:<maths num="0003"><math><![CDATA[<mrow><mi>V</mi><mi>T</mi><mi>S</mi><mo>=</mo><mo>{</mo><msub><mi>s</mi><mi>p</mi></msub><mo>|</mo><msub><mi>s</mi><mi>p</mi></msub><mo>&Element;</mo><mi>F</mi><mi>T</mi><mi>S</mi><mo>&cap;</mo><msub><mi>y</mi><mi>p</mi></msub><mo>&Element;</mo><msub><mi>s</mi><mi>p</mi></msub><mo>&cap;</mo><msub><mi>y</mi><mi>p</mi></msub><mo>&lt;</mo><mfrac><mi>H</mi><mn>3</mn></mfrac><mo>}</mo><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>4</mn><mo>)</mo></mrow></mrow>]]></math><img file="FSB0000151710440000022.GIF" wi="1381" he="142" /></maths>然后采用穷举搜索的方式在VTS中做直线拟合直到找到两个状态信息使得有最多的其他状态信息到由这两个状态信息确定的直线之间的距离小于指定的阈值D;对边界框的四边都进行直线拟合之后得到四条直线,接下来就是找到拟合最好的那条直线,同时该直线对应的倾斜角就是文档图像的初始倾斜角;用{l<sub>t</sub>,l<sub>b</sub>,l<sub>l</sub>,l<sub>r</sub>}记作拟合的四条直线,{LS<sub>t</sub>,LS<sub>b</sub>,LS<sub>l</sub>,LS<sub>r</sub>}记作靠近相应直线的状态信息,要是某条直线对应的状态信息的个数小于M,在下面的操作中将不再考虑该直线,对每条直线l<sub>i</sub>∈{l<sub>t</sub>,l<sub>b</sub>,l<sub>l</sub>,l<sub>r</sub>},计算其对应的所有状态信息LS<sub>i</sub>和直线l<sub>i</sub>之间的距离之和SD<sub>i</sub>,然后用如下方式计算比值R<sub>i</sub>:<maths num="0004"><math><![CDATA[<mrow><msub><mi>R</mi><mi>i</mi></msub><mo>=</mo><mfrac><mrow><msub><mi>SD</mi><mi>i</mi></msub></mrow><msup><mrow><mo>(</mo><mi>f</mi><mo>(</mo><mrow><msub><mi>LS</mi><mi>i</mi></msub></mrow><mo>)</mo><mo>)</mo></mrow><mn>2</mn></msup></mfrac><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>5</mn><mo>)</mo></mrow></mrow>]]></math><img file="FSB0000151710440000023.GIF" wi="1106" he="147" /></maths>其中f(·)计算一个集合中元素的个数,{R<sub>t</sub>,R<sub>b</sub>,R<sub>l</sub>,R<sub>r</sub>}中的最小值对应的直线就是最佳拟合的直线,最终最佳拟合的直线对应的倾斜角就是文档图像的初始倾斜角,其中D=5,M=5;(3)使用能量最小化过程计算最终倾斜度得到初始倾斜角之后,然后用能量最小化过程计算最终倾斜角,如下式所示:<maths num="0005"><math><![CDATA[<mrow><mover><mi>S</mi><mo>^</mo></mover><mo>=</mo><munder><mrow><mi>arg</mi><mi> </mi><mi>min</mi></mrow><mi>S</mi></munder><mi>E</mi><mrow><mo>(</mo><mi>S</mi><mo>)</mo></mrow><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>6</mn><mo>)</mo></mrow></mrow>]]></math><img file="FSB0000151710440000031.GIF" wi="1124" he="102" /></maths>该过程包括能量函数构建和能量最小化两个步骤,如下式所示:E(S)=ωE<sub>B</sub>(S)+(1‑ω)E<sub>F</sub>(S)   (7)ω=0.98,其中E<sub>B</sub>(S)考虑了全局背景信息,如下式所示:<img file="FSB0000151710440000032.GIF" wi="1133" he="83" />设置<img file="FSB0000151710440000033.GIF" wi="76" he="52" />和φ(·)为:<img file="FSB0000151710440000034.GIF" wi="1446" he="334" />其中Sgn(·)是一个符号函数,定义为:<img file="FSB0000151710440000035.GIF" wi="1168" he="156" />E<sub>F</sub>(S)反应了全局的前景信息,如下式所示:E<sub>F</sub>(S)=δ(S)+λ(S)   (11)设置δ(·)和λ(·)为:<maths num="0006"><math><![CDATA[<mrow><mtable><mtr><mtd><mrow><mi>&delta;</mi><mrow><mo>(</mo><mi>S</mi><mo>)</mo></mrow><mo>=</mo><mfrac><mn>1</mn><msub><mi>M</mi><mi>Y</mi></msub></mfrac><msqrt><mrow><mfrac><mn>1</mn><mrow><mi>f</mi><mrow><mo>(</mo><mi>Y</mi><mo>)</mo></mrow></mrow></mfrac><munderover><mo>&Sigma;</mo><mrow><mi>k</mi><mo>=</mo><mn>1</mn></mrow><mrow><mi>f</mi><mrow><mo>(</mo><mi>Y</mi><mo>)</mo></mrow></mrow></munderover><msup><mrow><mo>(</mo><mi>f</mi><mo>(</mo><msub><mi>Y</mi><mi>k</mi></msub><mo>)</mo><mo>-</mo><mover><mi>Y</mi><mo>&OverBar;</mo></mover><mo>)</mo></mrow><mn>2</mn></msup></mrow></msqrt></mrow></mtd></mtr><mtr><mtd><mrow><mover><mi>Y</mi><mo>&OverBar;</mo></mover><mo>=</mo><mfrac><mn>1</mn><mrow><mi>f</mi><mrow><mo>(</mo><mi>Y</mi><mo>)</mo></mrow></mrow></mfrac><munderover><mo>&Sigma;</mo><mrow><mi>k</mi><mo>=</mo><mn>1</mn></mrow><mrow><mi>f</mi><mrow><mo>(</mo><mi>Y</mi><mo>)</mo></mrow></mrow></munderover><mi>f</mi><mrow><mo>(</mo><msub><mi>Y</mi><mi>k</mi></msub><mo>)</mo></mrow></mrow></mtd></mtr><mtr><mtd><mrow><mi>&lambda;</mi><mrow><mo>(</mo><mi>S</mi><mo>)</mo></mrow><mo>=</mo><mfrac><mn>1</mn><msub><mi>M</mi><mi>X</mi></msub></mfrac><msqrt><mrow><mfrac><mn>1</mn><mrow><mi>f</mi><mrow><mo>(</mo><mi>X</mi><mo>)</mo></mrow></mrow></mfrac><munderover><mo>&Sigma;</mo><mrow><mi>k</mi><mo>=</mo><mn>1</mn></mrow><mrow><mi>f</mi><mrow><mo>(</mo><mi>X</mi><mo>)</mo></mrow></mrow></munderover><msup><mrow><mo>(</mo><mi>f</mi><mo>(</mo><msub><mi>X</mi><mi>k</mi></msub><mo>)</mo><mo>-</mo><mover><mi>X</mi><mo>&OverBar;</mo></mover><mo>)</mo></mrow><mn>2</mn></msup></mrow></msqrt></mrow></mtd></mtr><mtr><mtd><mrow><mover><mi>X</mi><mo>&OverBar;</mo></mover><mo>=</mo><mfrac><mn>1</mn><mrow><mi>f</mi><mrow><mo>(</mo><mi>X</mi><mo>)</mo></mrow></mrow></mfrac><munderover><mo>&Sigma;</mo><mrow><mi>k</mi><mo>=</mo><mn>1</mn></mrow><mrow><mi>f</mi><mrow><mo>(</mo><mi>X</mi><mo>)</mo></mrow></mrow></munderover><mi>f</mi><mrow><mo>(</mo><msub><mi>X</mi><mi>k</mi></msub><mo>)</mo></mrow></mrow></mtd></mtr></mtable><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>12</mn><mo>)</mo></mrow></mrow>]]></math><img file="FSB0000151710440000036.GIF" wi="1349" he="636" /></maths>其中<img file="FSB0000151710440000037.GIF" wi="1008" he="73" />M<sub>Y</sub>=max{f(Y<sub>i</sub>)|Y<sub>i</sub>∈Y},M<sub>X</sub>=max{f(X<sub>i</sub>)|X<sub>i</sub>)∈X},且f(·)计算一个集合中元素的个数;构造完能量函数以后,根据直线拟合得到的初始倾斜角和所有前景像素的状态信息,通过反复地计算能量函数和旋转前景像素的状态信息,找到使得能量函数值最小时所旋转的角度,这个角度就是最终的倾斜角;状态信息的旋转过程如下:S′=rotate(S,θ)   (13)其中rotate(·)计算每个前景像素的状态信息s<sub>p</sub>∈S旋转后的结果s<sub>p</sub>′,计算过程如下:<maths num="0007"><math><![CDATA[<mrow><mtable><mtr><mtd><mrow><msup><msub><mi>x</mi><mi>p</mi></msub><mo>&prime;</mo></msup><mo>=</mo><mrow><mo>(</mo><msub><mi>x</mi><mi>p</mi></msub><mo>-</mo><mfrac><mi>W</mi><mn>2</mn></mfrac><mo>)</mo></mrow><mi>cos</mi><mi>&theta;</mi><mo>-</mo><mrow><mo>(</mo><msub><mi>y</mi><mi>p</mi></msub><mo>-</mo><mfrac><mi>H</mi><mn>2</mn></mfrac><mo>)</mo></mrow><mi>sin</mi><mi>&theta;</mi><mo>+</mo><mfrac><mi>W</mi><mn>2</mn></mfrac></mrow></mtd></mtr><mtr><mtd><mrow><msup><msub><mi>y</mi><mi>p</mi></msub><mo>&prime;</mo></msup><mo>=</mo><mrow><mo>(</mo><msub><mi>x</mi><mi>p</mi></msub><mo>-</mo><mfrac><mi>W</mi><mn>2</mn></mfrac><mo>)</mo></mrow><mi>sin</mi><mi>&theta;</mi><mo>+</mo><mrow><mo>(</mo><msub><mi>y</mi><mi>p</mi></msub><mo>-</mo><mfrac><mi>H</mi><mn>2</mn></mfrac><mo>)</mo></mrow><mi>cos</mi><mi>&theta;</mi><mo>+</mo><mfrac><mi>H</mi><mn>2</mn></mfrac></mrow></mtd></mtr><mtr><mtd><mrow><msup><msub><mi>w</mi><mi>p</mi></msub><mo>&prime;</mo></msup><mo>=</mo><mi>W</mi><mo>-</mo><msup><msub><mi>x</mi><mi>p</mi></msub><mo>&prime;</mo></msup><mo>,</mo><msup><msub><mi>h</mi><mi>p</mi></msub><mo>&prime;</mo></msup><mo>=</mo><mi>H</mi><mo>-</mo><msup><msub><mi>y</mi><mi>p</mi></msub><mo>&prime;</mo></msup></mrow></mtd></mtr></mtable><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>14</mn><mo>)</mo></mrow></mrow>]]></math><img file="FSB0000151710440000041.GIF" wi="1371" he="410" /></maths>。
地址 150001 黑龙江省哈尔滨市南岗区西大直街92号哈尔滨工业大学计算机科学与技术学院
您可能感兴趣的专利