实例介绍
【实例简介】本处理程序功能不多,只是为了完成本人实验所需的部分,去噪,减背景值,中值滤波,伪彩色,融合; 欢迎和大家交流
【实例截图】
【核心代码】
#include "imageprocess.h" #include "qmessagebox.h" #include <qfiledialog.h> #include <QMouseEvent> #include <QPainter> #include <stdio.h> #include <fstream> #include <iostream> #include "itkImage.h" #include "itkImageFileReader.h" #include "itkImageFileWriter.h" #include "itkMedianImageFilter.h" #include "itkImageRegionIterator.h" #include "itkTIFFImageIO.h" #include "itkIntensityWindowingImageFilter.h" #include "itkRGBPixel.h" #include "itkCustomColormapFunction.h" #include "itkScalarToRGBColormapImageFilter.h" #include "itkMersenneTwisterRandomVariateGenerator.h" using namespace std; ImageProcess::ImageProcess(QWidget *parent) : QMainWindow(parent) { ui.setupUi(this); //original = false; //Medfilter = false; //Substract = false; //Process = false; //Fusion = false; } void ImageProcess::on_pushButton_Luminescence_clicked() { filename = QFileDialog::getOpenFileName(this, tr("选择图像"), "", tr("Images(*.tif)")); if (filename.isEmpty()) { return; } else { imgMouse = new QImage; if (!(imgMouse->load(filename))) //加载图像 { QMessageBox::information(this, tr("打开图像失败"), tr("打开图像失败!")); delete imgMouse; return; } newImgMouse = imgMouse->scaled(ui.label_Luminescence->width(), ui.label_Luminescence->height()); ui.label_Luminescence->setPixmap(QPixmap::fromImage(newImgMouse)); } //original = true; //Medfilter = false; //Substract = false; //Process = false; //Fusion = false; } void ImageProcess::on_pushButton_Photography_clicked() { QString filenamePhotography; filenamePhotography = QFileDialog::getOpenFileName(this, tr("选择图像"), "", tr("Images(*.tif)")); if (filenamePhotography.isEmpty()) { return; } else { QImage* img = new QImage; if (!(img->load(filenamePhotography))) //加载图像 { QMessageBox::information(this, tr("打开图像失败"), tr("打开图像失败!")); delete img; return; } QImage newImg = img->scaled(ui.label_Photography->width(), ui.label_Photography->height()); ui.label_Photography->setPixmap(QPixmap::fromImage(newImg)); } } void ImageProcess::on_pushButton_Medfilter_clicked() { QByteArray ba = filename.toLatin1(); const char *c_str2 = ba.data(); typedef unsigned short PixelType; const unsigned int Dimension = 2; typedef itk::Image< PixelType, Dimension > ImageType; typedef itk::ImageFileReader< ImageType > ReaderType; typedef itk::ImageFileWriter< ImageType > WriterType; ReaderType::Pointer reader = ReaderType::New(); WriterType::Pointer writer = WriterType::New(); reader->SetFileName(c_str2); filename = "..\\Image\\Medfilter_image.tif"; writer->SetFileName("..\\Image\\Medfilter_image.tif"); reader->SetImageIO(itk::TIFFImageIO::New()); reader->Update(); ImageType::Pointer inputImage = ImageType::New(); inputImage = reader->GetOutput(); typedef itk::MedianImageFilter< ImageType, ImageType > FilterType; FilterType::Pointer filter = FilterType::New(); ReaderType::SizeType indexRadius; QString txt = ui.lineEdit_Medfilter->text(); int size = txt.toInt(); int Radius_size = (size - 1) / 2; indexRadius[0] = Radius_size; indexRadius[1] = Radius_size; filter->SetRadius(indexRadius); filter->SetInput(inputImage); writer->SetInput(filter->GetOutput()); writer->SetImageIO(itk::TIFFImageIO::New()); try { writer->Update(); } catch (itk::ExceptionObject & err) { QMessageBox::warning(NULL, QString("warning"), QString("Eerr!!! ExceptionObject caught !")); } QImage *img = new QImage; img->load("..\\Image\\Medfilter_image.tif"); QImage newImg = img->scaled(ui.label_Luminescence->width(), ui.label_Luminescence->height()); ui.label_Luminescence->setPixmap(QPixmap::fromImage(newImg)); //original = false; //Medfilter = true; //Substract = false; //Process = false; //Fusion = false; } void ImageProcess::on_pushButton_Substract_clicked() { QByteArray ba = filename.toLatin1(); const char *c_str2 = ba.data(); typedef unsigned short PixelType; const unsigned int Dimension = 2; typedef itk::Image< PixelType, Dimension > ImageType; typedef itk::ImageFileReader< ImageType > ReaderType; typedef itk::ImageFileWriter< ImageType > WriterType; ReaderType::Pointer reader = ReaderType::New(); WriterType::Pointer writer = WriterType::New(); reader->SetFileName(c_str2); filename = "..\\Image\\Substract_image.tif"; writer->SetFileName("..\\Image\\Substract_image.tif"); reader->SetImageIO(itk::TIFFImageIO::New()); reader->Update(); ImageType::Pointer input_Medfilter_image = ImageType::New(); input_Medfilter_image = reader->GetOutput(); typedef itk::ImageRegionIterator<ImageType> ItType; ItType it(input_Medfilter_image, input_Medfilter_image->GetRequestedRegion()); it.GoToBegin(); while (!it.IsAtEnd()) { ImageType::PixelType value = it.Get(); QString txt = ui.lineEdit_Substract->text(); int number = txt.toInt(); int set_value = 0; if (value > number) set_value = value - number; else set_value = 0; it.Set(set_value); it; } writer->SetInput(input_Medfilter_image); writer->SetImageIO(itk::TIFFImageIO::New()); try { writer->Update(); } catch (itk::ExceptionObject & err) { //std::cerr << "ExceptionObject caught !" << std::endl; //std::cerr << err << std::endl; QMessageBox::warning(NULL, QString("warning"), QString("err!!! ExceptionObject caught !")); } QImage *img = new QImage; img->load("..\\Image\\Substract_image.tif"); QImage newImg = img->scaled(ui.label_Luminescence->width(), ui.label_Luminescence->height()); ui.label_Luminescence->setPixmap(QPixmap::fromImage(newImg)); //original = false; //Medfilter = false; //Substract = true; //Process = false; //Fusion = false; } void ImageProcess::on_pushButton_Process_clicked() { QByteArray ba = filename.toLatin1(); const char *c_str2 = ba.data(); typedef unsigned short PixelType; const unsigned int Dimension = 2; typedef itk::Image< PixelType, Dimension > ImageType; typedef itk::ImageFileReader< ImageType > ReaderType; typedef itk::ImageFileWriter< ImageType > WriterType; ReaderType::Pointer reader = ReaderType::New(); reader->SetFileName(c_str2); reader->SetImageIO(itk::TIFFImageIO::New()); reader->Update();; ImageType::Pointer inputImage = ImageType::New(); inputImage = reader->GetOutput(); typedef itk::IntensityWindowingImageFilter <ImageType, ImageType> IntensityWindowingImageFilterType; IntensityWindowingImageFilterType::Pointer filter = IntensityWindowingImageFilterType::New(); filter->SetInput(inputImage); int Value_Min = ui.lineEdit_Low->text().toInt(); int Value_Max = ui.lineEdit_High->text().toInt(); filter->SetWindowMinimum(Value_Min); filter->SetWindowMaximum(Value_Max); filter->SetOutputMinimum(0); filter->SetOutputMaximum(256); filter->Update(); typedef itk::RGBPixel<unsigned char> RGBPixelType; typedef itk::Image<RGBPixelType, 2> RGBImageType; typedef itk::ScalarToRGBColormapImageFilter<ImageType, RGBImageType> RGBFilterType; RGBFilterType::Pointer rgbfilter = RGBFilterType::New(); rgbfilter->SetInput(filter->GetOutput()); rgbfilter->SetColormap(RGBFilterType::Jet); { typedef itk::ImageFileWriter< RGBImageType > WriterType; WriterType::Pointer writer = WriterType::New(); writer->SetFileName("..\\Image\\Process.tif"); writer->SetImageIO(itk::TIFFImageIO::New()); writer->SetInput(rgbfilter->GetOutput()); writer->Update(); } filenameProcess = "..\\Image\\Process.tif"; QImage *ProccessImage = new QImage; ProccessImage->load("..\\Image\\Process.tif"); QImage newImg = ProccessImage->scaled(ui.label_Luminescence->width(), ui.label_Luminescence->height()); ui.label_Luminescence->setPixmap(QPixmap::fromImage(newImg)); //original = false; //Medfilter = false; //Substract = false; //Process = true; //Fusion = false; } void ImageProcess::on_pushButton_Fusion_clicked() { QByteArray ba = filename.toLatin1(); const char *c_str2 = ba.data(); typedef itk::RGBPixel<unsigned char> RGBPixelType; typedef itk::Image<RGBPixelType, 2> RGBImageType; typedef itk::ImageFileReader< RGBImageType > ReaderType; typedef itk::ImageFileWriter< RGBImageType > WriterType; ReaderType::Pointer reader = ReaderType::New(); WriterType::Pointer writer = WriterType::New(); reader->SetFileName(c_str2); reader->SetImageIO(itk::TIFFImageIO::New()); reader->Update(); RGBImageType::Pointer inputImage = RGBImageType::New(); inputImage = reader->GetOutput(); RGBImageType::SizeType RGBsize = inputImage->GetLargestPossibleRegion().GetSize(); typedef itk::ImageRegionIterator<RGBImageType> ItType; ItType RGBimageIterator(inputImage, inputImage->GetRequestedRegion()); typedef unsigned short PixelType; const unsigned int Dimension = 2; typedef itk::Image< PixelType, Dimension > ImageType; typedef itk::ImageFileReader< ImageType > SourceWhiteReaderType; SourceWhiteReaderType::Pointer readerSourceWhite = SourceWhiteReaderType::New(); readerSourceWhite->SetFileName("..\\Image\\originalWhite.tif"); readerSourceWhite->SetImageIO(itk::TIFFImageIO::New()); readerSourceWhite->Update(); ImageType::Pointer SourceWhiteinputImage = ImageType::New(); SourceWhiteinputImage = readerSourceWhite->GetOutput(); ImageType::SizeType SourceWhitesize = SourceWhiteinputImage->GetLargestPossibleRegion().GetSize(); RGBImageType::RegionType SourceWhiteRGBregion; RGBImageType::IndexType SourceWhiteRGBstart; SourceWhiteRGBstart[0] = 0; SourceWhiteRGBstart[1] = 0; RGBImageType::SizeType SourceWhiteRGBsize = SourceWhitesize; SourceWhiteRGBregion.SetSize(SourceWhiteRGBsize); SourceWhiteRGBregion.SetIndex(SourceWhiteRGBstart); RGBImageType::Pointer SourceWhiteRGBimage = RGBImageType::New(); SourceWhiteRGBimage->SetRegions(SourceWhiteRGBregion); SourceWhiteRGBimage->Allocate(); typedef itk::ImageRegionIterator<ImageType> SourceWhiteItType; SourceWhiteItType SourceWhiteimageIterator(SourceWhiteinputImage, SourceWhiteinputImage->GetRequestedRegion()); itk::ImageRegionIterator<RGBImageType> SourceWhiteRGBimageIterator(SourceWhiteRGBimage, SourceWhiteRGBregion); while (!SourceWhiteRGBimageIterator.IsAtEnd()) { RGBImageType::PixelType SourceWhiteRGBimagepixel = SourceWhiteRGBimageIterator.Get(); ImageType::PixelType SourcepixelValue = SourceWhiteimageIterator.Get(); if (!SourceWhiteimageIterator.IsAtEnd()) { int realValue = int((SourcepixelValue / 65536.0) * 256); SourceWhiteRGBimagepixel.SetRed(realValue); SourceWhiteRGBimagepixel.SetGreen(realValue); SourceWhiteRGBimagepixel.SetBlue(realValue); SourceWhiteRGBimageIterator.Set(SourceWhiteRGBimagepixel); SourceWhiteimageIterator; } SourceWhiteRGBimageIterator; } SourceWhiteRGBimageIterator.GoToBegin(); while (!SourceWhiteRGBimageIterator.IsAtEnd()) { RGBImageType::PixelType SourceWhiteRGBimagepixel = SourceWhiteRGBimageIterator.Get(); RGBImageType::PixelType RGBpixel = RGBimageIterator.Get(); if (!RGBimageIterator.IsAtEnd()) { if (RGBpixel.GetRed() == 0 && RGBpixel.GetGreen() == 0) { ; } else { SourceWhiteRGBimagepixel.SetRed(RGBpixel.GetRed()); SourceWhiteRGBimagepixel.SetGreen(RGBpixel.GetGreen()); SourceWhiteRGBimagepixel.SetBlue(RGBpixel.GetBlue()); SourceWhiteRGBimageIterator.Set(SourceWhiteRGBimagepixel); } SourceWhiteRGBimageIterator; RGBimageIterator; } } writer->SetFileName("..\\Image\\lbn.tif"); writer->SetImageIO(itk::TIFFImageIO::New()); writer->SetInput(SourceWhiteRGBimage); writer->Update(); QImage *FusionImage = new QImage; FusionImage->load("..\\Image\\lbn.tif"); QImage newImg = FusionImage->scaled(ui.label_Luminescence->width(), ui.label_Luminescence->height()); ui.label_Luminescence->setPixmap(QPixmap::fromImage(newImg)); //original = false; //Medfilter = false; //Substract = false; //Process = false; //Fusion = true; } void ImageProcess::on_pushButton_Save_clicked() { QPixmap pix; pix.load("..\\Image\\lbn.tif"); QString fileName = QFileDialog::getSaveFileName(this, tr("Save Image"), "", tr("*.tif;; ")); if (fileName.isEmpty()) { QMessageBox::information(this, tr("Failed to save the image"), tr("Failed to save the image!")); } else { QString tempstring = fileName ".tif"; pix.save(tempstring, "tif"); } } void ImageProcess::on_pushButton_Clear_clicked() { ui.label_Luminescence->setAlignment(Qt::AlignVCenter | Qt::AlignHCenter); QString sLuminescence = QStringLiteral("Luminescence图像显示区域"); ui.label_Luminescence->setText(sLuminescence); ui.label_Photography->setAlignment(Qt::AlignVCenter | Qt::AlignHCenter); QString sPhotography = QStringLiteral("Photography图像显示区域"); ui.label_Photography->setText(sPhotography); } ImageProcess::~ImageProcess() { } void ImageProcess::paintEvent(QPaintEvent *) { QPainter painter(this); QLinearGradient linearGradient(920, 30, 920, 511); linearGradient.setColorAt(0, Qt::darkRed); linearGradient.setColorAt(0.1, Qt::red); linearGradient.setColorAt(0.2, Qt::darkYellow); linearGradient.setColorAt(0.3, Qt::yellow); linearGradient.setColorAt(0.4, Qt::darkGreen); linearGradient.setColorAt(0.6, Qt::green); linearGradient.setColorAt(0.7, Qt::darkCyan); linearGradient.setColorAt(0.8, Qt::cyan); linearGradient.setColorAt(0.9, Qt::blue); linearGradient.setColorAt(1, Qt::darkBlue); painter.setBrush(linearGradient); painter.drawRect(920, 30, 30, 481); } // //void ImageProcess::mouseMoveEvent(QMouseEvent *e) //{ // if (e->x() >= 380 && e->x() <= 892) // { // if (e->y() >= 10 && e->y() <= 522) // { // x = e->x() - 388; // y = e->y() - 8; // ui.label_Xposition->setText(QString::number(x)); // ui.label_Yposition->setText(QString::number(y)); // mousegetpixel(); // } // } // else // { // ui.label_Xposition->setText(""); // ui.label_Yposition->setText(""); // } // // //} // //void ImageProcess::mouseReadImage() //{ // // //} // //void ImageProcess::mousegetpixel() //{ // QByteArray ba = filename.toLatin1(); // const char *c_str2 = ba.data(); // typedef unsigned short PixelType; // const unsigned int Dimension = 2; // typedef itk::Image< PixelType, Dimension > ImageType; // typedef itk::ImageFileReader< ImageType > ReaderType; // typedef itk::ImageFileWriter< ImageType > WriterType; // ReaderType::Pointer reader = ReaderType::New(); // if (original) // { // reader->SetFileName(c_str2); // reader->SetImageIO(itk::TIFFImageIO::New()); // reader->Update(); // ImageType::Pointer input_Medfilter_image = ImageType::New(); // input_Medfilter_image = reader->GetOutput(); // ImageType::SizeType size = input_Medfilter_image->GetLargestPossibleRegion().GetSize(); // int size_x = floor(x / 512.0 * 1024); // int size_y = floor(y / 512.0 * 1024); // // if (size_x <= size[0] && size_y <= size[1]) // { // ImageType::IndexType index; // index[0] = size_x; // index[1] = size_y; // ImageType::PixelType value = input_Medfilter_image->GetPixel(index); // ui.label_Pixel->setText(QString::number(value)); // } // } // if (Medfilter) // { // reader->SetFileName("..\\Image\\Medfilter_image.tif"); // reader->SetImageIO(itk::TIFFImageIO::New()); // reader->Update(); // ImageType::Pointer input_Medfilter_image = ImageType::New(); // input_Medfilter_image = reader->GetOutput(); // ImageType::SizeType size = input_Medfilter_image->GetLargestPossibleRegion().GetSize(); // int size_x = floor(x / 512.0 * 1024); // int size_y = floor(y / 512.0 * 1024); // if (size_x <= size[0] && size_y <= size[1]) // { // ImageType::IndexType index; // index[0] = size_x; // index[1] = size_y; // ImageType::PixelType value = input_Medfilter_image->GetPixel(index); // ui.label_Pixel->setText(QString::number(value)); // } // } // if (Substract) // { // reader->SetFileName("..\\Image\\Substract_image.tif"); // reader->SetImageIO(itk::TIFFImageIO::New()); // reader->Update(); // ImageType::Pointer input_Medfilter_image = ImageType::New(); // input_Medfilter_image = reader->GetOutput(); // ImageType::SizeType size = input_Medfilter_image->GetLargestPossibleRegion().GetSize(); // int size_x = floor(x / 512.0 * 1024); // int size_y = floor(y / 512.0 * 1024); // // if (size_x <= size[0] && size_y <= size[1]) // { // ImageType::IndexType index; // index[0] = size_x; // index[1] = size_y; // ImageType::PixelType value = input_Medfilter_image->GetPixel(index); // ui.label_Pixel->setText(QString::number(value)); // } // } // if (Process) // { // reader->SetFileName("..\\Image\\Process.tif"); // reader->SetImageIO(itk::TIFFImageIO::New()); // reader->Update(); // ImageType::Pointer input_Medfilter_image = ImageType::New(); // input_Medfilter_image = reader->GetOutput(); // ImageType::SizeType size = input_Medfilter_image->GetLargestPossibleRegion().GetSize(); // int size_x = floor(x / 512.0 * 1024); // int size_y = floor(y / 512.0 * 1024); // if (size_x <= size[0] && size_y <= size[1]) // { // ImageType::IndexType index; // index[0] = size_x; // index[1] = size_y; // ImageType::PixelType value = input_Medfilter_image->GetPixel(index); // ui.label_Pixel->setText(QString::number(value)); // } // } // if (Fusion) // { // reader->SetFileName("..\\Image\\lbn.tif"); // reader->SetImageIO(itk::TIFFImageIO::New()); // reader->Update(); // ImageType::Pointer input_Medfilter_image = ImageType::New(); // input_Medfilter_image = reader->GetOutput(); // ImageType::SizeType size = input_Medfilter_image->GetLargestPossibleRegion().GetSize(); // int size_x = floor(x / 512.0 * 1024); // int size_y = floor(y / 512.0 * 1024); // if (size_x <= size[0] && size_y <= size[1]) // { // ImageType::IndexType index; // index[0] = size_x; // index[1] = size_y; // ImageType::PixelType value = input_Medfilter_image->GetPixel(index); // ui.label_Pixel->setText(QString::number(value)); // } // } // // //}
好例子网口号:伸出你的我的手 — 分享!
相关软件
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论