医学图像处理
医学图像处理
- opencv批量分片高像素图像
- 病理图像色彩特征提取
- 病理图像细微特征提取
- 自动数据标注
- 分类场景下的医学图像分析
- 分割场景下的医学图像分析
- 检测场景下的医学图像分析
, i ] k 8 + = < * I
opencv批量分片高像素图像
医学图像通常是大像素(1920x1080)、超大像素(4096x2160)。
深度学习输入数据尺寸通常是 640x640、32x32。
所以我们会切分医学图像, 变成小像素片, 并对每一个方片识别或预测。
星辰图和病理图类似:
- 星辰和病灶细胞一样,可能分布在图像各个位置,也可以集中在图像上的某个区域
- 而且都非常小,可能不到图的1%

方片尺寸最小是1x1, 一般我们用50x50。
怎么实现这种分割呢?
- 选定截取区域
- 截取保存
# 截取图像[高的起点:高的终点,宽的起点:宽的终点],并保存
cv2.imwrite(os.path.join(path, "1.jpg"), imgcopy[0:1200,0:1200]
每个方片尺寸为 50*50,左上角第一个被切分的方片索引为 imgcopy[:50, :50],紧接着左数第二个方片的索引为 imgcopy[:50,50:100],第三个方片索引为 imgcopy[:50,100:150],第一行所有方片被表示为 ingcopy[:50, x:x+50]。
只要在宽度上循环,每次让宽的起点增加50,宽的终点增加50,就可以做第一行的截取。
imgcopy = cv2.cvtColor(img, cv2.COLOR_BGR2RGB).copy # 每次分割前,获取完整的原始图像imgheight = imgcopy.shape[0] # 获取高度
imgwidth = imgcopy.shape[1] # 获取宽度patch_height = 50 # 方片尺寸50*50
patch_weight = 50for y in range(0, imgheight, patch_height): # y 是高的起点for x in range(0, imgwidth, patch_weight): # x 是宽的起点if patch_height > imgheight or patch_weight > imgwidth: # 边界判断,如果图片小于截取尺寸取消break y_ = y + patch_heightx_ = x + patch_weightif imgheight >= y_ and imgwidth >= x_: # 如果图片已经被截取到连50都到不得了,这部分就舍去,不影响patch = imgcopy[y:y_, x:x_]cv2.imwrite(os.path.join(path, "x"+str(x)+"_"+str(x_)+"y"+str(y)+"_"+str(y_)+".jpg"), patch)# 保存截取图像cv2.rectangle(imgcopy, (x,y), (x_,y_),(255,255,255),2) # 把刚刚截取区域在原图上用白色矩形圈出来
分割后。读取大批量文件:
def load_images_from_folder(folder): # 批量读取文件夹中的图片images = [] # 把所有方片保存在列表for filename in os.listdir(folder):img = cv2.imread(os.path.join(folder, filename))if img is not None:images.append(img)return imagesimages = load_images_from_folder("分割文件夹路径")
完整代码:
import cv2
import os
import matplotlib.pyplot as pltpath = r"文件夹路径"
img = cv2.imread(os.path.join(path, "图片名字.jpg"))if img is None:print("opencv读取图像时,没有成功也不会报错")else:print("读取图像成功")imgcopy = cv2.cvtColor(img, cv2.COLOR_BGR2RGB).copy # 将BGR颜色空间的图像转换为RGB颜色空间,并创建一个副本以供后续使用。每次分割前,获取完整的原始图像def extract_images_from_folder(folder):"""对图像进行批量分片(对一个文件夹中所有的图像进行分片)"""# 图像导入for filename in os.listdir(folder):img = cv2.imread(os.path.join(folder, filename))if img is not None:# 如果导入成功,则创建该图片专属的文件夹subfolder = os.path.join(PATH,filename.split(".")[0])if os.path.exists(subfolder):print("folder exists")else:os.mkdir(subfolder)# 开始分割,所有被分割出的切片都位于该图片的文件夹中imgcopy = cv2.cvtColor(img, cv2.COLOR_BGR2RGB).copy()imgheight = imgcopy.shape[0]imgwidth = imgcopy.shape[1]patch_height = 50patch_weight = 50for y in range(0, imgheight, patch_height):for x in range(0, imgwidth, patch_weight):if patch_height > imgheight or patch_weight > imgwidth:breaky_ = y + patch_heightx_ = x + patch_weightif imgheight >= y_ and imgwidth >= x_:patch = imgcopy[y:y_, x:x_]# 将每一张图像保存到单独的文件夹cv2.imwrite(os.path.join(subfolder,str(filename.split(".")[0])+"x"+str(x)+"_"+str(x_)+"y"+str(y)+"_"+ str(y_) +".jpg"), patch)# 保存之后,在原始图像上对当前索引出的区域绘制白色边框# 注意这一操作将会在正在被切片的图像上进行cv2.rectangle(imgcopy # 要绘制长方体的对象, (x, y), (x_, y_) # 绘制长方体的4角的坐标, (255, 255, 255) # 使用的颜色, 2 # 线条的粗细,数字越大越粗)#循环完毕后,绘制被我们分割后的图像 plt.figure(dpi=300)plt.imshow(imgcopy)plt.axis("off");extract_images_from_folder(PATH)
病理图像色彩特征提取
病理图像细微特征提取
自动数据标注
分类场景下的医学图像分析
分割场景下的医学图像分析
检测场景下的医学图像分析
相关文章:
医学图像处理
医学图像处理 opencv批量分片高像素图像病理图像色彩特征提取病理图像细微特征提取自动数据标注分类场景下的医学图像分析分割场景下的医学图像分析检测场景下的医学图像分析 , i ] k 8 < * I opencv批量分片高像素图像 医学图像通常是大像素(1920x1080&…...
PyCharm安装使用2023年教程,PyCharm与现流行所有编辑器对比。
与PyCharm类似的功能和特性的集成开发环境(IDE)和代码编辑器有以下几种: Visual Studio Code(VS Code):由Microsoft开发,VS Code是一个高度可定制和可扩展的代码编辑器。它支持多种编程语言&am…...
vue3中CompositionApi理解与使用
CompositionApi,组合式API,相当于react中hooks,函数式。 优势:1,增加了代码的复用性(类似mixin,slot,高阶组件功能) 2,代码可读性更好。可以将处理逻辑和视图…...
【前瞻】视频技术的发展趋势讨论以及应用场景
视频技术的发展可以追溯到19世纪初期的早期实验。到20世纪初期,电视技术的发明和普及促进了视频技术的进一步发展。 1)数字化:数字化技术的发明和发展使得视频技术更加先进。数字电视信号具有更高的清晰度和更大的带宽,可以更快地…...
Visual Studio在Debug模式下,MFC工程中包含Eigen库时的定义冲突的问题
Visual Studio在Debug模式下,MFC工程中包含Eigen库时的定义冲突的问题 报错信息 Eigen\src\Core\PlainObjectBase.h(143,5): error C2061: 语法错误: 标识符“THIS_FILE” Eigen\src\Core\PlainObjectBase.h(143,1): error C2333: “Eigen::PlainObjectBase::opera…...
Java实现购买机票案例
Java实现购买机票案例 需求分析代码实现小结Time 需求分析 1.首先,考虑方法是否需要接收数据处理? 阅读需求我们会发现,不同月份、不同原价、不同舱位类型优惠方案都不一样; 所以,可以将原价、月份、舱位类型写成参数 …...
通用FIR滤波器的verilog实现(内有Lowpass、Hilbert参数生成示例)
众所周知,Matlab 中的 Filter Designer 可以直接生成 FIR 滤波器的 verilog 代码,可以方便地生成指定阶数、指定滤波器参数的高通、低通、带通滤波器,生成的 verilog 代码也可以指定输入输出信号的类型和位宽。然而其生成的代码实在算不上美观…...
有利于提高xenomai /PREEMPT-RT 实时性的一些配置建议
版权声明:转自: https://www.cnblogs.com/wsg1100 一、前言 1. 什么是实时 “实时”一词在许多应用领域中使用,人们它有不同的解释,并不总是正确的。人们常说,如果控制系统能够对外部事件做出快速反应,那么它就是实时运行的。根据这种解释,如果系统速度快,则系统被认…...
【LeetCode】24.两两交换链表中的节点
题目 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。 示例 1: 输入:head [1,2,3,4] 输出:…...
融合大数据、物联网和人工智能的智慧校园云平台源码 智慧学校源码
电子班牌系统用以展示各个班级的考勤信息、授课信息、精品课程、德育宣传、班级荣誉、校园电视台、考场信息、校园通知、班级风采,是智慧校园和智慧教室的对外呈现窗口,也是学校校园文化宣传和各种信息展示的重要载体。将大数据、物联网和人工智能等新兴…...
Spring Boot通过切面实现方法耗时情况
Spring Boot通过切面实现方法耗时情况 依赖 <dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>1.9.9.1</version></dependency>自定义注解 package com.geekmice.springbootself…...
深挖 Threads App 帖子布局,我进一步加深了对CSS网格布局的理解
当我遇到一个新产品时,我首先想到的是他们如何实现CSS。当我遇到Meta的Threads时也不例外。我很快就探索了移动应用程序,并注意到我可以在网页上预览公共帖子。 这为我提供了一个深入挖掘的机会。我发现了一些有趣的发现,我将在本文中讨论。 …...
leetcode做题笔记54
给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。 思路一:模拟题意 int* spiralOrder(int** matrix, int matrixSize, int* matrixColSize, int* returnSize){int m matrixSize; int n matrixColSi…...
GD32F103VE点灯
GD32F103VE点灯主要用来学习端口引脚的输出配置。它由LED.c,LED.h,SoftDelay.c和main.c组成。 #include "gd32f10x.h" //使能uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t #include "SoftDelay.h"#include …...
matlab使用教程(8)—绘制三维曲面图
1网格图和曲面图 MATLAB 在 x-y 平面中的网格上方使用点的 z 坐标来定义曲面图,并使用直线连接相邻的点。mesh 和surf 函数以三维形式显示曲面图。 • mesh 生成仅使用颜色来标记连接定义点的线条的线框曲面图。 • surf 使用颜色显示曲面图的连接线和面。 MATL…...
【Nginx14】Nginx学习:HTTP核心模块(十一)其它配置
Nginx学习:HTTP核心模块(十一)其它配置 剩下的一些配置指令没有大的归属,不过也有一些是比较常见的,这部分内容学习完成之后,整个 http 模块相关的核心基础配置指令就全部学习完成了。今晚可以举杯庆祝一下…...
243. 一个简单的整数问题2(树状数组)
输入样例: 10 5 1 2 3 4 5 6 7 8 9 10 Q 4 4 Q 1 10 Q 2 4 C 3 6 3 Q 2 4输出样例: 4 55 9 15 解析: 一般树状数组都是单点修改、区间查询或者单点查询、区间修改。这道题都是区间操作。 1. 区间修改用数组数组维护差分数组 2. 区间查询&am…...
C#利用自定义特性以及反射,来提大型项目的开发的效率
在大型项目的开发过程中,需要多人协同工作,来加速项目完成进度。 比如一个软件有100个form,分给100个人来写,每个人完成自己的Form.cs的编写之后,要在Mainform调用自己写的Form。 如果按照正常的Form form1 new For…...
【传统视觉】C#创建、封装、调用类库
任务 因为实现代码相对简单,然后又没有使用Opencv,所以就直接用C#实现,C#调用。 1.创建类库 1.1新建一个类库 vs2015 > 文件 > 新建 > 项目 using System; using System.Collections.Generic; using System.Linq;namespace Yo…...
AutoMapper反向映射
#region 用来验证反向映射public class MemberSource{public string Name { get; set; }public MemberInnerSource MemberInnerSource { get; set; }public MemberOtherInnerSource MemberOtherInnerSource { get; set; }}public class MemberInnerSource{public string Name {…...
5个Windows运行Android应用方案测评:普通用户的轻量级跨平台解决方案
5个Windows运行Android应用方案测评:普通用户的轻量级跨平台解决方案 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 在数字化办公与娱乐日益融合的今天&am…...
GLM-4.1V-9B-Base快速体验教程:PyCharm专业版中的调试与开发技巧
GLM-4.1V-9B-Base快速体验教程:PyCharm专业版中的调试与开发技巧 1. 开篇:为什么选择PyCharm开发GLM应用 PyCharm作为Python开发者最熟悉的IDE之一,其专业版提供的远程开发调试能力特别适合GLM这类大模型开发场景。想象一下,你可…...
YimMenu:GTA5游戏体验增强工具全攻略
YimMenu:GTA5游戏体验增强工具全攻略 【免费下载链接】YimMenu YimMenu, a GTA V menu protecting against a wide ranges of the public crashes and improving the overall experience. 项目地址: https://gitcode.com/GitHub_Trending/yi/YimMenu 核心痛点…...
Win11Debloat终极指南:3步打造纯净高效的Windows 11系统
Win11Debloat终极指南:3步打造纯净高效的Windows 11系统 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter and …...
Claude Code桌面控制实战:macOS开启Computer Use指南
Claude Code 的 computer use 功能,是 2026 年 3 月正式上线的原生 macOS 桌面控制能力,让 Claude 可以打开 App、点击、输入、截图,直接在你的真实桌面上完成 GUI 任务。它以内置 MCP 服务器的形式集成到 Claude Code CLI 中,通过…...
AssetStudio终极指南:快速免费提取Unity游戏模型、纹理与音频资源
AssetStudio终极指南:快速免费提取Unity游戏模型、纹理与音频资源 【免费下载链接】AssetStudio 项目地址: https://gitcode.com/gh_mirrors/asse/AssetStudio AssetStudio是一款功能强大的开源工具,专为Unity游戏资源提取设计,能够轻…...
从抓包实战到协议栈:深入解析DDS核心报文与通信机制
1. 从HelloWorld抓包开始认识DDS 第一次接触DDS协议时,很多人会被各种专业术语搞得晕头转向。其实最快的学习方式就是从实际案例入手——就像我当初用Fast DDS的HelloWorld示例做实验那样。这个经典案例包含一个发布者和一个订阅者,正好能展示DDS最核心…...
手把手教你用Matlab把PLL相噪曲线算成Jitter(附三种方法源码)
从PLL相噪曲线到Jitter计算的Matlab实战指南 在射频系统设计中,锁相环(PLL)的相位噪声性能直接影响通信质量与系统稳定性。频谱分析仪虽能捕捉相噪曲线,但工程师常需将其转换为更直观的时间抖动(Jitter)指标。本文将系统介绍三种Matlab实现方案ÿ…...
YOLOv8.yaml文件配置详解:从参数解析到模型结构优化实战
YOLOv8.yaml文件配置详解:从参数解析到模型结构优化实战 在计算机视觉领域,目标检测一直是核心任务之一。YOLO(You Only Look Once)系列算法因其出色的实时性和准确性广受欢迎,而YOLOv8作为该系列的最新版本,在模型结构和参数配置…...
为什么选择Zabbix而不是Prometheus?K8s监控工具深度对比与实战配置
Zabbix与Prometheus在Kubernetes监控中的技术决策指南 当企业级容器平台需要构建监控体系时,技术选型往往成为困扰架构师的核心难题。作为当下最主流的两个开源监控解决方案,Zabbix与Prometheus在Kubernetes生态中的表现各有千秋。本文将基于实际生产环境…...
