今天,我继续我的最近的主题思考peak-finding图像。当我写第一个(
19日- 8月- 2021
),我不知道它会变成一个系列。这可能是最后一个但不承诺!
我的以前的文章(
17 - 9 - 2021
)是基于一维的例子。今天的帖子里专注于一个形象的例子(二维),和它连接使用
regionprops
计算gray-weighted质心的峰值。我还会把一些表面三维可视化,只是为了好玩。这是今天的图片:
url =“https://blogs.mathworks.com/steve/files/snowflakes2.png”;
我想看看我们是否可以通过算法关注这些
白色点点事情
(这是一个技术术语,我学会了在工程学校)。首先,让我们尝试计算
区域最大值
。
A_regmax = imregionalmax(一个);
乍一看,
不
像我所追求的。让我们来看看这是怎么回事。
A_regmax_overlay = imoverlay (A_regmax,“绿色”);
imshow (A_regmax_overlay)
我想仔细看看一个白色点点东西。
imshow (A_regmax_overlay (30:47,263:285:))
一个,或者两个,这些位置的样子的高峰,我们感兴趣的。其他的呢?让我给你两种不同的方式,进一步探索。首先是与三维可视化,我们把图像像素值作为灰色表面的高度。下面的代码显示表面,然后显示检测到的区域极大值点,泛出略高于水面。
A_cropped = (30:47,263:285);
A_regmax_cropped = A_regmax (30:47,263:285);
冲浪(A_cropped EdgeColor =“没有”)
[y、x ~] =找到(A_regmax_cropped);
z = A_cropped (A_regmax_cropped);
plot3 (x, y, z + 1,线型=“没有”标志=“o”,…
第二种方式是回到二维,但使用极放大视图,与实际像素值叠加在单个像素。完成,我使用了
图像查看器
和
像素区域的工具
。下面是一个像素区域的屏幕截图工具。我有注释的屏幕截图的位置区域最大值。
与技术,你可以明白我的意思,这些极大值位置只是几个小,无趣的波动。
正如我在前面的文章所讨论的,您可以使用
h-maxima变换
过滤掉这些小高峰。
imshow (B (30:47,263:285))
B_regmax = imregionalmax (B);
imshow (B_regmax (30:47,263:285))
B_regmax_overlay = imoverlay (B B_regmax“绿色”);
imshow (B_regmax_overlay)
我想完成连接
regionprops
函数。这个函数是最常使用二进制图像输入,并计算各种几何图形对象的属性(连接组件)的二进制图像。但是你也可以提供一个灰度图像在同一时间。额外的信息,你可以计算其他属性。在这里,我感兴趣的
加权质心
的各种检测峰值。将使用原始图像像素值作为权重。怎么做:
道具= regionprops (“表”B_regmax,,“WeightedCentroid”)
道具=
99×1表
|
WeightedCentroid |
1 |
1.6702 |
24.6139 |
2 |
2.4948 |
43.3596 |
3 |
1.4239 |
97.7269 |
4 |
14.5813 |
52.3127 |
5 |
20.5567 |
100.2771 |
6 |
28.5663 |
89.2373 |
7 |
29.9773 |
18.0773 |
8 |
31.1731 |
50.3474 |
9 |
41.2062 |
2.7718 |
10 |
45.1645 |
39.6400 |
11 |
44.1222 |
25.3352 |
12 |
43.9098 |
67.8786 |
13 |
44.8320 |
103.4289 |
14 |
50.9091 |
16.5648 |
⋮ |
这是一种可视化的结果:
情节(props.WeightedCentroid (: 1) props.WeightedCentroid (:, 2),…
线型=“没有”标志=“o”MarkerEdgeColor =“y”,…
评论
留下你的评论,请点击在这里MathWorks账户登录或创建一个新的。