1、欧姆龙plc滤波程序硬件配置滤波,200PLC打开系统块,再Analog里设定滤波时间和频率,300400PLC打开硬件配置,再相关模块里设定滤波时间和频率,这个一般是过滤高频的杂波。
2、在程序里,编程实现均值滤波:一般用最后五次采样的平均值,采样时间间隔和几次求平均值可以自己定。
clearN=200%取200个数
w(1)=0
w=randn(1,N)%产生一个1×N的行向量,第一个数为0,w为过程噪声(其和后边的v在卡尔曼理论里均为高斯白噪声)
x(1)=0%状态x初始值
a=1%a为状态转移阵,此程序简单起见取1
for k=2:N
x(k)=a*x(k-1)+w(k-1) %系统状态方程,k时刻的状态等于k-1时刻状态乘以状态转移阵加噪声(此处忽略了系统的控制量)
end
V=randn(1,N)%测量噪声
q1=std(V)
Rvv=q1.^2
q2=std(x)
Rxx=q2.^2%此方程未用到Rxx
q3=std(w)
Rww=q3.^2%Rvv、Rww分别为过程噪声和测量噪声的协方差(此方程只取一组数方差与协方差相同)
c=0.2
Y=c*x+V%量测方差,c为量测矩阵,同a简化取为一个数
p(1)=0%初始最优化估计协方差
s(1)=0%s(1)表示为初始最优化估计
for t=2:N
p1(t)=a.^2*p(t-1)+Rww%p1为一步估计的协方差,此式从t-1时刻最优化估计s的协方差得到t-1时刻到t时刻一步估计的协方差
b(t)=c*p1(t)/(c.^2*p1(t)+Rvv)%b为卡尔曼增益,其意义表示为状态误差的协方差与量测误差的协方差之比(个人见解)
s(t)=a*s(t-1)+b(t)*(Y(t)-a*c*s(t-1))%Y(t)-a*c*s(t-1)称之为新息,是观测值与一步估计得到的观测值之差,此式由上一时刻状态的最优化估计s(t-1)得到当前时刻的最优化估计s(t)
p(t)=p1(t)-c*b(t)*p1(t)%此式由一步估计的协方差得到此时刻最优化估计的协方差
end
t=1:N
plot(t,s,'r',t,Y,'g',t,x,'b')%作图,红色为卡尔曼滤波,绿色为量测,蓝色为状态
%整体来说,此卡尔曼程序就是一个循环迭代的过程,给出初始的状态x和协方差p,得到下一时刻的x和p,循环带入可得到一系列的最优的状态估计值,此方法通常用于目标跟踪和定位。
%本人研究方向与此有关,有兴趣可以交流下。
程序如下:
clearall
clc
I=imread('up4-Amp.png')
OutImg=I
R=I(:,:,1)
G=I(:,:,2)
B=I(:,:,3)
R=medfilt2(R,[3,3])
G=medfilt2(G,[3,3])
B=medfilt2(B,[3,3])
I1=cat(3,R,G,B) %对彩色图像R,G,B三个通道分别进行3×3模板的中值滤波cat函数用于连接两个矩阵或数组
R=filter2(fspecial('average',3),R)/255
G=filter2(fspecial('average',3),G)/255
B=filter2(fspecial('average',3),B)/255
I2=cat(3,R,G,B) %对彩色图像R,G,B三个通道分别进行3×3模板的均值滤波
figure,imshow(I)
title('原图')
figure,
imshow(I1)
title('中值滤波')
figure,imshow(I2)
title('均值滤波')
扩展资料:注意事项
1、在频域滤波,由于是点乘,所以滤波模板矩阵和图像矩阵必须尺寸一样。
2、因为尺寸一样,它们的原点必须要对齐。
3、因在进行离散傅里叶变换后,在频域点乘,相当于在时域卷积,但是这个时候实际上是对时域周期矩阵进行卷积。直接在时域卷积,matlab默认是在边界补0。
4、Matlabfreqz2()这个函数可以自动得到一个指定尺寸的,对应于时域的频域模板。
5、图像经过傅里叶变换后,它的原点在左上角。而模板经过freqz2后,原点在中心,所以只要平移其中的一个就好了。
6、在对原图像进行傅里叶变换之前,按照一定规则补0就好了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)