Python 复合材料分层区域的图像分割

Python 复合材料分层区域的图像分割,python,opencv,image-segmentation,Python,Opencv,Image Segmentation,研究项目的一部分是正确测量钻孔的分层区域,如图所示。 为了实现这一点,我需要开发一种图像分割算法/方法来识别孔周围分层区域的轮廓,以便我们能够获得类似下图的结果 基于本文的图像-> 附加分层区域的图像。 我正在使用python和openCV进行图像处理任务。到目前为止,我已经在灰度图像和分离的HSV通道中尝试了几种方法,如阈值(THRESH_BINARY,THRESH_OTSU,计算图片的平均像素值,然后应用阈值…)。我也尝试过cv2.equalizeHist(灰色),但这些方法似乎只分割

研究项目的一部分是正确测量钻孔的分层区域,如图所示。

为了实现这一点,我需要开发一种图像分割算法/方法来识别孔周围分层区域的轮廓,以便我们能够获得类似下图的结果

基于本文的图像->

附加分层区域的图像。

我正在使用python和openCV进行图像处理任务。到目前为止,我已经在灰度图像和分离的HSV通道中尝试了几种方法,如阈值(THRESH_BINARY,THRESH_OTSU,计算图片的平均像素值,然后应用阈值…)。我也尝试过cv2.equalizeHist(灰色),但这些方法似乎只分割轮廓孔复合工件(这是获得孔直径的理想方法),但我们主要需要计算受损面积

对该图像进行分层损伤分割的最佳方法是什么

####图像会调整大小以更好地显示屏幕,但图像处理操作是使用正常大小的图片完成的###
将numpy作为np导入
进口cv2
将matplotlib.pyplot作为plt导入
img=cv2.imread('2.jpg')
imageRe=cv2.调整大小(img,无,fx=0.6,fy=0.6)
cv2.imshow('孔导入图片',imageRe)
灰色=cv2.CVT颜色(img,cv2.COLOR\U BGR2GRAY)
#灰度图像的直方图计算
hist=cv2.calcHist([gray],[0],无[256],[0256])
plt.hist(gray.ravel(),256[0256]);plt.show()
imageRe=cv2.调整大小(灰色,无,fx=0.6,fy=0.6)
cv2.imshow(“灰度图像”,imageRe)
eCuilized_img=cv2.均衡器历史(灰色)
cv2.imwrite('ecualized_img.jpg',ecualized_img)
imageRe=cv2.调整大小(ecuilized_img,无,fx=0.6,fy=0.6)
cv2.imshow(“电子化图像”,imageRe)
##################
img=灰色
#全局阈值
ret1,th1=cv2.threshold(img,70255,cv2.THRESH_BINARY)#默认情况下在127中设置的阈值
#大津阈值法
ret2,th2=cv2.阈值(img,0255,cv2.阈值二元+cv2.阈值大津)
#高斯滤波后的大津阈值
模糊=cv2.高斯模糊(img,(5,5,0)
ret3,th3=cv2.阈值(模糊,0255,cv2.阈值二元+cv2.阈值大津)
#绘制所有图像及其直方图
图像=[img,0,th1,
img,0,th2,
模糊,0,th3]
标题=[“原始噪声图像”,“直方图”,“全局阈值(v=127)”,
‘原始噪声图像’、‘直方图’、‘大津阈值’,
“高斯滤波图像”、“直方图”、“大津阈值”]
imageRe=cv2.调整大小(th1,无,fx=0.6,fy=0.6)
cv2.imshow('正常阈值图像',imageRe)
imageRe=cv2.调整大小(th2,无,fx=0.6,fy=0.6)
cv2.imshow(“Otsus阈值图像”,imageRe)
对于范围(3)中的i:
plt.subplot(3,3,i*3+1),plt.imshow(图像[i*3],'gray')
plt.title(titles[i*3])、plt.xticks([])、plt.yticks([])
plt.subplot(3,3,i*3+2),plt.hist(images[i*3].ravel(),256)
plt.title(titles[i*3+1])、plt.xticks([])、plt.yticks([])
plt.subplot(3,3,i*3+3),plt.imshow(图像[i*3+2],“灰色”)
plt.title(titles[i*3+2])、plt.xticks([])、plt.yticks([])
plt.show()
###################
src=img
ddepth=cv2.CV_16S
内核大小=3
ecualized_img=cv2.GaussianBlur(ecualized_img,(3,3,0)
#[减少噪音]
#将图像转换为灰度
#src_gray=cv2.CVT颜色(src,cv2.COLOR_BGR2GRAY)
#[将颜色转换为灰色]
#[拉普拉斯语]
#应用拉普拉斯函数
dst=cv2.Laplacian(ecuilized_img,ddepth,ksize=3)
#[拉普拉斯语]
#[转换]
#转换回uint8
abs_dst=cv2.可转换可伸缩性(dst)
#[转换]
#[显示]
imageRe=cv2.调整大小(abs_dst,无,fx=0.6,fy=0.6)
cv2.imshow(‘高斯拉普拉斯(对数)’,imageRe)
#retVal,t=cv2.阈值(ecualized_img,90255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)
#t=cv2.阈值(ecualized_img,0,255,cv2.THRESH_OTSU);
#imageRe=cv2。调整大小(t,无,fx=0.6,fy=0.6)
#cv2.imshow('eCuilized+THRESH_OTSU image',imageRe)
cv2.等待键(0)
cv2.destroyAllWindows()

你能在你所附图片中添加一个显示你认为是受损区域的图像吗?我上传了一个新的图像,突出了分层区域,我需要为区域测量分段。如果你能帮我解决这个问题,或者给我一个方法,我会非常感激。你能在你所附的图片中添加一个显示你认为是受损区域的图像吗?我上传了一个新的图像,突出了我需要分割区域的分层区域。如果你能帮我做这件事或者给我一个方法,我将不胜感激。