基于Matlab模拟球面变频条纹

简介: 基于Matlab模拟球面变频条纹

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

🍎个人主页:Matlab科研工作室

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

智能优化算法       神经网络预测       雷达通信      无线传感器        电力系统

信号处理              图像处理               路径规划       元胞自动机        无人机

⛄ 内容介绍

基于Matlab模拟球面变频条纹

⛄ 代码

clear all, close all, clc;


%% 球面变频条纹图

ncols = 512;

% mrows = 576;

% ncols = 800;

mrows =512;

% rgb_image = zeros(480, 640, 3);

% mrows = 512;

% rgb_image = zeros(512, 512, 3);

% model = zeros(mrows,ncols);

% model(:,370:403) = 1;

%

% red = zeros(mrows, ncols);

% green = zeros(mrows, ncols);

% blue = zeros(mrows, ncols);


% X=linspace(0,ncols,ncols);

% Y=linspace(0,mrows,mrows);

% X=linspace(-256,256,512);

% Y=linspace(-256,256,512);

X=1:512;

Y=X;

% red = zeros(mrows, 32);

% green = zeros(mrows, 32);

% blue = zeros(mrows, 32);

% x=linspace(0,32,32);

% y=linspace(0,mrows,mrows);


[x,y]=meshgrid(X,Y);


N = 4;  % 相移数

s = 4;  % 变频数

% s = 1;  % 变频数

k = 4;  % 变频底数

jj = 0;

%   变频



pitch = fix(ncols/k^(s-1)); % 周期宽度

% pitch = 32; % 频率最大时的周期宽度


for i = 1:s

   t = k^(s-i);

   f0 = pitch*t;  

   f1=0.1583;

   fo = f0*ones(size(x,1),size(x,2));  

   %   相移

   for n = 0:N-1

       jj = jj+1;

       delta = 2*pi*n/N;

       l0=1000;d0=200;

       theta=atan(d0/l0);

%         f1=0.1583*f0;

       c=160000;

%       X=linspace(-120,120,512);Y=X;

%       [x,y]=meshgrid(X,Y);

%         for i=1:size(x,1)

%             for j=1:size(y,1)        

% %             a=1-((x(1,i)^2+y(j,1)^2)./c);

% %             b=a;

% %             if 300^2-x(i,j)^2-y(i,j)^2>=150;

% %                 h(j,i)=sqrt(300^2-x(i,j)^2-y(i,j)^2);

% %             else

% %                 h(j,i)=0;

% %             end

%             z(i,j) =  3*(1-x(i,j)).^2.*exp(-(x(i,j).^2) - (y(i,j)+1).^2) ...

%                   - 10*(x(i,j)/5 - x(i,j).^3 - y(i,j).^5).*exp(-x(i,j).^2-y(i,j).^2) ...

%                   - 1/3*exp(-(x(i,j)+1).^2 - y(i,j).^2)

%              phiz(i,j)=(z(i,j)*2*pi*f1*d0)./(z(i,j)-l0);

% %            phiz(j,i)=(h(j,i)*2*pi*f1*d0)./(h(j,i)-l0);

% %            phi0(j,i)=(2*pi*f1*x(j,i)^2*sin(theta)*cos(theta))./(l0+x(j,i)*sin(theta)*cos(theta));

%              phi0(i,j)=0;  

% %            phi(j,i)=phiz(j,i)+phi0(j,i);

%              phi(i,j)=phiz(i,j)+phi0(i,j);

% %            g(j,i)=a+b*cos(2*pi*f1*x(1,i)+phi(j,i));

%              ball(i,j) =0.5-0.5*cos((2*pi.*x(i,j)+phi(i,j)*4)/f0+delta);

%             end

%         end

%         z =  z = 3*(1-x).^2.*exp(-(x.^2) - (y+1).^2) ...

%             - 10*(x/5 - x.^3 - y.^5).*exp(-x.^2-y.^2) ..                   .

%             - 1/3*exp(-(x+1).^2 - y.^2); %产生peaks函数

       z=50*peaks(512);

       phiz=(z*2*pi*f1*d0)./(z-l0);

       phi0=(2*pi*f1*x^2*sin(theta)*cos(theta))./(l0+x*sin(theta)*cos(theta));

%         p=mat2gray(ball);

       ball =0.05-0.05*cos((2*pi.*x+phiz)/f0+delta);

       ball1 = ((ball-min(min(ball)))/max(max(ball)));

%         p=uint8(ball);

       imwrite(ball1,strcat('ImageSine',num2str(jj),'.','bmp'));

%         p=mat2gray(ball);

%         imshow(p);

       figure,imshow(ball,[]);

%          imwrite(strcat('ImageSine',num2str(jj),'.','bmp'));

%          test=mat2gray(ball,[0 255]);

%         imwrite(test,strcat('ImageSine',num2str(jj),'.','bmp'));

   end

end

%% plot ball

% l0=2000;d0=500;

% theta=atan(d0/l0);

% f0=0.1583;c=160000;

% X=linspace(-120,120,512);Y=X;

% [x,y]=meshgrid(X,Y);

% for i=1:size(x,1)

%     for j=1:size(y,1)        

%         a=1-((x(1,i)^2+y(j,1)^2)./c);

%         b=a;

%         if 100^2-x(1,i)^2-y(j,1)^2>=59

%             h(j,i)=abs(sqrt(100^2-x(1,i)^2-y(j,1)^2));

%         else

%             h(j,i)=-60;

%         end

%         phiz(j,i)=(h(j,i)*2*pi*f0*d0)./(h(j,i)-l0);

%         phi0(j,i)=(2*pi*f0*x(1,i)^2*sin(theta)*cos(theta))./(l0+x(1,i)*sin(theta)*cos(theta));

%         phi(j,i)=phiz(j,i)+phi0(j,i);

%         g(j,i)=a+b*cos(2*pi*f0*x(1,i)+phi(j,i));

%     end

% end

% imshow(mat2gray(g));

%% 16副变频条纹图产生 original

% figure,imshow(rgb_image,[]);

% figure,plot(rgb_image(400,:,1));

% grid on

%水平方向条纹

% if 0,

% j = 0;

% for i = 1:s

%     t = k^(s-i);

%     f0 = pitch*t;

%    

%     fo = f0*ones(size(Y,1),size(Y,2));

%    

%     %   相移

%     for n = 0:N-1

%         j = j+1;

%         delta = 2*pi*n/N;

% %         red(:,:) = 0.5-0.5.*cos(2*pi.*mod(X,fo)/f0+delta);

% %         green(:,:) = 0.5-0.5.*cos(2*pi.*mod(X,fo)/f0+delta);

% %         blue(:,:) = 0.5-0.5.*cos(2*pi.*mod(X,fo)/f0+delta);

% %         red(:,321:341) = 0.5-0.5.*cos(2*pi.*mod(X(:,321:341),fo(:,321:341))/f0+delta);

% %         green(:,321:341) = 0.5-0.5.*cos(2*pi.*mod(X(:,321:341),fo(:,321:341))/f0+delta);

% %         blue(:,321:341) = 0.5-0.5.*cos(2*pi.*mod(X(:,321:341),fo(:,321:341))/f0+delta);

% %         red(101:500,101:500) = 0.5-0.5.*cos(2*pi.*mod(X(101:500,101:500),fo(101:500,101:500))/f0+delta);

% %         green(101:500,101:500) = 0.5-0.5.*cos(2*pi.*mod(X(101:500,101:500),fo(101:500,101:500))/f0+delta);

% %         blue(101:500,101:500) =0.5-0.5.*cos(2*pi.*mod(X(101:500,101:500),fo(101:500,101:500))/f0+delta);

% %         red(101:500,101:500) = 1;

% %         green(101:500,101:500) = 1;

% %         blue(101:500,101:500) = 1;

%         r(:,:) = 0.5-0.5.*cos(2*pi.*mod(Y,fo)/f0+delta);

%         g(:,:) = 0.5-0.5.*cos(2*pi.*mod(Y,fo)/f0+delta);

%         b(:,:) = 0.5-0.5.*cos(2*pi.*mod(Y,fo)/f0+delta);

%         red(101:500,201:600) = r;

%         green(101:500,201:600) = g;

%         blue(101:500,201:600) = b;

%         red(101,:) = 0;

%         green(101,:) = 0;

%         blue(101,:) = 0;

%         rgb_image(:,:,1) = red;

%         rgb_image(:,:,2) = green;

%         rgb_image(:,:,3) = blue;

%         imwrite(rgb_image,strcat('hx',num2str(j),'.','bmp'));

%     end

% end

% end

⛄ 运行结果

⛳️ 代码获取关注我

❤️部分理论引用网络文献,若有侵权联系博主删除
❤️ 关注我领取海量matlab电子书和数学建模资料



相关文章
|
机器学习/深度学习 传感器 算法
基于MATLAB的单目或双目结构光正弦条纹校准
基于MATLAB的单目或双目结构光正弦条纹校准
|
机器学习/深度学习 传感器 编解码
基于二维连续小波变换条纹图相位提取方法附matlab代码
基于二维连续小波变换条纹图相位提取方法附matlab代码
|
机器学习/深度学习 传感器 人工智能
【光学】基于Matlab模拟干涉条纹图
【光学】基于Matlab模拟干涉条纹图
|
机器学习/深度学习 算法 计算机视觉
【光学】Matlab模拟透射光条纹强度分布曲线仿真
【光学】Matlab模拟透射光条纹强度分布曲线仿真
【光学】Matlab模拟透射光条纹强度分布曲线仿真
【MATLAB】三维图形绘制 ( 绘制球面 | sphere 函数 | 设置光源 | light 函数 | 相机视线 | view 函数 )(三)
【MATLAB】三维图形绘制 ( 绘制球面 | sphere 函数 | 设置光源 | light 函数 | 相机视线 | view 函数 )(三)
319 0
【MATLAB】三维图形绘制 ( 绘制球面 | sphere 函数 | 设置光源 | light 函数 | 相机视线 | view 函数 )(三)
【MATLAB】三维图形绘制 ( 绘制球面 | sphere 函数 | 设置光源 | light 函数 | 相机视线 | view 函数 )(二)
【MATLAB】三维图形绘制 ( 绘制球面 | sphere 函数 | 设置光源 | light 函数 | 相机视线 | view 函数 )(二)
388 0
【MATLAB】三维图形绘制 ( 绘制球面 | sphere 函数 | 设置光源 | light 函数 | 相机视线 | view 函数 )(二)
|
机器学习/深度学习
【MATLAB】三维图形绘制 ( 绘制球面 | sphere 函数 | 设置光源 | light 函数 | 相机视线 | view 函数 )(一)
【MATLAB】三维图形绘制 ( 绘制球面 | sphere 函数 | 设置光源 | light 函数 | 相机视线 | view 函数 )(一)
1369 0
【MATLAB】三维图形绘制 ( 绘制球面 | sphere 函数 | 设置光源 | light 函数 | 相机视线 | view 函数 )(一)
|
1月前
|
安全
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
本文介绍了2023年高教社杯数学建模竞赛D题的圈养湖羊空间利用率问题,包括问题分析、数学模型建立和MATLAB代码实现,旨在优化养殖场的生产计划和空间利用效率。
116 6
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
|
1月前
|
存储 算法 搜索推荐
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
本文提供了2022年华为杯数学建模竞赛B题的详细方案和MATLAB代码实现,包括方形件组批优化问题和排样优化问题,以及相关数学模型的建立和求解方法。
91 3
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
|
1月前
|
数据采集 存储 移动开发
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
本文介绍了2023年五一杯数学建模竞赛B题的解题方法,详细阐述了如何通过数学建模和MATLAB编程来分析快递需求、预测运输数量、优化运输成本,并估计固定和非固定需求,提供了完整的建模方案和代码实现。
66 0
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码

热门文章

最新文章