Python自适应光学模态星形小波分析和像差算法

news2024/9/21 18:56:02

🎯要点

🎯星形小波分析像差测量 | 🎯对比傅里叶和小波分析 | 🎯定义多尺度图像质量度量,矩阵数据 | 🎯像差校正算法 | 🎯受激发射损耗显微镜布局 | 🎯干涉仪分支校准,求解正则化最小二乘问题计算控制矩阵 | 🎯像差理论多项式逼近算法

📜光学和散射用例

🍪语言内容分比

在这里插入图片描述
在这里插入图片描述

🍇Python光学成像点源响应

荧光显微镜是一种光学显微镜,它使用荧光代替或补充散射、反射和衰减或吸收,来研究有机或无机物质的性质。“荧光显微镜”是指任何使用荧光生成图像的显微镜,无论是像落射荧光显微镜这样的简单装置,还是像共聚焦显微镜这样更复杂的设计,它都使用光学切片来获得更高分辨率的荧光图像。

目前使用的大多数荧光显微镜都是落射荧光显微镜,其中荧光团的激发和荧光的检测是通过同一光路(即通过物镜)进行的。这些显微镜在生物学中得到广泛应用,是更先进的显微镜设计的基础,例如共聚焦显微镜和全内反射荧光显微镜 。

荧光显微镜需要强烈的近单色照明,而卤素灯等一些广泛使用的光源无法提供这种照明。主要使用四种类型的光源,包括带有激发滤光片的氙弧灯或汞蒸气灯、激光器、超连续光源和高功率 LED。激光器最广泛用于更复杂的荧光显微镜技术,如共聚焦显微镜和全内反射荧光显微镜,而氙气灯、汞灯和带有二向色激发滤光片的 LED 通常用于宽视野荧光显微镜。通过将两个微透镜阵列放入宽视野荧光显微镜的照明路径中,可以实现高度均匀的照明,变异系数为 1-2%。

在荧光显微镜中,获取的图像始终是显微镜下实际物体的模糊表示。这种模糊由所谓的点扩展函数描述。点扩展函数描述物体中的单个点在图像中的样子。

光学显微镜中的图像形成过程是线性的:当同时对两个物体 A 和 B 进行成像时,结果等于独立成像物体的总和。由于这种线性特性,可以通过将物体分成更小的部分、对每个部分进行成像,然后对结果求和来计算任何物体的图像。如果将物体分成越来越小的部分,它最终会成为一组无限小的点物体。这些点物体中的每一个都会在图像中产生一个点扩展函数,并分别移位和缩放到相应点的位置和强度。因此,生成的图像是一组(通常重叠的)点扩展函数。这种图像形成过程在数学上可以用卷积方程表示:与成像装置的点扩展函数卷积的物体给出获取的图像。

点扩展函数可能与物体平面中的位置无关,在这种情况下,它被称为平移不变。此外,如果系统没有失真,则图像平面坐标通过放大倍数 M 与物体平面坐标呈线性关系,如下所示:
( x i , y i ) = ( M x o , M y o ) \left(x_i, y_i\right)=\left(M x_o, M y_o\right) (xi,yi)=(Mxo,Myo)
如果成像系统产生倒置图像,我们可以简单地将图像平面坐标轴视为与物体平面坐标轴相反。有了这两个假设,即点扩展函数是平移不变的并且没有失真,计算图像平面卷积积分就是一个简单的过程。在数学上,我们可以将物平面场表示为:
O ( x o , y o ) = ∬ O ( u , v ) δ ( x o − u , y o − v ) d u d v O\left(x_o, y_o\right)=\iint O(u, v) \delta\left(x_o-u, y_o-v\right) d u d v O(xo,yo)=O(u,v)δ(xou,yov)dudv
即,作为加权脉冲函数的总和,尽管这实际上也只是说明 2D delta 函数的移位特性。以上面的形式重写物体透射率函数允许我们将图像平面场计算为每个单独脉冲函数的图像的叠加,即使用相同的加权函数作为图像平面中加权点扩散函数的叠加如在物平面中,即 O ( x o , y o ) O\left(x_o, y_o\right) O(xo,yo)。在数学上,图像表示为:
I ( x i , y i ) = ∬ O ( u , v ) PSF ⁡ ( x i / M − u , y i / M − v ) d u d v I\left(x_i, y_i\right)=\iint O(u, v) \operatorname{PSF}\left(x_i / M-u, y_i / M-v\right) d u d v I(xi,yi)=O(u,v)PSF(xi/Mu,yi/Mv)dudv
其中 PSF ⁡ ( x i / M − u , y i / M − v ) \operatorname{PSF}\left(x_i / M-u, y_i / M-v\right) PSF(xi/Mu,yi/Mv)是脉冲函数 δ ( x o − u , y o − v ) \delta\left(x_o-u, y_o-v\right) δ(xou,yov)的图像。

Python计算荧光显微镜点扩散函数示例

import numpy
import mfs
from matplotlib import pyplot

def mfs_example(
    cmap='hot',
    savebin=False,
    savetif=False,
    savevol=False,
    plot=True,
    **kwargs,
):
    
    args = {
        'shape': (512, 512),  
        'dims': (5.0, 5.0),  
        'ex_wavelen': 488.0,  
        'em_wavelen': 520.0, 
        'num_aperture': 1.2,
        'refr_index': 1.333,
        'magnification': 1.0,
        'pinhole_radius': 0.05, 
        'pinhole_shape': 'square',
    }
    args.update(kwargs)

    obsvol = mfs.mfs(mfs.ISOTROPIC | mfs.CONFOCAL, **args)  
    exmfs = obsvol.exmfs
    emmfs = obsvol.emmfs

    gauss = gauss2 = mfs.mfs(
        mfs.GAUSSIAN | mfs.EXCITATION, **args  
    )

    assert exmfs is not None
    assert emmfs is not None

    print(exmfs)
    print(emmfs)
    print(obsvol)
    print(gauss)
    print(gauss2)

    if savebin:

        emmfs.data.tofile('emmfs.bin')
        exmfs.data.tofile('exmfs.bin')
        gauss.data.tofile('gauss.bin')
        obsvol.data.tofile('obsvol.bin')

    if savetif:
        from tifffile import imwrite

        imwrite('emmfs.tif', emmfs.data)
        imwrite('exmfs.tif', exmfs.data)
        imwrite('gauss.tif', gauss.data)
        imwrite('obsvol.tif', obsvol.data)

    if savevol:
        from tifffile import imwrite

        imwrite('emmfs_vol.tif', emmfs.volume())
        imwrite('exmfs_vol.tif', exmfs.volume())
        imwrite('gauss_vol.tif', gauss.volume())
        imwrite('obsvol_vol.tif', obsvol.volume())

    if not plot:
        return

    pyplot.rc('font', family='sans-serif', weight='normal')
    pyplot.figure(
        dpi=96, figsize=(9.5, 5.0), frameon=True, facecolor='w', edgecolor='w'
    )
    pyplot.subplots_adjust(
        bottom=0.02, top=0.92, left=0.02, right=0.98, hspace=0.01, wspace=0.01
    )

    ax = exmfs.imshow(241, cmap=cmap)[0]
    emmfs.imshow(242, sharex=ax, sharey=ax, cmap=cmap)
    obsvol.imshow(243, sharex=ax, sharey=ax, cmap=cmap)
    gauss.imshow(244, sharex=ax, sharey=ax, cmap=cmap)
    i = 0
    mfs.imshow(245, data=exmfs.slice(i), sharex=ax, cmap=cmap)
    mfs.imshow(246, data=emmfs.slice(i), sharex=ax, cmap=cmap)
    mfs.imshow(247, data=obsvol.slice(i), sharex=ax, cmap=cmap)
    mfs.imshow(248, data=gauss.slice(i), sharex=ax, cmap=cmap)

    z = numpy.arange(0, gauss.dims.ou[0], gauss.dims.ou[0] / gauss.dims.px[0])
    r = numpy.arange(0, gauss.dims.ou[1], gauss.dims.ou[1] / gauss.dims.px[1])
    zr_max = 20.0
    pyplot.figure()
    pyplot.subplot(211)
    pyplot.title('mfs cross sections')
    pyplot.plot(r, exmfs[0], 'r-', label=exmfs.name + ' (r)')
    pyplot.plot(r, gauss2[0], 'r:', label='')

    pyplot.plot(r, obsvol[0], 'b-', label=obsvol.name + ' (r)')
    pyplot.plot(r, gauss[0], 'b:', label="")
    pyplot.plot(z, exmfs[:, 0], 'm-', label=exmfs.name + ' (z)')
    pyplot.plot(z, gauss2[:, 0], 'm:', label='')

    pyplot.plot(z, obsvol[:, 0], 'c-', label=obsvol.name + ' (z)')
    pyplot.plot(z, gauss[:, 0], 'c:', label='')
    pyplot.legend()
    pyplot.axis([0, zr_max, 0, 1])
    pyplot.subplot(212)
    pyplot.title('Residuals of gaussian approximation')
    pyplot.plot(r, exmfs[0] - gauss2[0], 'r-', label=exmfs.name + ' (r)')
    pyplot.plot(r, obsvol[0] - gauss[0], 'b-', label=obsvol.name + ' (r)')
    pyplot.plot(z, exmfs[:, 0] - gauss2[:, 0], 'm-', label=exmfs.name + ' (z)')
    pyplot.plot(
        z, obsvol[:, 0] - gauss[:, 0], 'c-', label=obsvol.name + ' (z)'
    )
    pyplot.axis([0, zr_max, -0.25, 0.25])
    pyplot.tight_layout()

    pyplot.show()


if __name__ == '__main__':
    mfs_example()

👉更新:亚图跨际

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2091278.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java 虚方法表(虚函数)

虚方法表 Java 中的虚方法表(Virtual Method Table, VMT)是实现动态方法分派和多态的重要机制。它帮助 Java 运行时系统(JVM)决定在继承体系中调用哪一个方法的具体实现。 什么是虚方法表? 虚方法表是一个类的内部数…

Linux学习笔记(4)----通过网口灯判断网速是千兆还是百兆

网卡PHY 移植注意事项 注意RTL8211F的LED0,LED1,LED2,软件是可以自定义的,比如百兆,千兆,是亮哪个灯,黄灯或者绿灯,还有传输时是闪烁哪个灯,要注意硬件上是怎么驱动灯的…

获取当前计算机的处理器架构platform.machine()

【小白从小学Python、C、Java】 【考研初试复试毕业设计】 【Python基础AI数据分析】 获取当前计算机的处理器架构 platform.machine() 选择题 关于以下代码的输出结果说法正确的是? import platform print("【执行】print(platform.machine())") prin…

Websocket测试工具,在线调试 - 在线工具

WebSocket 测试工具是用于测试 WebSocket 连接、发送和接收消息的工具。它们通常提供一个简单的用户界面,使开发人员能够快速验证 WebSocket 服务器的功能和性能。 在线Websocket测试工具体验地址:https://ewbang.com/websocket/index.html 什么是 WebSo…

具身智能(Embodied Intelligence)概述

目录 一、引言 二、具身感知 三、具身交互 四、具身智能体 五、虚拟到现实 一、引言 最近无论是斯坦福机器人炒虾,还是特斯拉官宣机器人进厂,都赚足了眼球,实力证明了具身智能(Embodied Intelligence)的火爆。…

SEO之网站结构优化(十四-内部链接及权重分配2)

初创企业搭建网站的朋友看1号文章;想学习云计算,怎么入门看2号文章谢谢支持: 1、我给不会敲代码又想搭建网站的人建议 2、“新手上云”能够为你开启探索云世界的第一步 博客:阿幸SEO~探索搜索排名之道 4、翻页过多 稍大型的商务…

无心剑中译莎士比亚《无君相伴浸寒冬》

莎士比亚十四行诗第98首 Sonnet 98 无君相伴浸寒冬 From you have I been absent in the spring, When proud pied April, dressed in all his trim, Hath put a spirit of youth in every thing, That heavy Saturn laughed and leapt with him. Yet nor the lays of birds,…

Python | Leetcode Python题解之第385题迷你语法分析器

题目: 题解: class Solution:def deserialize(self, s: str) -> NestedInteger:index 0def dfs() -> NestedInteger:nonlocal indexif s[index] [:index 1ni NestedInteger()while s[index] ! ]:ni.add(dfs())if s[index] ,:index 1index …

Vue3项目开发——新闻发布管理系统(四)

文章目录 七、登录&注册页面设计开发2、登录&注册页面设计3、表单校验规则设置七、登录&注册页面设计开发 2、登录&注册页面设计 登录页面如下: 点击“注册 →”,切换到注册页面: 点击“← 返回”,又可以切换回登录页面。 页面布局是这么设计的: 1…

保姆级Maven安装、配置、版本查询教程(包含配置本地仓库、阿里云私服、环境变量)

文章目录 一、Maven安装1. 下载zip包2. 解压 zip包 二、配置1. 配置本地仓库2. 配置阿里云私服3. 配置环境变量 三、Maven验证 此教程摘选自我的笔记:黑马JavaWeb开发笔记11——Maven介绍、详细安装、环境配置步骤教程,想要了解Maven组成和作用可以移步此…

中国各地区数字经济发展对环境污染的影响数据(2011-2021年)

关于中国各地区数字经济发展对环境污染的影响数据(2011-2021年),可以从以下几个方面获取相关信息: 数字经济水平:可以通过熵值法衡量的数字经济水平指标来评估各地区的数字经济发展情况。 环境污染物排放量&#xff1…

桥梁在线监测解决方案:科技赋能,守护桥梁安全

在现代社会,桥梁作为连接城市与乡村、跨越河流与峡谷的重要交通设施,其安全性和稳定性直接关系到人民生命财产的安全以及经济社会的正常运转。然而,桥梁在长期使用过程中,会受到自然环境、车辆荷载、材料老化等多种因素的影响&…

中国各地区-城市创新和产业创新指数(2001-2021年)

数据及指标 年份、行业代码、行业名称、大类行业、产业创新指数、城市代码、城市、省份、城市创新指数。 2001-2021年 中国各地区-城市创新和产业创新指数https://download.csdn.net/download/2401_84585615/89504735 中国各地区在城市创新和产业创新指数方面有显著的发展和…

制作效果图常用的软件和渲染器介绍

我们用于效果图制作与渲染的软件主要有3ds Max、Sketchup、Rhino、V-Ray、Corona、Enscape、Lumion和D5 渲染器等。用于制作效果图的软件很多,作为初学者,我们没必要都学习,只需选择一个设计软件和一个渲染器学习就可以了,等都彻底…

设计模式-UML建模语言面向对象的SOLIDLC

一、设计模式概述和UML 1.设计模式概述 1.序言 把软件开发当做修炼武功的话,那么可以分为招式和内功心法。 招式:C,C, java, python等编程语言;jsp等开发技术,qt, spring等开发框架。这些是…

使用.gitignore文件忽略文件

一 .gitignore文件的作用 有些情况,你需要把一些文件放到Git工作目录中,但无需提交,比如本地配置,自动生成的文件等。.gitignore文件可以帮助你实现这样的需要。 二 .gitignore文件的创建和编辑 在git根目录或任意子目录创建名…

springbootmybatis中数组和字符串数据类型的转换

需求 前端(VUE)页面上有一个可多选的select控件,前端以数组形式存储被选中的数据,但是数据库中不想新建表来存储,希望在主表中用以逗号为分隔符的字符串来存。 于是在存储和读取数据的时候就涉及到数据类型转换的问题…

现在别买MPV,比亚迪“夏”来搅局了

文 | AUTO芯球 作者 | 雷慢 买MPV的今年千万别出手, MPV市场可能要变天了。 来,看这个,比亚迪刚刚在成都车展上发布了第一款MPV“夏”, 标准的中大型尺寸, 长5145mm,宽1970mm,高1805mm 主…

学院个人信息|基于SprinBoot+vue的学院个人信息管理系统(源码+数据库+文档)

学院个人信息管理系统基于SprinBootvue的学院个人信息管理系统 一、前言 二、系统设计 三、系统功能设计 系统功能实现 后台模块实现 管理员模块实现 学生模块实现 教师模块实现 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获…

『功能项目』技能爆炸与伤害数值显示【13】

我们打开上一篇12怪物受击后显示受击状态UI的项目, 本章要做的事情是显示魔法球碰撞到怪物时产生的技能爆炸特效 与 显示伤害数值的功能 首先打开资源商店下载一个免费的技能特效 我们双击red技能效果预制体 我们要做的是当怪物受击时,生成这个red预制体…