爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3817|回复: 0

做图形旋转时,IDL下标超出范围,求大神指教

[复制链接]
发表于 2014-10-31 13:57:30 | 显示全部楼层 |阅读模式
ME/IDL/ENVI
系统平台: windows 7 32bits
问题截图: -
问题概况: 用IDL编写在ENVi中读取jpg格式的图片并进行旋转,最后显示下标超出范围.程序如下
使用语言: IDL
我看过提问的智慧: 看过
自己思考时长(天): 3

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
pro imageEhance
ENVI_SELECT, title='choose two file', fid=in_fid
   ENVI_FILE_QUERY, in_fid, ns=ns, nl=nl, nb=nb, fname=fname
   OpenR, unit, fname, /Get_LUN
   info = FSTAT(unit)
   Free_LUN, unit
   print, 'you selected ',fname
   print, 'number of samples = ',ns
   print, 'number of lines = ',nl
   print, 'number of bands = ',nb
   print, 'file size in bytes = ',info.size
   dims = [-1, 0, ns-1, 0, nl-1]
   fid =in_fid
   GET_LUN,U
   PixelVal = ULINDGEN(ns, nl,3)
   Pixel=ULINDGEN(round(ns*2),round(nl*2),3)
   Pixel(*,*,*)=0
   nb_i=0
   for k=0,2 do begin
    PixelVal(*,*,k)= ENVI_GET_DATA(fid=fid, dims=dims, pos=k)
    for j=0,nl-1 do begin
     for i=0,ns-1 do begin
     x=round(i*cos(!pi/6)-j*sin(!pi/6))     ;旋转30°,60°为!pi/3,45°为!pi/4,90°为!pi/2
     y=round(i*sin(!pi/6)+j*cos(!pi/6))
     Pixel(x+ns,y+nl,k)=PixelVal(i,j,k)
     endfor
    endfor
    for j=0,round(ns*2)-2 do begin
     for i=0,round(nl*2)-1 do begin
      if(Pixel(i,j,k) eq 0 ) then begin
      Pixel(i,j,k)=Pixel(i,j+1,k)
      endif
     endfor
    endfor
   endfor
   close,fid
   close,U
   free_lun, U
   ENVI_WRITE_ENVI_FILE,Pixel,out_name='enchancedImage.img'
   showEnd=dialog_message('读取完毕')
   END
这个程序本身是没有问题的,但是最后显示的是subscript out of range,我用的版本是ENVI4.3。我想知道哪边需要改的,谢谢啦

密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表