ITK笔记:SetRequestedRegion设置ROI无效,滤波器仍然处理了全图

在医学图像处理中,有时仅希望处理图像中的感兴趣区域(ROI)。ITK有三种区域:(1) LargestPossibleRegion:指的是图像最大可能区域,通常是图像整体;(2) BufferedRegion:指的是实际存在于内存中的图像区域;(3) RequestedRegion:要求被处理的图像区域。三种区域可分别通过Set方法进行设置。



按照ITK用户手册[1]中的描述,通过设置RequestedRegion,就可以实现图像指定区域处理。ITK网站提供的示例代码[2]如下:

#include "itkImage.h"
#include "itkRandomImageSource.h"
#include "itkDerivativeImageFilter.h"
int main(int, char *[])
{
typedef itk::Image<float, 2> ImageType;
itk::Size<2> smallSize;
smallSize.Fill(10);
itk::Index<2> index;
index.Fill(0);
itk::ImageRegion<2> region(index, smallSize);
itk::Size<2> bigSize;
bigSize.Fill(10000);
itk::RandomImageSource<ImageType>::Pointer randomImageSource = itk::RandomImageSource<ImageType>::New();
randomImageSource->SetNumberOfThreads(1); // to produce non-random results
randomImageSource->SetSize(bigSize);
randomImageSource->GetOutput()->SetRequestedRegion(smallSize);
randomImageSource->Update();
std::cout << "Created random image." << std::endl;
typedef itk::DerivativeImageFilter<ImageType, ImageType > DerivativeImageFilterType;
DerivativeImageFilterType::Pointer derivativeFilter = DerivativeImageFilterType::New();
derivativeFilter->SetInput( randomImageSource->GetOutput() );
derivativeFilter->SetDirection(0); // "x" axis
derivativeFilter->GetOutput()->SetRequestedRegion(smallSize);
derivativeFilter->Update();
std::cout << "Comp
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值