在没有机器学习的情况下进行图像分割,可以通过依赖像素属性、数学运算或手动特征工程的传统计算机视觉技术来实现。这些方法着重于分析颜色、强度、纹理或边缘,以便将图像分割成有意义的区域。虽然自动化程度不如基于机器学习的方法,但它们计算效率高且透明,适用于具有可预测模式或计算资源有限的特定应用。
一种常见的方法是阈值分割,它根据像素强度值来分离像素。例如,Otsu 方法通过分析图像直方图自动计算最佳阈值来区分前景和背景。另一种技术是使用 Sobel、Canny 或 Prewitt 等算子进行边缘检测,以识别强度的突然变化。检测到边缘后,可以通过形态学操作(例如,膨胀、腐蚀)来弥合间隙并形成连续边界。基于区域的方法,如区域生长,从种子像素开始,通过合并满足相似性标准(例如,强度在容差范围内)的相邻像素来扩展区域。类似地,分水岭算法将像素强度视为高程,模拟从标记点开始的洪水来分割重叠对象。这些方法在对比清晰或边缘分明的场景中效果最佳,例如在显微镜图像中分离细胞。
对于基于颜色的分割,颜色空间阈值分割(例如,在 HSV 空间中分离绿色区域)或聚类(例如,对 RGB 值进行 K-means)等技术无需训练数据即可分割图像。基于图的方法,如图割,定义能量函数,根据用户定义的前景/背景种子来分离区域。然而,这些方法通常需要手动调整参数(例如,阈值、种子位置),并且难以处理复杂的纹理或嘈杂的数据。OpenCV 等工具为许多这些技术提供了内置函数,例如用于基本分割的 cv2.threshold
或用于基于标记工作流的 cv2.watershed
。虽然不如机器学习模型灵活,但这些方法对于需要优先考虑简单性和速度而非适应性的约束问题仍然实用。