发明名称 一种用于克服有理函数模型病态性的改进的奇异值修正方法
摘要 本发明有效地克服了遥感影像有理函数模型成像过程中的病态性问题,可以应用于遥感影像成像领域。有理函数模型理论的提出已经有若干年,其系数解算过程中的病态性问题一直得不到有效的解决,本发明基于对系数矩阵奇异值的修改,提高小奇异值部分的稳定性,从而保证了解算过程的稳定。该方法可以用于多种遥感影像的正射纠正。
申请公布号 CN101719118B 申请公布日期 2013.05.29
申请号 CN200910223584.8 申请日期 2009.11.24
申请人 中国科学院对地观测与数字地球科学中心 发明人 陈立波;焦伟利
分类号 G06F17/16(2006.01)I;G01S7/48(2006.01)I 主分类号 G06F17/16(2006.01)I
代理机构 代理人
主权项 1.一种用于克服遥感影像有理函数模型病态性的改进的奇异值修正方法,其步骤为:步骤(1):读取已经标准化后的卫星遥感影像数据;步骤(2):利用标准化数据,构建遥感影像有理函数模型的系数矩阵,矩阵的生成方式如下所示:有理函数模型基本方程式:<maths num="0001"><![CDATA[<math><mrow><msub><mi>r</mi><mi>n</mi></msub><mo>=</mo><mfrac><mrow><msub><mi>p</mi><mn>1</mn></msub><mrow><mo>(</mo><msub><mi>X</mi><mi>n</mi></msub><mo>,</mo><msub><mi>Y</mi><mi>n</mi></msub><mo>,</mo><msub><mi>Z</mi><mi>n</mi></msub><mo>)</mo></mrow></mrow><mrow><msub><mi>p</mi><mn>2</mn></msub><mrow><mo>(</mo><msub><mi>X</mi><mi>n</mi></msub><mo>,</mo><msub><mi>Y</mi><mi>n</mi></msub><mo>,</mo><msub><mi>Z</mi><mi>n</mi></msub><mo>)</mo></mrow></mrow></mfrac></mrow></math>]]></maths><img file="FSB00000960407800012.GIF" wi="110" he="40" /><maths num="0002"><![CDATA[<math><mrow><msub><mi>c</mi><mi>n</mi></msub><mo>=</mo><mfrac><mrow><msub><mi>p</mi><mn>3</mn></msub><mrow><mo>(</mo><msub><mi>X</mi><mi>n</mi></msub><mo>,</mo><msub><mi>Y</mi><mi>n</mi></msub><mo>,</mo><msub><mi>Z</mi><mi>n</mi></msub><mo>)</mo></mrow></mrow><mrow><msub><mi>p</mi><mn>4</mn></msub><mrow><mo>(</mo><msub><mi>X</mi><mi>n</mi></msub><mo>,</mo><msub><mi>Y</mi><mi>n</mi></msub><mo>,</mo><msub><mi>Z</mi><mi>n</mi></msub><mo>)</mo></mrow></mrow></mfrac></mrow></math>]]></maths>其中:<maths num="0003"><![CDATA[<math><mrow><mi>p</mi><mo>=</mo><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mn>0</mn></mrow><msub><mi>m</mi><mn>1</mn></msub></munderover><munderover><mi>&Sigma;</mi><mrow><mi>j</mi><mo>=</mo><mn>0</mn></mrow><msub><mi>m</mi><mn>2</mn></msub></munderover><munderover><mi>&Sigma;</mi><mrow><mi>k</mi><mo>=</mo><mn>0</mn></mrow><msub><mi>m</mi><mn>3</mn></msub></munderover><msub><mi>a</mi><mi>ijk</mi></msub><msup><mi>X</mi><mi>i</mi></msup><msup><mi>Y</mi><mi>j</mi></msup><msup><mi>Z</mi><mi>k</mi></msup><mo>=</mo><msub><mi>a</mi><mn>0</mn></msub><mo>+</mo><msub><mi>a</mi><mn>1</mn></msub><mi>Z</mi><mo>+</mo><msub><mi>a</mi><mn>2</mn></msub><mi>Y</mi><mo>+</mo><msub><mi>a</mi><mn>3</mn></msub><mi>X</mi><mo>+</mo><msub><mi>a</mi><mn>4</mn></msub><mi>ZX</mi><mo>+</mo><msub><mi>a</mi><mn>5</mn></msub><mi>ZY</mi><mo>+</mo><msub><mi>a</mi><mn>6</mn></msub><mi>YX</mi><mo>+</mo><msub><mi>a</mi><mn>7</mn></msub><msup><mi>Z</mi><mn>2</mn></msup><mo>+</mo><msub><mi>a</mi><mn>8</mn></msub><msup><mi>Y</mi><mn>2</mn></msup></mrow></math>]]></maths><maths num="0004"><![CDATA[<math><mrow><mo>+</mo><msub><mi>a</mi><mn>9</mn></msub><msup><mi>X</mi><mn>2</mn></msup><mo>+</mo><msub><mi>a</mi><mn>10</mn></msub><mi>ZYX</mi><mo>+</mo><msub><mi>a</mi><mn>11</mn></msub><msup><mi>Z</mi><mn>2</mn></msup><mi>Y</mi><mo>+</mo><msub><mi>a</mi><mn>12</mn></msub><msup><mi>Z</mi><mn>2</mn></msup><mo>+</mo><msub><mi>a</mi><mn>13</mn></msub><msup><mi>Y</mi><mn>2</mn></msup><mi>Z</mi><mo>+</mo><msub><mi>a</mi><mn>14</mn></msub><msup><mi>Y</mi><mn>2</mn></msup><mi>X</mi></mrow></math>]]></maths><maths num="0005"><![CDATA[<math><mrow><mo>+</mo><msub><mi>a</mi><mn>15</mn></msub><msup><mi>ZX</mi><mn>2</mn></msup><mo>+</mo><msub><mi>a</mi><mn>16</mn></msub><msup><mi>YX</mi><mn>2</mn></msup><mo>+</mo><msub><mi>a</mi><mn>17</mn></msub><msup><mi>Z</mi><mn>3</mn></msup><mo>+</mo><msub><mi>a</mi><mn>18</mn></msub><msup><mi>Y</mi><mn>3</mn></msup><mo>+</mo><msub><mi>a</mi><mn>19</mn></msub><msup><mi>X</mi><mn>3</mn></msup><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>1</mn><mo>-</mo><mn>2</mn><mo>)</mo></mrow></mrow></math>]]></maths>构建误差方程:<maths num="0006"><![CDATA[<math><mrow><msub><mi>v</mi><mi>r</mi></msub><mo>=</mo><mfrac><mrow><mfenced open='(' close=')'><mtable><mtr><mtd><mn>1</mn></mtd><mtd><mi>Z</mi></mtd><mtd><mi>Y</mi></mtd><mtd><mi>Z</mi></mtd><mtd><mo>.</mo><mo>.</mo><mo>.</mo></mtd><mtd><msup><mi>Y</mi><mn>3</mn></msup></mtd><mtd><msup><mi>X</mi><mn>3</mn></msup></mtd></mtr></mtable></mfenced><msup><mfenced open='(' close=')'><mtable><mtr><mtd><msub><mi>a</mi><mn>0</mn></msub></mtd><mtd><msub><mi>a</mi><mn>1</mn></msub></mtd><mtd><mo>.</mo><mo>.</mo><mo>.</mo></mtd><mtd><msub><mi>a</mi><mn>19</mn></msub></mtd></mtr></mtable></mfenced><mi>T</mi></msup></mrow><mrow><mfenced open='(' close=')'><mtable><mtr><mtd><mn>1</mn></mtd><mtd><mi>Z</mi></mtd><mtd><mi>Y</mi></mtd><mtd><mi>X</mi></mtd><mtd><mo>.</mo><mo>.</mo><mo>.</mo></mtd><mtd><msup><mi>Y</mi><mn>3</mn></msup></mtd><mtd><msup><mi>X</mi><mn>3</mn></msup></mtd></mtr></mtable></mfenced><msup><mfenced open='(' close=')'><mtable><mtr><mtd><mn>1</mn></mtd><mtd><msub><mi>b</mi><mn>1</mn></msub></mtd><mtd><mo>.</mo><mo>.</mo><mo>.</mo></mtd><mtd><msub><mi>b</mi><mn>19</mn></msub></mtd></mtr></mtable></mfenced><mi>T</mi></msup></mrow></mfrac><mo>-</mo><mi>r</mi></mrow></math>]]></maths><img file="FSB00000960407800018.GIF" wi="127" he="84" /><maths num="0007"><![CDATA[<math><mrow><msub><mi>v</mi><mi>c</mi></msub><mo>=</mo><mfrac><mrow><mfenced open='(' close=')'><mtable><mtr><mtd><mn>1</mn></mtd><mtd><mi>Z</mi></mtd><mtd><mi>Y</mi></mtd><mtd><mi>Z</mi></mtd><mtd><mo>.</mo><mo>.</mo><mo>.</mo></mtd><mtd><msup><mi>Y</mi><mn>3</mn></msup></mtd><mtd><msup><mi>X</mi><mn>3</mn></msup></mtd></mtr></mtable></mfenced><msup><mfenced open='(' close=')'><mtable><mtr><mtd><msub><mi>c</mi><mn>0</mn></msub></mtd><mtd><msub><mi>c</mi><mn>1</mn></msub></mtd><mtd><mo>.</mo><mo>.</mo><mo>.</mo></mtd><mtd><msub><mi>c</mi><mn>19</mn></msub></mtd></mtr></mtable></mfenced><mi>T</mi></msup></mrow><mrow><mfenced open='(' close=')'><mtable><mtr><mtd><mn>1</mn></mtd><mtd><mi>Z</mi></mtd><mtd><mi>Y</mi></mtd><mtd><mi>X</mi></mtd><mtd><mo>.</mo><mo>.</mo><mo>.</mo></mtd><mtd><msup><mi>Y</mi><mn>3</mn></msup></mtd><mtd><msup><mi>X</mi><mn>3</mn></msup></mtd></mtr></mtable></mfenced><msup><mfenced open='(' close=')'><mtable><mtr><mtd><mn>1</mn></mtd><mtd><msub><mi>d</mi><mn>1</mn></msub></mtd><mtd><mo>.</mo><mo>.</mo><mo>.</mo></mtd><mtd><msub><mi>d</mi><mn>19</mn></msub></mtd></mtr></mtable></mfenced><mi>T</mi></msup></mrow></mfrac><mo>-</mo><mi>c</mi></mrow></math>]]></maths>设定<maths num="0008"><![CDATA[<math><mrow><mfenced open='{' close=''><mtable><mtr><mtd><mi>B</mi><mo>=</mo><mfenced open='(' close=')'><mtable><mtr><mtd><mn>1</mn></mtd><mtd><mi>Z</mi></mtd><mtd><mi>Y</mi></mtd><mtd><mi>X</mi></mtd><mtd><mo>.</mo><mo>.</mo><mo>.</mo></mtd><mtd><msup><mi>Y</mi><mn>3</mn></msup></mtd><mtd><msup><mi>X</mi><mn>3</mn></msup></mtd></mtr></mtable></mfenced><msup><mfenced open='(' close=')'><mtable><mtr><mtd><mn>1</mn></mtd><mtd><msub><mi>b</mi><mn>1</mn></msub></mtd><mtd><mo>.</mo><mo>.</mo><mo>.</mo></mtd><mtd><msub><mi>b</mi><mn>19</mn></msub></mtd></mtr></mtable></mfenced><mi>T</mi></msup></mtd></mtr><mtr><mtd><mi>J</mi><mo>=</mo><msup><mfenced open='(' close=')'><mtable><mtr><mtd><msub><mi>a</mi><mn>0</mn></msub></mtd><mtd><mrow><msub><mi>a</mi><mn>1</mn></msub></mrow></mtd><mtd><mo>.</mo><mo>.</mo><mo>.</mo></mtd><mtd><msub><mi>a</mi><mn>19</mn></msub></mtd><mtd><msub><mi>b</mi><mn>1</mn></msub></mtd><mtd><msub><mi>b</mi><mn>2</mn></msub></mtd><mtd><mo>.</mo><mo>.</mo><mo>.</mo></mtd><mtd><msub><mi>b</mi><mn>19</mn></msub></mtd></mtr></mtable></mfenced><mi>T</mi></msup></mtd></mtr><mtr><mtd><mi>D</mi><mo>=</mo><mfenced open='(' close=')'><mtable><mtr><mtd><mn>1</mn></mtd><mtd><mi>Z</mi></mtd><mtd><mi>Y</mi></mtd><mtd><mi>X</mi></mtd><mtd><mo>.</mo><mo>.</mo><mo>.</mo></mtd><mtd><msup><mi>Y</mi><mn>3</mn></msup></mtd><mtd><msup><mi>X</mi><mn>3</mn></msup></mtd></mtr></mtable></mfenced><msup><mfenced open='(' close=')'><mtable><mtr><mtd><mn>1</mn></mtd><mtd><msub><mi>d</mi><mn>1</mn></msub></mtd><mtd><mo>.</mo><mo>.</mo><mo>.</mo></mtd><mtd><msub><mi>d</mi><mn>19</mn></msub></mtd></mtr></mtable></mfenced><mi>T</mi></msup></mtd></mtr><mtr><mtd><mi>K</mi><mo>=</mo><msup><mfenced open='(' close=')'><mtable><mtr><mtd><msub><mi>c</mi><mn>0</mn></msub></mtd><mtd><msub><mi>c</mi><mn>1</mn></msub></mtd><mtd><mo>.</mo><mo>.</mo><mo>.</mo></mtd><mtd><msub><mi>c</mi><mn>19</mn></msub></mtd><mtd><msub><mi>d</mi><mn>1</mn></msub></mtd><mtd><msub><mi>d</mi><mn>2</mn></msub></mtd><mtd><mo>.</mo><mo>.</mo><mo>.</mo></mtd><mtd><msub><mi>d</mi><mn>19</mn></msub></mtd></mtr></mtable></mfenced><mi>T</mi></msup></mtd></mtr></mtable></mfenced><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>1</mn><mo>-</mo><mn>4</mn><mo>)</mo></mrow></mrow></math>]]></maths>利用(1-4)化简(1-1)可得:<maths num="0009"><![CDATA[<math><mrow><msub><mi>v</mi><mi>r</mi></msub><mo>=</mo><mfenced open='[' close=']'><mtable><mtr><mtd><mfrac><mn>1</mn><mi>B</mi></mfrac></mtd><mtd><mfrac><mi>Z</mi><mi>B</mi></mfrac></mtd><mtd><mfrac><mi>Y</mi><mi>B</mi></mfrac></mtd><mtd><mfrac><mi>X</mi><mi>B</mi></mfrac></mtd><mtd><mo>.</mo><mo>.</mo><mo>.</mo></mtd><mtd><mfrac><msup><mi>Y</mi><mn>3</mn></msup><mi>B</mi></mfrac></mtd><mtd><mfrac><msup><mi>X</mi><mn>3</mn></msup><mi>B</mi></mfrac></mtd><mtd><mo>-</mo><mfrac><mi>rZ</mi><mi>B</mi></mfrac></mtd><mtd><mo>-</mo><mfrac><mi>rY</mi><mi>B</mi></mfrac></mtd><mtd><mo>.</mo><mo>.</mo><mo>.</mo></mtd><mtd><mo>-</mo><mfrac><msup><mi>rY</mi><mn>3</mn></msup><mi>B</mi></mfrac></mtd><mtd><mo>-</mo><mfrac><msup><mi>rX</mi><mn>3</mn></msup><mi>B</mi></mfrac></mtd></mtr></mtable></mfenced><mo>&CenterDot;</mo><mi>J</mi><mo>-</mo><mfrac><mi>r</mi><mi>B</mi></mfrac></mrow></math>]]></maths><img file="FSB000009604078000112.GIF" wi="111" he="41" /><maths num="0010"><![CDATA[<math><mrow><msub><mi>v</mi><mi>c</mi></msub><mo>=</mo><mfenced open='[' close=']'><mtable><mtr><mtd><mfrac><mn>1</mn><mi>D</mi></mfrac></mtd><mtd><mfrac><mi>Z</mi><mi>D</mi></mfrac></mtd><mtd><mfrac><mi>Y</mi><mi>D</mi></mfrac></mtd><mtd><mfrac><mi>X</mi><mi>D</mi></mfrac></mtd><mtd><mo>.</mo><mo>.</mo><mo>.</mo></mtd><mtd><mfrac><msup><mi>Y</mi><mn>3</mn></msup><mi>D</mi></mfrac></mtd><mtd><mfrac><msup><mi>X</mi><mn>2</mn></msup><mi>D</mi></mfrac></mtd><mtd><mo>-</mo><mfrac><mi>cZ</mi><mi>D</mi></mfrac></mtd><mtd><mo>-</mo><mfrac><mi>cY</mi><mi>D</mi></mfrac></mtd><mtd><mo>.</mo><mo>.</mo><mo>.</mo></mtd><mtd><mo>-</mo><mfrac><msup><mi>cY</mi><mn>3</mn></msup><mi>D</mi></mfrac></mtd><mtd><mfrac><msup><mi>cX</mi><mn>3</mn></msup><mi>D</mi></mfrac></mtd></mtr></mtable></mfenced><mo>&CenterDot;</mo><mi>K</mi><mo>-</mo><mfrac><mi>c</mi><mi>D</mi></mfrac></mrow></math>]]></maths>为简便起见,只按(1-5)中的第一式列出误差方程(第二式与此类似):<img file="FSB00000960407800021.GIF" wi="1893" he="295" />步骤(3):求解初始值,第一次求解要结合奇异值分解,利用增大较小奇异值的方法求解,具体做法为:设t为截断奇异值法保留的最小奇异值的门限,q为对应小于t的奇异值个数,用以下公式进行奇异值修正:a<sub>k</sub>′=a<sub>k</sub>,k≤m-q<maths num="0011"><![CDATA[<math><mrow><msup><msub><mi>&alpha;</mi><mi>k</mi></msub><mo>&prime;</mo></msup><mo>=</mo><mfrac><msub><mi>&alpha;</mi><mi>max</mi></msub><mn>1000</mn></mfrac><mo>,</mo><mi>k</mi><mo>></mo><mi>m</mi><mo>-</mo><mi>q</mi></mrow></math>]]></maths>其中,m为奇异值的总个数,a<sub>k</sub>为修改前的第k个奇异值,a<sub>k</sub>′为相应修改后的奇异值,<maths num="0012"><![CDATA[<math><mrow><mi>t</mi><mo>=</mo><mfrac><msub><mi>&alpha;</mi><mi>max</mi></msub><mn>1000</mn></mfrac><mo>;</mo></mrow></math>]]></maths>相应的修改后的奇异值矩阵为:D′=diag(a<sub>1</sub>′,α<sub>2</sub>′…a<sub>k</sub>′…α<sub>m</sub>′);步骤(4):设定循环条件,迭代解算,这里的循环条件是连续两次解的差的中误差和最大循环次数,当中误差大于设定阈值并且未达到最大循环次数时利用增大较小奇异值的方法进行循环迭代求解,否则求解结束;步骤(5):利用步骤(4)解算的最后的解构建遥感影像有理函数模型;步骤(6):利用检查数据进行模型的精度验证。
地址 100086 北京市海淀区北三环西路45号