医学四视图-003-解决图像反转(失败)

简介: 医学四视图-003-解决图像反转(失败)

image.png先说结论,本文最终也没有解决图像反转问题,仅仅是过程记录。咨询了老大,老大说以我的能力,暂时还搞不定,所以就暂时先搁置。


电梯


1 都是演示的错

2 编译MITK2.21.2

3 找问题原因

3.1vtkResliceCursorLineRepresentation

3.1.1GetRepresentation

3.1.2SetSliceOrientation

☞ 源码

1 都是演示的错

哎呀,今天可是丢人大方了,今天博士来公司了,我兴匆匆的去嘚瑟下,告诉博士我实现了四视图了,博士说那就给我演示下呗,我这就麻溜的打开我的工程,演示起来,结果,呵呵哒。

image.pngimage.pngimage.png2 编译MITK2.21.2

其实编译MITK完全是吃饱了撑的,因为不用编译,就可以看到源码,我还是编译了,并且折腾了好久,链接在这里,当你掌握了,就简单了,真的简单,曾经也在多个夜晚骂MITK团队,搞得啥破玩意,最后发现小丑竟是自己哈哈。其实编译MITK是想看看人家是怎么实现的。


https://blog.csdn.net/z609932088/article/details/118831590?spm=1001.2014.3001.5502


3 找问题原因

在读取DICOM文件的时候,我使用的是vtkDICOMImageReader,而且用法也很简单,代码如下,这里不是出问题的地方,而且我也通过另外一个例子证明了。

image.png 到了怀疑的地方了,这里rep->GetResliceCursorActor()->GetCursorAlgorithm()->SetReslicePlaneNormal(i);,如果把这句话注释掉的话,那就会报错误Resetting view-up since view plane normal is parallel,这个错误里面有一个关键字view-up,通过有道翻译出来的也不咋懂,重置视图,因为视图平面法线是平行的

        for (int i = 0; i < 3; i++)
        {
            vtkResliceCursorLineRepresentation *rep =
                vtkResliceCursorLineRepresentation::SafeDownCast(riw[i]->GetResliceCursorWidget()->GetRepresentation());
            riw[i]->SetResliceCursor(riw[0]->GetResliceCursor());
            rep->GetResliceCursorActor()->GetCursorAlgorithm()->SetReslicePlaneNormal(i);
            riw[i]->SetInputData(reader->GetOutput());
            riw[i]->SetSliceOrientation(i);
//            riw[i]->SetResliceModeToAxisAligned();
            riw[i]->SetResliceModeToOblique();
        }

image.pngimage.pngimage.png

3.1.2SetSliceOrientation


后面我又开始研究SetSliceOrientation,源码如下:

测试这个接口是有影响,但是呢,运行就死机,好尴尬。

  /**
   * Set/get the slice orientation
   */
  enum
  {
    SLICE_ORIENTATION_YZ = 0,
    SLICE_ORIENTATION_XZ = 1,
    SLICE_ORIENTATION_XY = 2
  };
  vtkGetMacro(SliceOrientation, int);
  virtual void SetSliceOrientation(int orientation);
  virtual void SetSliceOrientationToXY()
    { this->SetSliceOrientation(vtkImageViewer2::SLICE_ORIENTATION_XY); };
  virtual void SetSliceOrientationToYZ()
    { this->SetSliceOrientation(vtkImageViewer2::SLICE_ORIENTATION_YZ); };
  virtual void SetSliceOrientationToXZ()
    { this->SetSliceOrientation(vtkImageViewer2::SLICE_ORIENTATION_XZ); };

在使用原生Demo测试时候,也是会出现错误,VS报告如下:这个Qt就得出来背锅了,不明白的就是为什么设置按照顺序012可以,倒过来就不可以呢,费解,发生这个问题后面找到了解决方法,就是换Qt版本,目前我虽然使用了5.14.2 的壳子,但是内核还是5.7.1 这个版本的的问题还真是多,也不知道算不算是BUG。

image.pngimage.pngimage.png

目录
相关文章
|
7月前
|
小程序 前端开发 Android开发
小程序微信分享功能如何开发?开放平台已绑定仍不能使用的问题?-优雅草卓伊凡
小程序微信分享功能如何开发?开放平台已绑定仍不能使用的问题?-优雅草卓伊凡
1446 29
小程序微信分享功能如何开发?开放平台已绑定仍不能使用的问题?-优雅草卓伊凡
|
Python
新手向 Python:VsCode环境下Manim配置
该文介绍了如何准备和配置开发环境以使用Manim,主要包括两个步骤:一是准备工作,需要下载并安装VsCode和Anaconda,其中Anaconda需添加到系统PATH环境变量,并通过清华镜像源配置;二是配置环境,VsCode中安装中文插件和Python扩展,激活并配置虚拟环境。最后,安装ffmpeg和manim,通过VsCode运行测试代码验证配置成功。
1548 1
|
10月前
|
存储 人工智能 搜索推荐
Memobase:开源AI长期记忆系统,让AI真正记住每个用户的秘密武器
Memobase 是一个开源的长期记忆系统,专为生成式 AI 应用设计,通过用户画像和时间感知记忆功能,帮助 AI 记住、理解并适应用户需求。
1800 0
|
搜索推荐 C++
【Qt 学习笔记】Qt窗口 | 对话框 | 创建自定义对话框
【Qt 学习笔记】Qt窗口 | 对话框 | 创建自定义对话框
740 4
|
传感器 数据可视化 索引
Open3D Ray Casting 光线投射
Open3D Ray Casting 光线投射
436 2
|
缓存 JavaScript 前端开发
拿下奇怪的前端报错(三):npm install卡住了一个钟- 从原理搞定安装的全链路问题
本文详细分析了 `npm install` 过程中可能出现的卡顿问题及解决方法,包括网络问题、Node.js 版本不兼容、缓存问题、权限问题、包冲突、过时的 npm 版本、系统资源不足和脚本问题等,并提供了相应的解决策略。同时,还介绍了开启全部日志、使用替代工具和使用 Docker 提供 Node 环境等其他处理方法。
9850 2
【Qt 学习笔记】Qt常用控件 | 输入类控件 | Combo Box的使用及说明
【Qt 学习笔记】Qt常用控件 | 输入类控件 | Combo Box的使用及说明
1442 0
|
存储 缓存 负载均衡
CC攻击解析与防御策略
CC攻击是DDoS的一种,利用代理服务器向目标发送大量合法请求,消耗服务器资源。识别特征包括命令行大量&quot;SYN_RECEIVED&quot;连接、IP批量异常连接和日志中异常访问模式。防御策略包括提升服务器性能、数据缓存优化、页面静态化、请求速率限制、IP访问限制及使用CDN。专业高防产品提供智能识别和响应,帮助企业构建全面防御体系。
882 2
|
前端开发 JavaScript Oracle
程序员如何成为自由职业者或者数字游民?
程序员如何成为自由职业者或者数字游民?
1013 0
|
Ubuntu Windows
virtualbox虚拟机环境搭建之二---Virtualbox主机与虚拟机设置文件共享
virtualbox虚拟机环境搭建之二---Virtualbox主机与虚拟机设置文件共享
1110 0

热门文章

最新文章