当前位置: 首页 > 编程日记 > 正文

MATLAB【六】 ———— matlab 随机散斑模拟


%% 
%input for image size(NX,NY) <散斑图大小(像素)>
NX =1280;
NY =800;
%input for numble of speckles(S)<散斑数量>
S = 9226;
%输入的散斑大小
a = 4;
%input for peak intensity of each speckle(I0)<散斑峰值强度>
I0 =1;
%input for displacement(UX,UY)<散斑图位移>
UX = 0.04;
UY = 0;
%input for deformation gradient(ux,uy,vx,vy)<位移梯度分量>ux = 0.002;
ux = 0.02;
uy = 0.02;
vx = 0.02;
vy = 0.02;%% 
%main program主程序
I = zeros(NX,NY);%创建一个1280*800的全0矩阵
%rand('state');
X=NY*rand(S,1);%产生S*1阶0~1均匀分布的随机数矩阵
Y=NY*rand(S,1);
%generation of undeformed speckle image初始散斑图的生成
for i=1:NXfor j=1:NYI(i,j)=I0.*pi./4.*a.^2.*sum((erf((i-X(1:end))./a)-erf((i+1-X(1:end))./a)).*(erf((j-Y(1:end))./a)-erf((j+1-Y(1:end))./a)));end
end
A=uint16(I);%double(I)是将读入的图像I的uint8数据转换为double类型的数据
% A = double2uint16(A);
% G=mat2gray(A);%mat2gray是一个计算机函数,功能是实现图像矩阵的归一化操作。所谓”归一化”就是使矩阵的每个元素的值都在0和1之间。
% imwrite(A,'gauss\s1.png')
imshow(A)
% M =[1-ux -uy;-vx 1-vy];
% J = (M);
% %generation of speckles image after deformation
% for i=1:NX
%     for j=1:NY
%         I(i,j)=I0.*pi./4.*a.^2.*sum((erf((i-i*ux-j*uy-UX-X(1:end))./a)-erf((i+1-(i+1)*ux-(j+1)*uy-UX-X(1:end))./a)).*(erf((j-j*vy-i*vx-UY-Y(1:end))./a)-erf((j+1-(j+1)*vy-(i+1)*vx-UY-Y(1:end))./a)));
%     end
% end
% A=double(I);
% G=mat2gray(A);
% imwrite(G,'gauss\s2.png')


%input for image size(NX,NY) <散斑图大小(像素)>
prompt={'Enter hprozontal(x) resolution for simulated image[pixels]:',...'Enter vertical(y) resolution for simulated image{pixels}:'};
dlg_title='Input for image size';
num_lines=1;
def={'512','512'};
answer=inputdlg(prompt,dlg_title,num_lines,def);%创建并打开输入对话框
NX=str2double(cell2mat(answer(1,1)));%输入的水平分辨率的值
NY=str2double(cell2mat(answer(2,1)));%输入的竖直分辨率的值
%input for numble of speckles(S)<散斑数量>
prompt={'enter total number of speckles'};
dlg_title='input number of speckles';
num_lines=1;
def={'1200'};
answer=inputdlg(prompt,dlg_title,num_lines,def);%%创建并打开输入对话框
S=str2double(cell2mat(answer(1,1)));%输入的散斑数量
%input for speckle size(a)<散斑大小>
prompt={'enter speckle size'};
dlg_title='input for speckle size';
num_lines=1;
def={'4'};
answer=inputdlg(prompt,dlg_title,num_lines,def);
a=str2double(cell2mat(answer(1,1)));%输入的散斑大小
%input for peak intensity of each speckle(I0)<散斑峰值强度>
prompt={'enter peak intensity of each speckle'};
dlg_title='input for peak intensity of each speckle';
num_lines=1;
def={'1'};
answer=inputdlg(prompt,dlg_title,num_lines,def);
I0=str2double(cell2mat(answer(1,1)));
%input for displacement(UX,UY)<散斑图位移>
prompt={'enter horizontal(x)displacement for simulate image[pixels]:',...'enter vertical(y)displacement for simulated image[pixels]:'};
dlg_title='input for sub-pixel diaplacement';
num_lines=1;
def={'0.04','0'};
answer=inputdlg(prompt,dlg_title,num_lines,def);
UX=str2double(cell2mat(answer(1,1)));
UY=str2double(cell2mat(answer(2,1)));
%input for deformation gradient(ux,uy,vx,vy)<位移梯度分量>
prompt={'enter deformation gradient(ux) for simulated image[pixels]:',...'enter deformation gradient(uy) for simulated image[pixels]:',...'enter deformation gradient(vx) for simulated image[pixels]:',...'enter deformation gradient(vx) for simulated image[pixels]:'};
dlg_title='input for sub-pixel displacement';
num_lines=1;
def={'0.002','0','0','0'};
answer=inputdlg(prompt,dlg_title,num_lines,def);
ux=str2double(cell2mat(answer(1,1)));
uy=str2double(cell2mat(answer(2,1)));
vx=str2double(cell2mat(answer(3,1)));
vy=str2double(cell2mat(answer(4,1)));
%main program主程序
I=zeros(NX,NX);%创建一个512*512的全0矩阵
%rand('state');
X=NY*rand(S,1);%产生S*1阶0~1均匀分布的随机数矩阵
Y=NY*rand(S,1);
%generation of undeformed speckle image初始散斑图的生成
for i=1:NXfor j=1:NYI(i,j)=I0.*pi./4.*a.^2.*sum((erf((i-X(1:end))./a)-erf((i+1-X(1:end))./a)).*(erf((j-Y(1:end))./a)-erf((j+1-Y(1:end))./a)));end
end
A=double(I);%double(I)是将读入的图像I的uint8数据转换为double类型的数据
G=mat2gray(A);%mat2gray是一个计算机函数,功能是实现图像矩阵的归一化操作。所谓”归一化”就是使矩阵的每个元素的值都在0和1之间。
imwrite(G,'1.jpg')%生成数据为G名称为PIP的tif格式图像
M=[1-ux -uy;-vx 1-vy];
J=det(M);
%generation of speckles image after deformation
for i=1:NXfor j=1:NYI(i,j)=I0.*pi./4.*a.^2.*sum((erf((i-i*ux-j*uy-UX-X(1:end))./a)-erf((i+1-(i+1)*ux-(j+1)*uy-UX-X(1:end))./a)).*(erf((j-j*vy-i*vx-UY-Y(1:end))./a)-erf((j+1-(j+1)*vy-(i+1)*vx-UY-Y(1:end))./a)));end
end
A=double(I);
G=mat2gray(A);
imwrite(G,'2.jpg')

参考资料:

https://wiki.tw.lvfukeji.com/baike-%E6%95%A3%E6%96%91%E6%88%90%E5%83%8F?wprov=srpw1_0#%E6%A6%82%E8%A6%81

https://blog.csdn.net/weixin_40678482/article/details/103722035

https://blog.csdn.net/zcj6150/article/details/107347672

相关文章:

【Python】zip函数

zip()函数用于将可迭代对象作为参数&#xff0c;将对象中对应的元素打包成一个个元组&#xff0c;然后返回这些由元组组成的列表。 如果各个迭代器的元素不一致&#xff0c;则返回列表长度与最短的对象相同。 利用*号操作符&#xff0c;可将元组解压为列表。 >>> a …

CentOS 7.0,启用iptables防火墙

CentOS 7.0默认使用的是firewall作为防火墙&#xff0c;这里改为iptables防火墙。1、关闭firewall&#xff1a;systemctl stop firewalld.service #停止firewallsystemctl disable firewalld.service #禁止firewall开机启动2、安装iptables防火墙yum install iptables-services…

手撸 webpack4.x 配置(一)

现在的前端开发框架 &#xff0c;都绕不开 webpack 打包 。 但绝大数前端开发人员 基本都是用 脚手架 自动生成 一套开发环境 如&#xff1a; vue-cli , create-react-app等 , 但开发中总会遇到各种问题 &#xff0c;基本都是 webpack 配置问题 &#xff0c; 每次遇到基本都是…

MATLAB【七】———— matlab 高斯核使用,超像素图像模拟,矩阵转图像,深度相机模型实践实现

深度模型&#xff0c;图片转稀疏矩阵&#xff0c;稀疏矩阵转图片 %% mat to 2array temp_speckle ref_speckle; [row_index,col_index,v]find(temp_speckle); obj_matrix [row_index,col_index]; [obj_matrix_height,obj_matrix_width] size(obj_matrix);%% depth camera m…

jsp 出现cannot be resolved to a type问题解决办法

&#xff08;1&#xff09;检查<% page import>是否导入了相关的包。若是没有则需导入 &#xff08;2&#xff09;若导入相应的包后问题仍然存在则需创建相关的servlet转载于:https://www.cnblogs.com/wth21-1314/p/6126655.html

U盘中毒了?教你如何删除System Volume Information这个顽固文件夹

不得不说cmd命令很好用呢。最近我的U盘中毒了&#xff0c;格式化都删除不了System Volume Information这个顽固的文件夹&#xff0c;真心伤不起哇&#xff01;还好现在解决了问题。看来以后得好好对待U盘&#xff0c;不能乱用了。本篇文章教大家如何删除System Volume Informat…

69亿美元英伟达史上最大收购!这家基金又赢了

。另一方面&#xff0c;在虚拟货币的浪潮告一段落之后&#xff0c;英伟达需要给增速放缓的数据中心业务注入一枚强心剂。 有意思的是&#xff0c;英伟达对Mellanox的收购也成就了国际知名维权对冲基金Starboard Value LP的又一次投资胜利。 击败微软、英特尔&#xff0c;交易…

基础数据结构【一】————数组

二维数组相乘&#xff0c;矩阵相乘&#xff0c; #include <iostream> using namespace std;void MatrixMultiply(int*, int*, int*, int, int, int); int main() {int M, N, P;int i, j;//矩阵A部分 cout << "请输入矩阵A的维数(M,N): " << endl;…

Fragment 和 FragmentActivity的使用

Fragment 和 FragmentActivity的使用 http://blog.csdn.net/izy0001989624/article/details/17072211转载于:https://www.cnblogs.com/as3lib/p/6126761.html

win10 VMware15 安装 CentOS6.4 64位(慢慢弄吧,别急)

参考&#xff1a;CentOS 6.4安装&#xff08;超级详细图解教程&#xff09; 可以都不勾&#xff0c;有需要&#xff0c;以后使用中有需要再手动安装 除了KDE&#xff0c;其他都选就可以了 系统管理、虚拟化、负载平衡器、高可用性可以都不选

Nginx网站常见的跳转配置实例

相信大家在日常运维工作中如果你用到nginx作为前端反向代理服务器的话&#xff0c;你会对nginx的rewrite又爱又恨&#xff0c;爱它是因为你搞定了它&#xff0c;完成了开发人员的跳转需求后你会觉得很爽&#xff0c;觉得真的很强大&#xff0c;恨它是因为当一些稀奇古怪跳转的需…

基础数据结构【二】————动态数组,单向链表及链表的反转

DEMO1&#xff1a; 动态分配变量&#xff08;链表&#xff0c;而静态数组是线性表&#xff0c;意味着动态数组访问和遍历复杂度为O&#xff08;n&#xff09;,而插入和删除复杂度为O&#xff08;1&#xff09;&#xff0c;而静态数组线性表则完全相反&#xff09; int* in…

VMware15克隆虚拟机Centos

在克隆虚拟机之前&#xff0c;我们需要了解以下文件&#xff1a; 1、/etc/udev/rules.d/70-persistent-net.rules 这是网卡有关信息的配置文件&#xff0c;我们可以先查看一下master的网卡信息&#xff08;当然也可以用ifconfig命令查看&#xff09; 要注意的是网卡名称以及…

EXPDP 时ORA-27054 问题处置

现象&#xff1a;[oracleoracle1 ~]$ expdp xian/xian schemasxian directorydumpdir dumpfilexian.dmp LOGFILExian.logExport: Release 10.2.0.5.0 - 64bit Production on Friday, 02 December, 2016 20:19:48Copyright (c) 2003, 2007, Oracle. All rights reserved.Connec…

OSC源创会往期图文回顾链接地址收藏

为什么80%的码农都做不了架构师&#xff1f;>>> 格式&#xff1a;源创会报名链接地址 - 源创会结束后图文回顾链接地址 【深圳】第1期】- 图文回顾【广州】第2期】- 图文回顾【北京】第3期】- 图文回顾【珠海】第4期】- 图文回顾【深圳】第5期】- 图文回顾--------…

ionic + cordova+angularJs 搭建的H5 App完整版总结

为期半个月的项目实践开发&#xff0c;已完整告一段落&#xff0c;团队小组获得第一名&#xff0c;辛苦总算没有白费&#xff0c;想起有一天晚上&#xff0c;整个小组的人&#xff0c;联调到12点才从公司回去&#xff0c;真是心酸。这里总结一下&#xff0c;项目过程中遇到的问…

基础数据结构【三】————老鼠走迷宫问题————堆栈应用

假设&#xff1a;老鼠在一个二维地图中i行走&#xff0c;地图中大部分路径被墙阻断&#xff0c;无法前进。老鼠可以按照尝试错误的方法找到出口。只是&#xff0c;这只老鼠必须具备走错路时候就退回来&#xff0c;并且把走过的路记下来&#xff0c;避免下次走重复路&#xff0c…

eclipse Debug中step into功能失灵的问题

step into 和 step over功能一样&#xff0c;无法进入方法内部&#xff0c;解决方法如下&#xff1a; 需要使用jdk中的jre&#xff0c;而不是独立安装的jre 再次Debug&#xff0c;当运行到断点的时候&#xff0c;点击step into&#xff08;F5&#xff09;就可以看见println函数…

Linux 基金会宣布红队项目,致力于孵化开源安全工具

百度智能云 云生态狂欢季 热门云产品1折起>>> 谁都想软件有着很高的安全性吧。毕竟&#xff0c;每一天都会有不一样的安全漏洞&#xff0c;从糟糕软件的沼泽中冒出来。 在近期举办的开源领导力峰会上&#xff0c;Linux 基金会宣布了新的红队项目&#xff08;Red Tea…

基础数据结构【四】————环形链表与多项式

主要演示环形列表节点的创建插入&#xff0c; 删除&#xff0c;遍历&#xff0c;环形链表连接 。双向链表节点的建立与插入 &#xff0c;双向链表中节点的删除 以及环形链表在多项式中的应用 DEMO1:环形链表节点的创建与插入 /* [名称]:ch03_08.cpp [示范]:环形链表节点的创…

关联scala源码

首先需要去官网下载sources 将下载好的压缩包拷贝到scala安装的lib目录下&#xff0c;解压 ctrlb以后 查看源码, 选择要查看的方法或者类, 输入 ctrl b import scala.io.StdIn 如果想看StdIn的源码&#xff0c;则将光标放在StdIn处&#xff0c;ctrlb 如果想查看io包下的内容&…

MySQL安装使用的2个问题

问题:1.遇到不输入密码能登上 ,使用密码报错.2.(解压版的) 在cmd输入>mysql –u root –p 时&#xff0c;按enter回车时&#xff0c;会叫你输入密码Enter password____,否则出现错误&#xff1a;ERROR 1045(28000):Access denied for user’root’’localhost’(using passw…

Flink1.7.2 sql 批处理示例

Flink1.7.2 sql 批处理示例 源码 https://github.com/opensourceteams/flink-maven-scala概述 本文为Flink sql Dataset 示例主要操作包括:Scan / Select,as (table),as (column),limit,Where / Filter,between and (where),Sum,min,max,avg,(group by ),group by having,disti…

ISP 【一】————boost标准库使用——批量读取保存文件 /boost第三方库的使用及其cmake添加,图像gramma

CMakeLists.txt文件中需要添加第三方库&#xff0c;并企鹅在CMakeLists.txt中添加 include_directories(${PROJECT_SOURCE_DIR}/../3party/gflags-2.2.2/include) link_directories(${PROJECT_SOURCE_DIR}/../3party/boost-1.73.0/lib-import) target_link_libraries( gram…

简单ajax类, 比较小, 只用ajax功能时, 可以考虑它

忘了哪儿转来的了, 不时的能够用上, 留存一下<script language"javascript" type"text/javascript"> /***var ajaxAjax();/*get使用方式* /ajax.get("php_server.php?id1&namexxx", function(data){ alert(data); //d…

Hadoop 三大发行版本

Hadoop三大发行版本&#xff1a;Apache、Cloudera、Hortonworks。 Apache版本最原始&#xff08;最基础&#xff09;的版本&#xff0c;对于入门学习最好。 Cloudera在大型互联网企业中用的较多。 Hortonworks文档较好。 1. Apache Hadoop 官网地址&#xff1a;http://had…

MongoDB主动撤回SSPL的开源许可申请

2018年10月&#xff0c;MongoDB将其开源协议更换为SSPL&#xff0c;虽然在当时引起了很大的争议&#xff0c;但是MongoDB始终坚信SSPL符合符合开源计划的批准标准&#xff0c;并向Open Source Initiative &#xff08;以下简称OSI&#xff09;提交了申请。不过&#xff0c;近日…

MATLAB【八】———— matlab 读取单个(多个)文件夹中所有图像

0.matlab 移动&#xff08;复制&#xff09;文件到另一个文件夹 sourcePath .\Square_train; targetPath .\Square_test; fileList dir(sourcePath); for k 3 :5: length(fileList) movefile([sourcePath,\,fileList(k).name],targetPath); end %copyfile([sourcePat…

JAVA IO学习

2019独角兽企业重金招聘Python工程师标准>>> 很多初学者接触IO时&#xff0c;总是感觉东西太多&#xff0c;杂乱的分不清楚。其实里面用到了装饰器模式封装&#xff0c;把里面的接口梳理一下之后&#xff0c;就会觉得其实蛮清晰的 相关的接口和类 接口或类描述Input…

Java面向对象三大特征 之 多态性

1、理解多态性&#xff1a;可以理解为一个事物的多种形态 2、对象的多态性&#xff1a;父类的引用指向子类的对象&#xff08;子类的对象赋给父类的引用&#xff09; 3、多态的使用&#xff1a;虚拟方法的调用 子类中定义了与父类同名同参数的方法&#xff08;重写&#xff…