物理光学Fraunhofer
物理光学——Fraunhofer衍射1. Fraunhofer衍射当光从一个很远的source aperture传播过来,在探测平面其光场分布可以近似为夫琅禾费衍射的积分:
其中,这个“很远”的距离满足公式:
Δz>\frac{2D^2}{\lambda}为了获得一个准确的仿真结果,在程序当中应注意采样参数的设置,即grid spacing δ,spacial frequency的设置。 从上述公式推导可见,观测平面的坐标与源的空间频率存在以下关系:
X_2=\lambda\Delta zf_{x1}\\
y_2=\lambda\Delta zf_{y1}则当观测平面的尺寸确定,则便会确定可观测到的来自源平面的最大空间频率:
f_{x1,max}=\frac{x_{2,max}}{\lambda\Delta z} \\
f_{y1,max}=\frac{y_{2,max}}{\lambda\Delta z}
物理光学Diffraction
物理光学——Diffraction1. Diffraction
光场透过透镜后,不考虑透镜有限孔径的情况下,在紧靠透镜前后的变换函数为:
\tilde{t}(x_1,y_1)=e^{-i\frac{k}{2f}(x^2_1+y^2_1)}物面的复振幅
o(x,y)=\int_{-\infty}^\infty\int_{-\infty}^\infty o(\xi,\eta)\delta(x-\xi,y-\eta)d\xi d\eta像面
g(x',y')=\int_{-\infty}^\infty\int_{-\infty}^\infty o(\xi,\eta)h(x-\xi,y-\eta)d\xi d\eta像面
g(x',y')=\int_{-\infty}^\infty\int_{-\infty}^\infty o(x,y)h(x'-x,y'-y)dx dy像面
g(x',y')=o(x',y')*h(x',y')点扩散函数
h(x',y')=Ae^{ik\frac{x'^{2}+y'^{2}}{2l'}}\int_{-\infty}^\infty\int_{ ...
物理光学
物理光学——干涉1. 干涉 物理学中,干涉(interference)是两列或两列以上的波在空间中相遇时发生叠加或抵消从而形成新的波形的现象。
多光束干涉是指一组相互平行的,而且任意两束光之间的光程差(或相位差)都相同的同频光束的相干叠加。F-P干涉仪是一种典型的多光束干涉仪,它利用高反射镜间的多系反射而设计制造。这种干涉仪出现在19世纪末,现在普遍应用于光谱技术及激光光源技术中。
2.F-P干涉仪 F-P干涉仪由两块平行的平面玻璃板或石英板构成,在其相对的内表面上镀有平整度很好的高反射率膜层。为消除两平面相背平面上反射光的干扰,平行板的外表面有一个很小的角度。自扩展光源上任一点发出的一束光入射到高反射率平面上后,光就在两者之间多次往返反射,最后构成多束平行的透射光,和多束平行的反射光。
物理光学
物理光学——Fresnel公式1. Fresnel公式简介 菲涅尔公式是光学中的重要公式,用它能解释反射光的强度、折射光的强度、相位与入射光的强度的关系。
光波通过不同介质的分界面时会发生反射和折射,入射光分为反射光和折射光两部分。 这两束光的进行方向之间的关系虽可由反射和折射定律决定,但二光束的振幅和振动取向却不能决定。 菲涅耳以光是横波的设想为基础,把入射光分为振动平面平行于入射面的线偏振光和垂直于入射面的线偏振光,并导出了光的折射比、反射比之间关系的菲涅耳公式。 由菲涅耳公式可以求出一定入射角下反射和透射的振幅、强度等。
S波和P波
入射光线、反射光线、折射光线是共面的,那么如果波的振动方向在该面上,那么就是P波,如果振动方向与该面垂直就是S波
公式S波
反射系数:
r_s=\frac{A^‘_{1s}}{A_{1s}}=-\frac{sin(\theta_1-\theta_2 )}{sin(\theta_1+\theta_2)}=\frac{n_1cos\theta_1-n_2cos\theta_2}{n_1cos\t ...
Light Cone 32v1
Light Cone 32v1
本篇文章开始将新增一个专栏,该专栏用于记录笔者自制开发板的一些经历,开发板命名为 light cone ,来源于物理学概念“光锥”,根据芯片的不同和版本会添加不同的后缀。
简介Light Cone 32v1 是自己设计的第一款开发板,主控为STM32F103C8T6(或者C6T6),为第一版,故名为32v1;
开发板外形参考Arduino UNO,长6.8cm 宽5.2cm,两侧38对引脚,LCD小屏幕单独设置排座,设置三个按钮,两个LED,复位按键,BOOT1/2,typeC接口,CH340E转换,电源自锁开关,32.768MHz贴片晶振,16MHz直插晶振,AMS1117 3.3稳压LDO
原理图主控
主控引脚只需将电源引脚,时钟引脚,烧录引脚,BOOT引脚,串口通信引脚,按键和LED引脚引出,其余引脚接排针排座
主控电源输入就近加上100nF去耦电容
烧录、LED、按键
复位、BOOT
TypeC、CH340E
晶振
效果图
晶振频率更改
程序设计,在system_stm32f10x.c文件下修改系统时钟配置,配置为72MH ...
Transforms的使用
Transforms的使用Transforms是常用的图片预处理方法
简介这里总结一共有四大类,方便索引:
裁剪(Crop)
中心裁剪:transforms.CenterCrop
随机裁剪:transforms.RandomCrop
随机长宽比裁剪:transforms.RandomResizedCrop
上下左右中心裁剪:transforms.FiveCrop
上下左右中心裁剪后翻转,transforms.TenCrop
翻转和旋转(Flip and Rotation)
依概率p水平翻转:transforms.RandomHorizontalFlip(p=0.5)
依概率p垂直翻转:transforms.RandomVerticalFlip(p=0.5)
随机旋转:transforms.RandomRotation
图像变换(resize)
调整大小:transforms.Resize
标准化:transforms.Normalize
转为tensor,并归一化至[0-1]:transforms.ToTensor
填充:transforms.Pad
修改亮度、 ...
TensorBoard的使用
TensorBoard的使用
tensorboard是tensorflow开发的一款绘图插件,它可以绘制网络的图像,可以绘制训练时的 Loss ,Accuracy等参数指标,tensorboard现在已经支持在pytorch中使用,使用方法参考pytorch文档
安装导入安装过pytorch后使用TensorBoard还需要安装,
12pip install tensorflowpip install tensorboard
导入时使用以下代码
1from torch.utils.tensorboard import SummaryWriter
导入之后如果无法使用,可以尝试 tensorboardX 使用方法类似
使用安装好后就可以开始使用了
pytorch的官方文档提供了很多例子
123456789101112131415161718192021from torch.utils.tensorboard import SummaryWriterimport numpy as npfrom PIL import Image#首先需要创建一个实例 writer,参数为文件保存的路径,下 ...
WSL2使用串口
WSL2使用串口
在WSL2中串口无法直接使用,需要访问串行端口或 USB 设备时,可以通过USBIPD-WIN 项目为 WSL 2 提供 USB 设备支持。
本文源自微软官网WSL教程,
配置要求
Win11 (版本号22000及以上,Win10请参考官方教程:Win10连接USB设备官方教程
需要具有 x64/x86 处理器的机器。 (usbipd-win 目前不支持 Arm64)。
已安装 Linux 发行版并设置为 WSL 2。
运行 Linux 内核 5.10.60.1 或更高版本。可通过uname -a查看
安装usbipd-win Windows环境中需要安装 usbipd 工具
下载连接
直接下载 .msi 双击运行即可
WSL 在Ubuntu的终端中,运行以下指令:
12sudo apt install linux-tools-5.4.0-77-generic hwdatasudo update-alternatives --install /usr/local/bin/usbip usbip /usr/lib/linux-tools/5.4.0-77-g ...
神经网络的数据集
神经网络的数据集数据集格式方式一:
首先分成训练集和测试集两个文件夹,每个文件里是输出结果的 label ,每个label文件夹下是对应的图片。
12345678910111213141516171819datasets├── train│ ├── label1│ │ ├── file1│ │ └── file2│ ├── label2│ | ├── file1│ | └── file2│ └── label3│ ├── file1│ └── file2├── test│ ├── label1│ │ ├── file1│ │ └── file2│ └── label2│ ├── file1│ └── file2└──
方式二:
文件夹下是训练图片数据文件夹,测试数据文件夹,输出结果文件夹(一般用TXT文档,里面存储图片的目录,图片的 label )
方式三:
直接将图片名称设置为对应的 label 。
创建Datasets首先就是需要从目录中读取文件,需要有每个的图片和 ...
pytorch介绍及环境配置
pytorch介绍及环境配置
本篇起,将开始更新关于神经网路相关内容,当前使用Pytorch框架,同时其他文章也会不定时更新。
pytorch简介 PyTorch是一个开源的Python机器学习库,基于Torch,用于自然语言处理等应用程序。 2017年1月,由Facebook人工智能研究院(FAIR)基于Torch推出了PyTorch。它是一个基于Python的可续计算包,提供两个高级功能:1、具有强大的GPU加速的张量计算(如NumPy)。2、包含自动求导系统的深度神经网络。
人工神经网络(Artificial Neural Networks,简写为ANNs)也简称为神经网络(NNs)或称作连接模型(Connection Model),它是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。这种网络依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的。
现在的主流深度学习框架,主要是 Google 系的 TensorFlow 以及 Facebook 系的 Pytorc ...