繁体   English   中英

使用ITK写图像

[英]Writing image using ITK

我是ITK的新手,我正在尝试写刚读过的图像。 图像写入成功,但是当我尝试打开图像时,它只是黑色图像。 但是,其大小与应有的大小完全相同(与输入图像的大小相同)。 我不知道问题是什么以及为什么图像是黑色的。 这是我的代码:

typedef unsigned char PixelType;
const unsigned int Dimension = 2;
typedef itk::Image< PixelType, Dimension > ImageType; // ImageType is an image with 2D and unsigned number of pixels
typedef itk::ImageFileReader<ImageType> ReaderType;
typedef itk::ImageFileWriter< ImageType> WriterType;

typedef itk::ImageFileReader<ImageType> FileReaderType;


using namespace std;

ReaderType::Pointer LoadImage(string);
void WriteImage(string,ImageType::Pointer);


int main()
{
    string fileName = "test.tiff";
    string outFileName = "out.tiff";
    ReaderType::Pointer reader = LoadImage(fileName);
    ImageType::Pointer image = reader->GetOutput(); 


    WriteImage(outFileName, image);
    //cout<<reader<<endl;
    //cout<<image<<endl;

  return EXIT_SUCCESS;
}


ReaderType::Pointer LoadImage(string filename){
    itk::TIFFImageIO::Pointer tiffImageIO = itk::TIFFImageIO::New();
    ReaderType::Pointer reader = ReaderType::New();
    reader->SetFileName("test.tiff");
    reader->SetImageIO(tiffImageIO);
    try{
        reader->Update();
    }
    catch(itk::ExceptionObject & e){
        cerr<<e.GetDescription()<<endl;
    }
    return reader;
}


void WriteImage(string filename, ImageType::Pointer image){
  itk::TIFFImageIO::Pointer tiffImageIO = itk::TIFFImageIO::New();
  WriterType::Pointer writer = WriterType::New();
  writer->SetFileName(filename);
  writer->SetImageIO(tiffImageIO);
  writer->SetInput(image);
  try{
      writer->Update(); 
      cout<<"Image has been written!"<<endl;
  }
  catch(itk::ExceptionObject & e){
      std::cerr << e.GetDescription() << std::endl;
  } 
}

您正在使用什么程序查看图像? 您可以调整窗口,水平或对比度吗?

当您判断图像在视觉上是黑色的时,可能是图像查看器试图显示的动态范围与图像中的不同。

您正在将图像读取为“无符号整数”。 如果您的图像原本在0-255范围内,并且您正在使用像素类型(范围格式为0-4294967296)进行写出,则如果查看器试图显示该范围,您将看到黑色图像。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM