RemoveLabel的一个小问题,请吧神们帮帮忙呀
vtk吧
全部回复
仅看楼主
level 8
臭臭爸YY 楼主
一个小程序,想实现的功能是读取多张二值png图,每张二值图中都有不同的连通区域。然后把连通区域size<6的连通区域全部remove掉,只返回>=6的连通区域的大小和质心。我读取了21张图,这些图都是用同一个程序write出来的,但是有3张图实现不了这个功能,别的图都能实现。怪哉。付的第一张图是能成功的图,第二张是不成功的图,还请吧神指教一番。
#include "itkImageFileReader.h"
#include "itkShapeLabelObject.h"
#include "itkLabelMap.h"
#include "itkBinaryImageToShapeLabelMapFilter.h"
#include <vtkPoints.h>
#include <vtkSmartPointer.h>
#include <vtkLandmarkTransform.h>
#include <vtkMatrix4x4.h>
#include <vtkPolyData.h>
#include <vtkPolyDataMapper.h>
#include <vtkActor.h>
#include <vtkRenderWindow.h>
#include <vtkRenderer.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkProperty.h>
#include <vtkTransformPolyDataFilter.h>
#include <vtkVertexGlyphFilter.h>
#include <vtkAxesActor.h>
int main(int argc, char * argv[])
{
const int dim = 3;
typedef unsigned char PixelType;
typedef itk::Image< PixelType, dim > ImageType;
typedef itk::ImageFileReader< ImageType > ReaderType;
ReaderType::Pointer reader = ReaderType::New();
reader->SetFileName("C:\\Users\\zgb\\Desktop\\clip_png_image\\07.png");
typedef unsigned long LabelType;
typedef itk::ShapeLabelObject< LabelType, dim > LabelObjectType;
typedef itk::LabelMap< LabelObjectType > LabelMapType;
typedef itk::BinaryImageToShapeLabelMapFilter< ImageType, LabelMapType > ConverterType;
ConverterType::Pointer converter = ConverterType::New();
converter->SetInput( reader->GetOutput() );
converter->SetFullyConnected(true);
converter->SetInputForegroundValue(255);
converter->Update();
LabelMapType::Pointer labelMap = converter->GetOutput();
for( unsigned long label=1; label<=labelMap->GetNumberOfLabelObjects(); label++ )
{
const LabelObjectType * labelObject = labelMap->GetLabelObject( label );
unsigned long size = labelObject->GetSize();//Physical
if( size > 6 )
std::cout << label << "\t" << size << "\t" << labelObject->GetCentroid() << std::endl;
else
labelMap->RemoveLabel (label);
}
return 0;
}
这张图有4个连通区域,size分别为18,1,19,5,运行后返回18和19
这张图有4个连通区域,size分别为16,1,21,8,运行后只返回16和21,8却返回不了。多谢您了。
2016年06月05日 08点06分 1
level 12
[哈哈]目测肯定有某个小细节你没注意到
2016年06月07日 00点06分 2
[蛋花哭]吧神,小弟都看了好多好多次了,木有看出来啊[挠墙][挠墙]
2016年06月07日 01点06分
1