1. 程式人生 > >ENVI/IDL實現每個波段信噪比計算

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