0

假设我们要检查 4 邻域matlab,我认为我们可以执行以下操作(如果我错了,请纠正我):

I = imread('cameraman.tif');
structured_element = [0,1,0;1,1,1;0,1,0];
o = imdilate(I,structured_element);

现在,我有以下声明,我正在尝试实施(现在已经尝试了一段时间):

among all pixels p " that belong to" Supp(F)\Ck
being 4-neighbours of Ck,
select the pixel p that minimizes the distance d(F,Ck"union"{p})
and let Cnew = Ck "union" {p}

我不想用一些术语混淆你,但会给你它们的价值,可以决定做什么。

Supp(F)具有此处的值。

Ck这里的值

F此处显示的图像

基于此,我们如何实现上面的行?

非常感谢。

4

1 回答 1

4

首先,为了清楚起见,您正在使用论文“通过特征距离最小化对空间模糊集进行去模糊化”中描述的去模糊化算法。该术语Ck最初是k = 0为:

Core(f) = {x is a member of a set X | m(x) >= m(y) for all y in X}

其中f是一些离散的灰度二维图像,m(x)定义为范围为 的隶属函数,[0, 1]X属于 的域的点对组成f。然后,Supp(f)由 那些点形成m(x) > 0。对于 0 为黑色的灰度图像f,这意味着任何非黑色都在Supp(f).

所以,这里有一个输入f(也代表Supp(f)Core(f)、 和Supp(f)\Core(f)。在 Matlab 术语中,Core(f)由下式给出:core = f; core(f ~= max(max(f))) = 0;

在此处输入图像描述 在此处输入图像描述 在此处输入图像描述

现在我们可以解决问题中的问题了。首先:“...在属于 Supp(F)\Ck 的所有像素 p 中是 Ck 的 4 个邻居...”可以翻译为:

allp = imdilate(core, strel('diamond', 1)) - core;
allp_in_f = (allp/255) .* f;

假设输入的类型是uint8。第二个语句通过将它们设置为 0 来丢弃不在其中的点Supp(f),但在此示例中没有这样的点。此步骤的结果如下图所示:

在此处输入图像描述

现在:“...选择最小化距离 d(F,Ck union {p}) ...”的像素 p。此时,p最后一张图像中的任何像素都将其最小化,假设度量是 L-infinity(切比雪夫,棋盘,...),但即使我们选择 L-1 范数,除对角线像素外的所有像素都会满足它. 或者,另一种解释(如果我们完全忽略该论文,因为问题中没有提到它):距离考虑 中的强度f,并且该方法需要最小化加权(强度)距离的方法。在这种情况下,以及对于未来的迭代(该方法是一种迭代方法,在论文中进行了描述),最简单的方法是从显示的最后一张图像中获得的边界执行泛洪填充。这种洪水填充将以广度优先的方式完成,f您将回溯并确定p最小化距离的像素。这种方法也称为波前传播。

于 2013-02-21T00:11:20.977 回答