ENVI/IDL實現每個波段信噪比計算
在研究影象質量評價時,可以使用信噪比(SNR)的方法。信噪比,顧名思義就是訊號與噪聲的比例,那麼對於遙感影像來說,每個波段都有一個信噪比,這個值越大,說明該波段噪聲越小。
基於區域性方差法計算遙感影像的信噪比,具體步驟如下:
1.邊緣提取--------基於Canny運算元對影象進行邊緣提取,結果為二值影象;邊緣值為1,非邊緣值為0。
data=envi_get_data(fid=fid, dims=dims, pos=ib)
mask=canny(data,high=0.8,low=0.4,sigma=0.6);canny演算法提取邊緣
2.邊緣塊剔除--------按照規定字塊尺寸(4x4)對整個影象進行分塊,統計每一個子塊中是否包含有邊緣值,若有則將該子塊剔除,不再參加後面的信噪比估算。
;分塊尺寸
width=4
ns_new=ns/width & nl_new=nl/width
nosie_subset=fltarr(ns_new,nl_new)
singal_subset=fltarr(ns_new,nl_new)
;如果當前塊含有邊緣,則進入下一像元
tmask=mask[i*width:(i+1)*width-1,j*width:(j+1)*width-1]
3. 區域性方差法估算噪聲值--------計算每一個子塊的區域性標準差和均值,在區域性標準差最小值與平均值的1.2倍之間劃分150個區間,按標準差大小將各子塊落入到相應的區間,以此計算得到直方圖。根據直方圖統計出包含子塊最多的區間,計算區間內標準差的平均值作為噪聲估計值。
;計算直方圖,找出最多快的區間,計算該區間的平均標準差,即影象噪聲
binsize=(mean(nosie_subset))*1.2-min(nosie_subset)/150
ht=histogram(nosie_subset,binsize=binsize,locations=locations)
maxv=max(ht,index);統計直方圖中哪個區間的塊最多
4.信噪比計算--------統計剔除邊緣塊後的像元平均值作為估計值:
上式中,SNR為影象信噪比,為影象均值,LSD為噪聲估計值
;波段平均標準差除以該波段的平均值,得到信噪比
SN[ib]=singal/noise
5.下面為計算GF2多光譜每個波段的信噪比:
參考:1.<<遙感二次開發語言IDL>>-徐永明
下載地址:https://download.csdn.net/download/qq_33356563/10627554