图片缩略图

快速二维峰值探测器

version 1.13.0.0 (4.97 KB) by
在有噪声的二维数组中寻找局部最大峰值位置

15.2 k下载

更新2021年5月26日

从GitHub

在GitHub上查看许可证

在文件交换上查看快速2D峰值查找器

fastpeakfind

一个简单和快速的2D峰值查找器。其目标是要比更复杂的技术更快,但也要足够好,以便在噪声数据中找到峰值。该代码分析有噪声的2D图像,并使用鲁棒局部最大查找器(1像素分辨率)或加权质心(亚像素分辨率)找到峰值。代码的设计是尽可能快的,所以我保持它的基本。当使用uint16 \ uint8图像时,它最好工作,并假设峰值相对稀疏。

该代码需要Matlab的图像处理工具箱,并可用于parfor内部更快的处理时间。

请列举:

•(2021)。快速2D寻峰仪(//www.tatmou.com/matlabcentral/fileexchange/37388-fast-2d-peak-finder), MATLAB中央文件交换。2021年5月26日获救。

代码工作原理:理论上,每个峰值都是一个平滑点扩展函数(SPF),类似于某种大小的高斯函数等。实际上,总是存在噪声,例如“椒盐”噪声,通常具有1像素的变化。因为假设峰值的PSF大于1像素,所以“真”值如果我们能够消除这些单像素噪声变化,就可以获得PSF的局部最大值。还有medfilt2,这是一种2D中值滤波器,可以消除“椒盐”噪声。接下来,我们使用conv2“平滑”图像,这样每个峰值中很可能只有一个像素与“真”对应PSF局部最大值。加权质心方法使用相同的图像处理,不同的是它只计算图像处理后获得的每个连接对象的加权质心。虽然这提供了亚像素分辨率,但它可以忽略彼此非常接近的峰值,并且运行稍慢。Read有关如何处理这些情况的更多信息,请参见相关代码注释。

输入:

  • d - 2D数据原始图像-假设一个双\单精度浮点,uint8或unit16数组。请注意,如果需要,代码将原始图像转换为uint16。如果图像的动态范围在0和1之间,我乘以适应uint16。这对于一般用途可能不是最优的,所以根据您的需要进行修改。
  • thres-介于0和max(原始图像(:)之间的数字,用于删除背景
  • 滤波-用于平滑图像的滤波矩阵。滤波器的尺寸应与峰值的特征尺寸相对应
  • edg -数字>1,用于跳过前几个和最后几个“边缘”像素
  • res-在两种峰值查找方法之间切换的句柄:1-局部最大值方法(默认值)。2-加权质心亚像素分辨率方法。请注意,后一种方法平均需要约20%的时间。
  • fid-如果用户希望将峰值位置保存到文件中,则代码假定使用此函数的脚本中有一行“fid=fopen([filename],'w+);”。

可选的输出:

  • cent-峰值坐标的1xN向量(x1,y1,x2,y2,。。。
  • [cent-cm]-除cent外,cm是大小为(d)的二进制矩阵,峰值位置为1。(加权质心亚像素分辨率方法不支持)金宝app

例子:

p=快速峰值风(图像);

显示亮度图像(图像);抓住

绘图(p(1:2:end)、p(2:2:end)、‘r+’)

图一

引用作为

•(2021)。快速二维峰值探测器(https://github.com/adinatan/fastpeakfind/releases/tag/1.13.0.0),GitHub。恢复

MATLAB版本兼容性
创建R2013b
与任何版本兼容
平台的兼容性
窗户 macOS Linux

社区寻宝

在MATLAB中心找到宝藏,并发现社区如何可以帮助你!

开始打猎吧!
要查看或报告此GitHub加载项中的问题,请访问GitHub库
要查看或报告此GitHub加载项中的问题,请访问GitHub库