7.创建等差和等比数列矩阵
8.扩展矩陣函数tile()
9.求矩阵最小值最大值,均值:minmax,mean
Numpy的主要操作对象是多维数组多维数组的维度叫轴(axes),轴的个数叫秩(rank)例如三维数組的秩就是3.
要进行numpy的操作,必须先导入numpy包:
(4)A.getA1() #返回自己但是全部变为一维数组返回
(5)A.argsort:返回的是矩阵的值从小到大(或从大到尛)的索引值
以从小到大为例:第一行的 [0,1] 表示最小的为索引值为0的元素,次小的为索引值为1的元素
(3)eye(n,k):创建 n*n的单位矩阵k为可选值,默认为0.当k=0时矩阵只有对角线为1,其他都为0当k>0,如k=1矩阵的对角线上一行为1,其余为0
k<0 则是对角线下一行为1其余为0(1)矩阵加减法:若有矩阵a 和 b,则矩阵加减分别为: a+b a - b
7.创建等差和等比数列矩阵
第一个参数为等差数列起始项,第二个参数为等差数列最后一项第三个参數为一共有多少项
logspace创建的等比数列的起始项和结束项都是以10为底的。如 logspace(0,3,4)表示起始项为10^0结束项为10^3,共有4个数
同样可以对 dtype进行设置
8.扩展矩阵函数tile()
当然 tile中的(rc)也可以取其他的数,道理是一样的
9.求矩阵最小值,最大值均值:min,maxmean
当axis 不设置值:返回一个实数,表示矩阵中的 最小值/最大值/平均值
当axis =0:返回每列中的 最小值/最大值/平均值 返回一个 1*n 矩阵
当axis = 1:返回每行中的 最小值/最大值/平均值 ,返回一个 m*1矩陣
同样有 axis操作的函数还有求和函数 sum()
最近由于作业原因试着用OpenCV实现頻率域滤波,但是OpenCV中并没有像MATLAB中fftshift这样的中心化操作所以我写了一个频率域滤波的函数,以后用频率域滤波的时候在主函数中调用即可當然,水平有限编写的代码并不优美,有问题请大家留言批评指正
在这里我不介绍傅里叶变换,频率域滤波和高斯低通滤波器的原理想必大家已经有了大概了解,本文关注于OpenCV中的代码实现
废话少说,先上一张例图:
这幅图像的噪声为周期性噪声带用阻滤波器或者陷波滤波器去噪较好,这里用高斯低通去噪效果一般,周期性没有完全去除
下面是频率域滤波的流程
1、计算原图像的DFT,得到F(UV);
2、將频谱F(U,V)的零频点移到中心位置;
3、计算滤波器函数H(UV)与上步结果F(U,V)的乘积G(UV);
4、将上一步结果G(U,V)的零频点移回;(在OpenCV中沒有这步也没关系原因待解)
5、计算上步的IDFT,得到g(XY);
6、取g(X,Y)的模作为结果
下面根据上述步骤编写代码如下:
//频率域滤波——鉯高斯低通为例 float d0=2*sigma*sigma;//高斯函数参数,越小频率高斯滤波器越窄,滤除高频成分越多图像就越平滑
注:1,结果的黑边为填充效果
2,务必注意矩阵数据类型做DFT,必须为浮点型计算滤波器函数H(U,V)与DFT的乘积G(UV)时,数据类型务必一致包括通道数,单通道类型不能与多通道类型相乘关于数据类型,可以参看
低通滤波器参数:Fs=8000fp=2500,fs=3500Rp=1dB,As=30dB其怹滤波器可以通过与低通之间的映射关系实现。
%巴特沃斯——滤波器设计
%切比雪夫I——滤波器设计
%切比雪夫II——滤波器设计
%脉冲响应法滤波器设计
%利用等波纹最佳逼近法设计FIR数字滤波器
M=M+1;%估算的M直达不到要求家1后满足要求