麻辣GIS微信平台

更多 GIS 干货

微信关注不错过

IDL实现同态滤波

什么是同态滤波

同态滤波是把频率过滤和灰度变换结合起来的一种图像处理方法,它依靠图像的照度/ 反射率模型作为频域处理的基础,利用压缩亮度范围和增强对比度来改善图像的质量。

同态滤波原理

将像元灰度值看作是照度和反射率两个组份的产物。由于照度相对变化很小,可以看作是图像的低频成份,而反射率则是高频成份。通过分别处理照度和反射率对像元灰度值的影响,达到揭示阴影区细节特征的目的。

同态滤波流程

全部代码

;Name: 同态滤波
;Time: 2013-12-19
;Author: 尹全超

PRO item_b_2
  
  ;读取图像
  file =  DIALOG_PICKFILE(/READ, FILTER = '*.bmp')
  binary_img = READ_BMP(file)
  img01 = image(binary_img,LAYOUT=[2,1,1],title='Original')
  
  ;过滤无效数据(避免灰度为0)
  ind0=where(binary_img eq 0)
  IF(ind0[0] ne -1) THEN BEGIN
    binary_img[ind0]=1
  ENDIF
  
  ;ln运算
  lndata=alog(binary_img)

  ;快速傅里叶变换
  ffTransform = FFT(lndata, /CENTER)

  ;频域滤波
  ;巴特沃斯 高通滤波
  ;交互输入D0和阶数
  low_row=N_elements(ffTransform[0,*])
  low_col=N_elements(ffTransform[*,0])
  order_low=2
  d0_low=60
  btlow=dblarr(low_col,low_row)
  FOR i=0,low_row-1 DO BEGIN
    FOR j=0,low_col-1 DO BEGIN
      btlow[j,i]=1.0/(1.0+(d0_low/float(sqrt(ULONG((i-low_row)*(i-low_row)+(j-low_col/2)*(j-low_col/2)))))^(2*order_low))
    ENDFOR
  ENDFOR
  
  ;反傅里叶变换
  LffTransform=FFT(ffTransform*btlow,/INVERSE,/CENTER)
  
  ;取指数
  reldata=exp(LffTransform)
  img02 = IMAGE(reldata,/CURRENT,LAYOUT=[2,1,2],title='Result')
  
END

效果图

麻辣GIS-Sailor
作者:
GIS爱好者,学GIS,更爱玩GIS。
微博关注
手机阅读
赞赏支持
手机阅读
微信捐助麻辣GIS
微信打赏
支付宝捐助麻辣GIS
支付宝打赏

声明

1.本文所分享的所有需要用户下载使用的内容(包括但不限于软件、数据、图片)来自于网络或者麻辣GIS粉丝自行分享,版权归该下载资源的合法拥有者所有,如有侵权请第一时间联系本站删除。

2.下载内容仅限个人学习使用,请切勿用作商用等其他用途,否则后果自负。

3.如果本文对您有所帮助,请您对我们团队进行 打赏捐助让我们在传播3S的路上可以走得更远,不胜感激。PS:如果你是学生党,请优先把经费用于购买学习资料 以及 与小哥哥/小姐姐约会上:-)

如您有疑问,可在文末留言,或到麻辣GIS QQ群中提问。

QQ群(一):291616564 加入QQ群

QQ群(二):166408035 加入QQ群

QQ群(三):627853279 加入QQ群

QQ群(四):436386604 加入QQ群

QQ群(五):606176554 加入QQ群

QQ群(六):946178380 加入QQ群

QQ群(七):861271808 加入QQ群

新疆互助群:910717627 加入QQ群

微信公众号:malagis,扫描右边二维码直接关注。

已有 7 条评论

  1. 麻辣GIS-落叶随风
    1#
    落叶随风  · 2014-04-22 20:10

    请问,用IDL语言怎么保存自定义路径图片?

      1. 麻辣GIS-木丁西
        木丁西  · 2014-04-22 21:48

        我是用这种方法,http://malagis.com/idl-save-image-object-graphic.html

  2. 麻辣GIS-落叶随风
    2#
    落叶随风  · 2014-04-23 10:15

    好的,非常感谢!

      1. 麻辣GIS-木丁西
        木丁西  · 2014-04-23 11:04

        不必客气~

  3. 麻辣GIS-TTT
    3#
    TTT  · 2015-12-16 21:24

    你好,我在自己试验的过程中发现运行不了,IF(ind0[ 这句有错误,请问要怎么修改呢?

      1. 麻辣GIS-Sailor
        Sailor  · 2015-12-16 22:41

        你好,是代码转义的问题,不好意思,我现在修改了代码,您重新运行一下试试看看。有什么问题可以继续留言。

  4. 麻辣GIS-点点
    4#
    点点  · 2020-09-25 09:52

    你好,可以对同态滤波进行一点算法改进,引入空域平滑滤波,来处理一些高频区的云,然后用IDL实现,对ENVI二次开发吗?

发表评论