IDL实现TM遥感影像直方图统计(中值、均值、方差、众数及峰度系数计算)


1 代码


近红外波段:

Pro statistic_tm
  fn=dialog_pickfile(title='Plesse choose image:')
  tm_img=read_image(fn)
  sz=size(tm_img)
  n_columns=sz[2] & n_raws=sz[3]
  ;window,0,xsize=n_columns,ysize=n_raws
  ;tvscl,tm_img,/true
  ;tm_ref=reform(tm_img,)
  tm_rgb=tm_img[0:2,*,*]
  tm_nir=tm_img[3,*,*]
  tm_r=tm_img[2,*,*]
  tm_g=tm_img[1,*,*]
  tm_b=tm_img[0,*,*]
  tm_sf=[tm_nir,tm_r,tm_g]
  ;szr=size(tm_r)
  ;n_c=szr[2] & n_r=szr[3]

  ;statastic
  MED=median(tm_nir)
  MEA=mean(tm_nir)
  VAR=variance(tm_nir)
  KUR=kurtosis(tm_nir)
  His=histogram(tm_nir,nbins=100,locations=locations,omin=omim,omax=omax)
  Sel=where(His EQ max(His))
  MODE=tm_nir[Sel[0]]
  
  MED_label='Median='+string(MED,format='(f5.2)')
  MEA_label='Mean='+string(MEA,format='(f5.2)')
  VAR_label='Variance='+string(VAR,format='(f7.2)')
  KUR_label='Kurtosis='+string(KUR,format='(f5.2)')
  MOD_label='Mode='+string(MODE,format='(f5.2)')
 
  p1=plot(locations,His,linestyle=0,color='red',thick=2,dimensions=[600,400],$
  title='Histogram Of NIR Band',window_title='Histogram',xrange=[0,200],yrange=[0,10000])
  t1=text(0.20,0.80,MED_label,target=p1,font_size=12)
  t2=text(0.20,0.75,MEA_label,target=p1,font_size=12)
  t3=text(0.20,0.70,VAR_label,target=p1,font_size=12)
  t4=text(0.20,0.65,KUR_label,target=p1,font_size=12)
  t5=text(0.20,0.60,MOD_label,target=p1,font_size=12)

  ;window,0,xsize=n_columns,ysize=n_raws
  ;tvscl,tm_img,/true

  ;imgshow_r=image(tm_r,dimension=[n_c,n_r],margin=0,title='TM Image of R',window_title='True R')
  ;imgshow_false=image(tm_sf,dimension=[n_columns,n_raws],margin=0,title='TM Image of Standared False',window_title='False Image')
  ;imgshow_true.save,'true.jpeg',resolution=600
  ;imgshow_false.save,'false.jpeg',resolution=600
End

注:以上代码是TM近红外波段统计与直方图显示,其他波段类似只需换一下如下代码,如统计红波段改为:

 ;statastic
  MED=median(tm_r)
  MEA=mean(tm_r)
  VAR=variance(tm_r)
  KUR=kurtosis(tm_r)
  His=histogram(tm_r,nbins=100,locations=locations,omin=omim,omax=omax)
  Sel=where(His EQ max(His))
  MODE=tm_r[Sel[0]]
p1=plot(locations,His,linestyle=0,color='red',thick=2,dimensions=[600,400],$
  title='Histogram Of R Band',window_title='Histogram',xrange=[0,200],yrange=[0,12000])

2 结果:


近红外波段直方图统计:
Landsat TM影像近红外波段直方图显示

简书分享

此时的你,

无与伦比!

  • 2
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
IDL是一款强大的数据处理软件,其中包括遥感图像处理的相关功能。IDL中可以使用直方图匹配技术来进行遥感图像的增强和匹配。 以下是IDL中进行遥感图像直方图匹配的示例代码: ```IDL ;读取原始图像 orig_img = READ_IMAGE('original_image.tif') ;读取目标图像 target_img = READ_IMAGE('target_image.tif') ;计算原始图像和目标图像的直方图 orig_hist = HISTOGRAM(orig_img, bins=256, min=0, max=255) target_hist = HISTOGRAM(target_img, bins=256, min=0, max=255) ;计算原始图像和目标图像的累积分布函数(CDF) orig_cdf = CUMULATIVE_DISTRIBUTION(orig_hist) target_cdf = CUMULATIVE_DISTRIBUTION(target_hist) ;将原始图像的每个像素值根据CDF映射到目标图像的像素值上,实现直方图匹配 matched_img = INTERPOLATE(target_cdf, orig_cdf, orig_img) ;将匹配后的图像保存 WRITE_IMAGE, matched_img, 'matched_image.tif', /OVERWRITE ``` 以上代码实现了遥感图像直方图匹配的基本流程。具体来说,代码通过`READ_IMAGE`函数读取原始图像和目标图像,然后通过`HISTOGRAM`函数计算它们的直方图。接着,使用`CUMULATIVE_DISTRIBUTION`函数计算它们的累积分布函数(CDF),并将原始图像的每个像素值根据CDF映射到目标图像的像素值上,实现直方图匹配。最后,使用`WRITE_IMAGE`函数将匹配后的图像保存。 如果您需要更加详细的IDL遥感图像直方图匹配示例代码或者其他遥感图像处理的相关问题,请告诉我具体需求,我会尽力帮助您。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值