当前位置: 首页 > news >正文

医学图像处理

医学图像处理

    • 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批量分片高像素图像 医学图像通常是大像素&#xff08;1920x1080&…...

PyCharm安装使用2023年教程,PyCharm与现流行所有编辑器对比。

与PyCharm类似的功能和特性的集成开发环境&#xff08;IDE&#xff09;和代码编辑器有以下几种&#xff1a; Visual Studio Code&#xff08;VS Code&#xff09;&#xff1a;由Microsoft开发&#xff0c;VS Code是一个高度可定制和可扩展的代码编辑器。它支持多种编程语言&am…...

vue3中CompositionApi理解与使用

CompositionApi&#xff0c;组合式API&#xff0c;相当于react中hooks&#xff0c;函数式。 优势&#xff1a;1&#xff0c;增加了代码的复用性&#xff08;类似mixin&#xff0c;slot&#xff0c;高阶组件功能&#xff09; 2&#xff0c;代码可读性更好。可以将处理逻辑和视图…...

【前瞻】视频技术的发展趋势讨论以及应用场景

视频技术的发展可以追溯到19世纪初期的早期实验。到20世纪初期&#xff0c;电视技术的发明和普及促进了视频技术的进一步发展。 1&#xff09;数字化&#xff1a;数字化技术的发明和发展使得视频技术更加先进。数字电视信号具有更高的清晰度和更大的带宽&#xff0c;可以更快地…...

Visual Studio在Debug模式下,MFC工程中包含Eigen库时的定义冲突的问题

Visual Studio在Debug模式下&#xff0c;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.首先&#xff0c;考虑方法是否需要接收数据处理&#xff1f; 阅读需求我们会发现&#xff0c;不同月份、不同原价、不同舱位类型优惠方案都不一样&#xff1b; 所以&#xff0c;可以将原价、月份、舱位类型写成参数 …...

通用FIR滤波器的verilog实现(内有Lowpass、Hilbert参数生成示例)

众所周知&#xff0c;Matlab 中的 Filter Designer 可以直接生成 FIR 滤波器的 verilog 代码&#xff0c;可以方便地生成指定阶数、指定滤波器参数的高通、低通、带通滤波器&#xff0c;生成的 verilog 代码也可以指定输入输出信号的类型和位宽。然而其生成的代码实在算不上美观…...

有利于提高xenomai /PREEMPT-RT 实时性的一些配置建议

版权声明:转自: https://www.cnblogs.com/wsg1100 一、前言 1. 什么是实时 “实时”一词在许多应用领域中使用,人们它有不同的解释,并不总是正确的。人们常说,如果控制系统能够对外部事件做出快速反应,那么它就是实时运行的。根据这种解释,如果系统速度快,则系统被认…...

【LeetCode】24.两两交换链表中的节点

题目 给你一个链表&#xff0c;两两交换其中相邻的节点&#xff0c;并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题&#xff08;即&#xff0c;只能进行节点交换&#xff09;。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4] 输出&#xff1a…...

融合大数据、物联网和人工智能的智慧校园云平台源码 智慧学校源码

电子班牌系统用以展示各个班级的考勤信息、授课信息、精品课程、德育宣传、班级荣誉、校园电视台、考场信息、校园通知、班级风采&#xff0c;是智慧校园和智慧教室的对外呈现窗口&#xff0c;也是学校校园文化宣传和各种信息展示的重要载体。将大数据、物联网和人工智能等新兴…...

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网格布局的理解

当我遇到一个新产品时&#xff0c;我首先想到的是他们如何实现CSS。当我遇到Meta的Threads时也不例外。我很快就探索了移动应用程序&#xff0c;并注意到我可以在网页上预览公共帖子。 这为我提供了一个深入挖掘的机会。我发现了一些有趣的发现&#xff0c;我将在本文中讨论。 …...

leetcode做题笔记54

给你一个 m 行 n 列的矩阵 matrix &#xff0c;请按照 顺时针螺旋顺序 &#xff0c;返回矩阵中的所有元素。 思路一&#xff1a;模拟题意 int* spiralOrder(int** matrix, int matrixSize, int* matrixColSize, int* returnSize){int m matrixSize; int n matrixColSi…...

GD32F103VE点灯

GD32F103VE点灯主要用来学习端口引脚的输出配置。它由LED.c&#xff0c;LED.h&#xff0c;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 坐标来定义曲面图&#xff0c;并使用直线连接相邻的点。mesh 和surf 函数以三维形式显示曲面图。 • mesh 生成仅使用颜色来标记连接定义点的线条的线框曲面图。 • surf 使用颜色显示曲面图的连接线和面。 MATL…...

【Nginx14】Nginx学习:HTTP核心模块(十一)其它配置

Nginx学习&#xff1a;HTTP核心模块&#xff08;十一&#xff09;其它配置 剩下的一些配置指令没有大的归属&#xff0c;不过也有一些是比较常见的&#xff0c;这部分内容学习完成之后&#xff0c;整个 http 模块相关的核心基础配置指令就全部学习完成了。今晚可以举杯庆祝一下…...

243. 一个简单的整数问题2(树状数组)

输入样例&#xff1a; 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输出样例&#xff1a; 4 55 9 15 解析&#xff1a; 一般树状数组都是单点修改、区间查询或者单点查询、区间修改。这道题都是区间操作。 1. 区间修改用数组数组维护差分数组 2. 区间查询&am…...

C#利用自定义特性以及反射,来提大型项目的开发的效率

在大型项目的开发过程中&#xff0c;需要多人协同工作&#xff0c;来加速项目完成进度。 比如一个软件有100个form&#xff0c;分给100个人来写&#xff0c;每个人完成自己的Form.cs的编写之后&#xff0c;要在Mainform调用自己写的Form。 如果按照正常的Form form1 new For…...

【传统视觉】C#创建、封装、调用类库

任务 因为实现代码相对简单&#xff0c;然后又没有使用Opencv&#xff0c;所以就直接用C#实现&#xff0c;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 {…...

19c补丁后oracle属主变化,导致不能识别磁盘组

补丁后服务器重启&#xff0c;数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后&#xff0c;存在与用户组权限相关的问题。具体表现为&#xff0c;Oracle 实例的运行用户&#xff08;oracle&#xff09;和集…...

Vue记事本应用实现教程

文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展&#xff1a;显示创建时间8. 功能扩展&#xff1a;记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...

基于大模型的 UI 自动化系统

基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...

【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器

一.自适应梯度算法Adagrad概述 Adagrad&#xff08;Adaptive Gradient Algorithm&#xff09;是一种自适应学习率的优化算法&#xff0c;由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率&#xff0c;适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...

练习(含atoi的模拟实现,自定义类型等练习)

一、结构体大小的计算及位段 &#xff08;结构体大小计算及位段 详解请看&#xff1a;自定义类型&#xff1a;结构体进阶-CSDN博客&#xff09; 1.在32位系统环境&#xff0c;编译选项为4字节对齐&#xff0c;那么sizeof(A)和sizeof(B)是多少&#xff1f; #pragma pack(4)st…...

ETLCloud可能遇到的问题有哪些?常见坑位解析

数据集成平台ETLCloud&#xff0c;主要用于支持数据的抽取&#xff08;Extract&#xff09;、转换&#xff08;Transform&#xff09;和加载&#xff08;Load&#xff09;过程。提供了一个简洁直观的界面&#xff0c;以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...

unix/linux,sudo,其发展历程详细时间线、由来、历史背景

sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...

【Java_EE】Spring MVC

目录 Spring Web MVC ​编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 ​编辑参数重命名 RequestParam ​编辑​编辑传递集合 RequestParam 传递JSON数据 ​编辑RequestBody ​…...

聊一聊接口测试的意义有哪些?

目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开&#xff0c;首…...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”

2025年#高考 将在近日拉开帷幕&#xff0c;#AI 监考一度冲上热搜。当AI深度融入高考&#xff0c;#时间同步 不再是辅助功能&#xff0c;而是决定AI监考系统成败的“生命线”。 AI亮相2025高考&#xff0c;40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕&#xff0c;江西、…...