python识别增强静脉清晰度 opencv-python图像处理案例

news2024/11/24 10:29:21

一.任务说明

    用python实现静脉清晰度提升。

二.代码实现

import cv2
import numpy as np

def enhance_blood_vessels(image):
    # 调整图像对比度和亮度
    enhanced_image = cv2.convertScaleAbs(image, alpha=0.5, beta=100)
    
    # 应用CLAHE(对比度受限的自适应直方图均衡化)
    clahe = cv2.createCLAHE(clipLimit=30.0, tileGridSize=(8, 8))
    enhanced_image = clahe.apply(enhanced_image)
    
    # 应用中值滤波平滑图像
    enhanced_image = cv2.medianBlur(enhanced_image, 1)
    
    return enhanced_image

def extract_blood_vessels(image):
    # 阈值分割提取静脉血管

    ret, thresholded_image = cv2.threshold(image, 100, 255, cv2.THRESH_BINARY)
    
    # 使用形态学操作(膨胀和腐蚀)进一步清理和连接血管
    kernel = np.ones((3, 3), np.uint8)
    thresholded_image = cv2.morphologyEx(thresholded_image, cv2.MORPH_OPEN, kernel)
    
    return thresholded_image

# 读取图像
image = cv2.imread('input-pic.png', cv2.IMREAD_GRAYSCALE)

# 图像增强
enhanced_image = enhance_blood_vessels(image)

# 提取静脉血管
vessels_image = extract_blood_vessels(enhanced_image)
# 将灰度图转换为彩色图
color_image = np.zeros((enhanced_image.shape[0], enhanced_image.shape[1], 3), dtype=np.uint8)
for i in range(enhanced_image.shape[0]):
    for j in range(enhanced_image.shape[1]):
        color_image[i][j] = (enhanced_image[i][j], enhanced_image[i][j], 100)  # 使用灰度值作为RGB通道的值
    
# 显示彩色图
cv2.imshow('Color Image', color_image)
# 显示图像
cv2.imshow('Original Image', image)
cv2.imshow('Enhanced Image', enhanced_image)
cv2.imshow('Blood Vessels', vessels_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

三.识别效果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1321658.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

万能在线答题考试小程序源码系统 网课必备 既能刷题又能考试 附带完整的搭建教程

在当前的数字化时代,移动应用程序已经成为人们日常生活的重要组成部分。其中,小程序因其无需下载、即用即走的特性,备受用户青睐。现如今,将在线答题考试功能集成到小程序中,可以极大地提高学习者的学习效率和兴趣。 …

历时两个月,我终于研究透外卖红包是怎么一回事

近几年,推广外卖红包爆火,各种推广外卖红包的公众号层出不穷。于是,我就在想外卖红包究竟是怎么一回事。就这样,我带着问题开始了关于外卖红包的研究。 在研究的过程中,我开始了解隐藏优惠券、cps等一系列相关的术语。…

rabbitmq界面主要参数分析

本篇主要分析rabbitmq broker界面参数 rabbitmq界面主要参数分析 1、connections User Name: user - 连接所使用的用户名。 State: running - 连接当前的状态,这里表明连接是活动的。 SSL/TLS: ○ - 表示这个连接没有使用SSL/TLS加密。 内部或受信任的网络中可能…

【RTOS学习】源码分析(通用队列 队列 队列集)

🐱作者:一只大喵咪1201 🐱专栏:《RTOS学习》 🔥格言:你只管努力,剩下的交给时间! 前面本喵讲解了和任务相关的FreeRTOS源码,进行再来介绍一下用于任务间通信的几种数据结…

14.单调队列(滑动窗口最大值)、单调队列优化DP【灵神基础精讲】

单调队列(滑动窗口最大值) 从「维护单调性」的角度上来说,单调队列和单调栈是一样的,一个弹出队尾元素,另一个弹出栈顶元素。在单调栈的基础上,单调队列多了一个「移除队首」的操作,这类似滑动窗…

牛目标检测数据集VOC+YOLO格式4000张

牛是一种古老的哺乳动物,被人类驯化了数千年,成为了人类重要的家畜之一。它们是一种大型草食性动物,主要生活在草原、森林和农村地区。牛的体型较大,体长可达3米,体重可达1500千克。 牛是一种非常有用的动物&#xff0…

【TB作品】STM32 PWM之实现呼吸灯,STM32F103RCT6,晨启

文章目录 完整工程参考资料实验过程 实验任务: 1:实现PWM呼吸灯,定时器产生PWM,控制实验板上的LED灯亮灭; 2:通过任意两个按键切换PWM呼吸灯输出到两个不同的LED灯,实现亮灭效果; 3&…

提升数据中心网络效率:100G QSFP28 LR4光模块的优势分析

数字信息的急剧增长,对高速、高容量网络的需求愈发迫切,数据传输的速度和距离成为了一个关键的挑战。在这个背景下,100G QSFP28 LR4光模块作为一款性能卓越的光模块,为远距离高速传输提供了全新的解决方案。 该产品是专为符合100G…

【网络面试必问(8)】防火墙原理、正向代理、反向代理、缓存服务器、负载均衡和内容分发服务器

接上一篇:【网络面试必问(7)】聊聊集线器、交换机和路由器 作为一个程序员,其实很少去了解http请求消息在到达服务器之前,所经过的众多组件的,今天借着机会聊一聊标题中提到的正向代理、反向代理、缓存服务…

分段管理及段页管理

一、 分段 程序的逻辑关系被划分为不同的段,每个段有一个段名,并且每个段都从0开始编址。这些段在内存中分配,每个段占据连续的内存空间,但不同段之间可以不相邻。 这种分段管理有一些特点和优势: 逻辑划分&#xff1…

SpringBoot已经禁掉了循环依赖!

还在问循环依赖嘛?SpringBoot已经禁掉了循环依赖! 首发2023-12-18 11:26yuan人生 如果现在面试时还有人问你循环依赖,你就这样怼他:循环依赖是一种代码质量低下的表现,springboot2.6之后的版本已经默认禁用了。 Spr…

计算机与自动医疗检查仓:技术革新引领医疗未来

计算机与自动医疗检查仓:技术革新引领医疗未来 一、引言 随着科技的飞速发展,人工智能(AI)和机器学习(ML)已经成为现代社会不可或缺的一部分。它们的应用领域日益扩展,从简单的日常任务到复杂…

云原生系列2-GitLab和Jenkins

1、GitLab类似github,是个私有仓库 1、GitLab安装,至少8G内存4核cpu # 查找Gitlab镜像 docker search gitlab/gitlab-ce # gitlab镜像拉取 docker pull gitlab/gitlab-ce # 查看镜像 docker images # 本机先建3个目录,为了gitlab容器通过挂…

【C语言】自定义类型:结构体深入解析(一)

🌈write in front :🔍个人主页 : 啊森要自信的主页 ✏️真正相信奇迹的家伙,本身和奇迹一样了不起啊! 欢迎大家关注🔍点赞👍收藏⭐️留言📝>希望看完我的文章对你有小小的帮助&am…

Moonbeam生态项目分析 — — 跨链借贷协议Orbiter One

概览 Orbiter One是一个非托管的借贷协议和DeFi中心,专注于跨链互操作性。通过使用从借贷中赚取的ORB Token铸造的Intergactic Whiskers Brigade NFT,用户可以质押并获得额外奖励,借贷和跨链存款则可以在不离开Moonbeam的情况下无缝参与其他…

听说蚂蚁的职级调整了

上周三听说蚂蚁的职级调整了,让我们来看一下具体的改革方案: 简单地说,就是把原来的 PN 级一拆二,拆成 2N 和 2N1 级。 从本质上来看,就是把原来扁平化的宽职级变多了,相当于 double 了。 那职级变多有什…

初探 Reactor、Proactor 线程模型与 BIO、AIO、NIO

1 前言 工作中或者是技术上经常会遇到 I/O 、线程模型相关的问题,以及同步、异步、阻塞、非阻塞等各种基础问题,之前上学时候的概念认知总是模糊的,一知半解。趁这次了解希望能够更加深入的去了解这方面的知识,于是有了接下来这篇…

AWS 知识一:如何在AWS上启动云AD服务器(详细到极致)

前言: 首先这里指的云AD服务器,只是为了让读友更好理解。云AD服务器在AWS中称为目录。AWS一共提供了4种目录类别,下面我将全程使用AWS托管微软AD这种目录类别进行示例。他完全提供了和Microsoft AD的功能,包括NTLM,Ker…

Android-Binder基本原理

一、进程角度看IPC机制 在Android系统中,每个进程只能运行在自己所拥有的虚拟地址空间。例如,一个4GB的虚拟地址空间,包含3GB的用户空间和1GB的内核空间,内核空间的大小可以通过参数配置进行调整。两个进程之间的用户空间是彼此独…

如何开发一个免费的App

开发一个免费App意味着能够在项目启动初期,以更低成本的方式进行业务的迭代和市场化验证。 互联网发展到2023年,尤其在生成式AI及大模型技术“跃进式”增长的背景下,一个创新式商业模式的起步变得异常艰难。但如果用好工具,那么不…