静脉采集过程中,由于手指自由度比较大,所以可能会有手指旋转,平移等现象,这有可能使得同一个手指的两次采集图像差别较大。这是我们不希望看到的。所以对图像进行ROI的提取非常有必要,也是图像预处理的一个过程。

本文:阐述我是如何对一张图片进行指节的区分的

原理:由于指节的两端有关节腔,而关节腔内部主要是软骨和组织液,这样会使得在图片中关节腔的位置会比较亮,而根据这一特点,我们就可以方便的知道指节是哪个位置了。

代码及其原理:

import cv2 as cv
import numpy as np
from matplotlib import pyplot as plttest_1= cv.imread('test_1.bmp',0)
test0=cv.imread('test.bmp',0)
gray_map=test0[240]
gray_map_1=test_1[240]
plt.plot(gray_map);plt.show()
plt.plot(gray_map_1);plt.show()

test0和test_1是我们用来实践的两张图(不同手指,网页存在拉伸):

在代码中,两句plt.plot()可以让我们清楚的看到在图像腰部的位置([240])的灰度分布

接下来只要找到左右灰度值最高的地方就大概是关节腔的位置了。

代码上我用的是登山算法找到山顶,但是这个有很多的小山顶混淆视听,但是我们最后只要其中两个,直接看代码

def find_peak(arr):peaks=[]step=1pos=1while(pos<600):   #实际上两个peak主要分布在100-200和450-550if (arr[pos]>=arr[pos+step])and(arr[pos]>arr[pos-step]):if ((arr[pos]>arr[pos+20])and(arr[pos]>arr[pos-20])):  #这个if语句可以滤除很多的噪音peakpeaks.append(pos)pos=pos+steppeak1=0peak2=340  #取的图片中间位置,但是有可能存在后面的关节腔灰度值比中间位置低的情况print(peaks)for i in peaks:   #这个循环从好多个peak中找到我们要的两个最大的peakif (i<340):if arr[i]>=arr[peak1] :peak1=ielse:if arr[i]>=arr[peak2] : peak2=i #if(peak2-peak1)<200 :    #print("EOI error in peak")return peak1,peak2

如果是平滑的曲线用登山算法很简单,但是这里我们需要找两个peak,而且曲线存在非常多的锯齿状peak,这都是我们不需要的。

(算法不保证不会受噪音干扰)

效果:

这是截取的图像

在实际运用中可以多取几条线上的peak然后求平均值

接下来准备想想怎么把背景去除(背景在识别中没有任何用处)

opencv-python 指静脉的ROI(感兴趣区域)的指节提取(原理+代码)相关推荐

  1. OpenCV(十)ROI感兴趣区域

    目录 1.概念 2.代码 3.效果 参考资料 1.概念 在图像处理的时候,常常我们只想对一部分图像进行处理,也就是感兴趣区域(ROI,region of interest).我们把一部分图像区域分化独 ...

  2. OpenCV实战(3)——图像感兴趣区域

    OpenCV实战(3)--图像感兴趣区域 0. 前言 1. 感兴趣区域 1.1 ROI 实例 1.2 定义 ROI 2. 使用图像掩码 3. 完整代码示例 小结 系列链接 0. 前言 在实际应用场景下 ...

  3. OpenCV学习笔记(六)——感兴趣区域ROI(浅拷贝与深拷贝的区别)

    目录 1 浅拷贝 2 深拷贝 示例代码 有时我们只对一张图像中的部分区域感兴趣,而原图像又比较大,如果带着非感兴趣区域一起处理会占用大量的内存,因次我们希望从原图像中截取部分图像后再进行处理.我们将这 ...

  4. openCV_C++笔记 : ROI感兴趣区域与Rect类

    序 在使用rect作为感兴趣区域的时候一直没有弄懂使用感兴趣区域如何将处理后图像拼到原图像中 以及 使用感兴趣区域定位的坐标要是不是原图像的坐标这两个问题,查了很多资料,大多数都是用代码一笔带过. 自 ...

  5. ROI感兴趣区域提取与泛洪填充

    一.ROI提取 1.定义:ROI提取称对感兴趣区域提取. 2.作用:勾勒感兴趣的区域,可以是方框.圆.椭圆.不规则形状等. 3.应用:以视频监控领域ROI智能视频编码技术为例,具有ROI功能的摄像机可 ...

  6. 指静脉代码学习---5.ROI感兴趣区域提取/图像分割

    一.相关论文 1.roi提取技术大概分为下面四类 2.论文一Qin:  经典的阈值确定方法有:

  7. OpenCV入门(十一):感兴趣区域提取

    void inRange(InputArray src, InputArray lowerb,InputArray upperb, OutputArray dst); inRange函数对于图像数据来 ...

  8. OpenCV python(二)图像预处理:改变图像大小 提取感兴趣区域

    OpenCV python(二)图像预处理:改变图像大小 && 提取感兴趣区域 一.改变图像大小 1.获取图像宽.高.通道数 2.resize函数 3.案例 二.ROI感兴趣区域 1. ...

  9. opencv感兴趣区域ROI的图像混合操作

    AddWeighted( const CvArr* src1, double alpha,const CvArr* src2, double beta,double gamma, CvArr* dst ...

最新文章

  1. springboot mockmvc单元测试
  2. android谷歌补丁日期,在谷歌日历Android中添加开始日期和结束日期之间所有日期的事件...
  3. PgSQL · 最佳实践 · CPU满问题处理
  4. 我给非洲医药基金会捐的款和感谢信
  5. Hi3520d uImage制作 uboot制作 rootfs制作
  6. [react] 为什么属性使用className而不是class呢?
  7. php switch goto,PHP goto语句用法实例
  8. Laravel 学习路线【4】控制器
  9. html生成pdf表格线加粗,iText 用 HTMLWorker 转换 HTML 为 PDF 时可设置表格列宽度
  10. 查看vnc端口_如何在 Centos 8 / RHEL 8 上安装和配置 VNC 服务器
  11. 【报告分享】罗兰贝格2019年关于人工智能的十个议题.pdf(附下载链接)
  12. android多媒体框架学习 详解
  13. Kafka Consumer API示例
  14. WinPhone 开发(2)-----应用程序栏ApplicationBar
  15. Focal Loss-RetinaNet算法解析
  16. java代码编写九九乘法表
  17. USACO 2016 JANUARY CONTEST, BRONZE PROBLEM 3. MOWING THE FIELD(收割庄稼)
  18. infer的用法_infer运用实践
  19. 苹果在线商店开售官方翻新Retina MacBook Pro
  20. 无线安全渗透测试套件WiFi-Pumpkin新版本发布

热门文章

  1. Mysql 查询指定数据在查询数据列表中排名问题
  2. 12招,让你成为「耐撕」的产品人
  3. matlab lbp直方图特征多少维,LBP局部二值特征
  4. 机器学习-搭建环境-3:Linux下nvidia-docker的安装(在容器中使用GPU)
  5. Labview做web服务器
  6. 4.28Linux(6)
  7. 宜人贷财报高质量增长背后:本心与精进并行
  8. 2023.2.22上机练习
  9. python爬虫:关于解决request.get和点击查看网页源代码的内容不同的问题//及大神版js加密参数获取教程指路
  10. 15对金婚夫妻亮相《挑战不可能之加油中国》分享婚姻心得