ITK基础(一) — 二值化分割

简介: ITK 全称为 Insight Toolkit ,是一款开源、跨平台、用于图像分析工具包,开发遵循极限编程,主流使用语言为 C++,但目前开发团队已经提供了面向 Python 的接口。ITK 内部封装了许多优秀算法。ITK 可用于图像处理、配准、分割等领域,处理图像维度面向二维、三维或者更高维度

ITK  全称为 Insight Toolkit ,是一款开源、跨平台、用于图像分析工具包,开发遵循极限编程,主流使用语言为 C++,但目前开发团队已经提供了面向 Python 的接口。

ITK 内部封装了许多优秀算法。ITK 可用于图像处理、配准、分割等领域,处理图像维度面向二维、三维或者更高维度


原理讲解

本文为 ITK 系列教程的第一篇文章,主要介绍该工具包中二值化分割功能的实现;图像分割的目的通过改变图像像素值,来提取我们想要的区域,一般是图像处理的大前提;

ITK 中的二值化分割主要用到 itk::BinaryThresholdImageFilter 过滤器,其分割原理图如下:

微信图片_20220520114738.jpg

二值化分割是分割方法中最基础的,通过定义 Lower 和 Upper 两个像素临界点

微信图片_20220520114740.png

只要图像像素值在这者之间,则该像素值将改变为 Insidevalue;否则将改为 Outsidevalue;最终图像的像素值只有两种:Insidevalue 或者是 Outsidevalue;

注:上面的 Insidevalue、Outsidevalue、Lowervalue、Uppervalue 四个参数是用户自己设定的。

代码实现

上文已经提到了,二值化分割主要用到的头文件为 itkBinaryThresholdImageFilter ,该过滤器主要通过设置四个参数来完成分割效果。

下面的代码部分就是关于二值分割的功能实现,代码中,依次进行图像读取、参数设定、二值化处理、图像写出等一系列步骤

#include<itkBinaryThresholdImageFilter.h>
#include<itkImage.h>
#include<itkImageFileReader.h>
#include<itkImageFileWriter.h>
#include<itkPNGImageIOFactory.h>
#include<string.h>
using namespace std;
int Binary_Threshold()
{
    itk::PNGImageIOFactory::RegisterOneFactory();
    string input_name = "D:/ceshi1/ITK/Filter/Threshold_Seg/input.png";
    string output_name = "D:/ceshi1/ITK/Filter/Threshold_Seg/output.png";
    using InputPixelType = unsigned char;
    using OutputPixelType = unsigned char;
    using InputImageType = itk::Image<InputPixelType, 2>;
    using OutputImageType = itk::Image<OutputPixelType, 2>;
    using FilterType = itk::BinaryThresholdImageFilter<InputImageType, OutputImageType>;
    using ReaderType = itk::ImageFileReader<InputImageType>;
    using WriterType = itk::ImageFileWriter<OutputImageType>;
    ReaderType::Pointer reader = ReaderType::New();
    WriterType::Pointer writer = WriterType::New();
    FilterType::Pointer filter = FilterType::New();
    reader->SetFileName(input_name);
    filter->SetInput(reader->GetOutput());
    writer->SetInput(filter->GetOutput());
    writer->SetFileName(output_name);
    const OutputPixelType  outsidevalue = 0;
    const InputPixelType  insidevalue = 255;
    filter->SetOutsideValue(outsidevalue);
    filter->SetInsideValue(insidevalue);
    const InputPixelType lowerThreshold = 150;
    const OutputPixelType upperThreshold = 180;
    filter->SetUpperThreshold(upperThreshold);
    filter->SetLowerThreshold(lowerThreshold);
    try
    {
        filter->Update();// Running Filter;
        writer->Update();//Runing Writer;
    }
    catch(exception &e)
    {
        cout << "Caught Error!" << endl;
        cout << e.what() << endl;
        return EXIT_FAILURE;
    }
    return EXIT_SUCCESS;
}

这里 Insidevalue 设置为 0 (黑色),Outsidevalue 设置为 255(白色);阈值分割区间设为 (150,180 );选取的分割图像为 ITK 官方提供的脑部切片 PNG 图片,最终的分割结果如下

微信图片_20220520114742.jpg

相关文章
|
机器学习/深度学习 API 开发工具
通义千问API入门教程
本教程将带你从零开始,快速了解如何通过 API 使用通义千问大模型,并尝试使用大模型 API 开发一些简单的应用应用到工作中,提升效率。
|
Web App开发 编解码 安全
【WebRTC 入门教程】全面解析WebRTC:从底层原理到Qt和FFmpeg的集成应用
【WebRTC 入门教程】全面解析WebRTC:从底层原理到Qt和FFmpeg的集成应用
7964 2
|
域名解析 运维 JavaScript
只需5步!在轻量应用服务器部署Hexo博客
轻量应用服务器征文活动投稿教程帖,只需5步完成Hexo博客的部署实践,步骤完整,操作性强~
只需5步!在轻量应用服务器部署Hexo博客
|
5月前
|
人工智能 自然语言处理 机器人
2026年企业建设智能客服系统要多少钱?不同部署模式费用明细详解
本文详解瓴羊Quick Service智能客服2026年最新收费标准,覆盖轻量坐席、文本/呼入机器人、知识库、工单及电商插件等模块,年费从1.6万元至72万元不等,并提供五步AI落地指南与30天免费试用建议。
|
机器学习/深度学习 人工智能 自然语言处理
AI驱动的测试:用Dify工作流实现智能缺陷分析与分类
传统缺陷分析耗时耗力,依赖经验且效率低下。通过Dify工作流与AI技术融合,实现缺陷报告的多模态解析、智能分类、根因定位与处理建议生成,将单个缺陷处理时间从15-20分钟缩短至2-3分钟,准确率超95%,大幅提升测试效率与质量一致性。
|
7月前
|
人工智能 机器人 BI
零基础搭建OpenClaw办公机器人|阿里云+本地部署流程+技能选型+大模型千问/Coding Plan API对接教程
2026年,AI技术的落地价值已从“对话交互”转向“实际执行”,OpenClaw(曾用名Clawdbot,社区昵称“小龙虾AI”)作为开源AI代理框架,凭借技能插件(Skills)与多模型适配能力,成为自动化办公的核心工具。它打破了传统办公软件的功能壁垒,通过连接文档处理、数据统计、网页自动化、沟通协作等场景,将重复劳动转化为“一键触发”的流程,覆盖周报生成、数据爬取、文件管理、邮件处理等高频办公需求。
441 0
|
机器学习/深度学习 PyTorch TensorFlow
深度学习工具和框架详细指南:PyTorch、TensorFlow、Keras
在深度学习的世界中,PyTorch、TensorFlow和Keras是最受欢迎的工具和框架,它们为研究者和开发者提供了强大且易于使用的接口。在本文中,我们将深入探索这三个框架,涵盖如何用它们实现经典深度学习模型,并通过代码实例详细讲解这些工具的使用方法。
1524 0
|
机器学习/深度学习 JSON 算法
二叉树遍历算法的应用场景有哪些?
【10月更文挑战第29天】二叉树遍历算法作为一种基础而重要的算法,在许多领域都有着不可或缺的应用,它为解决各种复杂的问题提供了有效的手段和思路。随着计算机科学的不断发展,二叉树遍历算法也在不断地被优化和扩展,以适应新的应用场景和需求。
1312 0
|
SQL 存储 分布式计算
图解大数据 | Hive与HBase详解@海量数据库查询
HBase是建立在Hadoop文件系统之上的、分布式面向列的数据库,包含Region Server、HBase Master、ZooKeeper等三个组件。Hive是基于Hadoop的一个数据仓库工具,用于结构化数据的查询、分析和汇总。
2065 0
图解大数据 | Hive与HBase详解@海量数据库查询