实现本地化的Otsu二元化

问题描述

| 我正在使用OpenCV库中的cvThresholding()例程,以使用Otsu的阈值化方法执行二值化。有时这种方法会失败,这是可以理解的,因为Otsu为整个图像计算了一个阈值。为了改善结果,我决定将图像分解为网格,然后在网格的每个部分执行Otsu二值化。现在的结果似乎令人鼓舞,但是基于网格的分区实际上使输出的二进制图像不连续,尤其是在网格边缘。有办法解决吗? 请注意,这种方法最适合我。我知道opencv中可用的自适应阈值选项,但对我来说似乎不起作用,因为与Otsu的二值化方法相比,它的方法过于敏感。 等待回应。提前致谢。     

解决方法

最简单的方法可能是在网格中心之间插入阈值。尽管阈值图像将是不连续的(渐变而不是幅度),但最终结果中显示的可能性较小。     ,如果您尝试移动窗口而不是网格怎么办?例如,对于每个像素,基于针对以该像素为中心的5x5或7x7色块获得的阈值进行二值化(在边缘适当包裹)。 移动窗口将使阈值在整个图像上逐渐且连续变化。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...