假设我们要检查matlab
中的4个邻居,我想我们可以执行以下操作(如果我错了,请纠正我):
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)的值小于aa>。
ck的值小于aa>
F是显示的图像here
基于此,我们如何实现以上的路线?
谢谢。
最佳答案
首先,为了清楚起见,您正在使用一种在“通过特征距离最小化对空间模糊集进行去模糊化”一文中描述的去模糊化算法术语Ck
最初用于k = 0
作为:
Core(f) = {x is a member of a set X | m(x) >= m(y) for all y in X}
其中
f
是一些离散的灰度2d图像,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)的所有像素p中,Ck是Ck…“的4个邻域,可以翻译为:
allp = imdilate(core, strel('diamond', 1)) - core;
allp_in_f = (allp/255) .* f;
假设输入类型为
uint8
第二条语句通过将不在Supp(f)
中的点设置为0来丢弃它们,但是在本例中没有这样的点此步骤的结果如下图所示:现在:“……选择使距离d(f,ck union{p})最小化的像素p。此时,最后一幅图像中的任何像素
p
都将其最小化,假设度量为l无穷大(chebyshev,chessboard,…),但即使我们选择了l-1范数,除了对角线的像素之外,所有像素都将满足它。或者,另一种解释(如果我们完全忽略了这篇论文,因为它在问题中没有提到):距离考虑了f
中的强度,而方法需要最小化加权(强度)距离的方法在这种情况下,以及对于将来的迭代(方法是迭代的,在本文中描述),最简单的方法是从所示最后一幅图像中获得的边界执行洪水填充这种泛光填充将以宽度优先的方式完成,因此当像素第一次接触f
时,您将回溯并确定使距离最小化的像素p
这种方法也称为波前传播。