问题标签 [adaptive-threshold]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
346 浏览

python - 如何用光照和噪声对灰度图像进行阈值处理

我正在尝试对具有挑战性噪声的图像进行阈值处理。

图片示例.

侧面的数字是尺寸。我尝试了各种标准方法:

我想在深灰色区域内分割“较轻”部分(反之亦然)。我玩过各种内核大小和恒定值,但没有什么能给我很好的分割。任何想法我还能尝试什么或如何改善结果?我使用代码得到的一些示例结果是这里

0 投票
1 回答
313 浏览

python - 将自动阈值矩方法从 Image J 转移到 Python


我想将我的图像处理从 Image J(斐济)转移到 Python。
在 Image J 中,我将图像拆分为 HSB,然后在 B 通道上使用 Moments Auto-threshold。在 Python 上,我希望获得用于分割的阈值 t 的值。由于我找不到有关该主题的任何帮助或代码,所以我在这里。
从论文“moment-preserving thresholding: a new approach, Tsai”(这里)中,我做到了:

抱歉代码乱七八糟。无论如何,我在 Python 上计算的值与 Image J 上的值不一样。你知道问题可能来自哪里吗?或者 Python 中是否有一个函数可以检索时刻 auto-threshold 的值?我会非常感谢挖掘的提示或提示,谢谢

0 投票
1 回答
336 浏览

opencv - 大黑字的自适应阈值处理

我有一个包含非常大和非常小的字母的文档,我正在对其应用自适应阈值。

该算法运行良好,但我有一个关于大黑色字母的小问题,因为它像这样从内部变得空心 在此处输入图像描述

原始图像有那些用黑色填充的字母

在此处输入图像描述

问题是如何在不增加过滤器块大小的情况下使这些字母像原始图像中一样用黑色填充,因为这与小字母效果不佳!

当然欢迎任何想法或建议!

0 投票
1 回答
126 浏览

java - 基于前景/背景均值计算二值最优阈值 ImageJ

我正在研究如何计算 ImageJ 的最佳阈值,并找到了对 Otsu Thresholding 的解释,我认为这对我来说非常有意义。

我一直在努力实现它,经过一番思考,我发现计算权重和平均值的方式有误,现在它找到了 77 的最佳阈值,这对于硬币图像来说看起来不错,因为它几乎完全将背景与硬币分开(您可以自动计算硬币数量,或测量它们的大小等)

具有最佳阈值的新硬币图像

即使它具有不同强度的光,它似乎也可以很好地处理此图像:具有不同强度的 大米图像

我对找到的解决方案感到非常满意,但是如果您有任何反馈或可以找到其他东西,那就太好了!这个作业很难,但我从中学到了很多:)

0 投票
0 回答
220 浏览

python - 如何在opencv Python中找到Adaptivethreshold的最佳参数?

我正在学习自适应阈值技术,我想知道是否有任何计算来选择块大小和常数 C(它们是自适应阈值函数的参数),或者我只是通过迭代每个数字来找到最佳值?

0 投票
0 回答
1096 浏览

image-processing - 检测图像中的一张纸,如 cam-scanner 应用程序

从图像中,我需要提取一张纸,就像 camscanner 应用程序一样,https: //www.camscanner.com/

我知道我可以通过检测我想要检测的纸张的边缘来做到这一点。然后进行透视变换。我在 python 中使用 openCV 库。这是我试图在其中找到这张纸的图像:

一张纸来检测

这是我已经尝试过的:

方法1:(使用阈值)

  1. 使用图像平滑(高斯模糊/双边模糊)对图像进行预处理
  2. 将图像拆分为 h,s,v 通道
  3. 饱和通道上的自适应阈值
  4. 一些形态学操作,如膨胀和腐蚀
  5. 寻找轮廓,识别最大轮廓并找到角点

我已经根据 stackoverflow 答案实现了这个方法: 检测一张纸/正方形检测

我可以找到一些图像的纸张,但对于这样的图像它失败了:

纸张检测失败

方法2:(使用sobel梯度算子)

  1. 通过转换为灰度对图像进行预处理,图像平滑(高斯模糊/双边模糊)
  2. 寻找图像的梯度
  3. 对图像进行下采样和上采样
  4. 在此之后,我不知道如何找到包含图像的适当边界。

我已经根据 stackoverflow 答案实现了这种方法: 从背景中检测纸张几乎与纸张颜色相同

这是我对图像的了解程度:

索贝尔梯度结果

方法3:(使用canny边缘检测器)

根据我在这个社区上阅读的帖子,似乎每个人都更喜欢精明的边缘方法来提取边缘,但就我而言,结果并不令人满意。这是我所做的:

  1. 通过转换为灰度对图像进行预处理,图像平滑(高斯模糊/双边模糊)
  2. 使用精明的边缘寻找边缘
  3. 一些形态学操作,如膨胀和腐蚀
  4. 但是从canny那里得到的边缘确实不合格。

我已经根据 stackoverflow 的答案实现了这个方法: Detecting a sheet / Square Detection,我也没有通过在这个答案中迭代多个通道来完成他的工作。这是我对图像的了解程度:

精明的结果

这是method1(阈值)的一些代码:

我对图像处理和openCV有点陌生。请分享一些关于如何更进一步并更准确地获得结果的见解。TIA。

0 投票
0 回答
81 浏览

python-3.x - 自适应阈值如何计算像素的阈值?

我想知道自适应阈值如何以自适应均值或自适应高斯计算每个像素的阈值?

opencv 库 cv2.adaptivethreshold()

0 投票
0 回答
143 浏览

opencv - canny 边缘检测算法是否适用于梯度变化较小的图像?

我处理模拟岩石桩图像的分割。我的输入图像是深度图像(如下所示)。我试图应用精明的边缘,但它没有给出有希望的结果 - 聚集在一起的岩石堆区域被检测为单个大岩石,边缘突然结束。

由于岩石堆的深度图像的强度变化很小,我是否正确地说 canny 边缘不适合此目的?

我已经应用了自适应阈值操作,它似乎显示出更好的结果,因为它并不真正适用于梯度,而是适用于邻域的平均强度值。图片如下所示。

实际模拟场景

在此处输入图像描述

深度图像

在此处输入图像描述

精明边缘的结果

在此处输入图像描述

自适应阈值结果

在此处输入图像描述

0 投票
0 回答
394 浏览

pyspark - 在不平衡的数据集上为 pyspark (ml) 中的多类随机森林和 gbt 模型设置最佳阈值

目前,随机森林分类器(来自 Spark ML)已经建立在具有以下分布的不平衡数据集上:

作为多类问题的结果,我得到以下概率矩阵。概率列给出了观察被分类为一个类的概率。(这些是来自随机森林模型的标准化 rawPredicitions)。

实际预测类高度偏向多数类(0 和 8)。这是因为多数概率用于将类别分配给观察,如下所示。应用欠采样和过采样方法不会提高混淆矩阵输出的准确性。

输出的混淆矩阵,也放入表格形式

然而,使用这些预测,AUC 曲线似乎很有希望。(平均 AUC 为 0.74)。请参阅下面每个类别的一对多 AUC 曲线图:

不同类别的 AUC 曲线(一对多)

我不确定如何从这些概率中检索最佳类别。查看 AUC 有多种方法可以获得最佳阈值。一个解决方案是乘以先验概率的倒数,而另一个解决方案是拟合线性回归。另一种解决方案可能是本文中解释的成对分析,但是我不确定如何精确地应用那里的算法。通过成对分析逼近多类 ROC

在随机森林(或其他树分类器)的预测概率上获得某个类权重的最简单的 Spark 实现是什么?

0 投票
2 回答
932 浏览

python-3.x - 使用 OpenCv 的阈值?

正如问题所述,我想对我的图像应用双向自适应阈值技术。也就是说,我想找到邻域中的每个像素值,如果它小于或大于邻域的平均值减去常数 c,则将其设置为 255。

以这幅图像为例,作为像素的邻域。需要保留的像素区域是第三个和第六个正方形上半部分(从左到右和从上到下)的较暗区域,以及八个和十二个正方形的上半部分。

显然,这一切都取决于设定的常数值,但理想情况下,与邻域的平均像素值有显着差异的区域将被保留。不过,我可以自己担心调音。

在此处输入图像描述