用MATLAB进行图像处理

图像处理概念、算法和MATLAB

局部极大值,区域极大值,函数imregionalmax

最近在图像处理工具箱开发团队中进行的算法讨论让我想起了我很久以前就想做的事情:解释 imregionalmax 以及一些相关操作。(我想我跑题了。)
为了进行解释,我将使用以下示例图像:
P = sampleImage;
imshow (P)
注意,这个图像有许多常值环。人们可能会称这些地区为“高原”。下面是像素值的横截面:
p256 = P(256年:);
情节(p256)
轴([1 500 0 300])
文本(250255“高原”HorizontalAlignment =“中心”...
VerticalAlignment =“底”
文本(345204“高原”HorizontalAlignment =“中心”...
VerticalAlignment =“底”
文本(415153“高原”HorizontalAlignment =“中心”...
VerticalAlignment =“底”
文本(471102“高原”HorizontalAlignment =“中心”...
VerticalAlignment =“底”

局部极大值

在图像处理中,a的通常定义 局部最大值 当且仅当一个像素大于或等于它的所有近邻时,它被认为是一个局部最大值。
利用图像膨胀法可以方便有效地求出所有的局部最大像素点。如果一个像素在膨胀后没有变化,那么该像素就是一个局部最大值。
Pd = imdilate (P(3、3));
local_maxima = (P == Pd);
imshow (local_maxima)
标题(“局部最大值(白像素)”
下面我们来看看横截面上的局部最大值:
情节(p256)
local_maxima_256 = local_maxima (256);
k =找到(local_maxima_256);
持有
情节(k, p256 (k),“*”
持有

区域最大值

让我们仔细看看这些停滞期,看看它们在重要方面有何不同。首先,这是中央圆盘平台横截面的特写:
情节(p256)
xlim(325年[175])
如果你想象自己站在高原的中央,你就会意识到不下山就没有办法离开高原。
接下来,让我们放大环绕中心圆盘的第一个环的横截面:
情节(p256)
xlim(375年[315])
如果你站在这个平台的中间,那么你可以通过向下或向上移动来离开平台,这取决于你移动的方向。
现在让我们放大下一个环:
情节(p256)
xlim(440年[375])
你看到高原左侧的小斜坡了吗?这意味着你不能离开高原 没有走下坡路 .更大的向左趋势肯定是更高的,但首先你要往下走。
考虑到这些不同的平台导致我们对一个概念的正式定义称为 地区最大 :具有常数值的像素连接组件 h (这是高原),每个像素的邻居,连接组件的值低于 h (也就是说,高原的每个相邻像素都从高原向下)。
这就是 imregionalmax 计算。

函数imregionalmax

这个函数 imregionalmax 获取灰度图像并以二进制掩码的形式返回所有区域最大像素。这是函数从样本图像得到的结果。为了便于比较,我将把它与局部最大掩模放在一起。
regional_maxima = imregionalmax (P);
tiledlayout(1、2)
nexttile
imshow (local_maxima)
标题(“最大值”
nexttile
imshow (regional_maxima)
标题(“地区最大值”
您可以看到,只有中心盘和第二个环(从中心)被标记为区域最大值。
一般来说,如果你在图像中寻找峰值,如果你的图像中有高原,那么你最好寻找区域最大值而不是局部最大值。
然而 ,区域最大值的位置可以非常敏感,即使是很小的,噪声的像素值变化。所以,我很快会写另一篇关于 h-maxima变换 和功能 imhmax imextendedmax
请继续关注!

效用函数

函数出= sampleImage
x = linspace (-100100501);
r =函数(x, x ');
= 0(大小(r));
戒指= 25:25:125;
% for k = 1:长度(环)
% out = out + tanh((rings(k) - abs(r))./2));
%结束
% out = out - 0.15*exp(-((r-54)/3).^2);
k = 1:长度(戒指)
Out = Out + profile((rings(k) - r)/2);
结束
Out = Out - 0.15*三角形(r-53);
= im2uint8 (mat2gray ());
结束
函数y =概要(x)
Y = min(abs(x),1) .*符号(x);
结束
函数y =三角形(x)
y = max (1-abs (x), 0);
结束
|
  • 打印
  • 发送电子邮件

评论

要发表评论,请点击此处登录到您的MathWorks帐户或创建一个新帐户。