如何解决如何通过常规计算机视觉方法分割和计算特定的头部CT区域?
我正在为计算机视觉(CV)课程生成材料,并且我想通过常规CV技术来计算此突出显示部分的面积:
因此,我已应用Canny来检测边缘,并应用了Circle Hough变换来尝试查找相应的区域。这些是我的结果:
我尝试使用“分水岭”(Watershed),将标记作为我发现的圆圈的中心,但没有成功。有谁知道我该如何继续或有其他想法?
这是代码:
import numpy as np
import matplotlib.pyplot as plt
import cv2 as cv
from skimage.feature import canny
from skimage.transform import hough_circle,hough_circle_peaks
from skimage.draw import circle_perimeter
from skimage.segmentation import watershed
import urllib.request
urllib.request.urlretrieve("https://github.com/LAVI-USP/SEL0339-SEL5886/raw/master/imagens/pratica_07/head_CT.tif","head_CT.tif")
# Read image
img = cv.imread("head_CT.tif",-1)
# Edge detector
edges = canny(img,sigma=2.0,low_threshold=19,high_threshold=57)
# Hough_circle
hough_radii = np.arange(29,32,1)
hough_res = hough_circle(edges,hough_radii)
accums,cx,cy,radii = hough_circle_peaks(hough_res,hough_radii,total_num_peaks=4,min_xdistance=200,min_ydistance=200,threshold=0.25)
# Remove false-posite circle
sortX = np.argsort(cx)
cx = cx[sortX[:-1]]
cy = cy[sortX[:-1]]
radii = radii[sortX[:-1]]
# Draw red circles
img_rgb = np.tile(np.expand_dims(img,axis=-1),(1,1,3),)
for center_y,center_x,radius in zip(cy,radii):
circy,circx = circle_perimeter(center_y,radius,shape=img_rgb.shape)
img_rgb[circy,circx] = (220,20,20)
# Plot images
imgs = [img_rgb,edges]
r,c = 1,2
fig,axs = plt.subplots(r,c,figsize=(15,15))
for i in range(r):
for j in range(c):
axs[j].imshow(imgs[i*c+j],cmap='gray')
axs[j].axis('off')
这是head_CT.tif图片。
感谢您的帮助。
*此图像来自Gonzalez&Woods,数字图像处理书。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。