【发布时间】:2016-01-28 06:31:46
【问题描述】:
我试图在这张图片中找到不同形状的岩石。
(来源:nasa.gov)
我没有从边缘检测中得到任何令人满意的结果。
我确实读过关于grabcut的文章,但也没有什么令人满意的。关于我应该如何进行的任何想法?
PS - 我的最终目标是用不同的颜色标记图像中的这些岩石。
更新 1: 这是我用于边缘检测的代码。
import cv2
import numpy as np
from matplotlib import pyplot as plt
img = cv2.imread('image1.JPG',0)
edges = cv2.Canny(img,255,255)
plt.subplot(121),plt.imshow(img,cmap = 'gray')
plt.title('Original Image'), plt.xticks([]), plt.yticks([])
plt.subplot(122),plt.imshow(edges,cmap = 'gray')
plt.title('Edge Image'), plt.xticks([]), plt.yticks([])
plt.show()
更新 2:我有几张类似的图像,如下图所示,其中岩石(大)清晰可见。边缘检测再次在图像上产生不令人满意的结果。我只是在寻找可以尝试的方法。如果您建议一种方法,请添加相关链接,我可以阅读更多内容,我是 opencv 新手。
(来源:nasa.gov)
【问题讨论】:
-
我建议您发布一些示例代码来说明您到目前为止所做的事情。这样人们就可以提出修改建议。
-
我用代码更新了问题。
-
它很难从色差不大的背景中检测出所有的岩石。和闪电完全不同。但是,如果您假设岩石会比背景暗一点,那么您可以对图像进行阈值化,然后应用轮廓检测并检测阈值图像中的轮廓
-
你能用手动标记的岩石创建另一个图像吗?对我来说,哪些图像部分是岩石,哪些不是,并不是 100%。不要期望实现一种能够检测此类图像中所有岩石的算法,我认为这几乎是不可能的。也许不同类型的传感器会更好(可能是红外摄像机、立体摄像机、激光扫描仪等),但不确定。
-
不,我没有彩色图像。
标签: python opencv image-processing