首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
【
C#开发PACS医学影像三维重建(十三):基于人体CT值从皮肤渐变到骨骼的梯度透明思路
】的更多相关文章
C#开发PACS医学影像三维重建(十三):基于人体CT值从皮肤渐变到骨骼的梯度透明思路
当我们将CT切片重建为三维体之后,通常会消除一些不必要的外部组织来观察内部病灶, 一般思路是根据人体常见CT值范围来使得部分组织透明来达到效果, 但这是非黑即白的,即,要么显示皮肤,要么显示神经,要么显示骨骼- 然而,当病灶介于两个CT值范围中间或重合时,要观察病灶这将是一个非常困难的工作,需要手动旋转.切割等一系列操作, 严重降低判断准确性和工作效率,故此采用梯度透明思想来展现渐变过程. 准备一张人体CT值范围表参考: 当我们对三维体使用鼠标操作时,将CT值从最小值到最大值映射到三维体上面,并…
C#开发PACS医学影像三维重建(一):使用VTK重建3D影像
VTK简介: VTK是一个开源的免费软件系统,主要用于三维计算机图形学.图像处理和可视化.Vtk是在面向对象原理的基础上设计和实现的,它的内核是用C++构建的. 因为使用C#语言开发,而VTK是C++的,所以推荐使用VTK的.Net开发库:ActiViz. 本系列文章主要以技术和代码讲解为主,ActiViz的安装和环境配置可以参考: ActiViz(VTK的C#库)学习使用心得之二:Activiz.NET的下载和安装 官网资料:https://www.kitware.eu/product/act…
C#开发PACS医学影像处理系统(十三):绘图处理之病灶测量
接上一篇文章,当我们可以绘制图形标记后,就可以在此操作类上面进行扩展, 比如测量类工具,目前整理出的常用绘图和测量功能如下: 测量工具类:(图形标记类请参考本系列文章:绘图处理之图形标记) 功能 说明 标尺 线段长度测量 折尺 曲线长度测量 心胸比 两根线段按比例测量 交叉尺 两根线段互相垂直测量 Cobb角 两根线段的垂线交点角度测量,一般用于脊柱曲率 开角 两根线段的延长交点的角度测量 T型尺 两根线段相交的任意角度摇摆测量和长度测量 角度测量 角度测量 圆形测量 圆形或椭圆面积测…
C#开发PACS医学影像处理系统(六):加载Dicom影像
对于一款软件的扩展性和维护性来说,上层业务逻辑和UI表现一定要自己开发才有控制权,否则项目上线之后容易被掣肘, 而底层图像处理,我们不需要重复造轮子,这里推荐使用fo-dicom,同样基于Dicom3.0协议. 根据以上原则,后台影像处理完成之后,即可使用自己开发的控件来呈现. 1.先准备好自己的dcm文件,可以是单个文件或序列文件或DicomDir文件. 2.在VS编辑器里打开NUGET搜索fo-dicoman安装即可. 3.使用fo-dicom读取影像. //将图像处理模式设置为全局WPF模…
C#开发PACS医学影像处理系统(十五):Dicom影像交叉定位线算法
1.定位线概念:某个方位的影像在另一个方向的影像上的投影相交线,例如横断面(从头到脚的方向)在矢状面(从左手到右手)上的影像投影面交线. 举个例子:右边的是MR(核磁共振)的某一帧切片,这是从头开始扫描,扫描到眼睛这个位置, 而左边图像是从左手到右手的扫描切片,那么右边图像的位置就恰好在左边图像的眼睛的位置,用红线标出的位置则为定位线, 一般用于医生参考病灶在矢状面.冠状面和横断面的具体方位. 2.检查设备示意图 在笛卡尔空间直角坐标系中,Y 右肩膀到左肩膀,X 后背到前胸,Z 足到头 3.算法…
C#开发PACS医学影像处理系统(十六):2D处理之影像平移和缩放
1.平移,利用WPF中控件边距来控制位移: /// <summary> /// 平移图像 /// </summary> /// <param name="X">平移X轴距离</param> /// <param name="startX">X轴起始位置</param> /// <param name="Y">平移Y轴距离</param> /// <…
C#开发PACS医学影像处理系统(十七):2D处理之影像旋转和翻转
1.任意角度旋转 在XAML设计器中,设置RotateTransform属性 <InkCanvas x:Name="ToolInkCanvas" UseCustomCursor="True" ClipToBounds="False" MinHeight="50" MinWidth="50" EditingMode="None" Background="{x:Null}&q…
C#开发PACS医学影像处理系统(二):界面布局之菜单栏
在菜单栏布局上,为了使用自定义窗体样式和按钮,我们需要先将窗体设置为无边框,然后添加一个Grid作为菜单栏并置顶,VerticalAlignment="Top" logo图片和标题是Image和TextBlock控件,菜单是Menu控件,系统按钮是Button控件. 其中需要注意的是,一般医院影像科或放射科阅片采用的是双屏,横屏+竖屏,而PACS一般是在竖屏上显示, 当最大化窗体时,如果不进行特殊处理,则会在横屏上最大化,而我们的要求是在竖屏上最大化, 所以需要监听最大化按钮的点击事件…
C#开发PACS医学影像处理系统(三):界面布局之工具栏
工具栏布局采用WPF中Grid作为容器,按钮采用自定义样式和图标,并采用Separator分割线: XAML设计器代码: 其中 Style="{StaticResource ButtonStyle}" 按钮样式可以根据自身UI风格来使用自定义样式 <Button x:Name="BtnRotate" Margin="5,0,0,0" Style="{StaticResource ButtonStyle}" Horiz…
C#开发PACS医学影像处理系统(十二):绘图处理之图形标记
在医生实际使用过程中,对于有病灶的影像需要一些2D绘图操作,例如对于病灶的标记和测量, 这就牵涉到在WPF中的2D绘图操作技术,一般的思路是监听鼠标的按下和抬起以及运动轨迹,目前整理出的常用绘图和测量功能如下: 图形标记类:(测量类请参考本系列文章:绘图处理之测量工具) 功能 说明 选区 蚂蚁线选择框 线段 线段标记 折线 折线标记 圆形 空心圆形 矩形 空心矩形 多边形 空心多边形 箭头 指向作用 文本 文本标记 清除所有标记 清空单元格绘图对象 撤销上个标记 删除上一个绘图对象 在WPF中,…
C#开发PACS医学影像处理系统(十四):处理Dicom影像窗宽窗位
概念解释(网络资料): 窗宽: 窗宽指CT图像所显示的CT 值范围.在此CT值范围内的组织结构按其密度高低从白到黑分为16 个灰阶以供观察对比.例如,窗宽选定为100 Hu ,则人眼可分辨的CT值为100 / 16 =6 . 25 Hu ,即2 种组织CT值相差在6 . 25Hu以上者即可为人眼所识别.因此,窗宽的宽窄直接影响图像的清晰度与对比度.如果使用窄的窗宽,则显示的CT 值范围小,每一灰阶代表的CT 值幅度小,对比度强,适于观察密度接近的组织结构(如脑组织).反之,如果使用宽的窗宽,则显…
C#开发PACS医学影像处理系统(十一):Dicom影像挂片协议
通俗点说,挂片协议可以看作整个系统的一个相对复杂一点的配置文件,可以用JSON或XML格式来读取与保存, 另外,可以制作一个独立的exe配置程序来管理这些挂片协议. 假设配置了CT的挂片协议的右键菜单,那么在打开CT影像时则是对应的不同的动态的右键菜单,如下图: CT影像的自定义工具栏,如下图: CT影像的自定义窗宽窗位,如下图: 协议格式可以参考XML格式: <?xml version="1.0" encoding="utf-8"?> <Moda…
C#开发PACS医学影像处理系统(十九):Dicom影像放大镜
在XAML代码设计器中,添加canvas画布与圆形几何对象,利用VisualBrush笔刷来复制画面内容到指定容器: <Canvas x:Name="CvsGlass" Width="106" Height="106" HorizontalAlignment="Left" VerticalAlignment="Top" MouseWheel="CvsGlass_MouseWheel"…
C#开发PACS医学影像处理系统(一):开发背景和说明
本系列文章将从以下模块和大家分享和讨论使用C#开发医学软件PACS和RIS系统, 国内相关资料比较少,也借此机会丰富一下医学软件开发生态,讨论技术难点,希望大家互相帮助共同进步. 章节介绍及截图预览: (一)PACS客户端:客户端功能和相关医学知识 部分功能菜单: (二)PACS三维:MRP.MIP.VR (三)PACS网页端:开发Web版本的PACS (四)PACS移动端:基于HTML5 (五)PACS服务端:架构.收图.归档 (六)PACS与RIS系统的通信与集成 (七)视频特效教程:使用A…
C#开发PACS医学影像处理系统(九):序列控件与拖拽
1.先看结构: 创建WPF用户控件:YourTab 创建WPF用户控件:YourItem 创建选项卡时循环添加item,并设置序列缩略图到控件和异步下载的进度条, 1个病人1个或多个Study检查,1个Study检查1个选项卡,并为每个选项卡添加自定义关闭按钮 Tab自定义关闭按钮的XAML样式如下: <Style TargetType="{x:Type TabItem}"> <Setter Property="Template"> <…
C#开发PACS医学影像处理系统(十八):Dicom使用LUT色彩增强和反色
在医生阅片确诊的过程中,当发线疑似病灶时在灰度显示下有时并不清晰,这时候就需要色彩增强效果来使灰度图像变为彩色图像. LUT可以简单的理解为0-255的颜色映射值,例如:彩虹编码,将其打包成LUT格式文件,在读取图像后载入LUT: //实例化文件处理对象并打开文件 DicomFile dicomFile = DicomFile.Open(@"C:\101\1.dcm"); //获取dicom图像对象 DicomImage dicomImage = new DicomImage(dico…
C#开发医学影像胶片打印系统(一):万能花式布局的实现思路
本篇文章将介绍开发医学影像胶片打印系统(printscu模式)遇到不规则排版时的一种思路, 一般来讲,医院打印胶片时都是整张胶片打印,但有时需要将多个病人或一个病人的多个检查打印在同一张胶片上, 这时候就需要不规则排版来满足打印需求,使胶片利用率最大化. 国际惯例,先看效果: 常规打印业务流程: 1.编辑布局模板 2.载入布局模板 3.选择标记模板 4.下载与选择影像 5.微调影像 6.超清预览.发送打印 编辑布局模板: 我们在一个Grid中,通过行数和列数循环创建带边框的Border来显示表格…
基于cornerstone.js的dicom医学影像查看浏览功能
最近由于项目需求,需要医学影像.dcm文件的预览功能,功能完成后,基于原生Demo做一个开源分享. 心急的小伙伴可以先看如下基于原生js的全部代码: 一.全部代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=e…
C#处理医学影像(三):基于漫水边界自动选取病灶范围的实现思路
开发背景: 医生在实际使用PACS软件观察病灶时,经常会测量不规则病灶的周长和面积,使用画笔工具勾勒比较耗时且准度欠佳, 或者在标记人工智能训练样本时少则几百张,多则几千张,为极大减少耗时和极大提高工作效率,故开发此功能用来自动勾勒病灶范围并自动测量. 国际惯例,先看效果: 思路流程概览: ①以鼠标按下作为漫水算法中心点向外扩散填充 ②裁剪最大外接矩形,缩小计算范围 ③灰度转换 ④Canny算子或Sobel算子提取轮廓 ⑤背景降噪 ⑥提取边界轮廓 ⑦设置容差范围 ⑧可变多边形坐标转化 ⑨缩放.平…
释放至强平台 AI 加速潜能 汇医慧影打造全周期 AI 医学影像解决方案
基于英特尔架构实现软硬协同加速,显著提升新冠肺炎.乳腺癌等疾病的检测和筛查效率,并帮助医疗科研平台预防"维度灾难"问题 <PAGE 1 LEFT COLUMN: CUSTOMER LOGO> <PAGE 1 BODY COPY: INTRODUCTION> 前言概述 从2019年年底开始迅速扩散的新型冠状病毒肺炎(COVID-19,以下简称"新冠肺炎")疫情,对医疗机构的快速诊断能力提出了突如其来且非常严峻的挑战,利用人工智能(Artific…
医学影像工作站程序ProDicom的说明
转载 http://blog.csdn.net/prodicom/article/details/4015064 注意:以下内容为转载,但保留了第一人称,请注意,以免造成不必要的麻烦. 医网联影像工作站3.0(ProDicom Workstation 3.0)是我个人使用VC++,应用免费开发包,开发的一套集医学DICOM图像传输/管理/处理.DICOM图像打印/光盘刻录.相关报告编辑/保存/管理为一体的医学影像工具,在多家医院应用运转良好,在我们科室已经使用了4年多了,虽然它功能不是很强大,也…
Android开发笔记(一百四十三)任务调度JobScheduler
Android开发笔记(一百四十三)任务调度JobScheduler…
适合新手:从零开发一个IM服务端(基于Netty,有完整源码)
本文由“yuanrw”分享,博客:juejin.im/user/5cefab8451882510eb758606,收录时内容有改动和修订. 0.引言 站长提示:本文适合IM新手阅读,但最好有一定的网络编程经验,必竟实践性的代码上手就是网络编程.如果你对网络编程,以及IM的一些理论知识知之甚少,请务必首先阅读:<新手入门一篇就够:从零开发移动端IM>,该文为IM小白分类整理了详尽的理论资料,请按需补充相关知识. 配套源码:本文写的比较浅显但不太易懂,建议结合代码一起来读,文章配套的完整源码 请从…
AI+医疗:使用神经网络进行医学影像识别分析 ⛵
作者:韩信子@ShowMeAI 计算机视觉实战系列:https://www.showmeai.tech/tutorials/46 行业名企应用系列:https://www.showmeai.tech/tutorials/63 本文地址:https://www.showmeai.tech/article-detail/298 声明:版权所有,转载请联系平台与作者并注明出处 收藏ShowMeAI查看更多精彩内容 深度学习+医疗科技 近年高速发展的人工智能技术应用到了各个垂直领域,比如把深度学习应用于…
关于lambda表达式的一些学习——基于谓词筛选值序列
今天看了一些关于lambda表达式的知识,然后对于Func<T,TResult>泛型委托不太熟悉,便查了查相关资料,又引出来了基于谓词筛选值序列这个对我来说的新鲜知识点,于是去查MSDN,以下是看到的一些相关介绍: 此方法通过使用延迟执行实现. 即时返回值为一个对象,该对象存储执行操作所需的所有信息. 只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach(或 Visual Basic 中的 For Each)来枚举该对象时,才执行此方法表示的…
为什么阿里巴巴Java开发手册中强制要求整型包装类对象值用 equals 方法比较?
在阅读<阿里巴巴Java开发手册>时,发现有一条关于整型包装类对象之间值比较的规约,具体内容如下: 这条建议非常值得大家关注, 而且该问题在 Java 面试中十分常见. 还需要思考以下几个问题: 如果不看<阿里巴巴Java开发手册>,如何知道 Integer var = ? 会缓存 -128 到 127 之间的赋值? 为什么会缓存这个范围的赋值? 如何学习和分析类似的问题? Integer 缓存问题分析 先看下面的示例代码,并思考该段代码的输出结果: public class In…
【计算机视觉】基于局部二值相似性模式(LBSP)的运动目标检测算法
基于局部二值相似性模式(LBSP)的运动目标检测算法 kezunhai@gmail.com http://blog.csdn.net/kezunhai 本文根据论文:Improving background subtraction using local binary similarity patternsWACV2014的内容及自己的理解而成,如果想了解更多细节,请参考原文.该文章思想借鉴了VIBE,其实可以理解成是VIBE+LBP算子变种(LBSP)运动目标检测算法的组合.在VIBE中,算法…
Java开发学习(十三)----基于注解开发定义第三方bean及注解开发总结
在前面的博客中定义bean的时候都是在自己开发的类上面写个注解就完成了,但如果是第三方的类,这些类都是在jar包中,我们没有办法在类上面添加注解,这个时候该怎么办? 遇到上述问题,我们就需要有一种更加灵活的方式来定义bean,这种方式不能在原始代码上面书写注解,一样能定义bean,这就用到了一个全新的注解@Bean. 这个注解该如何使用呢? 一.环境准备 学习@Bean注解之前先来准备环境: 创建一个Maven项目 pom.xml添加Spring的依赖 <dependencies> &l…
高拍仪拍照SDK开发(良田影像S300L|S500L)
高拍仪拍照SDK开发下载地址:点击下载 本SDK适用于:良田影像S300L|S500L 高拍仪如图: SDN开发包安装之后找到安装目录,如图: 大家找到各自需要的版本即可,需要注意的是如果需要上传图片到服务器的话,我已经写好了C#版的接受程序,点击下载:FileUpload.ashx JavaScript调用上传服务器代码: function SetSelImgs() { var selImgs = ""; // 获取选中的图片 for (var i = 0; i < EThum…
开发Portlet第一步:如何基于Crystal开发静态Portlet?
当团队需要基于Crystal开发Porltet时,分为以下三部: 基于Crystal开发静态Portlet 基于将静态Portlet修改为基于测试数据的动态Portlet 将动态Portlet与动态数据服务联调 那么如何基于Crystal开发静态Portlet呢? 分步指南 1.创建项目 准备基于Eclipse的Liferay开发环境,复制静态Portlet开发项目static-development-portlet,具体目录结构如下: 模版项目中包含4个Portlet,便于初始化,具体初始化项…