医学图像处理
医学图像处理
- 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 {…...
前端工程化:Vite与Rollup构建优化
前端工程化:Vite与Rollup构建优化 大家好,我是欧阳瑞(Rich Own)。今天想和大家聊聊前端工程化这个重要话题。作为一个全栈开发者,构建工具是日常开发中不可或缺的一部分。今天就来分享一下Vite和Rollup的构建优化技巧…...
CodeWF Toolbox:一个用 Avalonia + Prism 做出来的开发者工具箱
今天这篇文章,站长来聊聊我自己开发的 CodeWF Toolbox,CodeWF 工具箱。熟悉我的朋友一般都叫我“站长”,因为我还有一个网站:CodeWF。这个工具箱也是围绕我平时写代码、维护网站、整理资料、排查问题时反复遇到的需求做出来的。它…...
机器人碰撞检测2:FCL库进阶实战与性能优化
1. 从基础到进阶:FCL库在机器人运动规划中的角色 第一次接触FCL库时,你可能已经体验过它强大的基础碰撞检测功能。但当机器人需要在一个充满动态障碍物的工厂环境中自主导航,或者机械臂要在密集货架上精准抓取物品时,简单的两两碰…...
Pandas 图表的威力:后端
原文:towardsdatascience.com/the-power-of-pandas-plots-backends-6a08d52071d2?sourcecollection_archive---------9-----------------------#2024-08-30 从 Pandas 中轻松创建交互式图形 https://medium.com/petoulemonde?sourcepost_page---byline--6a08d520…...
【亲测免费】 Realtek-RTD2660源代码:开启显示设备定制化的新纪元
Realtek-RTD2660源代码:开启显示设备定制化的新纪元 【下载地址】Realtek-RTD2660源代码源程序 本仓库提供Realtek-RTD2660源代码源程序的下载。该资源文件适用于7至19寸的显示设备,为开发者提供了完整的源代码,方便进行二次开发和定制 项目…...
DevEco Studio预览器(Previewer)的3个隐藏技巧:从实时预览到多设备联调
DevEco Studio预览器的3个隐藏技巧:从实时预览到多设备联调 在鸿蒙应用开发中,DevEco Studio的Previewer功能早已超越了简单的UI查看工具。对于已经掌握基础操作的中级开发者而言,如何将这个看似简单的预览窗口转变为高效调试利器࿰…...
企业数据安全第一关:基于RBAC模型,用CloudQuery搞定数据库权限管控与审计日志
企业数据安全第一关:基于RBAC模型构建数据库权限管控与审计体系 当企业业务规模从初创期迈向成长期时,数据库访问权限往往像一间未经整理的仓库——所有人都能找到入口,但没人清楚哪些物品可以触碰。某互联网金融公司的技术负责人曾分享过这样…...
减少重复劳作,气泡图软件助力质检效率升级
在制造业做过质量或工程的人,一定都有过这种体验:一张复杂图纸几百个尺寸,一个个手动画气泡、编号、抄 Excel,眼睛越看越花,手指越敲越累。更折磨的是,图纸一改,气泡编号几乎要全部重来…...
OpenWebUI智能管道:连接本地AI模型与高性能推理后端
1. 项目概述:一个连接OpenWebUI与本地AI模型的智能管道最近在折腾本地大语言模型(LLM)的朋友,估计都绕不开OpenWebUI(原名Ollama WebUI)这个项目。它提供了一个极其美观、功能强大的Web界面,让我…...
别再给Claude送钱了!7个硬核技巧让Token消耗爆降80%,我亲测有效
文章目录前言1. 杀鸡不用牛刀:根据任务复杂度切换模型,别用导弹打蚊子2. 把CLAUDE.md当“项目宪法”,别当“信息垃圾场”3. 把脏活累活交给Subagent,但别滥用4. 精准打击!明确指定文件和行号,别让Claude大海…...
