shxyzhlj
路人甲
路人甲
  • 注册日期2009-02-20
  • 发帖数1
  • QQ
  • 铜币109枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:2032回复:0

利用IDL自定义函数进行波段运算

楼主#
更多 发布于:2009-02-26 10:52
<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编辑过]
喜欢0 评分0
游客

返回顶部