十月小mumu 2024-04-01 16:11 采纳率: 75%
浏览 4

ENVI+IDL显示错误

; 步骤1:云检测
function Cloud_Detection, band4, band5, TIR
  return, (band4 + band5 > 0.70) and (TIR < 240)
end

; 步骤2:水体检测
function Water_Detection, band3, band5, TIR
  NDWI = (band3 - band5) / (band3 + band5)
  return, (band5 < 0.17) and (NDWI > 0.10) and (TIR < 305)
end

; 步骤3:高温可疑像元检测
function High_Temperature_Suspect, TIR; vegetation_mask
  return, (TIR > 260) ;and vegetation_mask
end

; 步骤4:背景像元的亮温统计
function Background_Temperature_Stats, TIR, suspect_fire_mask, window_size
  dim = size(TIR, /dimensions)
  bg_temp_avg = fltarr(dim[0], dim[1])
  bg_temp_stddev = fltarr(dim[0], dim[1])

  for i=0, dim[0]-1 do begin
    for j=0, dim[1]-1 do begin
      if suspect_fire_mask[i, j] ne 0 then begin
        x_start = max(i-window_size, 0)
        x_end = min(i+window_size, dim[0]-1)
        y_start = max(j-window_size, 0)
        y_end = min(j+window_size, dim[1]-1)

        window = TIR[x_start:x_end, y_start:y_end]
        ; 检查window是否为空
        if n_elements(window) eq 0 or n_elements(where(window ne TIR[i,j])) eq 0 then continue

        window = window[where(window ne TIR[i,j])]
        bg_temp_avg[i,j] = mean(window)
        bg_temp_stddev[i,j] = stddev(window)
      endif
    endfor
  endfor

  return, [bg_temp_avg, bg_temp_stddev]
end


; 步骤5:着火像元确认
function Fire_Pixel_Confirmation, TIR, bg_temp_avg, bg_temp_stddev, suspect_fire_mask
  dim = size(TIR, /dimensions)
  fire_mask = bytarr(dim[0], dim[1])

  for i=0, dim[0]-1 do begin
    for j=0, dim[1]-1 do begin
      if suspect_fire_mask[i, j] and TIR[i,j] > (bg_temp_avg[i,j] + 3*bg_temp_stddev[i,j]) then begin
        fire_mask[i,j] = 1
      endif
    endfor
  endfor

  return, fire_mask
end

; 主程序
pro Main
  ; 加载和预处理GF-4 PMI数据,假设已完成,各波段赋值给相应变量
  ; 加载植被掩膜,假设为vegetation_mask
  file = 'E:\桌面1\大创\dataprocess\预处理后数据\贵州\08\MERGE.tif'
  image = READ_TIFF(file)
  
 ; 注意:您需要根据实际情况调整下面的代码来匹配您数据的波段结构
  band3 = image[*, *, 2]
  band4 = image[*, *, 3]
  band5 = image[*, *, 4]
  TIR = image[*, *, 5]  ; 假设TIR为第6波段
  
  cloud_mask = Cloud_Detection(band4, band5, TIR)
  water_mask = Water_Detection(band3, band5, TIR)
  suspect_fire_mask = High_Temperature_Suspect(TIR)
  result = Background_Temperature_Stats(TIR, suspect_fire_mask, 2)
  bg_temp_avg = result[0]
  bg_temp_stddev = result[1]
  fire_mask = Fire_Pixel_Confirmation(TIR, bg_temp_avg, bg_temp_stddev, suspect_fire_mask)

  ; 输出结果
  TVScl, fire_mask
end

代码应该是有问题 显示如图

img


请问应该怎么解决

  • 写回答

3条回答 默认 最新

  • 码农阿豪@新空间代码工作室 Java领域优质创作者 2024-04-01 16:11
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    可能是由于代码中出现了“”这种html标签,导致显示异常。建议将代码粘贴到编辑器中,将所有的“”替换为“”,再重新复制粘贴到文本编辑器中即可。
    评论

报告相同问题?

问题事件

  • 创建了问题 4月1日

悬赏问题

  • ¥15 angular项目错误
  • ¥20 需要帮我远程操控一下,运行一下我的那个代码,我觉得我无能为力了
  • ¥20 有偿:在ubuntu上安装arduino以及其常用库文件。
  • ¥15 请问用arcgis处理一些数据和图形,通常里面有一个根据点划泰森多边形的命令,直接划的弊端是只能执行一个完整的边界,但是我们有时候会用到需要在有很多边界内利用点来执行划泰森多边形的命令
  • ¥30 在wave2foam中执行setWaveField时遇到了如下的浮点异常问题,请问该如何解决呢?
  • ¥750 关于一道数论方面的问题,求解答!(关键词-数学方法)
  • ¥200 csgo2的viewmatrix值是否还有别的获取方式
  • ¥15 Stable Diffusion,用Ebsynth utility在视频选帧图重绘,第一步报错,蒙版和帧图没法生成,怎么处理啊
  • ¥15 请把下列每一行代码完整地读懂并注释出来
  • ¥15 寻找公式识别开发,自动识别整页文档、图像公式的软件