fs=0.065;
I=rgb2gray(Q);
figure(1);
% subplot(3,3,1);
imshow(I);
G=rgb2gray(R);
figure(2);
% subplot(3,3,2);
imshow(G);
FW=fft(I);
% FW1=abs(FW);
figure(3);
% subplot(3,3,3);
imshow(FW);
GW=fft(G);
% GW1=abs(GW);
figure(4);
% subplot(3,3,4);
imshow(GW);
Fb=FW-GW;
TW=ifft(Fb);
figure(5);imshow(Fb);
QW=ifft(Fb);
figure(6);imshow(QW);%对频域相减后空域
mag=abs(Fb);%求解相减后幅值
f=(0:351-1)*fs/351;%横坐标频率的表达式为f=(0:M-1)*Fs/M;
% TW=ifft(mag);
% figure(7);
plot(f,mag);%做频谱图
% subplot(3,3,5);
figure(8);
imshow(TW);
% W=G-I;
% subplot(3,3,6);imshow(W);

% % 正弦光栅
% clc;close all;clear all;
% f=0.065;%频率为0.125
% for i=1:800
% for j=1:800
% Img(i,j)=0.5+0.5*cos(2*pi*f*j);
% end
% end
% figure(1);imshow(Img,[]);

2个回答

%% 清理工作空间 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)<I8(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)));可是为什么要进行分那么多？有谁可以帮我理清一下吗？谢谢了

php 中怎么 循环提取三维数组的数据

array(3) { ["goods_id"]=> array(2) { [0]=> string(1) "1" [1]=> string(1) "2" } ["buy_number"]=> array(2) { [0]=> string(2) "22" [1]=> string(2) "22" } ["buy_price"]=> array(2) { [0]=> string(5) "20.00" [1]=> string(5) "20.00" } } 这种数组 我怎么循环能得到 【0】对应的一组数据，【1】对应的一组数据

matlab数据处理，根据三维数据识别坑槽，计算面积和体积

c++怎样从txt文档中读取数据写入到三维矩阵中

octomap和三维点云有什么关系？octomap文件也像三维点云数据一样有每个点的三维坐标信息吗？

octomap和三维点云有什么关系？octomap文件也像三维点云数据一样有每个点的三维坐标信息吗？

MATLAB中三维矩阵和二维矩阵如何拼接？

A是一个三维矩阵，其中每一页的矩阵是4*2的，B是2*2的二维矩阵，直接[A,B]MATLAB运行显示串联维度不同

java的二维数组和C语言二维数组的储存结构有什么区别？

java的二维数组和C语言二维数组的储存结构有什么区别？，数据结构有什么区别吗？有人说java的数组在内存中存储不是连续的，，

loonggg读完需要3分钟速读仅需 1 分钟大家好，我是你们的校长。我之前讲过，这年头，只要肯动脑，肯行动，程序员凭借自己的技术，赚钱的方式还是有很多种的。仅仅靠在公司出卖自己的劳动时...

MySQL数据库面试题（2020最新版）

HTTP与HTTPS的区别

《Oracle Java SE编程自学与面试指南》最佳学习路线图（2020最新版）

01、Java入门（Getting Started）;02、集成开发环境（IDE）;03、项目结构（Eclipse JavaProject）;04、类和对象（Classes and Objects）;05：词法结构（Lexical Structure）;06：数据类型和变量（Data Type and Variables）;07：运算符（Operators）;08：控制流程语句（Control Flow Statements）;

Java岗开发3年，公司临时抽查算法，离职后这几题我记一辈子