在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上进行搜索,但没有找到类似的方法,所以我想问一下这种方法是否好?你遇到了吗?
答案 0 :(得分:2)
我以前没看过这个。
我无法绕过该方法。它不是在寻找多项式拟合的拐点。我认为它正在寻找导数最频繁的点。排序后的导数值中导数的最小值是至少出现两次的导数值(排序使得其导数始终为非负数)。这一点意味着我不知道。可能是多项式拟合的最大值或最小值之一?
视频中的人声称这是他们的方法,这意味着他们发明了这种方法。他们的Google Scholar page似乎并未列出有关此方法的论文。
无论如何,由于视频中的人声称他们的方法产生的结果与大津相似,所以我认为在大津如此简单和完善的情况下,使用未经验证的方法毫无意义。
我还建议您从一本好书中学习图像处理,而不要从YouTube上的随机教程中学习。 YouTube上有很多废话,通常很难区分好坏。生产价值不一定与正确性相关。