MATLAB在图像处理中的应用

图像处理概念、算法和MATLAB

局部极大值、区域极大值和函数imregionalmax

最近的图像处理工具箱开发团队的算法讨论让我想起了我最初想要很久以前做的事情:解释 伊姆马克斯 和一些相关的行动。(我想我被转移了。)
对于此解释,我将使用以下示例图像:
P=样本图像;
imshow(P)
请注意,此图像具有许多恒定值的环。人们可能会叫这些地区“Plateaus。”以下是像素值的横截面:
p256=P(256,:);
情节(P256)
轴([1500 0 300])
文本(250255,“高原”,横向=“中央”,...
walltalignment =“底部”)
案文(345204,“高原”,横向=“中央”,...
walltalignment =“底部”)
案文(415153,“高原”,横向=“中央”,...
walltalignment =“底部”)
文字(471,102,“高原”,横向=“中央”,...
walltalignment =“底部”)

局部最大值

在图像处理中,图像的通常定义 局部极大值 一个像素被认为是局部最大值,当且仅当它大于或等于它的所有近邻。
利用图像膨胀寻找所有局部极大值像素是一种方便而有效的方法。如果一个像素在膨胀后保持不变,那么该像素就是一个局部极大值。
Pd=扩张不全(P,1(3,3));
局部_极大值=(P==Pd);
imshow(local_maxima)
头衔(“局部最大值(白色像素)”)
下面是沿横截面的局部最大值:
情节(P256)
local_maxima_256 = local_maxima(256,:);
k=查找(局部最大值256);
持有
地块(k,p256(k),"*")
持有离开

区域最大值

让我们仔细看看这些高原,看看它们在一个重要的方面是如何不同的。首先,这里是中央盘高原的横截面的特写:
情节(P256)
XLIM([175 325])
如果你想象自己站在那个高原的中间,你会意识到没有办法离开高原而不走下坡路。
接下来,让我们放大围绕中心磁盘的第一环的横截面:
情节(P256)
xlim([315 375])
如果你正站在这个高原的中间,那么你可以向下或向上移动,取决于你朝哪个方向移动。
现在让我们放大下一个戒指:
情节(P256)
xlim([375 440])
你看到高原左侧的小滴点吗?这意味着你不能离开高原 没有下坡 .向左的大趋势肯定更高,但首先你必须向下倾斜。
考虑到这些不同的高原,我们对一个叫做 区域最大值 :具有恒定值的像素的连接组件 H (这是平台),其中与连接组件相邻的每个像素的值都低于 H (即,高原的每个相邻像素都是从中下坡的下坡)。
这就是为什么 伊姆马克斯 计算。

功能伊姆马克斯

功能 伊姆马克斯 占用灰度映像,并以二进制掩码的形式返回所有区域最大值像素。这是功能从我们的样本图像产生的。我将在上面的局部最大值面罩并排展示它,以便于比较。
Regional_Maxima = ImregionalMax(P);
Tiledlayout(1,2)
奈克斯提尔
imshow(local_maxima)
头衔(“局部极大值”)
奈克斯提尔
imshow(区域最大值)
头衔(“区域最大值”)
您可以看到只有中央磁盘和第二环(来自中心)被标记为区域最大值。
一般来说,如果您要在图像中查找峰值,并且如果您的图像中可能有高原,那么您最好查找区域最大值,而不是局部最大值。
然而 ,区域最大值的位置对像素值中即使非常小的噪声变化也非常敏感。所以,我很快就要写另一篇关于 H-Maxima变换 以及功能 imhmax imextendedmax .
敬请关注!

实用功能

功能输出=采样图像
x=linspace(-100501);
r = ampot(x,x');
out=零(尺寸(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=最大值(1-abs(x),0);
终止
|
  • 打印
  • 发送电子邮件

注释

如需留言,请点击这里登录到您的MathWorks帐户或创建新帐户。