2 zy520xue ZY520XUE 于 2017.09.01 10:27 提问

四步相移法中的提取相位问题 10C

%% 清理工作空间
clc;
close all;
clear;

%% 系统标定
L = 200; %摄像机光心到参考平面距离(标定获得)
D = 60; %投影仪光心到摄像机光心连线距离(标定获得)
f = 1/32; %投影的光栅频率
W_Scale = 12;
H_Scale = 12;

%% 读四副图片(调制图案)
image1 = imread('o_1000000.bmp');
I1=double(rgb2gray(image1))/255; %将0-255转化为0-1
image2 = imread('o_1000001.bmp');
I2=double(rgb2gray(image2))/255;

image3 = imread('o_1000002.bmp');
I3=double(rgb2gray(image3))/255;

image4 = imread('o_1000003.bmp');
I4=double(rgb2gray(image4))/255; %转成灰度图像

%% 读参考图像
image5 = imread('o_1000005.bmp');
I5=double(rgb2gray(image5))/255; %将0-255转化为0-1
image6 = imread('o_1000006.bmp');
I6=double(rgb2gray(image6))/255;

image7 = imread('o_1000007.bmp');
I7=double(rgb2gray(image7))/255;

image8 = imread('o_1000008.bmp');
I8=double(rgb2gray(image8))/255; %转成灰度图像

%% 调制后的图像相位计算
for i=1:512
for j=1:512
if (I1(i,j)==I3(i,j))
if(I2(i,j)>I4(i,j))
I(i,j)=pi/2;
elseif(I2(i,j)<I4(i,j))
I(i,j)=3*pi/2;
else
I(i,j)=0;
end

    elseif (I1(i,j)>I3(i,j))
        if I2(i,j)>=I4(i,j)
            I(i,j)=atan((I2(i,j)-I4(i,j))/(I1(i,j)-I3(i,j)));
        else
            I(i,j)=2*pi-atan((I4(i,j)-I2(i,j))/(I1(i,j)-I3(i,j))); 
        end

    else
        if I2(i,j)>=I4(i,j)
            I(i,j)=pi-atan((I2(i,j)-I4(i,j))/(I3(i,j)-I1(i,j)));
        else
            I(i,j)=pi+atan((I4(i,j)-I2(i,j))/(I3(i,j)-I1(i,j))); 
        end
    end
end

end

%% 参考图像相位计算
for i=1:512
for j=1:512
if (I5(i,j)==I7(i,j))
if(I6(i,j)>I8(i,j))
phase(i,j)=pi/2;
elseif(I6(i,j) phase(i,j)=3*pi/2;
else
phase(i,j)=0;
end
elseif (I5(i,j)>I7(i,j))
if I6(i,j)>=I8(i,j)
phase(i,j)=atan((I6(i,j)-I8(i,j))/(I5(i,j)-I7(i,j)));
else
phase(i,j)=2*pi-atan((I8(i,j)-I6(i,j))/(I5(i,j)-I7(i,j)));
end
else
if I6(i,j)>=I8(i,j)
phase(i,j)=pi-atan((I6(i,j)-I8(i,j))/(I7(i,j)-I5(i,j)));
else
phase(i,j)=pi+atan((I8(i,j)-I6(i,j))/(I5(i,j)-I7(i,j)));
end
end
end
end
问题:楼主知道主要的公式在于I(i,j)=atan((I2(i,j)-I4(i,j))/(I1(i,j)-I3(i,j)));可是为什么要进行分那么多?有谁可以帮我理清一下吗?谢谢了

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
四步相移求解折叠相位
基于MATLAB的求解环境,利用传统的四步相位求解折叠相位,然后利用简单的哦空间相位展开,求解展开相位。
四步相移法程序
这是一个用matlab编写的用来求解四步相移法的光栅相位主值的程序
四步相移法 matlab
四步相移法的matlab程序,自带相位解缠绕
四步相移测轮廓
四步相移测轮廓
三步相移法(VS2010)-相位计算
三步相移法(VS2010)-相位计算
关于N步相移中相位噪声仿真分析的一点说明
在条纹投影的三维测量中,有这么一个经典的结论:假设光强的噪声为方差为σ^2,那么,经过N步标准相移求得的相位的方差为2*σ^2/(N*B^2)  (*),其中,B为调制度。 光强表达式为: I (n)= A + B*cos(φ+2*π*n/N)   (n=0,1,2,...,N-1)。 在用matlab仿真时,一般都会选择让A + B=1,且A >B。用 imnoise(I
PMP四步相位轮廓术
自己编写的一个PMP四步轮廓术的模拟仿真实验,很全面,包括条纹的模拟,相位的展开。总之,很不错的!
四步移相位解包程序
matlab代码,四步相移图进行四步相移测量的程序
基于结构光的相移法三维重建matlab
一、基本原理:     正弦条纹打在三维物体上,CCD记录到的条纹由于受到三维物体高度的调制而发生扭曲,扭曲的条纹(deformed fringe)实质上为原始条纹在物体具有高度存在的位置有了附加相位,各点的相位表现为由CCD图像采集获得的被调制的条纹数字图像的灰度值。通过扭曲的条纹和原始条纹比对计算得出相位变化值。又已知投影仪、CCD和物体的具体位置和之间的距离,利用数学关系可求出对应点的高度
【计算机视觉】结构光——格雷码模式捕获教程1 (代码)
格雷码是一种具有反射特性和循环特性的单步自补码,其循环和单步特性消除了随机取数时出现重大错误的可能,其反射和自补特性使得对其进行求反操作也非常方便,所以,格雷码属于一种可靠性编码,是一种错误最小化的编码方式,因此格雷码在通信和测量技术中得到广泛应用。 在本教程中,您将学习如何使用 GrayCodePattern 类: 生成一个灰色的代码模式。 项目格雷码的模式。 捕获投射格雷码图案。 重要的是要强调这一点 GrayCodePattern 类实际上实现了3中描述dunderworld算法 [73] 基于立体视