- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试使用带有 C++ 的 ITK 库为分段的 3D 大脑 MRI 计算纹理特征
。所以我跟着这个example .该示例采用 3D 图像
,并为所有 13 个可能的空间方向提取 3 个不同的特征。在我的程序中,我只想让给定的 3D 图像得到:
这是我目前所拥有的:
//definitions of used types
typedef itk::Image<float, 3> InternalImageType;
typedef itk::Image<unsigned char, 3> VisualizingImageType;
typedef itk::Neighborhood<float, 3> NeighborhoodType;
typedef itk::Statistics::ScalarImageToCooccurrenceMatrixFilter<InternalImageType>
Image2CoOccuranceType;
typedef Image2CoOccuranceType::HistogramType HistogramType;
typedef itk::Statistics::HistogramToTextureFeaturesFilter<HistogramType> Hist2FeaturesType;
typedef InternalImageType::OffsetType OffsetType;
typedef itk::AddImageFilter <InternalImageType> AddImageFilterType;
typedef itk::MultiplyImageFilter<InternalImageType> MultiplyImageFilterType;
void calcTextureFeatureImage (OffsetType offset, InternalImageType::Pointer inputImage)
{
// principal variables
//Gray Level Co-occurance Matrix Generator
Image2CoOccuranceType::Pointer glcmGenerator=Image2CoOccuranceType::New();
glcmGenerator->SetOffset(offset);
glcmGenerator->SetNumberOfBinsPerAxis(16); //reasonable number of bins
glcmGenerator->SetPixelValueMinMax(0, 255); //for input UCHAR pixel type
Hist2FeaturesType::Pointer featureCalc=Hist2FeaturesType::New();
//Region Of Interest
typedef itk::RegionOfInterestImageFilter<InternalImageType,InternalImageType> roiType;
roiType::Pointer roi=roiType::New();
roi->SetInput(inputImage);
InternalImageType::RegionType window;
InternalImageType::RegionType::SizeType size;
size.Fill(50);
window.SetSize(size);
window.SetIndex(0,0);
window.SetIndex(1,0);
window.SetIndex(2,0);
roi->SetRegionOfInterest(window);
roi->Update();
glcmGenerator->SetInput(roi->GetOutput());
glcmGenerator->Update();
featureCalc->SetInput(glcmGenerator->GetOutput());
featureCalc->Update();
std::cout<<"\n Entropy : ";
std::cout<<featureCalc->GetEntropy()<<"\n Energy";
std::cout<<featureCalc->GetEnergy()<<"\n Correlation";
std::cout<<featureCalc->GetCorrelation()<<"\n Inertia";
std::cout<<featureCalc->GetInertia()<<"\n HaralickCorrelation";
std::cout<<featureCalc->GetHaralickCorrelation()<<"\n InverseDifferenceMoment";
std::cout<<featureCalc->GetInverseDifferenceMoment()<<"\nClusterProminence";
std::cout<<featureCalc->GetClusterProminence()<<"\nClusterShade";
std::cout<<featureCalc->GetClusterShade();
}
程序有效。但是我遇到了这个问题:即使我更改了窗口大小
,它也会为不同的 3D 图像提供相同的结果。
有人用 ITK 来做这个吗?如果有任何其他方法可以实现这一点,请问有人能指出解决方案吗?
我们将不胜感激任何帮助。
最佳答案
我认为您的图像只有一个灰度级别。例如,如果您使用 itk-snap
工具对图像进行分割,当您保存分割结果时,itk-snap
会将其保存为一个灰度级别。因此,如果您尝试为使用 itk-snap
分割的图像计算纹理特征,即使您更改图像或窗口大小,您也总是会得到相同的结果,因为您只有 一个灰色共现矩阵中的尺度级别。尝试使用未分段的图像运行您的程序,您肯定会得到不同的结果。
编辑:
为了计算分割图像的纹理特征,尝试另一种分割方法,它保存未分割图像的原始灰度级。
关于c++ - ITK - 计算分段 3D 大脑 MRI 的纹理特征,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29570064/
我一定遗漏了一些东西,但我用 Ruby 编写的每个应用程序似乎都在泄漏一些内存。我使用 Ruby MRI 2.3,但我看到其他版本的行为相同。 每当我编写一个在循环中执行某些操作的测试应用程序时,它都
我得到了一个数据集,其中包含大脑 MRI 扫描的图像大小。有了这些图像,我将移除头骨,只留下大脑。是否有任何好的分割技术可以用于这些类型的图像? 最佳答案 看起来头骨始终位于图像的外侧,并且始终与大脑
是否可以在一个 VTK 或什至 QT 窗口中并排显示所有 MRI 图像?到目前为止,我已经从矩阵 vector 中的重建中获得了所有 MRI 切片,我可以滚动它们(用 C++ 编写)。我不知道我是否可
我从事 MRI 方面的工作。问题是图像并不总是居中。此外,患者 body 周围常有黑带。 我希望能够像这样去除黑色边框并使患者的 body 居中: 我已经尝试通过读取像素表来确定患者 body 的边缘
是语言翻译吗?还是字节码解释器/JIT 编译器?我在哪里可以了解有关实现的更多信息(除了浏览源代码)? 最佳答案 这是一个名为 YARV 的字节码解释器,由 Sasada Koichi 编写。 下面是
最近的一个问题“What happened with Ruby 1.9.2?”让我想知道 MRI Ruby 的版本号是什么意思。 MRI Ruby 使用的方案不同于 semver.org . MRI
我关于 SO 的第一个问题,但我已经潜伏了很长时间,所以如果我违反了任何规则或发布了垃圾问题,你必须原谅我。 我试图更好地理解线程,因此我决定测试 MRI 并了解它的总体性能。 给定以下代码(和输出)
我想知道使用 MRI ruby(2.0.0) 和一些全局变量来创建竞争条件是否容易,但事实证明这并不容易。看起来它应该在某个时候失败,但它没有,我已经运行了 10 分钟。这是我一直在努力实现的代码
今天我试图向一位同事解释 ||= 在 MRI 中不是线程安全的。我想我应该看一下 Ruby 源代码,看看我是否可以指出 Ruby 调度程序可以切换线程上下文的位置,但是我在浏览代码时遇到了问题。我希望
有谁知道 pdp8 硬件(以及它是否因型号而异)如何处理页面边界上的 mri 指令。例如,如果您的指令位于地址 0177,则程序计数器用于读取该指令,然后实质上递增。如果指定地址的当前页是要使用页0、
我需要图像分割方面的帮助。我有脑部肿瘤的 MRI 图像。我需要从 MRI 中移除颅骨(头骨),然后仅分割肿瘤对象。我怎么能在 python 中做到这一点?与图像处理。我试过制作轮廓,但我不知道如何找到
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 7 年前。 Improve this qu
我有一个 Ruby web 服务,我最近检查了使用 JRuby(9.1.17.0,OpenJDK 1.8)是否会相对于当前使用的 MRI (2.5.0) 提高性能。我预计可能会是这种情况,因为性能瓶颈
我正在编写一个应用程序来计算医疗记录。该应用程序将计算页数并将其除以 20,以确定为客户打印记录所需的胶片数量。我有一个壁橱案例,当 MRI 是扫描镜头时(特别是如果它们显示为 SC),它只会是一帧,
Ruby 肯定会在运行时存储此类信息,因为它会打印在堆栈跟踪中 - 但似乎没有任何明显的方法来访问它。有解决办法吗? (除了 grep 源,或将无意义的参数传递给方法以希望获得堆栈跟踪) 最佳答案 在
在其他语言中,通常有多种内存回收的可能性: 标记对象然后移除它们 显式保留和释放 计算对对象的引用 内部堆配置 Ruby 是如何工作的? 最佳答案 垃圾收集器 Ruby 1.8 实际上非常糟糕。每 7
我已经将 Ubuntu 11.04 上的 Rails 3.0.10/MRI 应用移植到 Ubuntu 11.04 上的 JRuby 1.6.4。我的目标是到达一个地方,我只需执行以下操作即可在 JRu
在我看来,用 Ruby MRI 1.8.7 编写文件是完全线程安全的。 示例 1 - 完美结果: File.open("test.txt", "a") { |f| threads = [] 1
在做一些基准测试来回答关于连接数组的最快方法的 this 问题时,令我惊讶的是,当我使用 jRuby 进行相同的基准测试时,测试速度要慢得多。 这是否意味着关于 jRuby 比 MRI Ruby 更快
在 MRI 中,似乎 rb_id2str()当您调用 Symbol#to_s 时负责完成所有工作.我惊讶地发现这是一个极其神秘的函数,而我认为这是一个相当直接的操作。 我正在寻找有关此功能的详细说明。
我是一名优秀的程序员,十分优秀!