Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何通过传统的计算机视觉方法分割和计算特定的头部CT区域?_Python_Opencv_Computer Vision_Scikit Image_Tomography Reconstruction - Fatal编程技术网

Python 如何通过传统的计算机视觉方法分割和计算特定的头部CT区域?

Python 如何通过传统的计算机视觉方法分割和计算特定的头部CT区域?,python,opencv,computer-vision,scikit-image,tomography-reconstruction,Python,Opencv,Computer Vision,Scikit Image,Tomography Reconstruction,我正在为计算机视觉(CV)课程生成材料,我想通过常规CV技术计算此突出显示部分的面积: 因此,我应用Canny来检测边缘,并使用圆Hough变换来寻找相应的区域。以下是我的结果: 我尝试使用分水岭,以标记作为我找到的圆圈的中心,但没有成功。有人知道我该如何继续或有其他想法吗 代码如下: 将numpy作为np导入 将matplotlib.pyplot作为plt导入 将cv2作为cv导入 从skimage.feature导入canny 从skimage.transform导入hough_圆,h

我正在为计算机视觉(CV)课程生成材料,我想通过常规CV技术计算此突出显示部分的面积:

因此,我应用Canny来检测边缘,并使用圆Hough变换来寻找相应的区域。以下是我的结果:

我尝试使用分水岭,以标记作为我找到的圆圈的中心,但没有成功。有人知道我该如何继续或有其他想法吗

代码如下:


将numpy作为np导入
将matplotlib.pyplot作为plt导入
将cv2作为cv导入
从skimage.feature导入canny
从skimage.transform导入hough_圆,hough_圆
从skimage.draw导入圆\周长
从skimage.segmentation导入分水岭
导入urllib.request
urllib.request.urlretrieve(“https://github.com/LAVI-USP/SEL0339-SEL5886/raw/master/imagens/pratica_07/head_CT.tif“,”标题“\u CT.tif”)
#读取图像
img=cv.imread(“头部CT.tif”,-1)
#边缘检测器
边缘=canny(img,sigma=2.0,低阈值=19,高阈值=57)
#霍夫环
霍夫半径=np.arange(29,32,1)
hough_res=hough_圆(边、hough_半径)
累计、cx、cy、半径=霍夫圆峰值(霍夫半径、霍夫半径、总峰数=4、最小距离=200、最小距离=200、阈值=0.25)
#去除假正圆
sortX=np.argsort(cx)
cx=cx[sortX[:-1]]
cy=cy[sortX[:-1]]
半径=半径[sortX[:-1]]
#画红圈
img_rgb=np.tile(np.expand_dims(img,轴=-1),(1,1,3),)
对于中心y、中心x、拉链中的半径(cy、cx、半径):
圆圈,圆圈x=圆圈周长(圆心y,圆心x,半径,形状=img\u rgb.shape)
img_rgb[circy,circx]=(220,20,20)
#绘图图像
imgs=[img_rgb,边缘]
r、 c=1,2
图,axs=plt.子批次(r,c,figsize=(15,15))
对于范围(r)内的i:
对于范围(c)内的j:
axs[j].imshow(imgs[i*c+j],cmap='gray')
axs[j]。轴(“关闭”)
这是图片

谢谢你的帮助


*这张图片来自Gonzalez&Woods的《数字图像处理》一书。

看看这里的检查活动轮廓方法(snakes)或水平集分割方法(chan-vese)。