清晰度的计算

对于清晰度的计算,我查看了一些文献,其中涉及的算法原理基本相同,本日志主要是采用较早的一种算法是如何在idl中实现的,其中的一些参数的理解还需要深入研究,有什么不足之处请大家多多指教!

发表这篇文章主要是想给大家介绍一下3*3窗口的遍历运算过程,希望对大家所有帮助!

PRO Information

COMPILE_OPT idl2
ENVI, /restore_base_save_files
envi_batch_init
infile = ENVI_PICKFILE(title = '请选择要打开的文件:')
ENVI_OPEN_FILE, infile, r_fid=fid
IF (fid EQ -1) THEN BEGIN
ENVI_BATCH_EXIT
RETURN
ENDIF
ENVI_FILE_QUERY, fid, dims=dims, nb=nb ,nl=nl,ns=ns
pos = LINDGEN(nb)
; proj = ENVI_GET_PROJECTION(FID = fid,pixel_size=Dx)
Dx = 1
; print,Dx
; data = indgen(nl,ns)
;
;;清晰度的计算
;
FOR g=0,nb-1 DO BEGIN
data = ENVI_GET_DATA(DIMS=dims, FID=fid , POS=g)
new_data = make_array(ns,nl)
HELP,data
Den = nl*ns
; print,Den
;ns&nl写反了
FOR i = 1,ns-2 DO BEGIN
FOR j = 1,nl-2 DO BEGIN
;获取一个3*3的窗口
t= data[[i-1]:[i+1],[j-1]:[j+1]]
; help,t
;对每个窗口做计算
d1=ABS((t[0,0]-t[1,1])/(Dx*1.414))
d2=ABS(t[0,1]-t[1,1])/(Dx*1.0)
d3=ABS(t[0,2]-t[1,1])/(Dx*1.414)
d4=ABS(t[1,0]-t[1,1])/(Dx*1.0)
d5=ABS(t[1,2]-t[1,1])/(Dx*1.0)
d6=ABS(t[2,0]-t[1,1])/(Dx*1.414)
d7=ABS(t[2,1]-t[1,1])/(Dx*1.0)
d8=ABS(t[2,2]-t[1,1])/(Dx*1.414)
;计算每个窗口的df/dx
new_data[i,j]=d1+d2+d3+d4+d5+d6+d7+d8

ENDFOR
ENDFOR
dd = total(new_data)
; print,dd
utdata = (dd/Den)/1000
print,outdata
;
;;保存文件
;
utfile = infile+'_band'+StrTrim(g,2)+'.txt'
; utfile = dialog_pickfile(title = '保存结果到TXT文档:',filter = '*.txt')
print,outfile
openw,lun,outfile,/get_lun

printf,lun,'清晰度:',outdata

free_lun,lun

ENDFOR

END


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值