图像处理与特征值

图像处理之常见二值化方法汇总

2012-10-15 20:41:37 jia20003 阅读数 103366
• 图像特征提取与运动估计

认真学习本门课程后，学员可以掌握计算机视觉技术的基本原理和应用方式。可在实际项目、创新项目、创业实践中应用，同时可供感兴趣同学作为以后深入学习计算机视觉知识的基础。公开课试听：...

303人学习 AI100讲师
免费试看

1.      一个初始化阈值T，可以自己设置或者根据随机方法生成。

2.      根据阈值图每个像素数据P(n,m)分为对象像素数据G1与背景像素数据G2。(n为

3.      G1的平均值是m1, G2的平均值是m2

4.      一个新的阈值T’ = (m1 + m2)/2

5.      回到第二步，用新的阈值继续分像素数据为对象与北京像素数据，继续2～4步，

package com.gloomyfish.filter.study;

import java.awt.image.BufferedImage;
import java.util.ArrayList;
import java.util.List;

public class ThresholdBinaryFilter extends GrayFilter {

@Override
public BufferedImage filter(BufferedImage src, BufferedImage dest) {
int width = src.getWidth();
int height = src.getHeight();

if ( dest == null )
dest = createCompatibleDestImage( src, null );

int[] inPixels = new int[width*height];
int[] outPixels = new int[width*height];
src = super.filter(src, null); // we need to create new one
getRGB( src, 0, 0, width, height, inPixels );
int index = 0;
int means = getThreshold(inPixels, height, width);
for(int row=0; row<height; row++) {
int ta = 0, tr = 0, tg = 0, tb = 0;
for(int col=0; col<width; col++) {
index = row * width + col;
ta = (inPixels[index] >> 24) & 0xff;
tr = (inPixels[index] >> 16) & 0xff;
tg = (inPixels[index] >> 8) & 0xff;
tb = inPixels[index] & 0xff;
if(tr > means) {
tr = tg = tb = 255; //white
} else {
tr = tg = tb = 0; // black
}
outPixels[index] = (ta << 24) | (tr << 16) | (tg << 8) | tb;
}
}
setRGB( dest, 0, 0, width, height, outPixels );
return dest;
}

private int getThreshold(int[] inPixels, int height, int width) {
// maybe this value can reduce the calculation consume;
int inithreshold = 127;
int finalthreshold = 0;
int temp[] = new int[inPixels.length];
for(int index=0; index<inPixels.length; index++) {
temp[index] = (inPixels[index] >> 16) & 0xff;
}
List<Integer> sub1 = new ArrayList<Integer>();
List<Integer> sub2 = new ArrayList<Integer>();
int means1 = 0, means2 = 0;
while(finalthreshold != inithreshold) {
finalthreshold = inithreshold;
for(int i=0; i<temp.length; i++) {
if(temp[i] <= inithreshold) {
} else {
}
}
means1 = getMeans(sub1);
means2 = getMeans(sub2);
sub1.clear();
sub2.clear();
inithreshold = (means1 + means2) / 2;
}
long start = System.currentTimeMillis();
System.out.println("Final threshold  = " + finalthreshold);
long endTime = System.currentTimeMillis() - start;
System.out.println("Time consumes : " + endTime);
return finalthreshold;
}

private static int getMeans(List<Integer> data) {
int result = 0;
int size = data.size();
for(Integer i : data) {
result += i;
}
return (result/size);
}

}


特征向量与特征值（做图像处理项目时所查）

2016-08-15 15:23:15 code_hrbeu 阅读数 2701
• 图像特征提取与运动估计

认真学习本门课程后，学员可以掌握计算机视觉技术的基本原理和应用方式。可在实际项目、创新项目、创业实践中应用，同时可供感兴趣同学作为以后深入学习计算机视觉知识的基础。公开课试听：...

303人学习 AI100讲师
免费试看

特征向量与特征值

特征值与特征向量在图像处理中的应用

2017-10-24 11:56:42 chunmi6974 阅读数 4030
• 图像特征提取与运动估计

认真学习本门课程后，学员可以掌握计算机视觉技术的基本原理和应用方式。可在实际项目、创新项目、创业实践中应用，同时可供感兴趣同学作为以后深入学习计算机视觉知识的基础。公开课试听：...

303人学习 AI100讲师
免费试看

特征值、特征向量、 图像、
正文：
生活中的我们，每天清晨醒来，随之映入眼帘的就是各种形形色色的图像，我们确实也很难想象，在我们的生活中，图像的处理和矩阵特征值、特征向量有什么关系？首相我们先来了解下，何为特征值、特征向量。

1． 由 得 ，并且由于 是非零向量，故行列式 ，即

（称之为 的特征方程）

2． 根据某个特征值 ，由线性方程组 解出非零解 ，这就是 对应于特征值 的特征向量。

1 ． ，

2 ．若 是 的特征向量，则对 ， 也是 的特征向量。

3 ．若 是 的特征值，则 是 的特征值，从而 是 的特征值。

4 ． 是 的 个特征值， 为依次对应的特征向量，若 各不相同，则 线性无关。
    我想在了解了特征值和特征向量的基本理论之后，你们很难想象，为什么这些知识会和图像有联系吧。说实话，我自己也不是很清楚，我也是看了别人的理论讲解，才略微理解了一二。让我们一起去了解下。
    根据特征向量数学公式定义，矩阵乘以一个向量的结果仍是同维数的一个向量，因此，矩阵乘法对应了一个变换，把一个向量变成同维数的另一个向量，那么变换的效果是什么呢？这当然与方阵的构造有密切关系，比如可以取适当的二维方阵，使得这个变换的效果就是将平面上的二维向量逆时针旋转30度，这时我们可以问一个问题，有没有向量在这个变换下不改变方向呢？可以想一下，除了零向量，没有其他向量可以在平面上旋转30度而不改变方向的，所以这个变换对应的矩阵(或者说这个变换自身)没有特征向量(注意：特征向量不能是零向量)，所以一个特定的变换特征向量是这样一种向量，它经过这种特定的变换后保持方向不变，只是进行长度上的伸缩而已(再想想特征向量的原始定义Ax=cx, cx是方阵A对向量x进行变换后的结果，但显然cx和x的方向相同)。
    这里给出一个特征向量的简单例子，比如平面上的一个变换，把一个向量关于横轴做镜像对称变换，即保持一个向量的横坐标不变，但纵坐标取相反数，把这个变换表示为矩阵就是[1 0;0 -1]（分号表示换行），显然[1 0;0 -1]*[a b]'=[a -b]'（上标'表示取转置），这正是我们想要的效果，那么现在可以猜一下了，这个矩阵的特征向量是什么?想想什么向量在这个变换下保持方向不变，显然，横轴上的向量在这个变换下保持方向不变(记住这个变换是镜像对称变换，那镜子表面上(横轴上)的向量当然不会变化)，所以可以直接猜测其特征向量是[a 0]'（a不为0），还有其他的吗？有，那就是纵轴上的向量，这时经过变换后，其方向反向，但仍在同一条轴上，所以也被认为是方向没有变化，所以[0 b]'（b不为0）也是其特征向量。
    综上所述，特征值只不过反映了特征向量在变换时的伸缩倍数而已，对一个变换而言，特征向量指明的方向才是很重要的，特征值似乎不是那么重要；但是，当我们引用了Spectral theorem（谱定律）的时候，情况就不一样了。
    Spectral theorem的核心内容如下：一个线性变换（用矩阵乘法表示）可表示为它的所有的特征向量的一个线性组合，其中的线性系数就是每一个向量对应的特征值，写成公式就是：
   我们知道，一个变换可由一个矩阵乘法表示，那么一个空间坐标系也可视作一个矩阵，而这个坐标系就可由这个矩阵的所有特征向量表示，用图来表示的话，可以想象就是一个空间张开的各个坐标角度，这一组向量可以完全表示一个矩阵表示的空间的“特征”，而他们的特征值就表示了各个角度上的能量（可以想象成从各个角度上伸出的长短，越长的轴就越可以代表这个空间，它的“特征”就越强，或者说显性，而短轴自然就成了隐性特征），因此，通过特征向量/值可以完全描述某一几何空间这一特点，使得特征向量与特征值在几何（特别是空间几何）及其应用中得以发挥。
矩阵论在图像中的应用比如有PCA方法，选取特征值最高的k个特征向量来表示一个矩阵，从而达到降维分析+特征显示的方法。一般而言，这一方法的目的是寻找任意统计分布的数据集合之主要分量的子集。相应的基向量组满足正交性且由它定义的子空间最优地考虑了数据的相关性。将原始数据集合变换到主分量空间使单一数据样本的互相关性降低到最低点。一下是其运用的原理：
  设是N维向量的数据集合，m是其均值向量：

有了特征向量集合，任何数据x可以投影到特征空间（以特征向量为基向量）中的表示：

上述方法是图象数据压缩的数学基础之一，通常被称为PrincipalComponent Analysis (PCA)Karhunen-Loeve (K-L)变换

K-L变换的核心过程是计算特征值和特征向量，有很多不同的数值计算方法。一种常采用的方法是根据如下的推导：

K-L变换是图象分析与模式识别中的重要工具，用于特征抽取，降低特征数据的维数。例如，MIT-Media Lab基于特征脸的人脸识别方法。

通过上述的理论，我们对特征值与特征向量在图像处理上的运用有了深入的了解，同时也感受到了知识的魅力在不停的渲染着我们的生活。当然，特征值的魅力还不仅在于图像处理上，它在物理，材料，力学等方面都能一展拳脚，有人曾在一本线代书里这样说过“有振动的地方就有特征值和特征向量”。同时让我对平时未能把握住的知识感到惋惜，因为知识对生活的改造实在是缤纷乐，所以现在的我们，首要任务还是学好知识，让知识去创造财富！

图像处理之特征值和特征向量的意义

2017-10-24 12:09:45 chunmi6974 阅读数 7809
• 图像特征提取与运动估计

认真学习本门课程后，学员可以掌握计算机视觉技术的基本原理和应用方式。可在实际项目、创新项目、创业实践中应用，同时可供感兴趣同学作为以后深入学习计算机视觉知识的基础。公开课试听：...

303人学习 AI100讲师
免费试看

图像处理之特征值和特征向量的意义

2446人阅读 评论(0) 收藏 举报

1.特征值

2.特征向量

特征值是针对方阵而言的。

3.特征值和特征向量在图像处理的含义

4.矩阵论之图像处理

5.PCA例子说明

对于一个k维的feature来说，相当于它的每一维feature与其他维都是正交的（相当于在多维坐标系中，坐标轴都是垂直的），那么我们可以变化这些维的坐标系，从而使这个feature在某些维上方差大，而在某些维上方差很小。例如，一个45度倾斜的椭圆，在第一坐标系，如果按照x,y坐标来投影，这些点的x和y的属性很难用于区分他们，因为他们在x,y轴上坐标变化的方差都差不多，我们无法根据这个点的某个x属性来判断这个点是哪个，而如果将坐标轴旋转，以椭圆长轴为x轴，则椭圆在长轴上的分布比较长，方差大，而在短轴上的分布短，方差小，所以可以考虑只保留这些点的长轴属性，来区分椭圆上的点，这样，区分性比x,y轴的方法要好！

6.协方差矩阵

	定义是变量向量减去均值向量，然后乘以变量向量减去均值向量的转置再求均值。例如x是变量，μ是均值，协方差矩阵等于E[(x-μ)(x-μ)^t]，物理意义是这样的，例如x=（x1,x2,...,xi）那么协方差矩阵的第m行n列的数为xm与xn的协方差，若m=n，则是xn的方差。如果x的元素之间是独立的，那么协方差矩阵只有对角线是有值，因为x独立的话对于m≠n的情况xm与xn的协方差为0。另外协方差矩阵是对称的。

1
0
相关文章推荐

所谓的特征值和特征向量

2017-07-31 20:36:36 woainishifu 阅读数 38964
• 图像特征提取与运动估计

认真学习本门课程后，学员可以掌握计算机视觉技术的基本原理和应用方式。可在实际项目、创新项目、创业实践中应用，同时可供感兴趣同学作为以后深入学习计算机视觉知识的基础。公开课试听：...

303人学习 AI100讲师
免费试看

Ax = λx，其中x是一个向量