python矩阵图像rgb_python实现计算RGB图像协方差矩阵

代码如下:

import cv2

import numpy as np

from matplotlib import pyplot as plt

# 计算三波段协方差

'''

1.读取图像BGR三个波段的元素

2.分别计算三个波段元素平均值

3.计算cov协方差

4.得出协方差矩阵

'''

def Cov(image):

w = image.shape[0]

h = image.shape[1]

b = [0]*w*h

g = [0]*w*h

r = [0]*w*h

for i in range(w):  # 获得BGR三个波段的像素值

for j in range(h):

for k in range(1):

B = image[i,j,k+0]

G = image[i,j,k+1]

R = image[i,j,k+2]

b[i*h+j] = B

g[i*h+j] = G

r[i*h+j] = R

# 计算平均值

all_b = 0  # 像素值总和

all_g = 0

all_r = 0

for i in range(w*h):

all_b += b[i]

all_g += g[i]

all_r += r[i]

mean_b = int(all_b/(w*h-1))    # 像素值平均值 取整

mean_g = int(all_g/(w*h-1))

mean_r = int(all_r/(w*h-1))

#计算协方差

cov_bb = 0

cov_bg = 0

cov_br = 0

cov_gb = 0

cov_gg = 0

cov_gr = 0

cov_rb = 0

cov_rg = 0

cov_rr = 0

for i in range(w*h):

cov_bb += (b[i]-mean_b)*(b[i]-mean_b)

cov_bg += (b[i]-mean_b)*(g[i]-mean_g)

cov_br += (b[i]-mean_b)*(r[i]-mean_r)

cov_gb += (g[i]-mean_g)*(b[i]-mean_b)

cov_gg += (g[i]-mean_g)*(g[i]-mean_g)

cov_gr += (g[i]-mean_g)*(r[i]-mean_r)

cov_rb += (r[i]-mean_r)*(b[i]-mean_b)

cov_rg += (r[i]-mean_r)*(g[i]-mean_g)

cov_rr += (r[i]-mean_r)*(r[i]-mean_r)

m = w*h-1

print('协方差矩阵:')

print(cov_bb/m,'\t',cov_bg/m,'\t',cov_br,'\n',cov_gb/m,'\t',cov_gg/m,'\t',cov_gr/m,'\n',cov_rb/m,'\t',cov_rg/m,'\t',cov_rr/m,'\n')

# 读入图像

image = cv2.imread('JuZi.jpg')

#cv2.imshow('Tu xiang',image)

Cov(image)

cv2.waitKey(0)

cv2.destroyAllWindows()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值