level 8
臭臭爸YY
楼主
吧神 如题 下面是一副二值图 用itk已经可以获取到每一个labelobject了 就是所有像素值为1的连通区域 然后怎么获取每个连通区域里面的像素的坐标值呢?

int main(int argc, char * argv[])
{
vtkSmartPointer<vtkPoints> sourcePoint = vtkSmartPointer<vtkPoints>::New();
vtkSmartPointer<vtkPolyData> source = vtkSmartPointer<vtkPolyData>::New();
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\\01.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 int label=1; label<=labelMap->GetNumberOfLabelObjects(); label++ )
{
const LabelObjectType * labelObject = labelMap->GetLabelObject( label );
labelObject->GetPhysicalSize();
labelObject->GetCentroid() :
}
现在可以获取每个连通区域的大小质心之类的数据了 可是没找到合适成员函数返回每个连通区域的坐标值(也就是像素为1的坐标值)
吧神指教一二
2016年07月12日 08点07分
1

int main(int argc, char * argv[]){
vtkSmartPointer<vtkPoints> sourcePoint = vtkSmartPointer<vtkPoints>::New();
vtkSmartPointer<vtkPolyData> source = vtkSmartPointer<vtkPolyData>::New();
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\\01.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 int label=1; label<=labelMap->GetNumberOfLabelObjects(); label++ )
{
const LabelObjectType * labelObject = labelMap->GetLabelObject( label );
labelObject->GetPhysicalSize();
labelObject->GetCentroid() :
}
现在可以获取每个连通区域的大小质心之类的数据了 可是没找到合适成员函数返回每个连通区域的坐标值(也就是像素为1的坐标值)
吧神指教一二