发明名称 基于序贯图像矢量平均的时均流场重建方法
摘要 本发明公开了一种基于序贯图像矢量平均的时均流场重建方法,属于非接触式明渠测流技术领域。所述方法首先载入两帧连续图像作为一组图像对,并采用预先设定的掩膜提取图像对中的有效水面区域;其次采用快速傅立叶变换互相关算法对图像对中的所有分析区域IA进行运动矢量估计;然后采用全局角度直方图方法检测流动主方向并识别瞬时流场中的错误矢量;接下来进行流场时间滤波,舍弃当前错误的瞬时矢量,并用当前正确的瞬时矢量替代此前错误的时均矢量,用当前正确的瞬时矢量平均此前正确的时均矢量;最后进行错误矢量插值和流场平滑滤波得到重建的时均流场。本发明以时均流场的矢量正确率为依据控制求平均的进程,改善了流场重建的时间分辨率。
申请公布号 CN103578118B 申请公布日期 2016.02.24
申请号 CN201310508543.X 申请日期 2013.10.24
申请人 河海大学 发明人 张振;严锡君;徐立中
分类号 G06T7/20(2006.01)I;G06T5/00(2006.01)I 主分类号 G06T7/20(2006.01)I
代理机构 南京经纬专利商标代理有限公司 32200 代理人 虞希光
主权项 一种基于序贯图像矢量平均的时均流场重建方法,其特征在于:首先载入两帧连续图像作为一组图像对,并采用预先设定的掩膜提取图像对中的有效水面区域;其次采用快速傅立叶变换互相关算法对图像对中的所有分析区域IA进行运动矢量估计;然后采用全局角度直方图方法检测流动主方向并识别瞬时流场中的错误矢量;接下来进行流场时间滤波,舍弃当前错误的瞬时矢量,并用当前正确的瞬时矢量替代此前错误的时均矢量,用当前正确的瞬时矢量平均此前正确的时均矢量;最后进行错误矢量插值和流场平滑滤波得到重建的时均流场;所述的全局角度直方图方法,其特征在于:对于i时刻的瞬时流场,首先计算所有矢量S<sub>i</sub>(x,y)与x方向的夹角θ<sub>i</sub>(x,y),得到瞬时流场中矢量角度的极坐标分布:θ<sub>i</sub>(x,y)=arctan(Δy<sub>i</sub>/Δx<sub>i</sub>)      (1)其中,(x,y)表示矢量的图像坐标,Δx、Δy分别表示矢量在x和y方向的大小;然后以Δθ为角度区间建立矢量方向在0‑359°范围内的全局角度直方图;接下来依次搜索各角度区间,将矢量数量最多的区间标记为流动主方向θ<sub>M</sub>;最后以角度阈值θ<sub>TH</sub>为判别窗口识别每个矢量的类型,并建立矢量类型标志如下:<maths num="0001" id="cmaths0001"><math><![CDATA[<mrow><msub><mi>F</mi><mi>i</mi></msub><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>=</mo><mfenced open = "{" close = ""><mtable><mtr><mtd><mrow><mn>0</mn><mo>,</mo></mrow></mtd><mtd><mrow><mo>|</mo><msub><mi>&theta;</mi><mi>i</mi></msub><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>-</mo><msub><mi>&theta;</mi><mi>M</mi></msub><mo>|</mo><mo>&gt;</mo><msub><mi>&theta;</mi><mrow><mi>T</mi><mi>H</mi></mrow></msub></mrow></mtd></mtr><mtr><mtd><mrow><mn>1</mn><mo>,</mo></mrow></mtd><mtd><mrow><mo>|</mo><msub><mi>&theta;</mi><mi>i</mi></msub><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>-</mo><msub><mi>&theta;</mi><mi>M</mi></msub><mo>|</mo><mo>&le;</mo><msub><mi>&theta;</mi><mrow><mi>T</mi><mi>H</mi></mrow></msub></mrow></mtd></mtr></mtable></mfenced><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>2</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000851488410000011.GIF" wi="1302" he="175" /></maths>其中,1表示正确矢量,0表示错误矢量;所述的流场时间滤波过程用下式描述为:<maths num="0002" id="cmaths0002"><math><![CDATA[<mrow><msub><mover><mi>S</mi><mo>&OverBar;</mo></mover><mi>i</mi></msub><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>=</mo><mfenced open = "{" close = ""><mtable><mtr><mtd><mrow><mi>N</mi><mi>U</mi><mi>L</mi><mi>L</mi><mo>,</mo></mrow></mtd><mtd><mrow><msub><mover><mi>F</mi><mo>&OverBar;</mo></mover><mrow><mi>i</mi><mo>-</mo><mn>1</mn></mrow></msub><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>=</mo><mn>0</mn><mo>,</mo><msub><mi>F</mi><mi>i</mi></msub><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>=</mo><mn>0</mn></mrow></mtd></mtr><mtr><mtd><mrow><msub><mi>S</mi><mi>i</mi></msub><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>,</mo></mrow></mtd><mtd><mrow><msub><mover><mi>F</mi><mo>&OverBar;</mo></mover><mrow><mi>i</mi><mo>-</mo><mn>1</mn></mrow></msub><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>=</mo><mn>0</mn><mo>,</mo><msub><mi>F</mi><mi>i</mi></msub><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>=</mo><mn>1</mn></mrow></mtd></mtr><mtr><mtd><mrow><msub><mover><mi>S</mi><mo>&OverBar;</mo></mover><mrow><mi>i</mi><mo>-</mo><mn>1</mn></mrow></msub><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>,</mo></mrow></mtd><mtd><mrow><msub><mover><mi>F</mi><mo>&OverBar;</mo></mover><mrow><mi>i</mi><mo>-</mo><mn>1</mn></mrow></msub><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>=</mo><mn>1</mn><mo>,</mo><msub><mi>F</mi><mi>i</mi></msub><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>=</mo><mn>0</mn></mrow></mtd></mtr><mtr><mtd><mrow><mfrac><mrow><msub><mi>N</mi><mi>i</mi></msub><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>-</mo><mn>1</mn></mrow><mrow><msub><mi>N</mi><mi>i</mi></msub><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow></mrow></mfrac><msub><mover><mi>S</mi><mo>&OverBar;</mo></mover><mrow><mi>i</mi><mo>-</mo><mn>1</mn></mrow></msub><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>+</mo><mfrac><mn>1</mn><mrow><msub><mi>N</mi><mi>i</mi></msub><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow></mrow></mfrac><msub><mi>S</mi><mi>i</mi></msub><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>,</mo></mrow></mtd><mtd><mrow><msub><mover><mi>F</mi><mo>&OverBar;</mo></mover><mrow><mi>i</mi><mo>-</mo><mn>1</mn></mrow></msub><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>=</mo><mn>1</mn><mo>,</mo><msub><mi>F</mi><mi>i</mi></msub><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>=</mo><mn>1</mn></mrow></mtd></mtr></mtable></mfenced><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>3</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000851488410000012.GIF" wi="1774" he="413" /></maths>其中,<img file="FDA0000851488410000013.GIF" wi="430" he="79" />分别为当前和此前时刻的时均矢量;S<sub>i</sub>(x,y)为当前时刻的瞬时矢量;错误矢量标记为“NULL”,以区别于零矢量;N<sub>i</sub>(x,y)为参与当前矢量平均的正确矢量个数;<img file="FDA0000851488410000014.GIF" wi="230" he="82" />F<sub>i</sub>(x,y)分别为此前时均矢量的类型标志和当前瞬时矢量的类型标志,对二者进行或运算得到当前时均矢量的类型标志,如下:<maths num="0003" id="cmaths0003"><math><![CDATA[<mrow><msub><mover><mi>F</mi><mo>&OverBar;</mo></mover><mi>i</mi></msub><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>=</mo><msub><mover><mi>F</mi><mo>&OverBar;</mo></mover><mrow><mi>i</mi><mo>-</mo><mn>1</mn></mrow></msub><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>|</mo><msub><mi>F</mi><mi>i</mi></msub><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>4</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000851488410000015.GIF" wi="1246" he="86" /></maths>其中,“|”表示或运算符,遍历每个所有IA后统计得到正确和错误矢量的个数N<sub>1</sub>和N<sub>0</sub>,则时均流场的矢量正确率为:<maths num="0004" id="cmaths0004"><math><![CDATA[<mrow><msub><mover><mi>P</mi><mo>&OverBar;</mo></mover><mi>i</mi></msub><mo>=</mo><msub><mi>N</mi><mn>1</mn></msub><mo>/</mo><mrow><mo>(</mo><msub><mi>N</mi><mn>1</mn></msub><mo>+</mo><msub><mi>N</mi><mn>0</mn></msub><mo>)</mo></mrow><mo>&times;</mo><mn>100</mn><mi>%</mi><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>5</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000851488410000021.GIF" wi="1260" he="85" /></maths>若<img file="FDA0000851488410000022.GIF" wi="47" he="78" />小于一个阈值P<sub>TH</sub>,则继续处理下一时刻的图像对,直到<img file="FDA0000851488410000023.GIF" wi="52" he="76" />大于P<sub>TH</sub>并且求平均的帧数达到预设的阈值,得到一个包含错误矢量的时均流场和对应的矢量类型查找表;反之则认为时均流场重建失效;所述的错误矢量插值,其特征在于:采用错误矢量邻域内正确矢量的均值对错误矢量进行插值,表示如下:<maths num="0005" id="cmaths0005"><math><![CDATA[<mrow><msub><mover><mi>S</mi><mo>&OverBar;</mo></mover><mi>F</mi></msub><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>=</mo><mfrac><mn>1</mn><mrow><msub><mi>N</mi><mi>T</mi></msub><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow></mrow></mfrac><munderover><mo>&Sigma;</mo><mrow><mi>n</mi><mo>=</mo><mo>-</mo><mn>1</mn></mrow><mn>1</mn></munderover><munderover><mo>&Sigma;</mo><mrow><mi>m</mi><mo>=</mo><mo>-</mo><mn>1</mn></mrow><mn>1</mn></munderover><mover><mi>F</mi><mo>&OverBar;</mo></mover><mrow><mo>(</mo><mi>x</mi><mo>+</mo><mi>n</mi><mo>,</mo><mi>y</mi><mo>+</mo><mi>m</mi><mo>)</mo></mrow><mo>&CenterDot;</mo><mover><mi>S</mi><mo>&OverBar;</mo></mover><mrow><mo>(</mo><mi>x</mi><mo>+</mo><mi>n</mi><mo>,</mo><mi>y</mi><mo>+</mo><mi>m</mi><mo>)</mo></mrow><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>6</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000851488410000024.GIF" wi="1590" he="150" /></maths>其中,N<sub>T</sub>(x,y)表示错误矢量<img file="FDA0000851488410000025.GIF" wi="189" he="79" />邻域内正确矢量的个数,m、n表示相邻矢量的偏移量,对于3×3邻域有‑1≤m≤1、‑1≤n≤1;<img file="FDA0000851488410000026.GIF" wi="332" he="86" />和<img file="FDA0000851488410000027.GIF" wi="319" he="80" />分别表示错误矢量<img file="FDA0000851488410000028.GIF" wi="188" he="86" />的邻域坐标(x+n,y+m)处的时均矢量类型标志和时均矢量大小;所述的流场平滑滤波,其特征在于:采用时均流场<img file="FDA0000851488410000029.GIF" wi="148" he="71" />和滤波器的空域卷积实现,表示为:<maths num="0006" id="cmaths0006"><math><![CDATA[<mrow><mover><mi>S</mi><mo>~</mo></mover><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>=</mo><mover><mi>S</mi><mo>&OverBar;</mo></mover><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>*</mo><mi>G</mi><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>7</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA00008514884100000210.GIF" wi="1198" he="78" /></maths>其中,“*”表示卷积运算,滤波器采用大小为3×3的归一化二维离散高斯窗,表示为:<maths num="0007" id="cmaths0007"><math><![CDATA[<mrow><mi>G</mi><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>=</mo><mfrac><mn>1</mn><mn>16</mn></mfrac><mfenced open = "[" close = "]"><mtable><mtr><mtd><mn>1</mn></mtd><mtd><mn>2</mn></mtd><mtd><mn>1</mn></mtd></mtr><mtr><mtd><mn>2</mn></mtd><mtd><mn>4</mn></mtd><mtd><mn>2</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mn>2</mn></mtd><mtd><mn>1</mn></mtd></mtr></mtable></mfenced><mo>.</mo><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>8</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA00008514884100000211.GIF" wi="1238" he="231" /></maths>
地址 211100 江苏省南京市江宁区佛城西路8号