c++ - 如何对岩石等复杂图像进行分割(C++)

标签 c++ opencv image-processing

我正在尝试对岩石图片进行分割(我已附上示例)。最终目标是找到近似的岩石区域(不确定所需的方法是否是图像分割)。

我尝试了几种算法:

  • 纹理分割没有帮助,因为所有岩石都很相似。
  • 我可以得到有很多错误的边缘。由于阴影。虽然可以使用。

这是输入图像的示例(您可以忽略篮球): Sample image containing rocks

请尽可能具体。考虑到这个话题的复杂性,我是个新手。

最佳答案

稍微模糊图像并应用像分水岭这样的图像分割方法或多或少可以解决这个问题。但由于岩石边界与岩石本身的纹理相似,这并不是一件容易的事。我建议如下:

  • 如果您不需要高精度,请尝试上述方法并使用一些手动注释的图像测量预期误差。
  • 如果准确性非常重要并且您可以请求用户帮助,请创建一个用户界面,用户可以在其中在每 block 岩石上放置标记。然后使用从这些标记(也称为种子点)开始的分水岭变体来执行种子分割。 (OpenCV 中的分水岭实现可以做到这一点。)

关于c++ - 如何对岩石等复杂图像进行分割(C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39746572/

相关文章:

Python OpenCV 2.4 写入半完整的PNG视频帧

matlab - 在 MATLAB 中访问图像中的 RGB channel

c++ - 在 boost iostream filtering_ostream 中,sync()、strict_sync() 和 flush() 有什么区别?

c++ - 为什么使用 block \网格而不是 for 循环?

c++ - 无法编译 boost::asio::basic_datagram_socket<boost::asio::ip::udp>::basic_datagram_socket()

opencv - 特征检测/提取方法的指标

c++ - 关于多线程客户端的 BOOST 教程?

python - 如何适应不同分辨率的图像?

python - 在OpenCV中高效地转换和混合图像

python - 使用 OpenCV 从桌面游戏卡图像中提取艺术品