목차
1. 이론적 근거
광 간섭 측정 기술은 광파 간섭 원리에 기반한 측정 기술로, 다른 광학 영상 측정 기술과 구별되며, 측정 감도와 정확도가 높을 뿐만 아니라 비접촉 측정의 특성도 가지고 있습니다.표면 손상 , 따라서 광 간섭계의 적용은 매우 광범위합니다. 힐베르트 변환과 순시 위상 이론이 더 일반적으로 사용되는 방법입니다.
따라서 신호의 힐베르트 변환은 단위 임펄스 응답이 인 필터를 통과한 신호의 출력으로 간주할 수 있습니다. 신호가 힐베르트 변환을 거친 후 진폭 스펙트럼, 전력 스펙트럼 및 자기 상관 함수는 변경되지 않은 상태로 유지됩니다. 신호의 힐베르트 변환은 위상 시프터와 동일합니다. 신호의 양의 주파수 부분의 위상은 -90°만큼 변경되고, 음의 주파수 위상이 90° 변하는 부분.
해석 신호 z(t)는 연속 시간 신호 S(t)와 힐베르트 변환 H(S(t))에서 구성할 수 있습니다
. 위의 해석 신호 s(t)의 식 z(t)에서 순시 즉, 순시 위상의 위상은 다음과 같습니다.
따라서 OFSMI 신호에 대해 힐베르트 변환을 수행하여 분석 신호를 구성할 수 있으며 OFSMI 신호의 순시 위상은 분석 신호의 아크 탄젠트를 계산하여 얻을 수 있습니다.
Hilbert 변환 정수 프린지 검출 알고리즘의 주요 내용은 다음과 같습니다. OFSMI 신호의 DC 성분을 제거한 후 Hilbert 변환을 수행하여 분석 신호를 구성하고 패키지의 순시 위상은 분석 신호 및 패키지의 순시 위상이 감지됩니다.모든 위상 갑작스러운 점을 결정하고 외부 반사경의 변위 방향을 결정하고 마지막으로 의사 줄무늬 점을 제거하여 모든 정수 프린지 점을 얻습니다. 힐베르트 변환 정수 프린지 감지 알고리즘의 흐름은 그림에 나와 있습니다.
2. 케이스 배경
광 간섭 측정 기술은 광파 간섭 원리에 기반한 측정 기술로, 다른 광학 영상 측정 기술과 달리 측정 감도와 정확도가 높을 뿐만 아니라 비접촉 측정의 특성도 가지고 있습니다.표면 손상, 따라서 광 간섭계의 적용은 매우 광범위합니다.
기존 광 간섭계의 연구 과정에서 레이저의 외부 광 피드백이 OFSMI(광 피드백 자체 혼합 간섭) 효과를 일으켜 레이저의 출력 특성에 영향을 주어 스펙트럼 라인이 넓어지는 것으로 나타났습니다. 광학 피드백 및 광학 피드백 노이즈 및 간섭 조각화와 같은 현상은 레이저 시스템에 심각한 손상을 줄 수 있으므로 사람들은 항상 처음에는 레이저의 외부 광학 피드백으로 인한 영향을 제거하려고 노력합니다. 추가 연구를 통해 OFSMI 신호에는 레이저 자체 매개 변수 정보와 변위, 속도, 가속도 등과 같은 외부 반사경의 움직임에 대한 일부 정보가 포함되어 있음이 밝혀졌습니다. 따라서 사람들은 광학 피드백의 영향을 제거하는 것에서 다음으로 변경되었습니다. 관련 정보를 얻기 위해 광 피드백을 사용하여 OFSMI에 대한 연구가 점차 등장했으며 주요 응용 분야는 스펙트럼 라인 축소 및 OFSMI 측정 분야입니다.
OFSMI 효과는 레이저 출력 빛이 외부 반사기에 의해 반사되거나 산란된 후 빛의 일부가 레이저 공진기로 피드백되고 피드백 빛이 캐비티의 빛과 간섭하여 출력을 변조하는 현상을 말합니다. 레이저의 광출력.
3. MATLAB 프로그램
%设置相关参数
close all;clc;clear all
%phi_0=am0+am*sin(2*pi*ft/fs*t1);
am=19; %am=4*pi*L/lanbuda0
am0=30; % am0=4*pi*L0/lanbuda0
ft=200; %设置振动频率
fs=40000; %设置采样频率
n=400; %设置采样点数
alfa=5; %设置激光器线宽展宽因数
c=0.7; %设置光反馈强度
[x,g,y]=spain_ofsmi_data(alfa,c,am,am0,ft,fs,n);%%x----fai0, g---自混合信号, y---- fai-f
save ofsmi g; %将g保存到ofsmi.mat文件中
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%画图
figure(1)
subplot(3,1,1);plot(x);title('无光反馈时的外腔相位');ylabel('fai_0(n)/rad');grid on;%axis([-inf inf 290 340]);
subplot(3,1,2);plot(y);title('有光反馈时的外腔相位alfa=3;c=4;');ylabel('fai_f(n)/rad');grid on;
subplot(3,1,3);plot(g);title('SMI信号');xlabel('采样点数n');ylabel('g(n)的振幅');grid on;%legend();
F2 = hilbert(g);
xr = real(F2);
xi = imag(F2);
Faif_ = atan2(xi,xr);%公式8
%根据峰值flag的间隔确定flags变量,用来判断m1,m2的取值
flags = [ones(50,1);-1*ones(100,1);ones(100,1);-1*ones(100,1);ones(50,1)];
flags = [0;flags(1:end-1)];
flag2 = zeros(size(Faif_));
for i = 2:length(Faif_)-1
if i <= 51;
if g(i)<g(i-1) & g(i)<g(i+1)
flag2(i)=1;
end
end
if i <= 151 & i>51
if g(i)<g(i-1) & g(i)<g(i+1)
flag2(i)=1;
end
end
if i <= 251 & i>151
if g(i)<g(i-1) & g(i)<g(i+1)
flag2(i)=1;
end
end
if i <= 351 & i>251
if g(i)<g(i-1) & g(i)<g(i+1)
flag2(i)=1;
end
end
if i <= 400 & i>351
if g(i)<g(i-1) & g(i)<g(i+1)
flag2(i)=1;
end
end
end
flag2([51,151,251,351])=0;
flag = zeros(size(Faif_));
for n = 2:length(Faif_)
flag(n) = abs([Faif_(n-1)-Faif_(n)]);
end
[pks,locs] = findpeaks(flag,'THRESHOLD',0.5);
locs = locs;
flag3 = zeros(size(Faif_));
flag3(locs) = 1;
indx1 = find(flag2==1);
indx2 = find(flag3==1);
indxs = [];
for i = 1:length(indx1)
if abs(indx1(i)-indx2(i))<=4
indxs(i) = indx2(i);
else
indxs(i) = indx1(i);
end
end
Flag_=zeros(size(flag2));
Flag_(indxs)=1;
figure;
subplot(211);
plot(g);
subplot(212);
plot(flag2,'r');
hold on
plot(flag3,'b');
%依据相位展开原理, 计算真实相位Faif
m1 = 0;
m2 = 1;
Faif(1) = (-1)^m1*abs(Faif_(1)) + 2*pi*m2;
for n = 2:length(flag3)
%判决m1和m2,0/1,1/-1,进行分段处理
if flags(n) == 1
m2 = m2+1*Flag_(n);
if sign(Faif_(n))==1
m1=0;
else
m1=1;
end
end
if flags(n) == -1
m2 = m2-1*Flag_(n);
if sign(Faif_(n))==1
m1=1;
else
m1=0;
end
end
Faif(n) = (-1)^m1*abs(Faif_(n)) + 2*pi*m2;
end
%步骤三:
fai0 = Faif + c*sin(Faif + atan(alfa));
figure;
subplot(311);
plot(g);
ylabel('g(n)的振幅');
subplot(312);
plot(Faif_);
ylabel('Fai_f`');
subplot(313);
plot(fai0);
ylabel('Fai_0');
%计算误差
t1=fai0-mean(fai0);
t2=x-mean(x);
figure;
subplot(211);
plot(t2,'r','linewidth',2);
hold on
plot(t1,'b--','linewidth',2);
legend('真实相位','重构相位');
subplot(212);
plot(t1-t2)
title('error');
axis([0,400,-30,30]);
%%
clear;
close all;
%% 生成自混合信号
am=33;am0=50;ft=200;fs=600000;n=6000 ; alfa=4;c=0.5;
[x,g,y]=spain_ofsmi_data(alfa,c,am,am0,ft,fs,n);
t1=1:n;
t=t1
%t=t1/fs;
p0=3000;m=0.001;
p=p0*(1+m*g);
figure
plot(t1,p,'k');title('自混合信号');xlabel('采样点数');
%% 加高斯白噪声
% sur_add=25;%信噪比
% ps=g*g'/n;
sur_add=30;%信噪比
ps=9*g*g'/n;
pn=ps*10^(-sur_add/10);
noise=randn(1,n);
noise=sqrt(pn)*noise;
p=p+noise;
p1=p;
% figure
% plot(t1,noise);
figure
plot(t1,p,'k');title('自混合信号');xlabel('采样点数');
figure
subplot(2,1,1);plot(t,p,'k');ylabel('P/uw','fontsize',12);gtext('(a)','fontsize',12);
%% 均值滤波
y1=zeros(1,n)
for i=1:12
y1(i)=p(i);
end
for i=13:n-12
y1(i)=(p(i-12)+p(i-11)+p(i-10)+p(i-9)+p(i-8)+p(i-7)+p(i-6)+p(i-5)+p(i-4)+p(i-3)+p(i-2)+p(i-1)+p(i)+p(i+1)+p(i+2)+p(i+3)+p(i+4)+p(i+5)+p(i+6)+p(i+7)+p(i+8)+p(i+9)+p(i+10)+p(i+11)+p(i+12))/25;
end
for i=n-11:n
y1(i)=p(i);
end
p=y1;
% figure
% plot(t1,p,'k');title('自混合信号');xlabel('采样点数'); axis([-inf inf 2995 3003]);
%% 消去直流分量
dif=diff(p);
dif=[0 dif ];
yuzhi=max(dif)*0.6;
for i=1:length(dif);
if abs(dif(i))<yuzhi
dif_th(i)=0;
else
dif_th(i)=dif(i);
end
end
I=find(dif_th);
num=length(I);
z=[1 I n];
setsum=zeros(length(z)-1);
for i=1:length(z)-1
for j=z(i):z(i+1)
if j<z(i+1)
setsum(i)=setsum(i)+p(j);%分段求和
elseif j==z(i+1)
if i==1
for jj=z(i):z(i+1)
ave(jj)=setsum(i)/(z(i+1)-z(i));
end
else
for jj=z(i)+1:z(i+1)
ave(jj)=setsum(i)/(z(i+1)-z(i));
end
end
end
end
end
ave_g=p-ave;
% figure
% subplot(2,1,1);stem(dif);title('SM信号的微分');
% subplot(2,1,2);stem(dif_th);
% figure
% subplot(2,1,1);plot(t,p,'k');ylabel('P/uw','fontsize',13);xlabel('t/s','fontsize',13);title('(a)','fontsize',13')
% subplot(2,1,2);plot(t,ave_g,'k');xlabel('t/s','fontsize',13);ylabel('Po/uw','fontsize',13);title('(b)','fontsize',13)
%% 通过hilbert构造解析形式,检测条纹
F2=hilbert(ave_g);
xr=real(F2);xi=imag(F2);atan=atan2(xi,xr);
freq_ins=diff(atan);
freq_ins=[0 freq_ins ];
for i=1:length(freq_ins);
if freq_ins(i)>=-3
freq_ins_th(i)=0;
else
freq_ins_th(i)=sign(freq_ins(i));
end
end
II=find(freq_ins_th);
no=length(II);
jiange=(II(6)-II(1))/4/3;
for i=2:no
if II(i)<=II(i-1)+jiange;
freq_ins_th(II(i))=0;
end
end
% figure
% subplot(3,1,1);plot(t,atan,'k');title('(a)','fontsize',13');;xlabel('t/s','fontsize',13);ylabel('相位/rad','fontsize',13);
% subplot(3,1,2);plot(t,freq_ins,'k');title('(b)','fontsize',13');;xlabel('t/s','fontsize',13);ylabel('相位微分/rad','fontsize',13);
% subplot(3,1,3);plot(t,freq_ins_th,'k');title('(c)','fontsize',13');;xlabel('t/s','fontsize',13);
%% 确定运动方向
pulsed=-sign(dif);
trans=pulsed.*freq_ins_th;
%% 去掉小数条纹
xiaoshu=zeros(1,n)
for i=1:num-1
if sign(dif_th(I(i+1)))~=sign(dif_th(I(i)))
mm2=round((I(i+1)-I(i))/3);
mm1=round((I(i+1)-I(i))/4);
mm3=round((I(i+1)-I(i))/24*7);
for j=I(i)+mm1:I(i+1)-mm2
xiaoshu(j)=1;
end
else
xiaoshu(j)=0;
end
end
% figure
% plot(xiaoshu)
xiaoshu_y=xiaoshu.*p;
% figure
% plot(xiaoshu_y);title('粗糙提取小数条纹');axis([0 6000 2900 3050])
for i=1:n
if xiaoshu(i)==1
xiaoshu1(i)=0;
else
xiaoshu1(i)=1;
end
end
trans_x=trans.*xiaoshu1;
%%
% figure
% subplot(3,1,1);plot(t,p,'k');ylabel('P/uw','fontsize',13);xlabel('t/s','fontsize',13);title('(a)','fontsize',13');
% subplot(3,1,2);plot(t,trans,'k');xlabel('t/s','fontsize',13);title('(b)','fontsize',13');
% subplot(3,1,3);plot(t,trans_x,'k');xlabel('t/s','fontsize',13);title('(c)','fontsize',13');
%%
subplot(2,1,2);plot(t,trans_x,'k');xlabel('采样点n','fontsize',12);gtext('(b)','fontsize',12);
넷째, 시뮬레이션 결론 분석
시뮬레이션 구조는 다음과 같습니다.
A23-45