Python和MATLAB(Java)及Arduino和Raspberry Pi(树莓派)点扩展函数导图
🎯要点
- 反卷积显微镜图像算法
- 微珠图像获取显微镜分辨率
- 基于像素、小形状、高斯混合等全视野建模
- 基于探测器像素经验建模
- 荧光成像算法模型
- 傅里叶方法计算矢量点扩展函数模型
- 天文空间成像重建
- 二维高斯拟合天体图像
- 伽马射线能量和视场中心偏移角
- 标量矢量模型
- 盲解卷积和深度估计
- 测量绘制光源虹膜孔径和峰值
Python泽尼克矩
泽尼克多项式被广泛用作图像矩的基函数。由于泽尼克多项式彼此正交,泽尼克矩可以表示图像的属性,且矩之间没有冗余或信息重叠。尽管泽尼克矩很大程度上取决于感兴趣区域中对象的缩放和平移,但其幅度与对象的旋转角度无关。因此,它们可用于从图像中提取描述对象形状特征的特征。例如,泽尼克矩被用作形状描述符,以对良性和恶性乳腺肿块进行分类或振动盘的表面。泽尼克矩还被用于在单细胞水平上量化骨肉瘤癌细胞系的形状。此外,泽尼克矩已用于早期发现阿尔茨海默病,方法是从阿尔茨海默病、轻度认知障碍和健康人群的 MR 图像中提取判别信息。
泽尼克矩是一种图像描述符,用于表征图像中对象的形状。要描述的形状可以是分割的二值图像,也可以是对象的边界(即形状的“轮廓”或“轮廓”)。在大多数应用中,最好使用分割的二值图像而不仅仅是轮廓,因为分割的二值图像不易受噪声影响。
泽尼克矩数学形态
泽尼克矩使用复泽尼克多项式作为矩基组。二维泽尼克矩 Z n m Z_{n m} Znm,阶数 n n n,重复 m m m,在单位圆内的极坐标 ( r , θ ) (r, θ) (r,θ) 中定义为
Z n m = n + 1 π ∫ 0 1 ∫ 0 2 π R m ( r ) e − j m θ f ( r , θ ) r d r d θ , 0 ≤ ∣ m ∣ ≤ n , n − ∣ m ∣ 是偶数 \begin{gathered} Z_{n m}=\frac{n+1}{\pi} \int_0^1 \int_0^{2 \pi} R_m(r) e^{-j m \theta} f(r, \theta) r d r d \theta, 0 \leq|m| \leq n, n-|m| \text { 是偶数 } \end{gathered} Znm=πn+1∫01∫02πRm(r)e−jmθf(r,θ)rdrdθ,0≤∣m∣≤n,n−∣m∣ 是偶数
其中 R n m ( r ) R_{n m}(r) Rnm(r) 是泽尼克径向多项式的 n n n 阶,由下式给出
R n m ( r ) = ∑ k = 0 ( n − ∣ m ∣ ) / 2 ( − 1 ) k ( n − k ) ! k ! ⌊ ( n − 2 k + ∣ m ∣ ) / 2 ⌋ ! ⌊ ( n − 2 k − ∣ m ∣ ) / 2 ⌋ ! r n − 2 k \begin{gathered} R_{n m}(r)= \\ \sum_{k=0}^{(n-|m|) / 2}(-1)^k \frac{(n-k)!}{k!\lfloor(n-2 k+|m|) / 2\rfloor!\lfloor(n-2 k-|m|) / 2\rfloor!} r^{n-2 k} \end{gathered} Rnm(r)=k=0∑(n−∣m∣)/2(−1)kk!⌊(n−2k+∣m∣)/2⌋!⌊(n−2k−∣m∣)/2⌋!(n−k)!rn−2k
与旋转矩和复矩一样,泽尼克矩的大小在图像旋转变换下是不变的。图像可以使用 M M M 阶矩的集合来重建为
f ( r , θ ) ≈ ∑ n = 0 M ∑ m Z n m R n m ( r ) e j m θ f(r, \theta) \approx \sum_{n=0}^M \sum_m Z_{n m} R_{n m}(r) e^{j m \theta} f(r,θ)≈n=0∑Mm∑ZnmRnm(r)ejmθ
Python计算泽尼克矩
示例一:
_slow_zernike_poly
函数构造二维泽尼克基函数。在 zernike_reconstruct
函数中,我们将图像投影到 _slow_zernike_poly
返回的基函数上并计算矩。然后我们使用重建公式。
import numpy as np
from math import atan2
from numpy import cos, sin, conjugate, sqrtdef _slow_zernike_poly(Y,X,n,l):def _polar(r,theta):x = r * cos(theta)y = r * sin(theta)return 1.*x+1.j*ydef _factorial(n):if n == 0: return 1.return n * _factorial(n - 1)y,x = Y[0],X[0]vxy = np.zeros(Y.size, dtype=complex)index = 0for x,y in zip(X,Y):Vnl = 0.for m in range( int( (n-l)//2 ) + 1 ):Vnl += (-1.)**m * _factorial(n-m) / \( _factorial(m) * _factorial((n - 2*m + l) // 2) * _factorial((n - 2*m - l) // 2) ) * \( sqrt(x*x + y*y)**(n - 2*m) * _polar(1.0, l*atan2(y,x)) )vxy[index] = Vnlindex = index + 1return vxydef zernike_reconstruct(img, radius, D, cof):idx = np.ones(img.shape)cofy,cofx = cofcofy = float(cofy)cofx = float(cofx)radius = float(radius) Y,X = np.where(idx > 0)P = img[Y,X].ravel()Yn = ( (Y -cofy)/radius).ravel()Xn = ( (X -cofx)/radius).ravel()k = (np.sqrt(Xn**2 + Yn**2) <= 1.)frac_center = np.array(P[k], np.double)Yn = Yn[k]Xn = Xn[k]frac_center = frac_center.ravel()npix = float(frac_center.size)reconstr = np.zeros(img.size, dtype=complex)accum = np.zeros(Yn.size, dtype=complex)for n in range(D+1):for l in range(n+1):if (n-l)%2 == 0:vxy = _slow_zernike_poly(Yn, Xn, float(n), float(l))a = sum(frac_center * conjugate(vxy)) * (n + 1)/npixaccum += a * vxyreconstr[k] = accumreturn reconstrif __name__ == '__main__':import cv2import pylab as plfrom matplotlib import cmD = 12img = cv2.imread('fl.bmp', 0)rows, cols = img.shaperadius = cols//2 if rows > cols else rows//2reconst = zernike_reconstruct(img, radius, D, (rows/2., cols/2.))reconst = reconst.reshape(img.shape)pl.figure(1)pl.imshow(img, cmap=cm.jet, origin = 'upper')pl.figure(2) pl.imshow(reconst.real, cmap=cm.jet, origin = 'upper')
示例二:
我们将学习应用泽尼克矩矩实际识别图像中的对象。我们需要 2 张图像:第一个图像将是我们要检测的对象的参考图像。第二张图像将是一个干扰物图像,其中包含 (1) 我们想要查找和识别的对象,以及 (2) 一堆旨在“迷惑”我们的算法的“干扰物”对象。我们的目标是成功检测第二张图像中的参考图像。
from scipy.spatial import distance as dist
import numpy as np
import cv2
import imutilsdef describe_shapes(image):shapeFeatures = []gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)blurred = cv2.GaussianBlur(gray, (13, 13), 0)thresh = cv2.threshold(blurred, 50, 255, cv2.THRESH_BINARY)[1]thresh = cv2.dilate(thresh, None, iterations=4)thresh = cv2.erode(thresh, None, iterations=2)cnts = cv2.findContours(thresh.copy(), cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)cnts = imutils.grab_contours(cnts)for c in cnts:mask = np.zeros(image.shape[:2], dtype="uint8")cv2.drawContours(mask, [c], -1, 255, -1)(x, y, w, h) = cv2.boundingRect(c)roi = mask[y:y + h, x:x + w]features = zerni_moments(roi, cv2.minEnclosingCircle(c)[1], degree=8)shapeFeatures.append(features)return (cnts, shapeFeatures)refImage = cv2.imread("pokemon_red.png")
(_, gameFeatures) = describe_shapes(refImage)shapesImage = cv2.imread("shapes.png")
(cnts, shapeFeatures) = describe_shapes(shapesImage)D = dist.cdist(gameFeatures, shapeFeatures)
i = np.argmin(D)for (j, c) in enumerate(cnts):if i != j:box = cv2.minAreaRect(c)box = np.int0(cv2.cv.BoxPoints(box) if imutils.is_cv2() else cv2.boxPoints(box))cv2.drawContours(shapesImage, [box], -1, (0, 0, 255), 2)box = cv2.minAreaRect(cnts[i])
box = np.int0(cv2.cv.BoxPoints(box) if imutils.is_cv2() else cv2.boxPoints(box))
cv2.drawContours(shapesImage, [box], -1, (0, 255, 0), 2)
(x, y, w, h) = cv2.boundingRect(cnts[i])
cv2.putText(shapesImage, "FOUND!", (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.9,(0, 255, 0), 3)
cv2.imshow("Input Image", refImage)
cv2.imshow("Detected Shapes", shapesImage)
cv2.waitKey(0)
要查看实际效果,只需执行以下命令:
$ python detect.py
👉更新:亚图跨际
相关文章:

Python和MATLAB(Java)及Arduino和Raspberry Pi(树莓派)点扩展函数导图
🎯要点 反卷积显微镜图像算法微珠图像获取显微镜分辨率基于像素、小形状、高斯混合等全视野建模基于探测器像素经验建模荧光成像算法模型傅里叶方法计算矢量点扩展函数模型天文空间成像重建二维高斯拟合天体图像伽马射线能量和视场中心偏移角标量矢量模型盲解卷积和…...

使用isolation: isolate声明隔离混合模式
在CSS中,isolation 属性与混合模式(如 mix-blend-mode 和 background-blend-mode)并不直接相关,但它确实可以影响元素如何与其他元素进行渲染,尤其是在涉及到堆叠上下文(stacking contexts)和复…...

93. UE5 GAS RPG 应用负面效果表现
在上一篇文章里,我们实现了添加负面效果GE,并且在添加GE时,也会给角色应用一个负面效果标签作为标识。在这一篇里,我们将通过负面效果标签标识,应用角色身上展现对应的负面效果的表现。 我们将在这篇文章里添加一个自定…...

TCP 和 UDP 区别
UDP UDP(用户数据报协议,User Datagram Protocol)是一种无连接的网络传输协议,提供了简单的消息传送服务。UDP位于传输层,允许应用程序向其他主机发送封装在IP数据报中的消息,而无需先建立连接。由于UDP不…...

免费2024柜台租赁经营合同范本模板下载分享
今天看到这个合同范本都拿来卖钱,我直接分享出来2024年最新的范本模板随便下,免费的 柜台租赁经营合同GF—2013—0603.docx: https://url51.ctfile.com/f/20096151-1353625109-4285d2?p1605 (访问密码: 1605) 柜台租赁经营合同GF—2013—0603.pdf: https://url51.ctfile.com/…...

模型和算力看板:Compute DashBoard
AGI 之路 AGI(通用人工智能)是整个计算机科学的圣杯,算力的增长和模型能力的提升(算法和数据)缺一不可。作为一个新质生产力,构建一个合理的评价体系是常用的方法论。针对模型和算力的评价,有类…...

Python加载 TorchScript 格式的 ResNet18 模型分类该模型进行预测并输出预测的类别和置信度
首先加载预训练的 ResNet18 模型。将模型设置为评估模式,以确保特定层(如 Dropout 和 BatchNorm)在评估时具有确定性的行为。创建一个形状为 (1, 3, 224, 224) 的随机张量作为示例输入。使用 torch.jit.trace 函数追踪模型在给定示例输入上的…...

学习笔记--MybatisPlus
官网:MyBatis-Plus 🚀 为简化开发而生 快速入门 入门案例 引入MybatisPlus的起步依赖 定义Mapper 问题: MybatisPlus中Invalid bound statement (not found): com.itheima.mp.mapper.UserMapper.insert 一定要指定实体类!&am…...

【机器学习】XGBoost的用法和参数解释
一、XGBoost的用法 流程: 代码案例: 二、XGBoost的几大参数 1、一般参数,用于集成算法本身 ①n_estimators 集成算法通过在数据上构建多个弱 评估器,汇总所有弱评估器的建模结果,以获取比单个模型更好的回归或分类…...

Vivado 约束
步骤5:保存约束 约束管理是设计流程的重要一步,Vivado设计套件 为您提供了在现有约束文件中添加新约束、覆盖的灵活性 现有约束,或创建新的约束文件以跟踪设计更改或完成 缺少约束。 您为设计创建了一些定时异常,但这些异常仅存在…...

如何在Excel中创建一个VBA宏,并设置一个按钮来执行这个宏
下面是一个详细的步骤指南 步骤1:创建VBA宏 1. 打开Excel并按 Alt F11 打开VBA编辑器。 2. 在VBA编辑器中,选择 Insert > Module 来插入一个新的模块。 3. 将以下代码粘贴到模块中: vba Sub CreateNewSheet() 声明一个工作表对象Dim …...

H3C SR-MPLS通过OSPF通告SID配置
首先在配置前理解几个基本概念 Prefix SID配置 统一分配和配置(全局规划)loopback和prefix sidPrefix SIDSRGB Base(16000)index Adj SID自动生成 对应SR节点间的互联链路SR节点本地标识,从设备本地Segment池中动态…...

JS面试真题 part2
JS面试真题 part2 6、typeof 与 instanceof 区别7、JavaScript原型,原型链?有什么特点8、说说你对作用域链的理解9、谈谈this对象的理解10、说说new操作符具体干了什么 6、typeof 与 instanceof 区别 自己回答: typeof:用来判断数…...

python 下载excel 添加水印
Python 在 Excel 中添加水印 https://zhuanlan.zhihu.com/p/499239298 生成图片 from PIL import Image, ImageDraw, ImageFont import numpy as np import matplotlib.pyplot as plt# 创建一个新的白色图片 img Image.new(RGB, (200, 100), color(255, 255, 255))# 指定中…...

CosyVoice:开源强大的 AI 语音合成工具
在当今科技飞速发展的时代,AI 语音合成技术正逐渐改变着我们的生活。今天,就为大家介绍一款卓越的语音合成工具——CosyVoice。 一、安装步骤 克隆和安装: 克隆仓库:git clone --recursive https://github.com/FunAudioLLM/Cos…...

【靶场】Pikachu—XSS Cross-Site Scripting(前五关)
🏘️个人主页: 点燃银河尽头的篝火(●’◡’●) 如果文章有帮到你的话记得点赞👍收藏💗支持一下哦 【靶场】Pikachu—XSS Cross-Site Scripting(前五关) 第一关 反射型xss(get)第二关 反射型xss(post)第三关…...

Dance with Compiler - EP2
今天来熟悉汇编指令。 基本指令特点 str: store value to memory ldr: load value from memory stp: store register value to stack ldp: load stack value to register 更新寄存器的操作,一般结果寄存器是左操作数。 写内存的操作(str)&…...

微博视频无水印下载的方法
在如今的数字时代,社交媒体平台如微博已经成为人们分享日常生活、获取新闻和娱乐内容的重要渠道。我们时常会在刷微博时看到一些有趣的视频图片,或是名人的访谈,或是搞笑的短片,有时甚至是一些珍贵的历史资料。这些视频不仅内容丰…...

C语言 | Leetcode C语言题解之第390题消除游戏
题目: 题解: int lastRemaining(int n) {int a1 1;int k 0, cnt n, step 1;while (cnt > 1) {if (k % 2 0) { // 正向a1 a1 step;} else { // 反向a1 (cnt % 2 0) ? a1 : a1 step;}k;cnt cnt >> 1;step step << 1;}return …...

虚拟现实辅助工程技术助力多学科协同评估
在当今高速发展的经济环境中,制造业面临着多重挑战,包括提高产品性能、压缩设计周期、实现轻量化设计和降低成本。为了有效应对这些挑战,多学科协同评估成为缩短研发周期和提升研制质量的关键手段。 传统的多学科评估面临着数据孤立与融合困难…...

Java获取小程序码示例(三种小程序码)
首先我们可以看到官方文档上是有三种码的 获取小程序码 这里特别要注意的是第一种和第三种是有数量限制的,所以大家生成的时候记得保存,也不要一直瞎生成 还有一点要注意的是第一种和第二种是太阳码 第三种是方形码 好了直接上代码 这里要注意ÿ…...

【最新华为OD机试E卷-支持在线评测】分糖果(100分)-多语言题解-(Python/C/JavaScript/Java/Cpp)
🍭 大家好这里是春秋招笔试突围 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-E/D卷的三语言AC题解 💻 ACM金牌🏅️团队| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 🍿 最新华为OD机试D卷目录,全、新、准,题目覆盖率达 95% 以上,…...

Windows下Python和PyCharm的应用(二)__快捷键方式的设定
前言 程序写久了,难免会形成自己的编程习惯。比如对某一套快捷键的使用,已经形成了肌肉记忆。 为了方便快捷键的使用,可以在PyCharm中设置自己喜欢的快捷键。 我比较习惯于微软Visual Studio的快捷键设置。(因为早些年VC开发用的…...

网络安全宗旨和目标
网络安全涉及网络和相关数据及信息的保护与保障。它已从物理技术发展到防病毒和反网络钓鱼平台等软件方法。 在本章中,我们将详细讨论网络安全的主要目标和原则,并提供与之相关的具体示例。所以,让我们从网络安全的目标开始。 网络安全的目的…...

stm32之软件SPI读写W25Q64存储器应用案例
系列文章目录 1. stm32之SPI通信协议 文章目录 系列文章目录前言一、电路接线图二、应用案例代码三、应用案例分析3.1 SPI通信模块3.2 W25Q64模块3.3 主程序 前言 提示:本文主要用作在学习江科大自化协STM32入门教程后做的归纳总结笔记,旨在学习记录&a…...

Python数据验证库schema
目录 一、简述 二、安装schema库 三、使用 基本概念 代码示例 简单使用 列表验证 正则表达式 一、简述 schema用于简化数据验证的过程。它提供了一种简单的方式来定义数据结构,并验证传入的数据是否符合预期的结构。schema 库非常适合用于 Web 应用的请求验…...

python数据类型与运算符
1、数据类型 (1)Python中提供了基本数据类型: 数值类型:int整数类型、float浮点数类型、complex复数类型 布尔类型:bool,取值True / False 字符串:单引号包含、双引号包含、三对单引号/双引号…...

加密解密工具类
加密解密工具类 package com.example.modules.util;import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.crypto.SecretKey; import javax.crypto.spec.SecretKeySpec; import java.security.SecureRandom; import java.util.Base64; public…...

validationtools中按键测试选项光标移除
最近处理一个问题,设备有方向键盘,做cit中的按键测试,发现按方向键第一次按键不能触发该键值,而是让屏幕第一个按钮获取焦点,然后再次按键,则其他正常。问题:进入界面第一次按键就要响应对应按键…...

【Hot100算法刷题集】哈希-02-字母异位词分组(含排序构造键、自定义键、自定义哈希函数法)
🏠关于专栏:专栏用于记录LeetCode中Hot100专题的所有题目 🎯每日努力一点点,技术变化看得见 题目转载 题目描述 🔒link->题目跳转链接 给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺…...