ITK 基础(二) — 图像分割 General Threshold

本文涉及的产品
视觉智能开放平台,视频资源包5000点
视觉智能开放平台,分割抠图1万点
视觉智能开放平台,图像资源包5000点
简介: 上篇文章介绍了 ITK 中的二值化分割,最终得到的是 二值图像(图像中只有两种像素值)但有时我们会遇到另外一种需求,只改变某一阈值范围的像素值,其他部分保留;这时二值化分割已经满足不了我们的基本需求了,需要寻求另外一种方法。本篇教程介绍 ITK 中的 General Threshold ,是二值化的改进版,可以只改变某一范围内的像素值,并且其它范围内像素值得到保留。

General Threshold 介绍


上篇文章介绍了 ITK 中的二值化分割,最终得到的是 二值图像(图像中只有两种像素值)

但有时我们会遇到另外一种需求,只改变某一阈值范围的像素值,其他部分保留;这时二值化分割已经满足不了我们的基本需求了,需要寻求另外一种方法。

本篇教程介绍 ITK 中的 General Threshold ,是二值化的改进版,可以只改变某一范围内的像素值,并且其它范围内像素值得到保留。


原理讲解

General Threshold 中用到了三种分割方式:

第一种,原理图如下,该方法需要设置一个低临界阈值 Lower Threshold,图像中像素值若低于这个值,其值变为 Outsidevalue,否则像素值不变;

该方法中需要设置二个参数,低像素值设定用到的是 ThresholdBelow() 函数;用户指定  Outsidevalue;

微信图片_20220520114846.jpg

第二种,方法中需要设置一个高临界阈值 Upper Threshold,图像中像素值若高于这个值,像素值将变成 Outsidevalue,否则像素值不变;

该方法中也需要设置二个参数,高阈值设定用到 ThresholdAbove() 函数,用户指定 Outsidevalue;

微信图片_20220520114848.jpg

第三种,结合了前两种,该方法需要设置两个阈值临界 Lower Threshold 和 Upper Threshold 两个值,若像素值介于两者之间则不变,否则设为 Outsidevalue;

方法中需要设置三个参数,低阈值设定用到  ThresholdBelow() 函数,高阈值设定用到 ThresholdAbove() 函数,用户指定 Outsidevalue;

微信图片_20220520114850.jpg

代码实现

General Threshold 分割方法用到主要头文件为  itk::ThresholdImageFilter ;该 Filter 中阈值的设置用到两个函数:

  • ThresholdAbove() ;
  • ThresholdBelow() ;
#include<itkThresholdImageFilter.h>
#include<itkImage.h>
#include<itkImageFileReader.h>
#include<itkImageFileWriter.h>
#include<itkPNGImageIOFactory.h>
#include<string.h>
using namespace std;
int main()
{
    itk::PNGImageIOFactory::RegisterOneFactory();
    string input_name = "D:/ceshi1/ITK/Filter/General_Seg/input.png";
    string output_name1 = "D:/ceshi1/ITK/Filter/General_Seg/output1.png";
    string output_name2 = "D:/ceshi1/ITK/Filter/General_Seg/output2.png";
    string output_name3 = "D:/ceshi1/ITK/Filter/General_Seg/output3.png";
    using PixelType = unsigned char;
    using ImageType = itk::Image<PixelType, 2>;
    using FilterType = itk::ThresholdImageFilter<ImageType>;
    using ReaderType = itk::ImageFileReader<ImageType>;
    using WriterType = itk::ImageFileWriter<ImageType>;
    ReaderType::Pointer reader = ReaderType::New();
    WriterType::Pointer writer = WriterType::New();
    FilterType::Pointer filter = FilterType::New();
    reader->SetFileName(input_name);
    writer->SetFileName(output_name1);
    writer->SetInput(filter->GetOutput());
    filter->SetInput(reader->GetOutput());
    //first Threshold method;
    filter->SetOutsideValue(0);
    filter->ThresholdBelow(170);
    try
    {
        filter->Update();
        writer->Update();
    }
    catch (exception & e)
    {
        cout << "Caught Error" << endl;
        cout << e.what() << endl;
        return EXIT_FAILURE;
    }
    filter->ThresholdAbove(190);
    writer->SetFileName(output_name2);
    try
    {
        filter->Update();
        writer->Update();
    }
    catch (exception & e)
    {
        cout << "Caught Error" << endl;
        cout << e.what() << endl;
        return EXIT_FAILURE;
    }
    //Third Threshold Seg;
    filter->ThresholdOutside(170, 190);
    writer->SetFileName(output_name3);
    try
    {
        filter->Update();
        writer->Update();
    }
    catch (exception & e)
    {
        cout << "Caught Error" << endl;
        cout << e.what() << endl;
        return EXIT_FAILURE;
    }
    return EXIT_SUCCESS;
}

该例子中,用到的输入图像为 ITK 官网提供的大脑切片  PNG  图像,参数设定情况如下:Lower Threshold 设为170,Upper Threshold 设为190,Outsidevalue 设为 0,

最后生成的结果图如下,第 2-4 张图片分别为 第一至第三种方法生成得到的结果。

微信图片_20220520114855.jpg

相关文章
|
机器学习/深度学习 开发框架 .NET
YOLOv5的Tricks | 【Trick6】学习率调整策略(One Cycle Policy、余弦退火等)
YOLOv5的Tricks | 【Trick6】学习率调整策略(One Cycle Policy、余弦退火等)
2915 0
YOLOv5的Tricks | 【Trick6】学习率调整策略(One Cycle Policy、余弦退火等)
|
10月前
|
编解码
Google Earth Engine(GEE)——监督分类出现ConfusionMatrix (Error) User memory limit exceeded.解决方案
Google Earth Engine(GEE)——监督分类出现ConfusionMatrix (Error) User memory limit exceeded.解决方案
285 0
|
10月前
|
机器学习/深度学习 编解码 算法
图像超分:RFB-ESRGAN(Perceptual Extreme Super Resolution Network with Receptive Field Block)
图像超分:RFB-ESRGAN(Perceptual Extreme Super Resolution Network with Receptive Field Block)
190 0
|
5月前
|
机器学习/深度学习 Web App开发 人工智能
轻量级网络论文精度笔(一):《Micro-YOLO: Exploring Efficient Methods to Compress CNN based Object Detection Model》
《Micro-YOLO: Exploring Efficient Methods to Compress CNN based Object Detection Model》这篇论文提出了一种基于YOLOv3-Tiny的轻量级目标检测模型Micro-YOLO,通过渐进式通道剪枝和轻量级卷积层,显著减少了参数数量和计算成本,同时保持了较高的检测性能。
103 2
轻量级网络论文精度笔(一):《Micro-YOLO: Exploring Efficient Methods to Compress CNN based Object Detection Model》
|
5月前
|
机器学习/深度学习 编解码 定位技术
【小样本图像分割-2】UniverSeg: Universal Medical Image Segmentation
UniverSeg是一种用于医学图像分割的小样本学习方法,通过大量医学图像数据集的训练,实现了对未见过的解剖结构和任务的泛化能力。该方法引入了CrossBlock机制,以支持集和查询集之间的特征交互为核心,显著提升了分割精度。实验结果显示,UniverSeg在多种任务上优于现有方法,特别是在任务多样性和支持集多样性方面表现出色。未来,该方法有望扩展到3D模型和多标签分割,进一步提高医学图像处理的灵活性和效率。
109 0
【小样本图像分割-2】UniverSeg: Universal Medical Image Segmentation
|
5月前
|
编解码 人工智能 文件存储
轻量级网络论文精度笔记(二):《YOLOv7: Trainable bag-of-freebies sets new state-of-the-art for real-time object ..》
YOLOv7是一种新的实时目标检测器,通过引入可训练的免费技术包和优化的网络架构,显著提高了检测精度,同时减少了参数和计算量。该研究还提出了新的模型重参数化和标签分配策略,有效提升了模型性能。实验结果显示,YOLOv7在速度和准确性上超越了其他目标检测器。
103 0
轻量级网络论文精度笔记(二):《YOLOv7: Trainable bag-of-freebies sets new state-of-the-art for real-time object ..》
|
9月前
|
算法 计算机视觉
图像处理之简单脸谱检测算法(Simple Face Detection Algorithm)
图像处理之简单脸谱检测算法(Simple Face Detection Algorithm)
60 0
|
机器学习/深度学习 资源调度 数据可视化
【计算机视觉 | 目标检测】Detecting Twenty-thousand Classes using Image-level Supervision
本文提出的方法也采用了经典的两阶段范式,在第一阶段采用直接提取RPN的方法,第二阶段对做细化的具体类别进行assign和识别。
|
机器学习/深度学习 计算机视觉
【计算机视觉 | 目标检测】RegionCLIP: Region-based language-image pretraining
RegionCLIP的目的便是实现从image-text pairs的匹配到region-text pairs的匹配。构建一个模型进行图像区域的推理研究(如目标检测),目的是学习一个包含丰富的对象概念的区域视觉-语义空间,以便它可以用于开放词汇的目标检测。实质上就是训练一个视觉编码器V,使它可以编码图像区域,并将它们与语言编码器L编码的区域描述相匹配。
|
机器学习/深度学习 编解码 算法
深度学习论文阅读目标检测篇(四)中英文对照版:YOLOv1《 You Only Look Once: Unified, Real-Time Object Detection》
我们提出了 YOLO,一种新的目标检测方法。以前的目标检测工 作重复利用分类器来完成检测任务。相反,我们将目标检测框架看作 回归问题,从空间上分割边界框和相关的类别概率。单个神经网络在 一次评估中直接从整个图像上预测边界框和类别概率。由于整个检测 流水线是单一网络,因此可以直接对检测性能进行端到端的优化。
278 0

热门文章

最新文章