使用拐点作为分割阈值
Using inflection point as threshold for segmentation
下面this tutorial关于图像处理,我觉得导师的目标是达到传统的阈值
分割以分离图像的背景和前景,
通过将多项式曲线拟合到图像的强度分布和
在曲线中找到一个拐点用作阈值。
代码如下:
img = imread('rice.tif');
degree = 6;
%fitting intensity distribution
[frequency, intensity] = imhist(img);
[polynome, ~, mu] = polyfit(intensity, frequency, degree);
eval_fit = polyval(polynome, intensity, [], mu);
但是,在下一个代码块中:
%locate inflection point
[values, indices] = sort(abs(diff(eval_fit)));
[m, i] = min(diff(values))
thresh = indices(i)/255;
img_seg = imbinarize(img, thresh);
特别是前两行,我不明白,为什么要使用abs
,sort
如果你要第二次推导?
其次,我在Google上搜索,没有找到类似的方法,所以想问一下这个方法好不好?你遇到过吗?
我以前没看过这个。
我无法理解这个方法。它不是在寻找多项式拟合的拐点。我认为它正在寻找导数最频繁的点。排序的导数值的导数的最小值是至少出现两次的导数值(排序是这样的,它的导数总是non-negative)。这个点是什么意思我不知道。它可能是多项式拟合的最大值或最小值之一?
视频中的人声称这是他们的方法,也就是说他们发明了它。不过,他们的 Google Scholar page 似乎没有列出有关此方法的论文。
无论如何,由于视频中的人声称他们的方法产生与 Otsu 相似的结果,所以我认为在 Otsu 如此简单和成熟的情况下使用未经证实的方法没有意义。
我还建议您从一本好书中学习图像处理,而不是 YouTube 上的随机教程。 YouTube 上有很多垃圾内容,通常很难区分好坏。生产价值不一定与正确性相关。
下面this tutorial关于图像处理,我觉得导师的目标是达到传统的阈值 分割以分离图像的背景和前景, 通过将多项式曲线拟合到图像的强度分布和 在曲线中找到一个拐点用作阈值。
代码如下:
img = imread('rice.tif');
degree = 6;
%fitting intensity distribution
[frequency, intensity] = imhist(img);
[polynome, ~, mu] = polyfit(intensity, frequency, degree);
eval_fit = polyval(polynome, intensity, [], mu);
但是,在下一个代码块中:
%locate inflection point
[values, indices] = sort(abs(diff(eval_fit)));
[m, i] = min(diff(values))
thresh = indices(i)/255;
img_seg = imbinarize(img, thresh);
特别是前两行,我不明白,为什么要使用abs
,sort
如果你要第二次推导?
其次,我在Google上搜索,没有找到类似的方法,所以想问一下这个方法好不好?你遇到过吗?
我以前没看过这个。
我无法理解这个方法。它不是在寻找多项式拟合的拐点。我认为它正在寻找导数最频繁的点。排序的导数值的导数的最小值是至少出现两次的导数值(排序是这样的,它的导数总是non-negative)。这个点是什么意思我不知道。它可能是多项式拟合的最大值或最小值之一?
视频中的人声称这是他们的方法,也就是说他们发明了它。不过,他们的 Google Scholar page 似乎没有列出有关此方法的论文。
无论如何,由于视频中的人声称他们的方法产生与 Otsu 相似的结果,所以我认为在 Otsu 如此简单和成熟的情况下使用未经证实的方法没有意义。
我还建议您从一本好书中学习图像处理,而不是 YouTube 上的随机教程。 YouTube 上有很多垃圾内容,通常很难区分好坏。生产价值不一定与正确性相关。