Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 使用拐点作为分割阈值_Matlab_Image Processing_Image Segmentation - Fatal编程技术网

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,其中该函数有两个相同的值。如果原始函数在两点处具有相同的导数,则存在两个相同的值。这种情况最有可能发生在导数平坦的地方,但你不能证明这一点,这只是一种可能性。如果有多个极小值呢?