使用opencv标记静脉

Posted

技术标签:

【中文标题】使用opencv标记静脉【英文标题】:Marking veins using opencv 【发布时间】:2017-09-13 04:04:18 【问题描述】:

我试图找出一种在 Python 中使用 OpenCV 标记图像中静脉的方法。我遇到的大多数类似文章都使用 CLAHE 来产生结果,我在灰度图像上多次使用 CLAHE,它确实使静脉更容易看到,但我想不出用不同颜色标记静脉的方法。 CLAHE 还会显着降低整体图像质量。

我的输入图片:

CLAHE 4 次后:

代码:

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()

【问题讨论】:

先将图片转成hsv,分离出皮肤区域。然后标记静脉变得相对容易。此外,如果有可能在图像上设置 ROI 以找到静脉,那么问题就是小菜一碟。 你的意思是手动设置ROI? 我不能那样做。我希望我的代码是通用的。那只是一个测试图像。 :// 好的,添加你的代码,我看看有什么可以做得更好 它是基本的,但是.. 还是做了.. 【参考方案1】:

下面是方法-

在手外找不到静脉。因此,通过将图像转换为具有低、高皮肤值的 hsv 和 cv2.inRange() 来消除废话。如果您无法确定正确的值,请制作一个跟踪栏。

与握着它的手上的褶皱相比,您的皮肤更光滑。使用具有适当参数的 Canny 边缘,稍微膨胀并通过 and'ing 过滤掉高频部分。

克拉赫 自适应阈值 形态和噪声去除操作。

改善输出的建议:

    获得更好的图像设置,理想情况下只有手臂。 找出合适的 CLAHE、Thresholding、Canny 参数

【讨论】:

你用过 OpenCV-Python 吗? 是的,但是在另一个问题上使用了相同的 python 文件。尝试我按顺序告诉的步骤,如果您有错误,请随时在 cmets 中询问。 肯定..会做(Y)

以上是关于使用opencv标记静脉的主要内容,如果未能解决你的问题,请参考以下文章

使用Python,OpenCV生成Aruco标记

如何使用OpenCV实现基于标记的定位

OpenCV - 如何检测带有 alpha 通道的标记

如何在 OpenCV 中定义分水岭的标记?

检测二维图像中的标记[Python/OpenCV]

OpenCV 例程 300篇254.OpenCV 绘制图像标记