ERROR: vtkImageAccumulate : This filter can handle up to 3 components

1 错误描述与分析

    使用vtkTIFFReader读取tif格式图像,然后使用vtkImageAccumulate统计其图像信息:

m_pvtkImageAccumulate->SetInputConnection( m_pvtkTIFFReader->GetOutputPort() );
    执行时,读取某些tif图像可以正常,但是读取某些tif图像时提示错误:

ERROR: In E:\VTK\VTK-6.2.0\Imaging\Statistics\vtkImageAccumulate.cxx, line 299
vtkImageAccumulate (000000E7DC2134D0): This filter can handle up to 3 components

    根据上面最后一句话"This filter can handle up to 3 components",如果翻译为“这个过滤器可以处理多达3个组件”。那么,是不是意味着当前读取的tif格式图像的componens太少了呢?

    根据错误提示,从VTK源码(我的保留路径为E:\VTK\VTK-6.2.0\Imaging\Statistics)中打开vtkImageAccumulate.cxx,看其第299行内容:


    由上图可见,出现这个错误的原因是由于components的数目大于3了。这和上面所猜测的components太少相反,其实是components太多了。因此使用vtkTIFFReader的GetNumberOfScalarComponents()函数查看components的数量,发现出现上述错误时,components数量为4!

2 错误解决方法

    经过第1章的分析可知,出现这个错误是由于tif图像的compons超过了3,也即超过了vtkImageAccumulate能处理的范围。于是,唯一的解决方法就是,在使用vtkImageAccumulate对tif图像进行统计分析前,先检查其component的数量,如果不超过3,则做正常的统计处理,否则不做统计处理。



你可能感兴趣的:(ERROR: vtkImageAccumulate : This filter can handle up to 3 components)