ENVI IDL實現每個波段訊雜比計算

2021-08-25 22:26:01 字數 1245 閱讀 7446

在研究影象質量評價時,可以使用訊雜比(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為影象訊雜比,

;波段平均標準差除以該波段的平均值,得到訊雜比

sn[ib]=singal/noise

5.下面為計算gf2多光譜每個波段的訊雜比:

參考:1.《遙感二次開發語言idl>>-徐永明

ENVI IDL波段運算

完成對波段的一下運算 1 將陣列中小於0的賦值為 999,如下 b1 lt 0 0 999 b1 ge 0 b12 求三個波段的平均值,如果某波段小於0,則不參與運算,如下 b1 0 b2 0 b3 0 b1 ge 0 b2 ge 0 b3 ge 0 1 3 不同波段兩幅影象,b1中的雲部分 象元大...

Python 實現遙感影像波段組合

最近要做個遙感相關的小系統,需要波段組合功能,網上找了可以使用arcgis安裝時自帶的arcpy包,但是python3.7不能使用現有arcgis10.2版本,也不想再裝其他版本,所以只能自己想了個辦法解決。不過有點笨啊。思路是 上 from osgeo import gdal import os ...

專案實現過程的每個階段

功能性需求與非功能性需求 用例圖的組成 參與者 用例 系統邊界。如何識別參與者?誰主要作業系統?誰向系統提供資訊?系統是否已經和存在的系統存在互動?如何獲取用例?參與者希望系統執行什麼任務?在系統中訪問什麼資訊?uml中的四種關係 關聯 參與者和用例之間的關係,表示啟動用例。包含 兩個用例之間的關係...