1. 前言

比如原来是−1023−2034-1023-2034−1023−2034,现在需要调整到0−2550-2550−255

2. 代码

2.1 definition.h

#pragma once
#include<string>
#include<itkImage.h>constexpr unsigned int Dimension = 3;
using PixelType = double;
using ImageType = itk::Image<PixelType, Dimension>;
using ImageStyle = ImageType::Pointer;

2.2 RescaleIntensity.h

#pragma once
#include"definition.h"class RescalIntensity
{public:/// <summary>/// 读取nii图像/// </summary>/// <param name="file_path">文件路径</param>/// <param name="out_image">读到的图像</param>void read_nii(const std::string& file_path,ImageStyle& out_image);/// <summary>/// 写入nii文件/// </summary>/// <param name="input_image">输入图像</param>/// <param name="save_path">保存路径</param>void write_nii(const ImageStyle& input_image,const std::string& save_path);/// <summary>/// 重置像素值尺度/// </summary>/// <param name="input_image">输入(输出)图像</param>void resale_intensity(ImageStyle& input_image);
};

2.3 RescaleIntensity.cpp

#include "RescalIntensity.h"
#include<itkImageFileReader.h>
#include<itkNiftiImageIO.h>
#include<itkRescaleIntensityImageFilter.h>
#include<itkImageFileWriter.h>void RescalIntensity::read_nii(const std::string& file_path, ImageStyle& out_image)
{   using ReaderType = itk::ImageFileReader<ImageType>;auto reader = ReaderType::New();using ImageIOType = itk::NiftiImageIO;auto niiIO = ImageIOType::New();reader->SetImageIO(niiIO);reader->SetFileName(file_path);try {reader->Update();}catch (const itk::ExceptionObject& e) {std::cout << "error in reading nii" << std::endl;std::cout << e.what() << std::endl;}out_image = reader->GetOutput();
}void RescalIntensity::write_nii(const ImageStyle& input_image, const std::string& save_path)
{using WriterType = itk::ImageFileWriter<ImageType>;auto writer = WriterType::New();using ImageIOType = itk::NiftiImageIO;auto niiIO = ImageIOType::New();writer->SetImageIO(niiIO);writer->SetInput(input_image);writer->SetFileName(save_path);try {writer->Update();}catch (const itk::ExceptionObject& e) {std::cout << "error in writing nii" << std::endl;std::cout << e.what() << std::endl;}
}void RescalIntensity::resale_intensity(ImageStyle& input_image)
{using FilterType = itk::RescaleIntensityImageFilter<ImageType, ImageType>;auto filter = FilterType::New();filter->SetInput(input_image);filter->SetOutputMinimum(0);filter->SetOutputMaximum(255);try {filter->Update();}catch (const itk::ExceptionObject& e) {std::cout << "error in rescaling" << std::endl;std::cout << e.what() << std::endl;}input_image = filter->GetOutput();
}

2.4 main.cpp

#include<iostream>
#include"RescalIntensity.h"int main()
{using std::cout;using std::endl;RescalIntensity rescale_obj;ImageStyle input_image;rescale_obj.read_nii("D:/test/05150_2/05150_2.nii.gz",input_image);rescale_obj.resale_intensity(input_image);rescale_obj.write_nii(input_image, "res.nii.gz");return 0;
}

2.5 结果

itk调整图像的像素值范围相关推荐

  1. java读取tiff图像的像素值

    注意:读取tiff图像的像素值,并非rgb,这是GIS方向的同学应当明晓的事情. 由于本人之前糊里糊涂的将tiff图像的rgb值作为了像素值来读取,白折腾很久很久.希望这篇文章能够为正处于此时期的童鞋 ...

  2. c语言鼠标怎么获取像素,OpenCV获取鼠标左键点击位置图像的像素值

    本文实现功能:利用opencv获取鼠标左键点击位置图像的像素值(RGB像) vs2015+opencv3.1 #include #include using namespace std; using ...

  3. opencv将Mat读入的图像的像素值打印在控制台上

    //将Mat读入的图像像素值打印在控制台上,这里的Img为单通道 方法一:cv::Mat Img; IplImage *src;src=&IplImage(Img);for(int i=0;i ...

  4. C# 读取bmp图像所有像素值

    将Bitmap数据转为byte[]数据,且每个数据代表像素值 Bitmap bmp = new Bitmap(Image.FromFile(path)); // 加载图像 private byte[] ...

  5. opencv 图像基本操作 像素值的获取、图像大小、ROI、通道分割与合并等

    opencv中的图像基本操作方法 访问和修改图像某像素点的值 函数 a=img[y,x] #获取像素点的值 img[y,x]=b #修改像素点的值 实例 import cv2 as cv import ...

  6. 【转】DICOM图像像素值(灰度值)转换为CT值

    转自:https://www.cnblogs.com/xuhui24/p/6193032.html            https://zhuanlan.zhihu.com/p/358770379 ...

  7. 【转】DICOM图像像素值、灰度值与CT值!!!!!

    转自:https://blog.csdn.net/syz201558503103/article/details/107238940 做医学图像处理会涉及DICOM图像,初学者应该要对图像像素有一定了 ...

  8. Dicom 图像--像素值(灰度值)转为CT值

    摘要: 1. 概念: 2. 公式: 3. 具体情况: 4. DICOM TAG分类和说明 1. 概念: 数据:Dicom数据的原始像素值(pixel value)是没有实际意义的,所以我们常用的是Di ...

  9. DICOM图像像素值(灰度值)转换为CT值

    CT值的单位是Hounsfield,简称为Hu,范围是-1024-3071.用于衡量人体组织对X射线的吸收率,设定水的吸收率为0Hu. 在DICOM图像读取的过程中,我们会发现图像的像素值有可能不是这 ...

最新文章

  1. Untiy3D学习笔记记录
  2. HSQLDB两条基本命令
  3. 关于i++和++i的实验结果解释
  4. 数据库创建表的时候长度的介绍
  5. 放弃相爱,并不放弃彼此
  6. WebKit如何加载web页面
  7. 柯达新款Wi-Fi数码相机闪亮登场
  8. php加数据库开发案例,PHP简单数据库操作类实例【支持增删改查及链式操作】
  9. Python建立ip代理池(多线程)
  10. 原生JS实现Ajax下载文件
  11. C++基础教程之注释
  12. 微信开发之调起摄像头、本地展示图片、上传下载图片
  13. 用Diff和Patch工具维护源码
  14. 导出文件后打不开_微信收到CAD图纸打不开?只要有这个神器,手机即可1秒轻松打开...
  15. 联想服务器改win7系统教程,手把手教你联想win11改win7系统教程
  16. Python爬虫实战 | (21) Scrapy+Selenium爬取新浪滚动新闻
  17. ThinkPHP6 缩略图上传
  18. 获奖感想和Java学习总结
  19. 《设计模式之禅》书评
  20. CREATE TABLESPACE命令详解

热门文章

  1. Nuxt.js(Vue SSR)项目配置以及开发细节
  2. 著名基金经理彼得林奇的选股原则
  3. Android 自定义View实现文本水平方向的跑马灯效果
  4. 【服务器数据恢复】服务器硬盘黄灯的数据恢复案例分享
  5. CSP2020-J1-真题解析-完善程序
  6. 正确设置 php-fpm子进程用户 提高网站安全性 防止被挂木马
  7. hadoop的fs shell命令
  8. 《数据清洗》8.3.8 加载电影数据至电影维度表
  9. Android 多点触控与图片缩放
  10. 解决windows版本python下没有tkinter库问题