峰值、峰值滤波和灰度加权质心
我以前的文章(
17 - 9 - 2021
)是基于一维的例子。今天的文章集中在一个图片的例子(在2-D),它连接到使用
regionprops
来计算灰色加权的峰心。我还会添加一些三维表面可视化,只是为了好玩。以下是今天的图片:
url =“https://blogs.mathworks.com/steve/files/snowflakes2.png”;
一个= imread (url);
imshow (A)
我想看看我们能不能把重点放在算法上
白色点点事情
(这是我在工程学校学到的专业术语)。首先,让我们试着计算
区域最大值
.
A_regmax = imregionalmax(一个);
imshow (A_regmax)
乍一看,确实如此
不
看起来像我要找的东西。我们来看看这是怎么回事。
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 =“没有”)
colormap (“灰色”)
照明高洛德
daspect([1] 15日)
[y、x ~] =找到(A_regmax_cropped);
z = A_cropped (A_regmax_cropped);
持有在
plot3 (x, y, z + 1,线型=“没有”标志=“o”,...
MarkerEdgeColor =“b”,...
MarkerFaceColor =“y”)
包含(“x”)
ylabel (“y”)
甘氨胆酸集(YDir =“反向”)
视图(-35,45)
camlight
持有从
第二种方法是回到2d,但使用极端放大的视图,将实际像素值叠加在单个像素上。为了完成,我使用了
图像查看器
和
像素区域的工具
.下面是像素区域工具的屏幕截图。我已经在屏幕截图中标注了区域最大值的位置。
使用任何一种技术,你都可以得到这样的想法:这些极大值位置中的一些只是小的,无趣的波动。
正如我在前面的文章中讨论的,你可以使用
h-maxima变换
来过滤掉这些小峰。
h = 75;
B = imhmax (h);
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)
轴([225 315 30 60])
我想以一个与
regionprops
函数。这个函数最常用于二值图像输入,它计算二值图像中对象(连接组件)的各种几何属性。但您也可以同时提供灰度图像。有了这些附加信息,您可以计算其他属性。在这里,我感兴趣的是
加权质心
探测到的各种峰。将原始图像像素值作为权重。以下是如何做到:
道具= regionprops (“表”B_regmax,,“WeightedCentroid”)
这是一种可视化结果的方法:
imshow (A)
持有在
情节(props.WeightedCentroid (: 1) props.WeightedCentroid (:, 2),...
线型=“没有”标志=“o”MarkerEdgeColor =“y”,...
MarkerFaceColor =“b”)
持有从
轴([225 315 30 60])
标题(“灰度加权质心”)
|
评论
要发表评论,请点击此处登录到您的MathWorks帐户或创建一个新帐户。