零均值单位方差

这几天在看文章的时候,看到这么一段话:

“First, we normalize the grayscale intensity in the eye region for each of the aligned facial images to zero mean and unit variance.”

意思就是第一步对眼睛的区域进行零均值单位方差。第一次知道还有这玩意。。

经过查阅matlab prestd函数就代表了这个意思:

试验一下:

>> a=[1 2 3 4]

a =

     1     2     3     4

>> [pn m std]=prestd(a)
Warning: PRESTD is an obsolete function.
> In obs_fcn at 18
  In prestd at 10
          Use MAPSTD instead.

pn =

   -1.1619   -0.3873    0.3873    1.1619

m =

    2.5000

std =

    1.2910

>>

其中pn代表已经零均值单位方差的矩阵,m代表a的均值  std代表a的方差

转成C++代码就应该是这样:

    int a = 2;
    int b = 2;
    double  gray[2 * 2] = { 1,2,3,4 };
    double total = 0.0;
    for (int i = 0; i < b; i++)
    {
        for (int j = 0; j < a; j++)
        {
            total += (double)gray[i*a + j];
        }
    }
    double meanvalue = total / (a*b);
    //零均值单位方差
    double stdp = 0.0;
    for (int i = 0; i < b; i++)
    {
        for (int j = 0; j < a; j++)
        {
            double temp = gray[i*a + j];
            stdp += ((temp - meanvalue)*(temp - meanvalue));
        }
    }

    stdp = sqrt(stdp / (a*b));
    qDebug() << meanvalue << " " << stdp;
    for (int i = 0; i < b; i++)
    {
        for (int j = 0; j < a; j++)
        {
            double temp = gray[i*a + j];
            qDebug()<<i<<" "<<j<<" "<<(temp - meanvalue) / stdp;
        }
    }

咱们看一下结果输出:

发现在方差的值就不一样了。为什么呢,

原来方差还存在偏差的概念;

 double meanvalue = total / (a*b);//有偏差为n
 double meanvalue = total / (a*b-1);//无偏差的方差n-1而matlab默认是无偏差的方差,所以我们只要用无偏差替换到有偏差就和metlab相对应了。

 

时间: 2024-10-10 13:04:16

零均值单位方差的相关文章

数学之路-python计算实战(7)-机器视觉-图像产生加性零均值高斯噪声

图像产生加性零均值高斯噪声,在灰度图上加上噪声,加上噪声的方式是每个点的灰度值加上一个噪声值,噪声值的产生方式为Box-Muller算法生成高斯噪声. 在计算机模拟中,经常需要生成正态分布的数值.最基本的一个方法是使用标准的正态累积分布函数的反函数.除此之外还有其他更加高效的方法,Box-Muller变换就是其中之一.另一个更加快捷的方法是ziggurat算法.下面将介绍这两种方法.一个简单可行的并且容易编程的方法是:求12个在(0,1)上均匀分布的和,然后减6(12的一半).这种方法可以用在很

R_Studio(贷款)数据规范化处理[最小-最大规范化、零-均值规范化、小数定标规范化]

农场申请贷款.csv 对"农场申请贷款.csv"中农场大小.降雨量.农场质量.农场收入进行数据规范化处理 行数[4 5 6 7] "农场申请贷款.csv"中存在缺失值,已对数据进行预处理 setwd('D:\\data') list.files() #数据读取 dat=read.csv(file="农场申请贷款.csv",header=TRUE) sub=which(is.na(dat[5]$'降雨量'))#识别缺失值所在行数 #将数据集分成完整

归一化 (Normalization)、标准化 (Standardization)和中心化/零均值化 (Zero-centered)

博主学习的源头,感谢!https://www.jianshu.com/p/95a8f035c86c 归一化 (Normalization).标准化 (Standardization)和中心化/零均值化 (Zero-centered)归一化:1)把数据变成(0,1)或者(1,1)之间的小数.标准化:使每个特征中的数值平均变为0(将每个特征的值都减掉原始资料中该特征的平均).标准差变为1中心化:平均值为0,对标准差无要求归一化和标准化的区别:归一化是将样本的特征值转换到同一量纲下把数据映射到[0,1

利用Python读取CSV文件并计算某一列的均值和方差

近日朋友需要帮忙对excel的csv文件进行处理,求取某银行历年股价的均值方差等一系列数据 文件的构成很简单,部分如下所示 总共有接近七千行数据,主要的工作就是将其中的股价数据提取出来,放入一个数组之中,然后利用numpy模块即可求出需要的数据. 这里利用了csv模块来对文件进行处理,最终实现的代码如下: import csv import numpy as np with open('pingan_stock.csv') as csv_file: row = csv.reader(csv_fi

均值、方差、协方差等定义与基本运算

一.均值 定义: 设P(x)是一个离散概率分布函数自变量的取值范围是.那么其均值被定义为: 设P(x)是一个连续概率分布函数 ,那么他的均值是: 性质: 1.线性运算: 期望服从先行性质,因此线性运算的期望等于期望的线性运算: 我们可以把它推广到任意一般情况: 2.函数的期望: 设f(x)是x的函数,则f(x)的期望为: 离散: 连续: 3.乘积的期望: 一般来说,乘积的期望不等于期望的乘积,除非变量相互独立.因此,如果x和y相互独立,则 期望的运算构成了统计量的运算基础,因为方差.协方差等统计

使用R语言计算均值,方差等

R语言对于数值计算很方便,最近用到了计算方差,标准差的功能,特记录. 数据准备 height <- c(6.00, 5.92, 5.58, 5.92) 1 计算均值 mean(height) [1] 5.855 2 计算中位数 median(height) [1] 5.92 3 计算标准差 sd(height) [1] 0.1871719 4 计算方差 var(height) [1] 0.03503333 5 计算两个变量之间的相关系数 cor(height,log(height)) [1] 0

利用matlab求图像均值和方差的几种方法

一.求均值 % 求一副灰度图像的均值 close all; clear; clc; i=imread('d:/lena.jpg'); %载入真彩色图像 i=rgb2gray(i); %转换为灰度图 i=double(i); %将uint8型转换为double型,否则不能计算统计量 % avg1=mean(i,1); %列向量均值 % avg2=mean(i,2); %行向量均值 % avg3=mean(i); %列向量均值 [m,n]=size(i); s=0; for x=1:m for y=

均值、方差、协方差、协方差矩阵、特征值、特征向量

均值:描述的是样本集合的中间点. 方差:描述的是样本集合的各个样本点到均值的距离之平均,一般是用来描述一维数据的. 协方差: 是一种用来度量两个随机变量关系的统计量. 只能处理二维问题. 计算协方差需要计算均值. 如下式: 方差与协方差的关系 协方差矩阵: 协方差矩阵能处理多维问题: 协方差矩阵是一个对称的矩阵,而且对角线是各个维度上的方差. 协方差矩阵计算的是不同维度之间的协方差,而不是不同样本之间的. 样本矩阵中若每行是一个样本,则每列为一个维度,所以计算协方差时要按列计算均值. 如果数据是

Python求均值,方差,标准差

import numpy as nparr = [1,2,3,4,5,6]#求均值arr_mean = np.mean(arr)#求方差arr_var = np.var(arr)#求标准差arr_std = np.std(arr,ddof=1)print("平均值为:%f" % arr_mean)print("方差为:%f" % arr_var)print("标准差为:%f" % arr_std) 原文地址:https://www.cnblogs