Advertisement

python三维图旋转_3D图像旋转简单的ITK Python(3D Image Rotation Simple ITK Python)

阅读量:

3D图像旋转简单的ITK Python(3D Image Rotation Simple ITK Python)

我目前在试验使用Simple ITK实现3D图像的旋转功能。这是我的代码库:其中imagetoresize变量存储的是原始图像数据。该图像的空间分辨率设置为512×512×149像素尺寸。

targetimage = imagetoresize

origin = imagetoresize.GetOrigin()

targetimage = imagetoresize

imagetoresize.SetOrigin((0,0,0))

transform = sitk.VersorTransform((0,0,1), np.pi)

transform.SetCenter((256,256,74))

outimage = sitk.Resample(imagetorsize, target image size, transform, sitk.sitkLinear,[0, 0, 0],spatial resolution,direction information)

outimage.SetOrigin(origin)

代码旋转图像但中心移动。

旋转后的 原始图像

有人可以向我解释为什么中心会被转移吗?

任何帮助都感激不尽。

Currently, I am performing a 3D-image rotation using Simple ITK. My code utilizes an imageResizer to handle the original image. The dimensions of the original image are (512, 512, 149).

targetimage = imagetoresize

origin = imagetoresize.GetOrigin()

targetimage = imagetoresize

imagetoresize.SetOrigin((0,0,0))

transform = sitk.VersorTransform((0,0,1), np.pi)

transform.SetCenter((256,256,74))

outimage 等于 ImageResamplingModule.Resample(imageToSize, targetImageSize, transform, sitk.sitkLinear插值方法,[0 0 0]设置为偏移量向量, imageToSize-spacing 设置为采样间距,imageToSize-direction 设置为方向向量)

outimage.SetOrigin(origin)

The code rotates the image but the center is shifted.

Orginal Image Image after rotate

Can someone explain to me why the center is shifted?

Any help will be much appreciated.

原文:https://stackoverflow.com/questions/44457722

2020-02-11 14:53

满意答案

您将以像素而不是物理空间设置旋转中心。

主要在物理空间而非索引空间完成转换与重采样。无需一定将图像的原点设为零。我倾向于建议采用imagetoresize.TransformContinuousIndexToPhysicalPoint(center_index)这一方法来确定物理空间的中心位置。

You are defining the pivot point for rotation as a pixel coordinate value and not considering the actual physical dimensions.

SimpleITK 和 ITK 在进行空间变换和采样时, 是在物理空间而非索引空间进行操作。因此, 设定输入图像的原点为零点是不必要的。我认为, 使用 interpolator 的连续索引到物理点转换函数来获取物理空间中的中心位置会更加合适。

2017-06-09

相关问答

您注意到您的sitk图像无法直接使用TIFF ImageIO处理吗? 您需要将图像像素类型转换为下列之一: sitk.UInt8、sitk.UInt16或sitk.Float32。 您可以通过以下代码来验证当前的像素类型:print("pixel id: {0} ({2})".format(test2.GetPixelID(), test2.GetPixelIDTypeAsString()))

然后,您可以转换图像的像素类型: test2 = sitk.Cast(test2, sitk.Fl...

关于ITK至Numpy转换的一个简要教程。这可能有助于你更好地理解后续内容。值得注意的是,在某些情况下(如使用无符号字符),直接将scoreMatrixItk保存到文件中可能会遇到问题;同时,请确保在执行thresholdFilter.SetInput(scoreMatrixItk)后考虑更换生成该滤波器所需的类型;通常情况下(强度范围从0-50到0-255),扩展范围会增加数值稳定性;I'm not entirely sure why you're encountering this issue, but it's worth investigating further.

主要思路是利用WrapITK模块实现功能。该模块主要依赖于内部的ITK包装以及解析机制(其中C++到XML的解析由GCCXML执行,未来将迁移至CastXML)。基本概念:设想一个位于ITK库中的过滤器'itkDummy.h'及其相关操作。通过这一过滤器的功能需求出发点,在设计Python接口时需要关注的关键点包括像素类型与模板初始化信息等关键参数。借助WrapITK模块(该工具与现有的ITK Python绑定),我们可以顺利实现这一目标功能;需要注意的是,在实际应用中可能会遇到一些技术难点或错误提示信息,请确保所有开发环境配置均符合预期要求后进行测试运行

ImagePCAShapeModelEstimator目前还没有被包含在ITK中。如果您访问ITK存储库,则必须使用“.wrap`文件来完成打包过程。这个班级目前缺乏引用文献[1]。通过查找类似类的打包文件并复制它们通常不难。[1] https://github.com/InsightSoftwareConsortium/ITK/tree/13ff271d953658d192805f6ddc3a15d5ae94a5bd/Modules/Filtering/ImageStatistics/wr...

目前尚无明确的Python文档可供参考。然而这对深入理解RotateWXYZ的工作原理非常有帮助:http ://www.vtk.org/doc/nightly/html/classvtkTransform.html#a9a6bcc6b824fb0a9ee3a9048aa6b262c 若要构建所需的变换,则需将旋转矩阵和平移向量结合使用以形成一个齐次坐标系中的方阵。通常我们会将旋转矩阵放置在齐次坐标系的第一列和第一行位置而平移向量则放置于第四列(即右列)。需要注意的是该方阵的最后一行为零(除了最后一个元素为一)。进一步详细信息可参考以下部分:例如:[接下来的内容]具体参数如[给出数值]等

此问题不在于const类型-你可以从const分配该类型变量但不能对该变量进行赋值。该函数返回的是一个itk::ImageRegion类型的对象-这个类具有更复杂的属性-这些成员包括Index和Size类型的对象。无法直接找到将此区域转换为双精度浮点数的方法-将此区域强转为double类型并无实际意义。建议您查阅ShapeLabelObject类的相关文档以了解哪些方法能强制返回double型数据-例如,请参见GetNumberOfPixels()方法-它会返回一个Size类型的值

只是改变 int dimensions[ ImageDimension ];

至 npy_intp dimensions[ ImageDimension ];

并重新编译。 Just change int dimensions[ ImageDimension ];

to npy_intp dimensions[ ImageDimension ];

and recompile.

已经解决。 感谢@wasthishelpful,请您查看这个例子

您应将旋转中心设置为像素坐标而非物理空间坐标。 SimpleITK(以及ITK)在物理空间而非索引空间执行转换与重采样操作。 不必强制将图像原点置于零点。 我认为应调用imagetoresize中的TransformContinuousIndexToPhysicalPoint函数来获取正确的物理位置坐標點。 You are setting the center of rotation in pixels and not in physical space. SimpleITK (and ITK) perform transformations and resampling in physical space rather than index space. It is not necessary to set the image origin to zero. I believe you should call the imagetoresize function to get the correct physical position coordinates.

答案相当直接:在Python中,“float”通常对应C中的double类型。在ITK环境中,F3被定义为一个32位浮点数。为了实现其功能,请正确设置ndarray的数据类型并导入ITK库.

imageType = itk.Image.F3

buf = scipy.zeros( (100,100,100), dtype = numpy.float32)

itkImage = itk.PyBuffer[imageType].GetImageFromArray(buf)

The answer was e...

相关文章

免费引擎 Agar - 一个高级图形应用程序框架,用于2D和3D游戏。 Allegro lib

...

GLAutoDrawable

dir([object])注释:无参数调用时会返回当前作用域内所有可访问的变量、方法及类类型的完整列表;当提供参数时,则会根据指定范围提供相应的变量、方法及类类型的完整列表。

...

Python 语言展现出极高的灵活性,并且该语言支持过程化编程、面向对象技术和函数式编程三种方式。

...

原文地址:http://blog.chinaunix.net/uid-25525723-id-3630

...

想要搭建3D引擎系统,请问有没有哪位高人能推荐一本优秀的书籍? 您还需要选择什么样的开发环境工具? 您还需要确定使用哪种编程语言? JAVA/C++/C#.

...

原文地址:http://wiki.woodpecker.org.cn/moin/ObpLovelyPy

...

python2和python3的区别,1.性能 Py3.0运行 pystone benchmark的速

...

org.jfree.chart.plot.PiePlot3D

作者:it168.com Reny 第1节 3D音效 随着伴随着软硬件技术的不断进步,经典的立体声技术中的双通道单层环绕系统逐渐被广泛采用。

...

最新问答

请确保复制处理程序一旦启用就立即被分配到一个安全角色。 不了解的是,在SOLR中/admin的作用域是什么?因为我知道/admin通常用于管理应用程序的访问权限。 建议在所有需要身份验证(auth)的页面上部署SSL证书;这样做可以避免直接传输敏感信息如明文密码。 这样配置后就不会暴露用户的明文密码。 现在的问题是如何根据不同的连接类型配置相应的CA证书或自签名证书? 不了解的是,在SOLR中/admin的作用域是什么?因为我知道/adjutant通常用于管理应用程序的访问权限。

第一:在您的样本中,您有: 但是你在询问 //td[@class=‘CarMiniProfile-TableHeader’] (注意TableHeader中的大写'T')。 xpath区分大小写。 第二:通过查询// td [@ class ='CarMiniProfile-TableHeader'] / td,你暗示你在外部td中有一个'td'元素,而它们是兄弟姐妹。 有很多方法可以在这里获得制作和模型

这是一个预加载容器的样式块定义。
$preloader-container定位在页面上固定位置。
其右上角坐标点为(0, 0),左下角坐标点为(宽度, 高度)。
背景颜色设为纯白色或white背景。
显示层级设定为5。
透明度设为100%。
容器将执行-webkit-等效的平滑过渡效果,
其转换速度参数设定为全部宽度方向,
时长定为500毫秒,
使用ease-out曲线函数

问题在于,在启用Outlook库引用的情况下,默认情况下olMailItem被视为一个保留常量。然而,在这种情况下定义变量并没有问题。然而,在将olMailItem赋值给一个对象之前,请注意此处会尝试引用同一个对象。这可能导致了一个递归引用的情况,并可能引发错误(例如内存泄漏或性能问题)。因此,请确保在任何情况下都避免直接使用未初始化的对象实例。此外,请确保在任何情况下都避免直接使用未初始化的对象实例以防止潜在的安全漏洞或其他异常情况发生。

我建议利用 Wireshark 网站 http://www.wireshark.org/ 进行实时监控网络流量的行为:通过记录设备显示的网络流量副本来实时监控对话内容。当您启动捕获功能时...数据量可能会很大;但如果您能够识别 SOAP 消息片段...然后快速过滤这些片段至 '关注 TCP 流'选项中进行处理会更加高效;在弹出窗口中完整展示 SOAP 服务与 Silverlight 客户端之间的互动过程;如果一切正常请关闭该窗口以释放资源;最后值得一提的是无需复杂配置即可实现高效的实时监控和日志追踪功能

Android在默认情况下不支持TextView正确显示。 您可以使用以下库来实现正确的对齐效果。
https://github.com/navabi/JustifiedTextView
Android Does not provide Justified alignment of TextView by default. You can use the following library to achieve correct alignment.
https://github.com/

此份代码或许能满足您的需求: class Apples { public static void main(String args[]) { System.out.println("Hello World!"); } } 我将其下载至C:\temp\apples.java. 下列是我的编译与执行流程: C:\temp>javac -cp . Apples.java C:\temp>dir Apples Volume in drive C is HP_PAV

12 hexadecimal digits, including the 0x prefix, equate to 48 bits. This equates to a virtual address space of 256 terabytes. When accessing the wiki architecture on the AMD64 platform (assuming you are on it, right?), refer to http://en.wikipedia.org/wiki/X86-64.

这将取决于你想要的。 对象有两种属性:类属性和实例属性。 类属性 类属性对于类的每个实例都是相同的对象。 class MyClass: class_attribute = [] 这里已经为类定义了MyClass.class_attribute ,您可以使用它。 如果您创建MyClass实例,则每个实例都可以访问相同的class_attribute 。 实例属性 instance属性仅在创建实例时可用,并且对于类的每个实例都是唯一的。 您只能在实例上使用它们。 在方法__init__中定

全部评论 (0)

还没有任何评论哟~