2017-09-13 105 views
1

我试图找出一种在Python中使用OpenCV标记图像中静脉的方法。我遇到的大多数类似文章都使用CLAHE来产生结果,我在灰度图像上多次进行了CLAHE,并且它确实使得静脉更易于看到,但是我无法找出以不同颜色标记静脉的方式。 CLAHE也会显着降低整体图像质量。使用opencv标记静脉

我的输入图像:

img

后CLAHE 4次:

img

代码:

import numpy as np 
import cv2 

def multi_clahe(img, num): 
    for i in xrange(num): 
     img = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(4+i*2,4+i*2)).apply(img) 
    return img 

img = cv2.imread('img.png') 

gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 

final = multi_clahe(gray, 4) 

cv2.imwrite('image.png',final) 
cv2.imshow('image',final) 

cv2.waitKey(0) 
cv2.destroyAllWindows() 
+1

首先将图像转换为HSV和独立出来的皮肤区域。然后标记静脉变得相对容易。此外,如果有可能在图像上设置投资回报率来寻找静脉,问题就是小菜一碟。 –

+0

你的意思是手动设置投资回报率? –

+0

我不能那样做。我想我的代码是通用的。 这只是一个测试图像。 :/ –

回答

0

下面是后续

的方法
  • 静脉无法在手外找到。因此,通过将图像转换为hsv和cv2.inRange()并使用较低,较高的皮肤值来消除废话。如果你无法找出合适的值,请创建一个跟踪栏。相比于手拿着它的褶皱

This

  • 你的皮肤更光滑。使用具有适当参数的Canny边缘,稍微扩大一点,并通过and'ing过滤掉高频部分。

enter image description here

  • CLAHE
  • 自适应阈值
  • 形态及噪声消除操作。

建议,以改善输出:

  1. 获得更好的图像设置,只有手臂理想。
  2. 图出来CLAHE,阈值合适的参数,坎尼

enter image description here

+0

你使用OpenCV-Python吗? –

+0

是的,但使用相同的python文件的另一个问题。尝试按顺序告诉我的步骤,并随时在评论中询问是否有错误。 –

+0

当然..会做(Y) –