阅读:2172回复:0
利用IDL自定义函数进行波段运算
<P>利用<FONT face="Times New Roman">IDL</FONT>自定义<FONT face="Times New Roman">founctions</FONT>进行波段运算</P>
<P><FONT face="Times New Roman">1、 </FONT>运行<FONT face="Times New Roman">ENVI+IDL</FONT></P> <P><FONT face="Times New Roman">2、 </FONT>在<FONT face="Times New Roman">IDL</FONT>中编写计算表达式,表达是的名称为BM_RATIO,如:</P> <P><FONT face="Times New Roman">function bm_ratio, b1, b2, check=check</FONT></P> <P><FONT face="Times New Roman"> den = float(b1) - b2</FONT></P> <P><FONT face="Times New Roman"> if (keyword_set(check)) then ptr = where(den eq 0., count) $</FONT></P> <P><FONT face="Times New Roman"> else count = 0</FONT></P> <P><FONT face="Times New Roman"> if (count gt 0) then den[ptr] = 1.0</FONT></P> <P><FONT face="Times New Roman"> result = (float(b1) + b2) / den</FONT></P> <P><FONT face="Times New Roman"> if (count gt 0) then result[ptr] = 0.0</FONT></P> <P><FONT face="Times New Roman"> return, result</FONT></P> <P><FONT face="Times New Roman">end</FONT></P> <P>其中红色为变量</P> <P><FONT face="Times New Roman">3</FONT>、在<FONT face="Times New Roman">IDL</FONT>中按<FONT face="Times New Roman">Ctrl+F5,</FONT>对程序进行调试,当在<FONT face="Times New Roman">IDL</FONT>中的<FONT face="Times New Roman">outlog</FONT>窗口中出现“<FONT face="Times New Roman">Compiled module:</FONT> <FONT face="Times New Roman">BM_RATIO</FONT>”如图所示:<br><IMG><br> <P> <P align=center><v:shapetype><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path gradientshapeok="t" extrusionok="f" connecttype="rect"></v:path><LOCK aspectratio="t" v:ext="edit"></LOCK></v:shapetype><v:shape><v:imagedata></v:imagedata></v:shape></P> <P><FONT face="Times New Roman">4</FONT>、在<FONT face="Times New Roman">ENVI</FONT>中<FONT face="Times New Roman">File</FONT>菜单中打开一个多波段的影像文件,用<FONT face="Times New Roman">RGB</FONT>模式显示图像,然后在<FONT face="Times New Roman">Basic tools</FONT>中选择<FONT face="Times New Roman">Band Match</FONT>如图所示:</P> <P align=center><v:shape><v:imagedata></v:imagedata></v:shape></P> <P>在图中输入<FONT face="Times New Roman">bm_ratio</FONT>(<FONT face="Times New Roman">b1, b2</FONT>)然后点击<FONT face="Times New Roman">ok</FONT>即可,其余的问题即可非常容易的解决。</P><IMG> [此贴子已经被作者于2009-2-26 11:06:14编辑过]
|
|