医学四视图-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

目录
相关文章
|
6月前
|
编解码 自动驾驶 测试技术
【论文速递】PETR: 用于多视图 3D 对象检测的位置嵌入变换
【论文速递】PETR: 用于多视图 3D 对象检测的位置嵌入变换
|
JSON 数据格式 Python
对Labelme标注图像,进行90、180、270的旋转,实现标注数据的扩充。
对Labelme标注图像,进行90、180、270的旋转,实现标注数据的扩充。
1070 0
对Labelme标注图像,进行90、180、270的旋转,实现标注数据的扩充。
|
5月前
|
机器学习/深度学习 自动驾驶 机器人
【机器学习知识点】3. 目标检测任务中如何在图片上的目标位置绘制边界框
【机器学习知识点】3. 目标检测任务中如何在图片上的目标位置绘制边界框
|
3月前
|
数据采集 机器学习/深度学习 算法
5.2.3 检测头设计(计算预测框位置和类别)
这篇文章详细介绍了YOLOv3目标检测模型中的检测头设计,包括预测框是否包含物体的概率计算、预测物体的位置和形状、预测物体类别的概率,并展示了如何通过网络输出得到预测值,以及如何建立损失函数来训练模型。
|
4月前
|
文字识别
文本,文字识别,PaddleOCR,如何删除,PaddleOCR详解,检测,方向分类器,识别,检测的意思是检查字符的位置,查像素坐标,方向分类器,能够实现180度的图像,字符识别是把识别字符
文本,文字识别,PaddleOCR,如何删除,PaddleOCR详解,检测,方向分类器,识别,检测的意思是检查字符的位置,查像素坐标,方向分类器,能够实现180度的图像,字符识别是把识别字符
|
机器学习/深度学习 存储 算法
目标跟踪:在视频序列中跟踪特定对象的位置和状态
目标跟踪:在视频序列中跟踪特定对象的位置和状态
80 0
|
JSON 算法 数据格式
优化cv2.findContours()函数提取的目标边界点,使语义分割进行远监督辅助标注
可以看到cv2.findContours()函数可以将目标的所有边界点都进行导出来,但是他的点存在一个问题,太过密集,如果我们想将语义分割的结果重新导出成labelme格式的json文件进行修正时,这就会存在点太密集没有办法进行修改,这里展示一个示例:没有对导出的结果进行修正,在labelme中的效果图。
212 0
|
算法 测试技术
NeRF新研究来了:3D场景无痕移除不需要对象,精确到毛发
NeRF新研究来了:3D场景无痕移除不需要对象,精确到毛发
153 0
|
文字识别
【数图大作业】基于模板匹配的文字识别(二)(文字行列分割)
【数图大作业】基于模板匹配的文字识别(二)(文字行列分割)
【数图大作业】基于模板匹配的文字识别(二)(文字行列分割)
|
人工智能 编解码 移动开发
当「分割一切」遇上图像修补:无需精细标记,单击物体实现物体移除、内容填补、场景替换(2)
当「分割一切」遇上图像修补:无需精细标记,单击物体实现物体移除、内容填补、场景替换
122 0