首页 > 其他分享 >VTK 实例33:图像重采样(降和升采样)

VTK 实例33:图像重采样(降和升采样)

时间:2023-08-15 11:44:21浏览次数:45  
标签:采样 1.0 降和升 33 vtkSmartPointer GetOutput renderWindow New include

  1 #include "vtkAutoInit.h" 
  2 VTK_MODULE_INIT(vtkRenderingOpenGL2);
  3 VTK_MODULE_INIT(vtkInteractionStyle);
  4 
  5 #include <vtkSmartPointer.h>
  6 #include <vtkImageData.h>
  7 #include <vtkRenderWindow.h>
  8 #include <vtkRenderWindowInteractor.h>
  9 #include <vtkInteractorStyleImage.h>
 10 #include <vtkRenderer.h>
 11 #include <vtkImageActor.h>
 12 #include <vtkBMPReader.h>
 13 #include <vtkImageShrink3D.h>
 14 #include <vtkImageMagnify.h>
 15 
 16 //测试图像:../data/lena.bmp
 17 int main(int argc, char* argv[])
 18 {
 19 
 20     vtkSmartPointer<vtkBMPReader> reader =
 21         vtkSmartPointer<vtkBMPReader>::New();
 22     reader->SetFileName ( "lena.bmp" );
 23     reader->Update();
 24 
 25     vtkSmartPointer<vtkImageShrink3D> shrinkFilter = 
 26         vtkSmartPointer<vtkImageShrink3D>::New();
 27     shrinkFilter->SetInputConnection(reader->GetOutputPort());
 28     shrinkFilter->SetShrinkFactors(16,16,1);
 29     shrinkFilter->Update();
 30 
 31     vtkSmartPointer<vtkImageMagnify> magnifyFilter =
 32         vtkSmartPointer<vtkImageMagnify>::New();
 33     magnifyFilter->SetInputConnection(reader->GetOutputPort());
 34     magnifyFilter->SetMagnificationFactors(10,10,1);
 35     magnifyFilter->Update();
 36 
 37     int originalDims[3];
 38     reader->GetOutput()->GetDimensions(originalDims);
 39 
 40     double originalSpace[3];
 41     reader->GetOutput()->GetSpacing(originalSpace);
 42 
 43     int shrinkDims[3];
 44     shrinkFilter->GetOutput()->GetDimensions(shrinkDims);
 45 
 46     double shrinkSpace[3];
 47     shrinkFilter->GetOutput()->GetSpacing(shrinkSpace);
 48 
 49     int magnifyDims[3];
 50     magnifyFilter->GetOutput()->GetDimensions(magnifyDims);
 51 
 52     double magnifySpace[3];
 53     magnifyFilter->GetOutput()->GetSpacing(magnifySpace);
 54 
 55     std::cout<<"原图图像维数      :"<<originalDims[0] << " "<<originalDims[1]<<" "<<originalDims[2]<<std::endl;
 56     std::cout<<"原图图像像素间隔  :"<<originalSpace[0] << " "<<originalSpace[1]<<" "<<originalSpace[2]<<std::endl;
 57     std::cout<<"降采样图像维数    :"<<shrinkDims[0] << " "<<shrinkDims[1]<<" "<<shrinkDims[2]<<std::endl;
 58     std::cout<<"降采样图像像素间隔:"<<shrinkSpace[0] << " "<<shrinkSpace[1]<<" "<<shrinkSpace[2]<<std::endl;
 59     std::cout<<"升采样图像维数    :"<<magnifyDims[0] << " "<<magnifyDims[1]<<" "<<magnifyDims[2]<<std::endl;
 60     std::cout<<"升采样图像像素间隔:"<<magnifySpace[0] << " "<<magnifySpace[1]<<" "<<magnifySpace[2]<<std::endl;
 61 
 62     vtkSmartPointer<vtkImageActor> originalActor =
 63         vtkSmartPointer<vtkImageActor>::New();
 64     originalActor->SetInputData(reader->GetOutput());
 65 
 66     vtkSmartPointer<vtkImageActor> shrinkActor =
 67         vtkSmartPointer<vtkImageActor>::New();
 68     shrinkActor->SetInputData(shrinkFilter->GetOutput());
 69 
 70     vtkSmartPointer<vtkImageActor> magnifyActor =
 71         vtkSmartPointer<vtkImageActor>::New();
 72     magnifyActor->SetInputData(magnifyFilter->GetOutput());
 73 
 74     double originalViewport[4] = {0.0, 0.0, 0.33, 1.0};
 75     double shrinkViewport[4] = {0.33, 0.0, 0.66, 1.0};
 76     double magnifyViewport[4] = {0.66, 0.0, 1.0, 1.0};
 77 
 78     vtkSmartPointer<vtkRenderer> originalRenderer =
 79         vtkSmartPointer<vtkRenderer>::New();
 80     originalRenderer->SetViewport(originalViewport);
 81     originalRenderer->AddActor(originalActor);
 82     originalRenderer->ResetCamera();
 83     originalRenderer->SetBackground(1.0, 1.0, 1.0);
 84 
 85     vtkSmartPointer<vtkRenderer> shrinkRenderer =
 86         vtkSmartPointer<vtkRenderer>::New();
 87     shrinkRenderer->SetViewport(shrinkViewport);
 88     shrinkRenderer->AddActor(shrinkActor);
 89     shrinkRenderer->ResetCamera();
 90     shrinkRenderer->SetBackground(1.0, 1.0, 1.0);
 91 
 92     vtkSmartPointer<vtkRenderer> magnifyRenderer =
 93         vtkSmartPointer<vtkRenderer>::New();
 94     magnifyRenderer->SetViewport(magnifyViewport);
 95     magnifyRenderer->AddActor(magnifyActor);
 96     magnifyRenderer->ResetCamera();
 97     magnifyRenderer->SetBackground(1.0, 1.0, 1.0);
 98 
 99     vtkSmartPointer<vtkRenderWindow> renderWindow =
100         vtkSmartPointer<vtkRenderWindow>::New();
101     renderWindow->AddRenderer(originalRenderer);
102     renderWindow->AddRenderer(shrinkRenderer);
103     renderWindow->AddRenderer(magnifyRenderer);
104     renderWindow->SetSize(640, 320);
105     renderWindow->Render();
106     renderWindow->SetWindowName("ImageShrinkMagnifyExample");
107 
108     vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor =
109         vtkSmartPointer<vtkRenderWindowInteractor>::New();
110     vtkSmartPointer<vtkInteractorStyleImage> style =
111         vtkSmartPointer<vtkInteractorStyleImage>::New();
112 
113     renderWindowInteractor->SetInteractorStyle(style);
114     renderWindowInteractor->SetRenderWindow(renderWindow);
115     renderWindowInteractor->Initialize();
116     renderWindowInteractor->Start();
117 
118     return EXIT_SUCCESS;
119 }

标签:采样,1.0,降和升,33,vtkSmartPointer,GetOutput,renderWindow,New,include
From: https://www.cnblogs.com/ybqjymy/p/17630939.html

相关文章

  • 「题解注释」P3345 [ZJOI2015] 幻想乡战略游戏
    题解P3345【[ZJOI2015]幻想乡战略游戏】-Baka'sBlog-洛谷博客(luogu.org)耗时:半个下午代码注释:#include<bits/stdc++.h>typedeflonglongLL;inlineintrd(){ inta=1,b=0;charc=getchar(); while(!isdigit(c))a=c=='-'?0:1,c=getcha......
  • P3374 【模板】树状数组
    \(P3374\)【模板】树状数组1#include<bits/stdc++.h>usingnamespacestd;constintN=5*1e5+10;intn,m;inta[N];//树状数组模板inttr[N];intlowbit(intx){returnx&-x;}voidadd(intx,intc){for(inti=x;i<N;i+=lo......
  • 洛谷P9533 区间翻转区间异或和 题解
    原题:洛谷P9533一道性质题不难发现,区间翻转操作是没有用的(虽然比赛的时候想了好久www)首先,区间翻转要想对答案有贡献,一定是下边这种情况:三个连续的区间:\(A~|~B~|~C\)满足:\(B\oplusC=0,A\oplusC=0\)。将\(B∪C\)这个灵异区间进行翻转,使\(A\)和\(C\)合并到一起,会增加一......
  • [nc 记录] CF13333E Road to 1600
    赛时没做出来一直在往随机想。题意挺明确。发现到\(n\timesn\)这个条件,联想到做过的CF1172D,递归去掉一行一列的基本想法就有了。那么让两个棋子从右下开始,走完多出的一行一列,然后走进剩余的\((n-1)\times(n-1)\)。真可以?这就是*2400的构造?这我还能想不出来?只用构造......
  • TZOJ3326--Barn Repair(优先队列,贪心)
    题目简述: 某天刮了一阵大风,把牛棚的门吹飞了,总共有s个牛棚,幸运的是并不是每个牛棚都有牛。现在你可以购买m块木板,商店里有各种型号的木板,木板长度为多少就需要多少金钱。木板用来给牛棚装上门。要求把所有有牛的牛棚都装上门,并且花的金钱最少。给了一正整数C,接下来C行每行一......
  • MT6833天玑700平台_联发科MTK5G安卓核心板智能通讯模块
    联发科MT6833(天玑700)安卓核心板采用八核CPU,包含两颗主频高达2.2GHz的ArmCortex-A76「大」核心,提供更高的效能,带来更畅快的使用体验。高性能LPDDR4X内存频率高达2133MHz,及更快数据传输的UFS2.2,无论是看视频、玩游戏、拍照片、即时聊天或是在线办公都能享有非凡的体验。天玑700采用7......
  • TMS320F28335 ePWM中断函数里不能关时钟?实际上是关时钟之后不能清中断
    最近发现一个很奇怪的现象,如标题,为此写了一个简单的程序来验证这个问题,下面是部分代码:1voidInitEPwm2Gpio(void)2{3EALLOW;4GpioCtrlRegs.GPAPUD.bit.GPIO2=0;//使能上拉5GpioCtrlRegs.GPAMUX1.bit.GPIO2=1;//将GPIO2配置为EPWM2A......
  • 题解 LuoguP3306 [SDOI2013] 随机数生成器
    题目链接:【LuoguP3306】。前置知识OI-Wiki:快速幂,扩展欧几里得算法(exgcd),BabyStep,GiantStep算法。题意很清楚,不说。分析当\(t=x\)时答案很明显为\(1\),即在第一天就可以读到。当\(t\neqx\)时当\(a=0\)时观察一下规律:\[x_1\equivx_1\pmod{p}\]\[x_2\equivb......
  • L33_用日语询问需要等候多长时间
    语料地址概述在日语中,询问所需的时间,长度和距离或者数量的时候,可以采用疑问词:どのくらい,比如:どのくらいかかりますか需要多长时间?どのくらい待ちますか需要等候多长时间?动画会话どのくらい待ちますか要等多长时间?15分くらいです15分钟左右わかりました......
  • 洛谷 P3387 【模板】缩点
    在洛谷中查看所有思考都在代码,可以结合代码思考谢谢~#include<bits/stdc++.h>usingnamespacestd;constintN=1e4+5;intn,m,val[N];intdfn[N],low[N],num,col[N],cnt;//col记录每个点属于哪个联通分量//num记录遍历时间cnt记录缩点完后有多少个点in......