itk调整图像的像素值范围
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调整图像的像素值范围相关推荐
- java读取tiff图像的像素值
注意:读取tiff图像的像素值,并非rgb,这是GIS方向的同学应当明晓的事情. 由于本人之前糊里糊涂的将tiff图像的rgb值作为了像素值来读取,白折腾很久很久.希望这篇文章能够为正处于此时期的童鞋 ...
- c语言鼠标怎么获取像素,OpenCV获取鼠标左键点击位置图像的像素值
本文实现功能:利用opencv获取鼠标左键点击位置图像的像素值(RGB像) vs2015+opencv3.1 #include #include using namespace std; using ...
- opencv将Mat读入的图像的像素值打印在控制台上
//将Mat读入的图像像素值打印在控制台上,这里的Img为单通道 方法一:cv::Mat Img; IplImage *src;src=&IplImage(Img);for(int i=0;i ...
- C# 读取bmp图像所有像素值
将Bitmap数据转为byte[]数据,且每个数据代表像素值 Bitmap bmp = new Bitmap(Image.FromFile(path)); // 加载图像 private byte[] ...
- opencv 图像基本操作 像素值的获取、图像大小、ROI、通道分割与合并等
opencv中的图像基本操作方法 访问和修改图像某像素点的值 函数 a=img[y,x] #获取像素点的值 img[y,x]=b #修改像素点的值 实例 import cv2 as cv import ...
- 【转】DICOM图像像素值(灰度值)转换为CT值
转自:https://www.cnblogs.com/xuhui24/p/6193032.html https://zhuanlan.zhihu.com/p/358770379 ...
- 【转】DICOM图像像素值、灰度值与CT值!!!!!
转自:https://blog.csdn.net/syz201558503103/article/details/107238940 做医学图像处理会涉及DICOM图像,初学者应该要对图像像素有一定了 ...
- Dicom 图像--像素值(灰度值)转为CT值
摘要: 1. 概念: 2. 公式: 3. 具体情况: 4. DICOM TAG分类和说明 1. 概念: 数据:Dicom数据的原始像素值(pixel value)是没有实际意义的,所以我们常用的是Di ...
- DICOM图像像素值(灰度值)转换为CT值
CT值的单位是Hounsfield,简称为Hu,范围是-1024-3071.用于衡量人体组织对X射线的吸收率,设定水的吸收率为0Hu. 在DICOM图像读取的过程中,我们会发现图像的像素值有可能不是这 ...
最新文章
- Untiy3D学习笔记记录
- HSQLDB两条基本命令
- 关于i++和++i的实验结果解释
- 数据库创建表的时候长度的介绍
- 放弃相爱,并不放弃彼此
- WebKit如何加载web页面
- 柯达新款Wi-Fi数码相机闪亮登场
- php加数据库开发案例,PHP简单数据库操作类实例【支持增删改查及链式操作】
- Python建立ip代理池(多线程)
- 原生JS实现Ajax下载文件
- C++基础教程之注释
- 微信开发之调起摄像头、本地展示图片、上传下载图片
- 用Diff和Patch工具维护源码
- 导出文件后打不开_微信收到CAD图纸打不开?只要有这个神器,手机即可1秒轻松打开...
- 联想服务器改win7系统教程,手把手教你联想win11改win7系统教程
- Python爬虫实战 | (21) Scrapy+Selenium爬取新浪滚动新闻
- ThinkPHP6 缩略图上传
- 获奖感想和Java学习总结
- 《设计模式之禅》书评
- CREATE TABLESPACE命令详解