我正在进行一个将疾病分类的项目。我尝试应用k均值聚类,以便将病变区域聚集在一起,然后从聚集区域中提取特征。但是,由于背景的原因,我无法正确地聚类,因为病变区域是与背景聚集在一起的。在
本文的目标是对病区进行聚类,然后从病区中提取特征来训练分类器。在
方法1- 我试着在叶子周围画一个轮廓,然后用OpenCV中的minarearect函数画一个矩形,然后,我可以裁剪,但是轮廓不够精细,无法去除背景。在
代码如下:
lower_green = np.array((60-s,100,50))
upper_green = np.array((60+s,255,255))
name = "Apple_healthy/image_85.jpg"
bgr = cv2.imread(name)
hsv = cv2.cvtColor(bgr, cv2.COLOR_BGR2HSV)
mask = cv2.inRange(hsv, lower_green, upper_green)
mask = cv2.dilate(mask, None, iterations=50)
_, contours, hier = cv2.findContours(mask.copy(),cv2.RETR_LIST,cv2.CHAIN_APPROX_SIMPLE)
mask = cv2.bitwise_not(mask)
cnt = contours[-1]
cv2.drawContours(bgr,[cnt],0,(0,0,255), 2)
cv2.imshow('image', bgr)
cv2.waitKey(0)
cv2.destroyAllWindows()
rect = cv2.minAreaRect(cnt)
box = cv2.boxPoints(rect)
box = np.int0(box)
cv2.drawContours(bgr,[box],0,(0,0,255),2)
cv2.imshow('sad',bgr)
cv2.waitKey(0)
cv2.destroyAllWindows()
方法2- 直接应用图像聚类方法。但在这种方法中,我无法将病变区域聚集在一起,因为病变区域与背景聚集在一起。代码如下:
^{pr2}$原始图像
病区有明显的颜色。你不应该从图像中提取出阴影部分。但是阴影也很容易被发现,你可以中和这个区域。在
相关问题 更多 >
编程相关推荐