图像上的Canny操作

时间:2017-05-05 14:15:23

标签: python python-2.7 opencv scikit-image x-ray

我想在下面的图片中(通过使用Python):

1。)找到骨骼的轮廓(只有两侧会这样做)

2。)识别并绘制所有轮廓。

看起来像这样:

更好的轮廓甚至是好的。我不能完全确定如何解决这个问题,

图像的渐变是:

2 个答案:

答案 0 :(得分:1)

您应首先使用cv2.threshold应用阈值来清除您不想要的对象的图像,尝试不同的强度值来捕捉边框,然后应用某些形态学操作,例如{{1和OPENING CLOSINGcv2.morphologyEx来清理图像,填充holes,最后应用cv2.findContourscv2.drawContours来获取轮廓的最终图像骨头。

opencv library上查看这些命令 您将在stackoverflow和internet上找到非常好的示例,尝试调整您的代码。 希望这对你有很好的帮助。

答案 1 :(得分:1)

接近此方法的最初方法是使用正确的阈值检测精确边缘检测,然后找到轮廓。

import cv2

# Load the image
img = cv2.imread("/home/tribta/Desktop/feet.png")

# Find the contours
imgray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
edges = cv2.Canny(img,60,200)
im2, contours, hierarchy = cv2.findContours(edges, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)

hierarchy = hierarchy[0] # get the actual inner list of hierarchy descriptions

# For each contour, find the bounding rectangle and draw it
cv2.drawContours(img, contours, -1, (0,255,0), 3)

# Finally show the image
cv2.imshow('img',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

然后你可以添加一些生物医学处理标准来区分不同的轮廓并验证它是否真的是骨骼。