gpt4 book ai didi

image-processing - 如何从直方图中获取阈值?

转载 作者:太空宇宙 更新时间:2023-11-03 20:39:38 25 4
gpt4 key购买 nike

我正在用 OpenCV 编写一个 Android 应用来检测 Blob 。一项任务是对图像进行阈值处理,以区分前景对象和背景(见图)。

只要图像是已知的,它就可以正常工作,我可以手动将阈值传递给 threshold()——在这个特定的图像中,比如 200。但是假设图像是未知的,唯一的知识是是一个深色纯色背景和较亮的前景物体我如何动态地计算出阈值?

我遇到了直方图,我可以在其中计算灰度图像的强度分布。但是我找不到一种方法来分析直方图并选择感兴趣的对象(较亮)所在的值。那是;我想将明显较暗的背景尖峰与较亮的前景尖峰区分开来——在这种情况下高于 200,但在另一种情况下可以说,如果对象是灰色的,则为 100。

enter image description here

最佳答案

如果你所有的图像都是这样,或者可以带成这种风格,我认为 cv2.THRESHOLD_OTSU,即 otsu 的 tresholding 算法是一个很好的选择。

以下是在命令终端中使用 Python 的示例:

>>> import cv2
>>> import numpy as np
>>> img2 = cv2.imread('D:\Abid_Rahman_K\work_space\sofeggs.jpg',0)

>>> ret,thresh = cv2.threshold(img2,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)

>>> ret
122.0

ret 是自动计算的阈值。我们只是将“0”作为阈值传递给它。

我在 GIMP 中得到 124(这与我们得到的结果相当)。它还可以消除噪音。查看下面的结果:

enter image description here

关于image-processing - 如何从直方图中获取阈值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11266150/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com