- 博客(36)
- 资源 (1)
- 收藏
- 关注
原创 3D Slicer 教程四 ---- 基本功能介绍(一)
这章属于比较日常的简单描述,主要是防止以后记不住了写的备忘录.3dslicer里面主要功能其实在这里,modules 模块.我们挨着顺一下这些功能.(分割和配准 我们后面从源码学习吧)
2024-10-18 09:46:04 537
原创 3D Slicer 教程三 ---- 坐标系
在日常的影像里面一般包括3种坐标系统: 世界坐标系统(world), 解剖坐标系(anatomical),图像坐标系统(image coordinate system).图1。
2024-10-15 16:05:17 1021
原创 3D Slicer 教程二 ---- 数据集
上一章下载3d slicer的软件,这章从加载数据集来弄清楚3dslicer怎么使用.如果没有数据集,也可用用样本数据.可以添加图片文件夹,(试了MP4不行,内镜的视频估计不支持),添加单个图片的话,会出现一些选项, 这种图通常用于医学图像处理中,表示解剖结构、病变和其他对象的空间位置。图像分割是制作标签图的过程,可以通过手动、半自动或全自动的方法进行1。在3D Slicer中,标签图可以用于多种用途,包括可视化某些结构、进行定量分析(如测量体积、表面、形状属性)、3D打印和遮罩处理等。
2024-10-14 18:01:57 826
原创 3D Slicer 教程一
除了渲染外,大多数计算都是在CPU上执行的,因此拥有更快的GPU通常不会影响应用程序的整体速度。例如,如果最新的Slicer稳定版是Slicer-5.2.2,而用户安装的是Slicer-5.2.1,那么用户将不再接收任何扩展更新。3d slicer里面的功能和代码 都可以在Python和C++中使用和扩展.提供了一个完整的Python环境,可以安装任何Python包并将其与内置功能组合在一起. python代码运行起来也是通过http请求传输数据的,前端界面是c++开发的.,这个也支持深度学习模型拓展.
2024-10-14 09:16:36 770
原创 pacs现场部署环境---简单总结(一)
坏人想通过外网取到内网数据信息, 如果咱们软件直接部署到内网上,然后外网直接访问,这种肯定不安全,sql注入,爆破什么的,即是程序考虑的很全面,但是难保组件没有问题. 各种三方开源的依赖包都有可能有漏洞.在部署现场的时候,总是会遇到 这几个词 "前置机","跳板机","堡垒机","院内",院外","抽图服务"等.尤其是研发完全是远程支持,环境都是靠现场实施转述.前置机可以理解为一个"拦截器"+"处理器"或一个"网关",把请求进行拦截,鉴权等.一般医院常见的会进行购买https证书,对外网链接进行加密.
2024-09-26 09:02:58 319
原创 pacs图像之翻页同步
这种序列有什么意义呢?说一说为什么不用 影像的SliceLocation这个字段.这个字段就是切片位置.很多小伙伴发现 用这个字段也能实现翻页同步的功能. 上面那个方法很麻烦,还涉及到如果是mr,方向向量是斜的, 得把不同序列的z坐标换到统一的z轴坐标系上(要算的z坐标的在z轴的投影).(1) 当前的图像的位置(这个位置 我取的是图像方向量对应变的那个轴上的坐标 是不是很绕,换个话说 我当前的图像 是从左到右,从前到后 这个是轴位图,取的z坐标(从头到脚那个方向)),这个序列下面其他图像也是z坐标不一样。
2024-09-04 10:03:37 293
原创 qt相关心得(3)
(大神们不要嘲笑) 我开始比较傻,在类a 里面某个方法b中调用的dll方法, (1)想着在类a里面加个回调函数c, 然后把 a::c传进去,发现传不了. (2)在外面加了个方法c1,把c1传进去,回调进来了, 但是获取不了当前类a的成员变量。这块的内存管理逻辑很简单,有个内存队列, 创建指针的时候,先去检查内存有没有达到使用的限制, 如果达到了, 就把队列里面最早的那个指针删除掉.(这个策略用最近未使用可能会更好点.)2.我的日志类是个单例模式,定了个宏定义,在需要打日志的地方直接引入宏定义就行。
2024-01-09 14:43:25 441
原创 opencv源码 warpAffine 加速改造 (二)
这块理解起来有点麻烦,我这里说一下(我们在做Mat变换的时候,比如 Mat1 *Mat2 ,可以看成 Mat*[x,y,1] ^-1 ,也即是 dst(x,y)=src(M11x+M12y+M13,M21x+M22y+M23), 这些参数是固定,是不是可以存起来,反复用;-----这里我下次整理一下再补吧。对于一些基本的循环运算,如果我们直接使用循环,即便是使用指针,运算效率也不高,如果我们使用并行计算,会大大提升运算效率,OpenCV里面的很多运算都是使用了并行加速的.
2023-12-27 17:24:11 568
原创 opencv源码 warpAffine 加速改造 (一)
最近在做dcm像素任意旋转的时候(没有dcm经验的人,可以理解是图像像素的任意旋转). 旋转是使用了使用 opencv的 Imgproc.warpAffine()方法,但是发现耗时很长,平均在3~4ms左右.作为一个bs产品,提升速度就相当重要了.看了这个源码内部,调的opencv模块,换上上面编的,是不能直接用的, 猜想可能是内部对opencv进行加速改造(没有相关文档,而且源码调的时候,也是直接调的编好的opencv的dll,其具体细节不太好研究了.这个版本加了很多3d的库和方法,造成整个模块比较重。
2023-12-27 10:29:35 721
原创 qt相关心得(2)
需要在加写锁的地方加上m_rwLock.lockForWrite();需要加读锁的地方加上m_rwLock.lockForRead();这个其实跟java的单例模式差不多,这里需要强调的是如果是获取单例模式的指针,这个是不需要释放的.(3)我用的ini,可以按一个个键值读取,当读取的配置项不存在时,读取后面的默认值。网络服务这种少不得是并发的,多线程的,有些数据需要保证隔离性,这个就需要加锁.很多时候,需要在外面配置服务名,服务端口,ip和日志等等,需要解析外面的文件.
2023-12-25 16:01:50 434
原创 qt相关心得(1)
失败: 我先用的QRunnabl,里面的run去下载文件,url,缓存文件路径都通过构造方法传进去了放在全局里面,但是在执行run的时候,这些全局变量是空的. --- 子线程构造方法是主线程去调用,但是run方法是子线程这样执行的,变量数据就都是空的.失败的:首先尝试了Qtime的使用,(网上都是放在qt界面里的,我没有界面),尝试放在main方法里面或者Qthread里面,但是都不能正常使用,或者说不能正常析构(可能是时间不够,我也没有来得及好好分析)(这里左边不加这个,会出错的)
2023-12-22 14:17:13 870
原创 dcm中的DSA算法
DSA在dcm中也就是多帧减影. 注意一下dcm中的多帧并不是都能做减影,像是us超声设备采集的影像,这种做减影就没有任何意义.我们常说的dsa实际上指的是xa设备的多帧剪影.
2023-09-08 10:02:57 314
原创 mybatis 调oracle 一些心得体会
(5)把nRet 存进 temp表,然后查询 -----验证可以,但是涉及额外的查询临时表,删除。(6)单独写了一个函数,把nRet 传进去,Out参数出来 --- 目前在使用的方法。2. 存储过程和函数的参数 有 in,out,inout型,有游标类型。(4)用自定义异常抛出nRet ---是不是特别傻, 但是能取出来。(3) 把值放到游标里 ---我这边验证了取不了。1. oracle 的函数和存储过程的调法不一样。最近在搞数据库的调sql语句方法,简直了,心累。
2023-08-21 17:03:59 107
原创 dcm影像中的胶片打印模块的介绍使用-----echo服务
这两种模式唯一的区别在于通过dcmtk 的exe的命名行的形式打印胶片,一般医院的的胶片打印机型号如果是国产的,或者是通过服务的方式链接的打印引擎,一般需要使用第二种.----看了源码,会根据具体回应的消息id,来分发到不同的操作里面.本文介绍两种胶片打印的模式,(1)dcm4che通用的,(2)通过dcmtk的exe 命令行链接的.这种链接不能像其他的机器,直接ping ip 和端口的,即使ping通了,但是也不一定能用。这种就是正确链接的,下面是jdicom打印出来的log日志。
2023-07-19 14:50:56 923
原创 dcmtk源码编译 (windows和 linux)
dcmtk源码 dcmpsprt.exe 和 dcmprscu.exe的windows和linux 编译使用
2023-07-12 16:08:15 702
原创 dcm文件us设备类型的像素处理
这段的解释,我理解出来的意思:us采集的时候,(就是做超声),拿着探测头在腹部左右扫描. 注意一下ct设备采集的时候,参照点是世界坐标系,但是这个做超声扫的时候,只是扫腹部平面可以看成是二维的面 ,这个时候这两个值x,y其实就相当于从左到右,从上到下的一个物理上的间距,也可以看成是物理上的一个缩放比.(非医疗人员,解释可能不太准确,如果有专业人士看见了,麻烦指导一下).我是用的java dcm4che 解析的,这个时候直接解析对应的Tga值,是解析不出来的.最近在处理us设备类型的dcm文件中,发现。
2023-06-15 11:26:18 346
原创 大容量的 dicom 解压的时候,报java.lang.OutOfMemoryError:Java heap space怎么办
(1) java.lang.OutOfMemoryError(2)大容量dcm解压
2022-12-09 11:20:05 1500
原创 idea中使用Dcm4che 中报 no opencv_java in java.library.path
在idea中使用 Dcm4che时,使用到了opencv 的库和方法,然后报no opencv_java in java.library.path 错误。解决方法:
2021-05-28 15:01:09 3550 2
原创 dcm4che 介绍及下载安装
一.介绍dcm4che,是医疗健康行业中一套开源应用程序和工具的,采用Java语言开发,支持JDK1.4及以上版本。dcm4che项目的核心之一是一个DICOM标准的健壮实现,该实现分为dcm4che-1.x和dcm4che-2.x两个版本,dcm4che-2.x是对dcm4che-1.x的重构,提高了应用的性能和灵活性;dcm4che项目另一部分是dcm4chee(额外的e表示Enterprise)。dcm4chee运行在JBoss环境下,是一个图像管理器和图像归档器,实现了DICOM服...
2021-05-27 16:12:11 4743 1
原创 java 中给预览图添加测量工具
最近碰到的给预览图加测量工具,测量图之间点与点的距离。最后实现的效果如下:添加的方法如下:首先新建一个测量工具的类(基本类):public class MeasuringLine { Point2D startPoint;//第一个点 Point2D endPoint; Point2D MiddlePoint; // 拖拽过程中的点,可以显示拖拽的痕迹 String strdistance; double scale = 1; privat...
2020-12-08 15:32:28 358
原创 JList ,DefaultListModel的联系
一.JListJList从含义上看是一个列表,有点和JComboBox相似。其实不然,JComboBox的内容只能用一列显示出来,而JList的内容可以多列显示。构造方法:String[]words={"aaa","bbb","ccc","ddd"}; JListwordList=newJList(words);JList 默认多列显示,可以使用setLayoutOrientation(参数)方法来改变,共有3个参数,默认值是JL...
2020-10-29 14:20:22 1034 3
原创 入职软件开发工程师第一年,踩雷记(二)
今天这章讲的是代码的调试,代码调试分: (1)代码下载,(2)代码环境的搭建,(3)代码调试(4)代码上传一.代码下载现在很多公司都是用代码库来管理代码,比如:svn,Microsoft Visual SourceSafe 等等。可以先让别人给你开个svn的权限,然后从svn中下载需要的代码,选checkout,把代码放在新的文件夹下后,方便以后上传代码。可以先看看这些软件,熟悉一下 checkout, update,commit,revert.二.代码环境的搭建(1)java先
2020-10-15 17:23:36 182
原创 虚拟机崩了,怎么办
前几天我的vm ware崩了,是因为我同事又按了一个XX的虚拟机,然后把我虚拟机弄坏了。坏的情况是: 虚拟机ip访问不了,没有网络资源。然后试了换重启,不行,试着改虚拟机的网络配置,不行。试了改虚拟机的网络编辑器,还是不行。这个时候我竟然没有想着给虚拟机打个快照(我真傻),然后我就重置了虚拟机的网络编辑,然后虚拟机打不开了,报虚拟机的资源文件被移除了。这个时候,其实有几条路可以走:1.恢复快照(忘记拍了)2.可以先看看日志,看看错误在哪里3.可以看看 vmdx的文
2020-09-25 16:18:28 1725 1
原创 setDefaultCloseOperation () 与 dispose()的区别
最近踩的坑:看看代码:结果 造成了进程一直占用内存,这个dialog 结束了还是占着内存解决方法:原因:首先 dispose()只是释放窗口在屏幕上的资源,但是这个dialog 里面的数据,方法还是在的,这个是一堆数据,所以一直占着进程。直到这个应用全部结束,这部分资源被回收机制回收了。再说说setDefaultCloseOperation 是设置窗体关闭的方法,就是点窗口那个x 之后需要干什么。最后 我开始的程序里面没有加this.setDefaultClos...
2020-09-17 18:59:37 972
原创 java 中图像的一些操作
最近在弄图像的东西,可以归纳一下对图像的一些用法:1.镜像bi 是我面板上获得的图像,biMirror 是我镜像之后的图像2.旋转if (isInit) { BufferedImage bi = thumbViewPane.getBufferImage(); if (bi == null) { return; } int nIndex = rotateList...
2020-09-02 09:24:29 246
原创 java中,给滚动条加标尺
首先看看最后加标尺的样子: (哒哒,哒哒)这个标尺还有以下几个功能 : 1.从标尺中拖出标尺线 2.可以对标尺线进行移动如果功能有相通的,可以接下来看看1.我最后实现的接口是在有需要的滚动条上安装标尺2. 然后是标尺一些关键的类:(1)标尺的关键类这个ImgViewRulerModel类可以放在要加标尺的类里面(2)需要在填充滚动条的类里面加上 标尺的辅助模型这两个是添加标尺的地方,剩下基本类,稍后会共享代码,只需要要导入就可以了。有兴趣可以看一下。.
2020-09-01 09:01:17 376 2
原创 入职软件开发工程师第一年,踩雷记
入职软件开发工程师第一年,踩过的坑,给学弟学妹们小建议一. 代码规范(因为这个问题,被组长严肃的批评说了三次啦)1.最重要,最重要 ,一定是代码对齐,(被说了很多次,代码像狗啃了一样)。java 编程可以 选中代码,点上面标题栏的“source”中的“format”来对齐格式c#,c++ 编程可以 选中代码,点上面的标题栏上的“编辑”中“高级”,设置文档格式这样一调,代码好看多了2. 变量命名的规范 (写的代码是给别人看的,一定要让别人看懂)可以看看前辈怎么命名的,然后自己学学.
2020-08-26 11:30:31 571 2
原创 访问虚拟机的共享文件夹
在局域网中,用" \\ +(虚拟主机名)"访问虚拟机共享文件时,经常出现报没有访问权限路径可以试一下下面的方法:1.打开gpedit.msc 打开组策略。2.依次打开 计算机配置-》windows设置-》用户权限分配-》拒绝本地登录3.如果有Guest,则删除。现在就可以访问啦~~~出错的原因:局域网里有虚拟机配置的可能是xp,主机win7不能与xp直接通信。...
2020-08-26 10:46:13 1749
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人