ITK系列26_ 边缘保留平滑滤波对PNG图像进行二维滤波

实例26 边缘保留平滑滤波对PNG图像进行二维滤波

#include "itkImage.h"
#include "itkCastImageFilter.h"
#include "itkCurvatureFlowImageFilter.h"
#include "itkImageFileReader.h"
#include "itkImageFileWriter.h"

int main(int argc, char* argv[])
{
    //定义浮点像素类型 InternalPixelType
    typedef   float           InternalPixelType;
    const     unsigned int    Dimension = 2;
    //定义浮点、维数2的图像类型 InternalImageType
    typedef itk::Image< InternalPixelType, Dimension >  InternalImageType;
    //定义无符号字符 输出像素类型 OutputPixelType
    typedef unsigned char                            OutputPixelType;
    //定义无符号字符、维数2 输出图像类型 OutputImageType
    typedef itk::Image< OutputPixelType, Dimension > OutputImageType;
    //定义滤波输入图像类型InternalImageType   滤波输出图像类型OutputImageType
    typedef itk::CastImageFilter< InternalImageType, OutputImageType >
        CastingFilterType;
    //实例化滤波器对象caster
    CastingFilterType::Pointer caster = CastingFilterType::New();
    //定义图像读取类型ReaderType
    typedef  itk::ImageFileReader< InternalImageType > ReaderType;
    //定义图像写类型WriterType
    typedef  itk::ImageFileWriter<  OutputImageType  > WriterType;

    ReaderType::Pointer reader = ReaderType::New();
    WriterType::Pointer writer = WriterType::New();

    reader->SetFileName("BrainProtonDensitySlice.png");
    writer->SetFileName(" lvbo_CastingFilter.png");

    //实例化滤波对象smoothing
    typedef itk::CurvatureFlowImageFilter< InternalImageType, InternalImageType >
        CurvatureFlowImageFilterType;
    CurvatureFlowImageFilterType::Pointer smoothing =
        CurvatureFlowImageFilterType::New();

    现在连接管道
    smoothing->SetInput(reader->GetOutput());
    //输出滤波后的效果图
    caster->SetInput(smoothing->GetOutput());
    writer->SetInput(caster->GetOutput());

    /*IsolatedConnectedImageFilter 期望用户指定一个门限和两个种子。在这个例子中,我们
    从命令行得到它们*/
    smoothing->SetNumberOfIterations(10);
    smoothing->SetTimeStep(0.125);

    try
    {
        writer->Update();
    }
    catch (itk::ExceptionObject & excep)
    {
        std::cerr << "Exception caught !" << std::endl;
        std::cerr << excep << std::endl;
    }

    return EXIT_SUCCESS;
}

                                                              

                                                           输入图像                   CurvatureFlowImageFilter 平滑 

 

ITK系列目录:

1 ITK图像数据表达之图像

2 ITK图像处理之图像滤波

3 ITK图像处理之图像分割

注:例程配套素材见系列目录

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

亦我飞也

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值