当前位置: 首页 > 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)

病理图像色彩特征提取

病理图像细微特征提取

自动数据标注

分类场景下的医学图像分析

分割场景下的医学图像分析

检测场景下的医学图像分析

http://www.lryc.cn/news/111412.html

相关文章:

  • PyCharm安装使用2023年教程,PyCharm与现流行所有编辑器对比。
  • vue3中CompositionApi理解与使用
  • 【前瞻】视频技术的发展趋势讨论以及应用场景
  • Visual Studio在Debug模式下,MFC工程中包含Eigen库时的定义冲突的问题
  • Java实现购买机票案例
  • 通用FIR滤波器的verilog实现(内有Lowpass、Hilbert参数生成示例)
  • 有利于提高xenomai /PREEMPT-RT 实时性的一些配置建议
  • 【LeetCode】24.两两交换链表中的节点
  • 融合大数据、物联网和人工智能的智慧校园云平台源码 智慧学校源码
  • Spring Boot通过切面实现方法耗时情况
  • 深挖 Threads App 帖子布局,我进一步加深了对CSS网格布局的理解
  • leetcode做题笔记54
  • GD32F103VE点灯
  • matlab使用教程(8)—绘制三维曲面图
  • 【Nginx14】Nginx学习:HTTP核心模块(十一)其它配置
  • 243. 一个简单的整数问题2(树状数组)
  • C#利用自定义特性以及反射,来提大型项目的开发的效率
  • 【传统视觉】C#创建、封装、调用类库
  • AutoMapper反向映射
  • 华为Mate30报名鸿蒙 HarmonyOS 4.0.0.108 系统更新
  • elementui Cascader 级联选择使用心得
  • 【ChatGPT 指令大全】怎么利用ChatGPT写报告
  • 【枚举,构造】CF1582 C D
  • POJ 3169 Layout BellmanFord Dijkstra
  • 数据库管理员知识图谱
  • 中兴服务器支持百度“文心一言”,助力AI产业发展
  • STM 如何通过网络 time.windows.com获取时间
  • 数据结构——红黑树
  • 【C++】数据结构与算法:常用排序算法
  • 【C++】Bullet3代码存档