格雷码+四步相移原理可查看之前的文章《结构光编解码-格雷码+四步相移》,以下代码格雷码+四步相移解相位的代码,该代码需修改图像路径及图像格式,格雷码位数可根据实际需求替换,替换完后即可正常运行。(欢迎进Q群交流:874653199)
clc;
clear;
%% 读取图像数据
s1 = '.\data3\2_重建\格雷码+4步相移\';
s2 = '.bmp';
filename = [s1 '1' s3];
[row,col] = size(imread(filename));
%格雷码位数
graycode_num=7;
%四步相移
phase_num=4;
images_num = graycode_num+phase_num;
images = uint8(zeros(row,col,images_num));
for i = 1:images_num
filename = [s1 s2{1} num2str(i) s3];
images(:,:,i) = imread(filename);
end
%% 获取折叠相位
freqImgs = images(:,:,graycode_num+1:graycode_num+4);
fenzi = double(freqImgs(:,:,4))-double(freqImgs(:,:,2));
fenmu = double(freqImgs(:,:,1))-double(freqImgs(:,:,3));
temp_wrapped_phase = atan(fenzi./fenmu);
Flag = any(fenmu==0,3).*any(fenzi<0,3);
temp_wrapped_phase = temp_wrappe