PAC和白化练习之处理图像

第一步:下载pca_exercise.zip,里面包含有图像数据144*10000,每一列代表一幅12*12的图像块,首先随见展示200幅:

第二步:0均值处理,确保数据均值为0或者接近0

第三步:执行PCA,将原始数据映射到不同的特征向量方向上去

第四步:验证上面PCA计算出来结果是否正确,若果正确的话,映射后的数据的协方差就是一个对角矩阵,将这个对角矩阵可视化以后,可以看到矩形图中一条有颜色不同于背景色的对角线:

第五步:找出到底取前多少个主元合适,这里使用指标是需要保留至少99%方差值

第六步:降维,根据上一步确定的需要保留的主元数目,对数据降维

上面两幅图:左边是PCA降维后的数据,右边是原始数据,视觉上可以看出,除了亮度有点区别,其他地方差别很小。

第七步:加入正则化项

对数据进行PCA和白化处理后的数据的协方差矩阵的对角元素都等于1,但是加入正则化参数后,所有对角元素都小于1:

上面两幅图:左面是加入了正则化参数,右边是没有正则化

第八步:ZCA白化:

上面的两幅图:左边是ZCA白化处理后的数据,右边是原始数据,可以看出边缘更加突出。

时间: 2024-12-28 00:52:01

PAC和白化练习之处理图像的相关文章

PAC和白化练习之处理二维数据

在很多情况下,我们要处理的数据的维度很高,需要提取主要的特征进行分析这就是PAC(主成分分析),白化是为了减少各个特征之间的冗余,因为在许多自然数据中,各个特征之间往往存在着一种关联,为了减少特征之间的关联,需要用到所谓的白化(whitening). 首先下载数据pcaData.rar,下面要对这里面包含的45个2维样本点进行PAC和白化处理,数据中每一列代表一个样本点. 第一步 画出原始数据: 第二步:执行PCA,找到数据变化最大的方向: 第三步:将原始数据投射到上面找的两个方向上: 第四步:

Deep Learning论文笔记之(一)K-means特征学习

Deep Learning论文笔记之(一)K-means特征学习 [email protected] http://blog.csdn.net/zouxy09          自己平时看了一些论文,但老感觉看完过后就会慢慢的淡忘,某一天重新拾起来的时候又好像没有看过一样.所以想习惯地把一些感觉有用的论文中的知识点总结整理一下,一方面在整理过程中,自己的理解也会更深,另一方面也方便未来自己的勘察.更好的还可以放到博客上面与大家交流.因为基础有限,所以对论文的一些理解可能不太正确,还望大家不吝指正

深度学习_调参经验

面对一个图像分类问题,可以有以下步骤: 1.建立一个简单的CNN模型,一方面能够快速地run一个模型,以了解这个任务的难度 卷积层1:卷积核大小3*3,卷积核移动步长1,卷积核个数64,池化大小2*2,池化步长2,池化类型为最大池化,激活函数ReLU. 卷积层2:卷积核大小3*3,卷积核移动步长1,卷积核个数128,池化大小2*2,池化步长2,池化类型为最大池化,激活函数ReLU. 卷积层3:卷积核大小3*3,卷积核移动步长1,卷积核个数256,池化大小2*2,池化步长2,池化类型为最大池化,激

主成分分析与白化预处理

上一节介绍了主成分分析应用于2维数据.现在使用高维的图像数据来试试效果. 原始图像如图1所示. 图1 每个图片都是12*12的小patch,原始数据是一个144*10000的矩阵x. 在使用了PCA旋转之后,可以检查一下此时的协方差矩阵是否已经成功变成对角阵了,如图2所示. avg=mean(x,1); x=x-repmat(avg,size(x,1),1); xRot = zeros(size(x)); % You need to compute this [u,s,v]=svd(x*x'/s

深度学习UFLDL教程翻译之PCA白化

一.引入 主成分分析(PCA)是一种降维算法,能大大加速你的无监督特征学习算法.更重要的是,理解PCA能让我们后面实现白化,这是一个对所有算法适用的重要的预处理步骤. 假设你在图像上训练你的算法.不过输入稍微有点冗余,因为图像中相邻的像素值是高度相关的.具体来说,假设我们在16*16的灰度图像块上训练.那么x∈R256是256维的向量,一个特征xj对应着图像中每个像素强度.由于相邻像素之间的相关性,PCA使我们能够以一个维数小得多的输入来近似原输入,而造成误差极小. 二.例子与数学背景 对我们运

PCA主成分分析+白化

引言 主成分分析(PCA)是一种能够极大提升无监督特征学习速度的数据降维算法.更重要的是,理解PCA算法,对实现白化算法有很大的帮助,很多算法都先用白化算法作预处理步骤. 假设你使用图像来训练算法,因为图像中相邻的像素高度相关,输入数据是有一定冗余的.具体来说,假如我们正在训练的16x16灰度值图像,记为一个256维向量  ,其中特征值  对应每个像素的亮度值.由于相邻像素间的相关性,PCA算法可以将输入向量转换为一个维数低很多的近似向量,而且误差非常小. 实例和数学背景 在我们的实例中,使用的

UFLDL教程笔记及练习答案二(预处理:主成分分析和白化)

首先将本节主要内容记录下来,然后给出课后习题的答案. 笔记: 1:首先我想推导用SVD求解PCA的合理性. PCA原理:假设样本数据X∈Rm×n,其中m是样本数量,n是样本的维数.PCA降维的目的就是为了使将数据样本由原来的n维降低到k维(k<n).方法是找数据随之变化的主轴,在Andrew Ng的网易公开课上我们知道主方向就是X的协方差所对应的最大特征值所对应的特征向量的方向(前提是这里X在维度上已经进行了均值归一化).在matlab中我们通常可以用princomp函数来求解,详细见:http

OpenCV 图像处理:白化(whitening)

原理 图像白化(whitening)可用于对过度曝光或低曝光的图片进行处理,处理的方式就是改变图像的平均像素值为 0 ,改变图像的方差为单位方差 1.我们需要先计算原图像的均值和方差,然后对原图像的每个像素值做变换.假设图像 P 有 I 行 J 列,每个像素的值为 pij, 均值和方差的计算公式如下. 变换后新图像的每个像素值 xij 为 OpenCV 实现 用 OpenCV 的内置函数计算均值和方差,然后对遍历每个像素值并对每个像素做变换.这里需要注意的是变换后的像素值肯定是有一部分会是负值(

白化whitening

原文地址:http://blog.csdn.net/hjimce/article/details/50864602 作者:hjimce 一.相关理论 白化这个词,可能在深度学习领域比较常遇到,挺起来就是高大上的名词,然而其实白化是一个比PCA稍微高级一点的算法而已,所以如果熟悉PCA,那么其实会发现这是一个非常简单的算法. 白化的目的是去除输入数据的冗余信息.假设训练数据是图像,由于图像中相邻像素之间具有很强的相关性,所以用于训练时输入是冗余的:白化的目的就是降低输入的冗余性. 输入数据集X,经