发明名称 结合空间信息的高光谱分类结果优化方法
摘要 本发明公开了一种结合空间信息的高光谱分类结果优化方法。常规的高光谱图像分类技术主要关注于如何更好地利用光谱空间的分类信息,往往忽视图像空间域信息。本发明在利用数据进行自身光谱特征分类的同时采用自适应阈值边缘提取和内部膨胀法相结合的空间域有效信息对光谱分类结果进行补充。本发明首先采用基于支持向量机的分类方法对数据进行谱域分类。之后采用自适应阈值边缘提取和内部膨胀法引入空间域有效信息对光谱分类结果进行修正。本发明更加充分地利用了高光谱数据包含的信息,提高了高光谱图像分类精度。
申请公布号 CN103886326B 申请公布日期 2016.12.07
申请号 CN201410064547.8 申请日期 2014.02.25
申请人 杭州电子科技大学 发明人 郭宝峰;陈春种;吴香伟;彭冬亮;谷雨;左燕
分类号 G06K9/62(2006.01)I;G06K9/46(2006.01)I 主分类号 G06K9/62(2006.01)I
代理机构 杭州君度专利代理事务所(特殊普通合伙) 33240 代理人 杜军
主权项 结合空间信息的高光谱分类结果优化方法,其特征在于该方法包括以下步骤:1)高光谱谱域分类;首先对数据做归一化处理,并依据先验知识,在每个地物类别区域内,随机的选取一定比例的训练样本构成训练样本集;然后进行分类器的训练,采用的分类器为支持向量机;最后用训练好的分类器进行数据的测试,即能得到谱域分类的结果;2)自适应阈值边缘提取;自适应阈值边缘提取分为提取多波段梯度图和用一个自适应阈值二值化处理两部分;2.1)提取多波段梯度图,具体是:第一步:选择n个目标边缘清晰的波段组成用于目标边缘提取的数据集;并计算各波段每个像素点在横坐标和纵坐标下的偏导数:<maths num="0001"><math><![CDATA[<mrow><msub><mi>u</mi><mi>n</mi></msub><mo>=</mo><mfrac><mrow><mo>&part;</mo><mi>f</mi><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow></mrow><mrow><mo>&part;</mo><mi>x</mi></mrow></mfrac><mo>,</mo><mi>n</mi><mo>=</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>3</mn><mo>...</mo><mo>...</mo><mi>m</mi><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0001051929100000011.GIF" wi="1318" he="119" /></maths><maths num="0002"><math><![CDATA[<mrow><msub><mi>v</mi><mi>n</mi></msub><mo>=</mo><mfrac><mrow><mo>&part;</mo><mi>f</mi><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow></mrow><mrow><mo>&part;</mo><mi>y</mi></mrow></mfrac><mo>,</mo><mi>n</mi><mo>=</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>3</mn><mo>...</mo><mo>...</mo><mi>m</mi><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>2</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0001051929100000012.GIF" wi="1310" he="127" /></maths>其中f(n)表示每波段数据;第二步:计算各波段偏导数点乘的和:<maths num="0003"><math><![CDATA[<mrow><msub><mi>g</mi><mrow><mi>x</mi><mi>x</mi></mrow></msub><mo>=</mo><munderover><mo>&Sigma;</mo><mrow><mi>n</mi><mo>=</mo><mn>1</mn></mrow><mi>m</mi></munderover><mrow><mo>(</mo><msub><mi>u</mi><mi>n</mi></msub><mo>&CenterDot;</mo><msub><mi>u</mi><mi>n</mi></msub><mo>)</mo></mrow><mo>=</mo><munderover><mo>&Sigma;</mo><mrow><mi>n</mi><mo>=</mo><mn>1</mn></mrow><mi>m</mi></munderover><mrow><mo>(</mo><msup><msub><mi>u</mi><mi>n</mi></msub><mi>T</mi></msup><msub><mi>u</mi><mi>n</mi></msub><mo>)</mo></mrow><mo>=</mo><mfrac><mrow><mo>&part;</mo><mi>f</mi><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow></mrow><mrow><mo>&part;</mo><mi>x</mi></mrow></mfrac><mo>&CenterDot;</mo><mfrac><mrow><mo>&part;</mo><mi>f</mi><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow></mrow><mrow><mo>&part;</mo><mi>x</mi></mrow></mfrac><mo>+</mo><mfrac><mrow><mo>&part;</mo><mi>f</mi><mrow><mo>(</mo><mn>2</mn><mo>)</mo></mrow></mrow><mrow><mo>&part;</mo><mi>x</mi></mrow></mfrac><mo>&CenterDot;</mo><mfrac><mrow><mo>&part;</mo><mi>f</mi><mrow><mo>(</mo><mn>2</mn><mo>)</mo></mrow></mrow><mrow><mo>&part;</mo><mi>x</mi></mrow></mfrac><mo>+</mo><mo>...</mo><mo>...</mo><mo>+</mo><mfrac><mrow><mo>&part;</mo><mi>f</mi><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow></mrow><mrow><mo>&part;</mo><mi>x</mi></mrow></mfrac><mo>&CenterDot;</mo><mfrac><mrow><mo>&part;</mo><mi>f</mi><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow></mrow><mrow><mo>&part;</mo><mi>x</mi></mrow></mfrac><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>3</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0001051929100000013.GIF" wi="1790" he="127" /></maths><maths num="0004"><math><![CDATA[<mrow><msub><mi>g</mi><mrow><mi>y</mi><mi>y</mi></mrow></msub><mo>=</mo><munderover><mo>&Sigma;</mo><mrow><mi>n</mi><mo>=</mo><mn>1</mn></mrow><mi>m</mi></munderover><mrow><mo>(</mo><msub><mi>v</mi><mi>n</mi></msub><mo>&CenterDot;</mo><msub><mi>v</mi><mi>n</mi></msub><mo>)</mo></mrow><mo>=</mo><munderover><mo>&Sigma;</mo><mrow><mi>n</mi><mo>=</mo><mn>1</mn></mrow><mi>m</mi></munderover><mrow><mo>(</mo><msup><msub><mi>v</mi><mi>n</mi></msub><mi>T</mi></msup><msub><mi>v</mi><mi>n</mi></msub><mo>)</mo></mrow><mo>=</mo><mfrac><mrow><mo>&part;</mo><mi>f</mi><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow></mrow><mrow><mo>&part;</mo><mi>y</mi></mrow></mfrac><mo>&CenterDot;</mo><mfrac><mrow><mo>&part;</mo><mi>f</mi><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow></mrow><mrow><mo>&part;</mo><mi>y</mi></mrow></mfrac><mo>+</mo><mfrac><mrow><mo>&part;</mo><mi>f</mi><mrow><mo>(</mo><mn>2</mn><mo>)</mo></mrow></mrow><mrow><mo>&part;</mo><mi>y</mi></mrow></mfrac><mo>&CenterDot;</mo><mfrac><mrow><mo>&part;</mo><mi>f</mi><mrow><mo>(</mo><mn>2</mn><mo>)</mo></mrow></mrow><mrow><mo>&part;</mo><mi>y</mi></mrow></mfrac><mo>+</mo><mo>...</mo><mo>...</mo><mo>+</mo><mfrac><mrow><mo>&part;</mo><mi>f</mi><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow></mrow><mrow><mo>&part;</mo><mi>y</mi></mrow></mfrac><mo>&CenterDot;</mo><mfrac><mrow><mo>&part;</mo><mi>f</mi><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow></mrow><mrow><mo>&part;</mo><mi>y</mi></mrow></mfrac><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>4</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0001051929100000014.GIF" wi="1774" he="128" /></maths><maths num="0005"><math><![CDATA[<mrow><msub><mi>g</mi><mrow><mi>x</mi><mi>y</mi></mrow></msub><mo>=</mo><munderover><mo>&Sigma;</mo><mrow><mi>n</mi><mo>=</mo><mn>1</mn></mrow><mi>m</mi></munderover><mrow><mo>(</mo><msub><mi>u</mi><mi>n</mi></msub><mo>&CenterDot;</mo><msub><mi>v</mi><mi>n</mi></msub><mo>)</mo></mrow><mo>=</mo><munderover><mo>&Sigma;</mo><mrow><mi>n</mi><mo>=</mo><mn>1</mn></mrow><mi>m</mi></munderover><mrow><mo>(</mo><msup><msub><mi>u</mi><mi>n</mi></msub><mi>T</mi></msup><msub><mi>v</mi><mi>n</mi></msub><mo>)</mo></mrow><mo>=</mo><mfrac><mrow><mo>&part;</mo><mi>f</mi><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow></mrow><mrow><mo>&part;</mo><mi>x</mi></mrow></mfrac><mo>&CenterDot;</mo><mfrac><mrow><mo>&part;</mo><mi>f</mi><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow></mrow><mrow><mo>&part;</mo><mi>y</mi></mrow></mfrac><mo>+</mo><mfrac><mrow><mo>&part;</mo><mi>f</mi><mrow><mo>(</mo><mn>2</mn><mo>)</mo></mrow></mrow><mrow><mo>&part;</mo><mi>x</mi></mrow></mfrac><mo>&CenterDot;</mo><mfrac><mrow><mo>&part;</mo><mi>f</mi><mrow><mo>(</mo><mn>2</mn><mo>)</mo></mrow></mrow><mrow><mo>&part;</mo><mi>y</mi></mrow></mfrac><mo>+</mo><mo>...</mo><mo>...</mo><mo>+</mo><mfrac><mrow><mo>&part;</mo><mi>f</mi><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow></mrow><mrow><mo>&part;</mo><mi>x</mi></mrow></mfrac><mo>&CenterDot;</mo><mfrac><mrow><mo>&part;</mo><mi>f</mi><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow></mrow><mrow><mo>&part;</mo><mi>y</mi></mrow></mfrac><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>5</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0001051929100000015.GIF" wi="1677" he="127" /></maths>即可得到3个矩阵;第三步:计算最大变化率方向θ和该方向上的变化率F(θ):<maths num="0006"><math><![CDATA[<mrow><mi>&theta;</mi><mo>=</mo><mfrac><mn>1</mn><mn>2</mn></mfrac><mi>a</mi><mi>r</mi><mi>c</mi><mi>t</mi><mi>a</mi><mi>n</mi><mo>&lsqb;</mo><mfrac><mrow><mn>2</mn><msub><mi>g</mi><mrow><mi>x</mi><mi>y</mi></mrow></msub></mrow><mrow><mo>(</mo><msub><mi>g</mi><mrow><mi>x</mi><mi>y</mi></mrow></msub><mo>-</mo><msub><mi>g</mi><mrow><mi>y</mi><mi>y</mi></mrow></msub><mo>)</mo></mrow></mfrac><mo>&rsqb;</mo><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>6</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0001051929100000021.GIF" wi="1218" he="167" /></maths><maths num="0007"><math><![CDATA[<mrow><mi>F</mi><mrow><mo>(</mo><mi>&theta;</mi><mo>)</mo></mrow><mo>=</mo><msup><mrow><mo>{</mo><mfrac><mn>1</mn><mn>2</mn></mfrac><mo>&lsqb;</mo><mrow><mo>(</mo><msub><mi>g</mi><mrow><mi>x</mi><mi>x</mi></mrow></msub><mo>+</mo><msub><mi>g</mi><mrow><mi>y</mi><mi>y</mi></mrow></msub><mo>)</mo></mrow><mo>+</mo><mrow><mo>(</mo><msub><mi>g</mi><mrow><mi>x</mi><mi>x</mi></mrow></msub><mo>-</mo><msub><mi>g</mi><mrow><mi>y</mi><mi>y</mi></mrow></msub><mo>)</mo></mrow><mi>c</mi><mi>o</mi><mi>s</mi><mn>2</mn><mi>&theta;</mi><mo>+</mo><mn>2</mn><msub><mi>g</mi><mrow><mi>x</mi><mi>y</mi></mrow></msub><mi>s</mi><mi>i</mi><mi>n</mi><mn>2</mn><mi>&theta;</mi><mo>&rsqb;</mo><mo>}</mo></mrow><mfrac><mn>1</mn><mn>2</mn></mfrac></msup><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>7</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0001051929100000022.GIF" wi="1396" he="175" /></maths>即可得到多波段数据边缘梯度图F(θ);2.2)自适应阈值二值化处理,具体是:首先,根据同一靶标的像素点应该是成区域分布这一特性,把光谱域分类结果点自动分为多块区域,并计算每一块区域的中心点;然后,以每个中心点为圆心,画一个圆,半径根据每块区域目标点聚类的个数求得,选择圆的面积是分块区域像素点的3倍,这样就能基本覆盖每个目标,提取圆内的梯度图,从而能得到N幅目标梯度图;同时计算每个圆内像素梯度的均值K<sub>N</sub>,根据公式T<sub>N</sub>=aK<sub>N</sub>+b                        (8)计算得到每个圆内梯度图的阈值T<sub>N</sub>,其中a=2,b=‑0.39;最后,用每个阈值T<sub>N</sub>对每个圆内梯度图进行二值化处理和边缘细化处理,即能得到N个目标的边缘;求并集,即是所有目标的边缘;3)内部膨胀,具体是:第一步:提取目标现有的像素点,并判断每一个像素点(i,j)是否在每个轮廓区域内,判断的步骤为:(1)选取与该像素点同行的轮廓点坐标(X<sub>1n</sub>,Y<sub>1n</sub>),n=1,2,...和与该像素点同列的轮廓点坐标(X<sub>2m</sub>,Y<sub>2m</sub>),m=1,2,...;(2)如果存在<img file="FDA0001051929100000024.GIF" wi="261" he="61" />且<img file="FDA0001051929100000025.GIF" wi="343" he="75" />则可判断该像素点在目标区域内部;第二步:如果该像素点在目标内部,则对该点进行一次膨胀,新得到的点归为目标点;其中,膨胀操作采用的模板为:<maths num="0008"><math><![CDATA[<mrow><mi>p</mi><mo>=</mo><mfenced open = "[" close = "]"><mtable><mtr><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>1</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd></mtr></mtable></mfenced></mrow>]]></math><img file="FDA0001051929100000023.GIF" wi="288" he="221" /></maths>第三步:重复步骤第一步和第二步,直到没有点增加时结束;第四步:对结果做并集就能得到目标和轮廓的叠加图;减掉所有轮廓点即能得到纯目标点,对图像再做一次膨胀;即可得到最终的结果图。
地址 310018 浙江省杭州市下沙高教园区2号大街