图像处理之基础---矩阵求逆实现

最近做一个加密算法遇到需要计算矩阵的逆,闲着无聊,记录一下,以后免得再麻烦。

[cpp] view plaincopyprint?
#include
#include
#include

#define MAX 20
#define E 0.000000001

/**
* 计算矩阵src的模
*/
double calculate_A( double src[][MAX], int n )
{
int i,j,k,x,y;
double tmp[MAX][MAX], t;
double result = 0.0;

if( n == 1 )
{
return src[0][0];
}

for( i = 0; i = i ? k + 1 : k;

tmp[j][k] = src[x][y];
}
}

t = calculate_A( tmp, n - 1 );

if( i % 2 == 0 )
{
result += src[0][i] * t;
}
else
{
result -= src[0][i] * t;
}
}

return result;
}

/**
* 计算伴随矩阵
*/
void calculate_A_adjoint( double src[MAX][MAX], double dst[MAX][MAX], int n )
{
int i, j, k, t, x, y;
double tmp[MAX][MAX];

if( n == 1 )
{
dst[0][0] = 1;
return;
}

for( i = 0; i = i ? k + 1 : k ;
y = t >= j ? t + 1 : t;

tmp[k][t] = src[x][y];
}
}

dst[j][i] = calculate_A( tmp, n - 1 );

if( ( i + j ) % 2 == 1 )
{
dst[j][i] = -1*dst[j][i];
}
}
}
}

/**
* 得到逆矩阵
*/
int calculate_A_inverse( double src[MAX][MAX], double dst[MAX][MAX], int n )
{
double A = calculate_A( src, n );
double tmp[MAX][MAX];
int i, j;

if ( fabs( A - 0 ) 图像处理之基础---矩阵求逆实现

时间: 2024-10-06 04:45:44

图像处理之基础---矩阵求逆实现的相关文章

图像处理之基础---卷积傅立叶变换中的复数

整个看FFT过程中复数一直很折磨我. 原本的实数的东西通过复数表达很像旋转矩阵用quaternion来表达,尽管旋转vector还是要用matrix来做,但是通过用quaternion表达的旋转意义可以做插值等很多快速的操作,而且内存消耗也小,在做完这些操作之后再转成matrix用就好了. 复数表达也是类似. a+bi = M*(cos(theta)+sin(theta)*i)----极坐标 cos(x) + sin(x)*i = exp(x*i)----欧拉公式 这个用欧拉公式转出来的exp(

图像处理之基础---内积、点积

定义在数学中,数量积(dotproduct;scalarproduct,也称为标量积.点积.点乘)是接受在实数R上的两个矢量并返回一个实数值标量的二元运算.它是欧几里得空间的标准内积.两个矢量a=[a1,a2,…,an]和b=[b1,b2,…,bn]的点积定义为:a·b=a1b1+a2b2+……+anbn使用矩阵乘法并把(纵列)矢量当作n×1矩阵,点积还可以写为:a·b=a^T*b,这里的a^T指示矩阵a的转置. 内积(inner product),又称 数量积(scalar product).

图像处理之基础---卷积,滤波,平滑

/*今天师弟来问我,CV的书里到处都是卷积,滤波,平滑……这些概念到底是什么意思,有什么区别和联系,瞬间晕菜了,学了这么久CV,卷积,滤波,平滑……这些概念每天都念叨好几遍,可是心里也就只明白个大概的意思,赶紧google之~ 发现自己以前了解的真的很不全面,在此做一些总结,以后对这种基本概念要深刻学习了~*/ 1.图像卷积(模板) (1).使用模板处理图像相关概念: 模板:矩阵方块,其数学含义是一种卷积运算. 卷积运算:可看作是加权求和的过程,使用到的图像区域中的每个像素分别于卷积核(权矩阵)

图像处理之基础---二维卷积运算原理剖析

卷积运算(Convolution)是通过两个函数f 和g 生成第三个函数的一种数学算子,表示函数f 与经过翻转和平移与g 的重叠部分的累积.如果将参加卷积的一个函数看作区间的指示函数,卷积还可以被看作是“滑动平均”的推广.假设: f(x),g(x)是R1上的两个可积函数,并且积分是存在的.这样,随着 x 的不同取值,这个积分就定义了一个新函数h(x),称为函数f 与g 的卷积,记为h(x)=(f*g)(x). 两个向量卷积,说白了就是多项式乘法.下面用个矩阵例子说明其工作原理: a和d的卷积就是

图像处理之基础---卷积模板简介

1.使用模板处理图像相关概念:       模板:矩阵方块,其数学含义是一种卷积运算. 卷积运算:可看作是加权求和的过程,使用到的图像区域中的每个像素分别与卷积核(权矩阵)的每个元素对应相乘,所有乘积之和作为区域中心像素的新值. 卷积核:卷积时使用到的权,用一个矩阵表示,该矩阵与使用的图像区域大小相同,其行.列都是奇数,是一个权矩阵. 卷积示例: 假设3 * 3的像素区域R与卷积核G分别为: 则卷积运算为: R5(中心像素)=R1G1 + R2G2 + R3G3 + R4G4 + R5G5 +

图像处理之基础---卷积模板运算

1.使用模板处理图像相关概念: 模板:矩阵方块,其数学含义是一种卷积运算.      卷积运算:可看作是加权求和的过程,使用到的图像区域中的每个像素分别于卷积核(权矩阵)的每个元素对应相                乘,所有乘积之和作为区域中心像素的新值.      卷积核:卷积时使用到的权用一个矩阵表示,该矩阵与使用的图像区域大小相同,其行.列都是奇数,              是一个权矩阵.      卷积示例:              3 * 3 的像素区域R与卷积核G的卷积运算: 

图像处理之基础---频域分析

1.频域值得坐标轴 1.在傅里叶变换中,低频主要决定图像在平滑区域中总体灰度级的现实,而高频决定图像细节部分,如边缘和噪声: 滤波器: 使低频通过而使高频衰减的滤波器称为“低通滤波器” 相反特性的滤波器 称为“高通滤波器” 被低通滤波的图像比原始图像少了一些尖锐的细节部分,因为高频部分已被衰减.同样,被高通滤波的图像在平滑区域 中将减少一些灰度 级的变化,并突出过渡(边缘)灰度级的细节.这样的图像将更为锐化 preference:http://www.cnblogs.com/itchq/p/38

图像处理之基础---彩色转灰度算法优化

File:      StudyRGB2Gray.txtName:      彩色转灰度算法彻底学习Author:    zyl910Version:   V1.0Updata:    2006-5-22 一.基础 对于彩色转灰度,有一个很著名的心理学公式:Gray = R*0.299 + G*0.587 + B*0.114 二.整数算法 而实际应用时,希望避免低速的浮点运算,所以需要整数算法. 注意到系数都是3位精度的没有,我们可以将它们缩放1000倍来实现整数运算算法:Gray = (R*2

图像处理之基础---周末戏说卷积

戏说:卷积 卷积 在图像中其实就是乘积 求和 替代 已达到 平滑或者过滤的效果 参考公式 xiaojiang同学,最近总是和卷积打交道,工作需要,每天都要碰到它好几次,不胜烦恼,因为在大学时候学信号与系统的时候就没学会,我于是心想一定要把卷积完全搞明白.正好同办公室的同学也问我什么是卷积,师姐昨天也告诉我说:“我也早就想把这个问题搞明白了!”经过一段时间的思考之后,有一些很有趣的体会和大家分享. 听说卷积这种运算式物理学家发明的,在实际中用得不亦乐乎,而数学家却一直没有把运算的意义彻底搞明白.仔