Matlab 使用拐点作为分割阈值
接下来是图像处理,我认为导师的目标是达到传统的阈值 分割以分离图像的背景和前景, 通过将多项式曲线拟合到图像的强度分布 在曲线中查找拐点以用作阈值 代码如下:Matlab 使用拐点作为分割阈值,matlab,image-processing,image-segmentation,Matlab,Image Processing,Image Segmentation,接下来是图像处理,我认为导师的目标是达到传统的阈值 分割以分离图像的背景和前景, 通过将多项式曲线拟合到图像的强度分布 在曲线中查找拐点以用作阈值 代码如下: img = imread('rice.tif'); degree = 6; %fitting intensity distribution [frequency, intensity] = imhist(img); [polynome, ~, mu] = polyfit(intensity, frequency, degree); ev
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
第二,我在谷歌上搜索,没有找到类似的方法,所以我想问,这种方法好吗?你遇到过吗?我以前没见过这个
我不能对这种方法掉以轻心。它不是在寻找多项式拟合的拐点。我认为它正在寻找一个导数最频繁的点。排序的导数值的导数最小值是至少出现两次的导数值(排序时其导数始终为非负)。我不知道这一点是什么意思。它可能是多项式拟合的最大值或最小值之一 视频中的人声称这是他们的方法,意思是他们发明了它。然而,他们似乎没有列出一篇关于这种方法的论文 在任何情况下,由于视频中的人声称他们的方法产生的结果与大津相似,我认为在大津如此简单和成熟的情况下,使用未经验证的方法没有任何意义
我还建议你从一本好书中学习图像处理,而不是在YouTube上随机学习教程。YouTube上有很多垃圾,通常很难区分好坏。生产值不一定与正确性相关。“排序导数值的最小导数是至少出现两次的导数值”。你能解释一下这一点吗?@user7427260:导数的绝对值是一组>=0的值。对它们进行排序会得到一个非递减函数。其导数为0,其中该函数有两个相同的值。如果原始函数在两点处具有相同的导数,则存在两个相同的值。这种情况最有可能发生在导数平坦的地方,但你不能证明这一点,这只是一种可能性。如果有多个极小值呢?