峰值,峰值滤波和灰度加权质心
我的上一篇文章(
17 - 9 - 2021
)是基于一维的例子。今天的帖子主要关注一个图像示例(2d),它与使用有关
regionprops
计算峰值的灰度加权质心。我还会加入一些3d表面可视化,只是为了好玩。这是今天的图片:
url =“https://blogs.mathworks.com/steve/files/snowflakes2.png”;
A = imread(url);
imshow (A)
我想看看我们能不能用算法来解决这些问题
白色斑点状的东西
(这是我在工程学院学到的一个专业术语)。首先,让我们试着计算
区域最大值
。
A_regmax = imregionalmax(A)
imshow (A_regmax)
乍一看,确实如此
不
看起来像我想要的。让我们看看到底发生了什么。
A_regmax_overlay = ioverlay (A,A_regmax,“绿色”);
imshow (A_regmax_overlay)
我想仔细观察一个白色斑点状的东西。
imshow (A_regmax_overlay (30:47,263:285:))
其中一个或两个位置看起来像是我们感兴趣的那种高峰。其他人呢?让我向您展示进一步探索的两种不同方法。第一种是3d可视化,我们将图像像素值视为灰色表面的高度。下面的代码显示了该表面,然后它将检测到的区域最大值显示为表面上方的蓝黄点。
数字
A(30:47,263:285);
a_regmax_庄稼= A_regmax(30:47,263:285);
surf(a_庄稼,EdgeColor =“没有”)
colormap (“灰色”)
照明高洛德
Daspect ([1 1 15])
[y,x,~] = find(a_regmax_庄稼);
z = a_庄稼(a_regmax_庄稼);
持有在
plot3 (x, y, z + 1,线型=“没有”标志=“o”,…
MarkerEdgeColor =“b”,…
MarkerFaceColor =“y”)
包含(“x”)
ylabel (“y”)
甘氨胆酸集(YDir =“反向”)
视图(-35,45)
camlight
持有从
无论使用哪一种技术,你都可以得到这样的想法:这些最大值的几个位置只是小的、无趣的波动。
正如我在前几篇文章中所讨论的,您可以使用
h-maxima变换
过滤掉这些小的峰值。
H = 75;
B = imhmax(A,h);
imshow (B (30:47,263:285))
B_regmax = imregionalmax(B);
imshow (B_regmax (30:47,263:285))
B_regmax_overlay = ioverlay (B,B_regmax,“绿色”);
imshow (B_regmax_overlay)
轴([225 315 30 60])
我想以一个与
regionprops
函数。该函数最常用于二值图像输入,它计算二值图像中对象(连接组件)的各种几何属性。但您也可以同时提供灰度图像。有了这些附加信息,您就可以计算其他属性。这里,我感兴趣的是
加权质心
各种检测到的峰。将使用原始图像像素值作为权重。以下是如何做到这一点:
Props = regionprops“表”B_regmax,,“WeightedCentroid”)
这是一种可视化结果的方法:
imshow (A)
持有在
情节(props.WeightedCentroid (: 1) props.WeightedCentroid (:, 2),…
线型=“没有”标志=“o”MarkerEdgeColor =“y”,…
MarkerFaceColor =“b”)
持有从
轴([225 315 30 60])
标题(“灰度加权质心”)
댓글
댓글을남기려면링크를클릭하여MathWorks계정에로그하거나계정을새로만드십시오。