史蒂夫在图像处理与matlab

图像处理概念,算法和matlab

本地最大值,区域最大值和函数IMRegionalMax

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

局部极大值

在图像处理中,通常的定义 本地最大值 是,如果它大于或等于其所有立即邻居,则认为像素被认为是局部最大值。
通过使用图像扩张,有一种方便和有效的方法来找到所有本地最大值像素。如果在扩张之后的像素不变,则该像素是局部最大值。
pd = imdilate(p,ofon(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([315 375])
如果你站在这个高原的中间,那么你可以通过向下或向上移开高原,取决于你进入的方向。
现在让我们放大下一个环:
情节(p256)
XLIM([375 440])
你看到高原左侧的小斜坡了吗?这意味着你不能离开高原 没有走下坡路 。左边的较大趋势肯定会更高,但首先,你必须下降。
考虑到这些不同的Plateaus导致我们对概念的正式定义 区域最大值 :具有常数值的像素连接组件 H (这是高原),其中每个像素到该连接组件的每个像素都有一个低于的值 H (也就是说,高原的每个相邻像素都从高原向下)。
那就是什么 imregionalmax. 计算。

函数imregionalmax.

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

效用函数

函数OUT = SAMPEMIMAGE.
x = linspace(-100,100,501);
r =函数(x, x ');
出=零(尺寸(r));
戒指= 25:25:125;
k = 1:长度(环)
%OUT = OUT + TANH((环(K) - ABS(R))./ 2);
% 结尾
%Out = OUT - 0.15 * EXP( - ((R-54)/ 3)。^ 2);
为了k = 1:长度(戒指)
OUT = OUT +型材((环(K) - r)/ 2);
结尾
Out = Out - 0.15*三角形(r-53);
OUT = IM2UINT8(MAT2GRAY(OUT));
结尾
函数Y =配置文件(x)
Y = min(abs(x),1) .*符号(x);
结尾
函数y =三角形(x)
y = max(1-abs(x),0);
结尾
|
  • 打印
  • 发电子邮件

评论

要发表评论,请点击在这里登录您的MathWorks帐户或创建新的。