OIF值的计算

from PIL import Image
import matplotlib.pyplot as plt
import scipy.stats as sts
import numpy as np
import cv2 as cv
from numpy import cov,corrcoef
from scipy.special import comb, perm
from itertools import combinations, permutations
img1 = np.array(cv.imread("LC08_L1TP_121034_20170626_20170713_01_T1_B1.TIF",1))
img2 = np.array(cv.imread("LC08_L1TP_121034_20170626_20170713_01_T1_B2.TIF",1))
img3 = np.array(cv.imread("LC08_L1TP_121034_20170626_20170713_01_T1_B3.TIF",1))
img4 = np.array(cv.imread("LC08_L1TP_121034_20170626_20170713_01_T1_B4.TIF",1))
img5 = np.array(cv.imread("LC08_L1TP_121034_20170626_20170713_01_T1_B5.TIF",1))
img6 = np.array(cv.imread("LC08_L1TP_121034_20170626_20170713_01_T1_B6.TIF",1))
img7 = np.array(cv.imread("LC08_L1TP_121034_20170626_20170713_01_T1_B7.TIF",1))
IMGN2P=[img1,img2,img3,img4,img5,img6,img7]   ### 二维矩阵数组

img1np=np.array(img1).flatten()   
img2np=np.array(img2).flatten() 
img3np=np.array(img3).flatten() 
img4np=np.array(img4).flatten() 
img5np=np.array(img5).flatten() 
img6np=np.array(img6).flatten() 
img7np=np.array(img7).flatten() 
IMGNP=[img1np,img2np,img3np,img4np,img5np,img6np,img7np]   ###  一维矩阵数组
### 创建 数组
mean=[0.00,1.00,2.00,3.00,4.00,5.00,6.00]   # 均值数组
ptp=range(7) #   极差
var=range(7) #  方差
std=range(7)# 标准差
mean=np.array(mean)          ###  均值矩阵
ptp=np.array(ptp,dtype=float)   ###   极差矩阵
var=np.array(var,dtype=float)   ###   方差矩阵
std=np.array(std,dtype=float)   ###   标准差
###cov corrcof   ###### 协方差矩阵    
data1 =  np.array([img1np,img2np]) ##波段1.2
cove = cov(data1,bias=1)
print("波段1 2  协方差:",cove)
print("波段1 2 相关系数: ",corrcoef(data1))

###1 2 3 波段OIF
Sk=std[0]+std[1]+std[2]
data2= np.array([img1np,img3np])  ## 波段 1  3
data3=np.array([img2np,img3np])  ##波段 2 3
R1=abs(corrcoef(data1).min())
R2=abs(corrcoef(data2).min())
R3=abs(corrcoef(data3).min())
R=R1+R2+R3
OIF=Sk/R
print("OIF(1 2 3 ) : \n",OIF)

# ncb73=comb(7,3)
nstd=list(range(100))
# ncb72=comb(7,2)
ncorrcoef=range(21)
k=0
npcrroef=np.zeros((7,7),dtype=float)
for x in range(6):   ###相关系数
    mxk=x
    for y in range(1,6-x):
        mxk=mxk+1
        ndata=np.array([IMGNP[x],IMGNP[mxk]])   ### ju zhen  qiu xiang guan xi shu 相关系数矩阵  12  13 ....
        npcrroef[x][mxk]=abs(corrcoef(ndata).min())
        k=k+1
m2=0
mk=0
for x in  range(5):
    m2=m2+1
    men=m2
    for y in range(5-m2):
        men=men+1
        nstd[mk]=std[x]+std[m2]+std[men]
for x in range(35):
    if x < 5:
        nco = npcrroef[0][x+2]+npcrroef[0][1]+npcrroef[1][x+2]
        OIF = nstd[x]/nco
        print("OIF( 1 2 ",x+3," )",OIF)
    elif x < 9:
        nco = npcrroef[0][2]+npcrroef[0][x-2]+npcrroef[2][x-2]
        OIF = nstd[x]/nco
        print("OIF(1 3 ",x-1," )",OIF)
    elif x < 12:
        nco = npcrroef[0][3]+npcrroef[0][x-5]+npcrroef[3][x-5]
        OIF = nstd[x]/nco
        print("OIF ( 1 4 ",x-4," )",OIF)
    elif x < 14:
        nco = npcrroef[0][4]+npcrroef[0][x-7]+npcrroef[4][x-7]
        OIF= nstd[x]/nco
        print("OIF ( 1 5 ",x-7," )",OIF)
    elif x <15:
        nco = npcrroef[0][5]+npcrroef[0][6]+npcrroef[5][6]
        OIF= nstd[x]/nco
        print("OIF ( 1 6 7)",OIF)
    elif x < 19:
        nco = npcrroef[1][2]+npcrroef[1][x-12]+npcrroef[2][x-12]
        OIF=nstd[x]/nco
        print("OIF ( 2 3 ",x-11," )",OIF)
    elif x < 22:
        nco=npcrroef[1][3]+npcrroef[1][x-15]+npcrroef[3][x-15]
        OIF=nstd[x]/nco
        print("OIF ( 2 4 ",x-14," )",OIF)
    elif x< 24:
        nco=npcrroef[1][4]+npcrroef[1][x-17]+npcrroef[4][x-17]
        OIF=nstd[x]/nco
        print("OIF (2 5 ",x-16," )",OIF)
    elif x <25:
        nco=npcrroef[1][5]+npcrroef[1][x-18]+npcrroef[5][x-18]
        OIF=nstd[x]/nco
        print("OIF (2 6 7)",OIF)
    elif x < 28:
        nco = npcrroef[2][3]+npcrroef[2][x-21]+npcrroef[3][x-21]
        OIF=nstd[x]/nco
        print("OIF (3 4 ",x-20,OIF)
    elif x < 30:
         nco=npcrroef[2][4]+npcrroef[2][x-23]+npcrroef[4][x-23]
         OIF=nstd[x]/nco
         print("OIF (3 5 ",x-22," )",OIF)
    elif x < 31:
        nco=npcrroef[2][5]+npcrroef[2][6]+npcrroef[5][6]
        OIF=nstd[x]/nco
        print("OIF (3 6 7)",OIF)
    elif x < 33:
        nco=npcrroef[3][4]+npcrroef[3][x-26]+npcrroef[4][x-26]
        OIF=nstd[x]/nco
        print("OIF (4 5 ",x-25," )",OIF)
    elif x<34:
        nco=npcrroef[3][5]+npcrroef[3][6]+npcrroef[5][6]
        OIF=nstd[x]/nco
        print("OIF (4 6 7)",OIF)
    elif x <35:
        nco=npcrroef[4][5]+npcrroef[4][6]+npcrroef[5][6]
        OIF=nstd[x]/nco
        print("OIF( 5 6 7)",OIF)

  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
oif-cei-3.0是一种光学互连框架的标准,用于定义光纤通信系统中的电子和光学接口。这个标准的制定是为了提高光纤通信的可靠性、灵活性和可互操作性。 oif-cei-3.0标准中涉及的一些主要特性包括: 1. 高速传输能力:oif-cei-3.0支持高速数据传输,可以在10 Gbps以上的速率下进行可靠的信号传输,以满足日益增长的数据需求。 2. 电接口标准化:该标准规定了电接口的定义、电信号的传输要求以及接口波特率等参数,以确保不同设备之间的电连接性能和兼容性。 3. 光接口标准化:oif-cei-3.0还定义了光接口的规范,包括光纤连接的几何形状、插拔特性以及光功率和波长要求等,以确保光接口的一致性和互操作性。 4. 电光互连:该标准也包括了光电互连的规范,即将电信号转换为光信号进行传输,并在接收端将光信号转换回电信号。这种光电互连技术可以提高信号传输的速度和距离,减少信号干扰和损耗。 5. 应用广泛:oif-cei-3.0适用于各种光纤通信系统,包括数据中心、电信网络、通信设备等,在提供高速、稳定、可靠的通信传输方面具有重要的作用。 总之,oif-cei-3.0是一种具有高性能和互操作性的光学互连标准,可以为光纤通信系统的开发和应用提供重要的支持。该标准的制定和遵循将有助于提高通信系统的性能和可靠性,促进光纤通信技术的进一步发展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值