c - 实现本地化 Otsu 二值化

标签 c matlab image-processing opencv computer-vision

我正在使用 OpenCV 库中的 cvThresholding() 例程,通过 Otsu 的阈值方法执行二值化。有时该方法会失败,这是可以理解的,因为 Otsu 计算整个图像的单个阈值。为了改善结果,我决定将图像分解为网格,然后对网格的每个部分进行大津二值化。现在的结果似乎令人鼓舞,但是基于网格的分区使得输出的二值图像本质上是不连续的,尤其是在网格的边缘。有办法解决这个问题吗?

请注意,这种方法最适合我。我知道 opencv 中提供了自适应阈值选项,但这似乎对我不起作用,因为与 Otsu 的二值化方法相比,它太敏感了。

正在等待回复。提前致谢。

最佳答案

最简单的可能是在网格中心之间插入阈值。尽管阈值图像是不连续的(梯度,而不是幅度),但它不太可能出现在最终结果中。

关于c - 实现本地化 Otsu 二值化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5644942/

相关文章:

python - 如何识别与查询图像模板匹配的图像中不同颜色的对象?

c++ - 闭区间均匀随机数发生器

matlab - MATLAB``频谱图''参数

c - STM32F1xx CAN2 接收中断未被调用

c# - 两组网格之间的快速 bool 运算

matlab - 更改 LineWidth 会弄乱标记

python - 在Python中的图像上大纲文本

Matlab SURF指向像素坐标

c - 将参数传递给线程

c - 两个 C 函数试图返回字符串中的第一个单词