亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? iso.cpp

?? 此程序采用數據并行方式 //每個處理器執行相同的可視化流程: // vtkImageReader -> vtkContourFilter -> vtkElevationFilter
?? CPP
字號:
//此程序采用數據并行方式
//每個處理器執行相同的可視化流程: 
// vtkImageReader -> vtkContourFilter -> vtkElevationFilter
//另外,第一個處理器創建n個輸入接口(n=處理器個數-1),同時其它處理器
//分別創建輸出接口與其對應.第一個處理器合成自己和其它處理器輸出的
//多邊形數據,并將其顯示出來.

#include "Iso.h"
#include "vtkTimerLog.h"

#define DECIMATE_REDUCTION 0.1
#define DECIMATE_ITERATIONS 5
#define DECIMATE_ERROR 0.0002
#define DECIMATE_ERROR_INCREMENT 0.0002
#define SMOOTH_ITERATIONS 5
#define SMOOTH_FACTOR 0.01
#define FEATURE_ANGLE 60
#define TISSUE 0
#define SMOOTH_ANGLE 60
#define IMAGE_THRESHOLD1  0
#define IMAGE_THRESHOLD2  46500
#define IN_VALUE 0
#define OUT_VALUE  ISLAND_REPLACE

#include "vtkProperty.h"
#include "vtkPolyDataNormals.h"
#include "vtkStripper.h"
#include "vtkSmoothPolyDataFilter.h"
#include "vtkPNMReader.h"
#include "vtkImageReader.h"
#include "vtkJPEGReader.h"
#include "vtkImageShrink3D.h"
#include "vtkImageGaussianSmooth.h"
#include "vtkImageToStructuredPoints.h"
#include "vtkDecimate.h"
#include "vtkPolyData.h"
#include "vtkStructuredPoints.h"
#include "vtkImageIslandRemoval2D.h"
#include "vtkImageThreshold.h"  
#include "vtkPolyDataWriter.h"
#include "vtkAppendPolyData.h"
#include "vtkContourFilter.h"
#include "vtkDataSet.h"
#include "vtkImageData.h"
#include "vtkImageReader.h"
#include "vtkInputPort.h"
#include "vtkMultiProcessController.h"
#include "vtkOutputPort.h"
#include "vtkPolyData.h"
#include "vtkJPEGReader.h"

// 設置接口參數
static const int PORT_TAG=999;


// This will be called by all processes
void MyMain( vtkMultiProcessController* controller, 
           void* vtkNotUsed(arg))
{
   // Obtain the id of the running process and the total
  // number of processes
  int myid = controller->GetLocalProcessId();
  int numProcs = controller->GetNumberOfProcesses();

  cerr<<"Processor %d begin......"<<myid<<"\n";

    vtkJPEGReader* reader=vtkJPEGReader::New();
//    vtkImageReader* reader=vtkImageReader::New();
//       reader->SetDataOrigin(500,500,500);
//       reader->SetDataByteOrderToLittleEndian();
//       reader->SetDataByteOrderToBigEndian;
       reader->SetDataScalarType(6);
       reader->SetFilePrefix(FILEPROFIX);
       reader->SetFilePattern(FILEPATTERN);
       reader->SetDataSpacing(PIXEL_SIZEX,PIXEL_SIZEY,SPACING);
    //  reader->SetFileNameSliceSpacing(FILESPACE);
       reader->SetDataExtent(EXTENT);
       reader->FileLowerLeftOff();
       reader->SetFileLowerLeft(100);
       reader->GetOutput()->ReleaseDataFlagOn();


			 	

/*  vtkImageThreshold* select=vtkImageThreshold::New();
      select->ThresholdByUpper(ISO_VALUE);
      select->SetReplaceOut(1);
      select->SetOutValue(0);
      select->SetInput(reader->GetOutput());
*/


   vtkImageShrink3D* shrinker=vtkImageShrink3D::New();
      shrinker->SetInput(reader->GetOutput());
      shrinker->SetShrinkFactors(SAMPLE_RATE);
      shrinker->AveragingOn();
      reader->Delete();
      shrinker->GetOutput()->ReleaseDataFlagOn();
      
    vtkImageGaussianSmooth* gaussian=vtkImageGaussianSmooth::New();
      gaussian->SetStandardDeviation(GAUSSIAN_STANDARD_DEVIATION);
      gaussian->SetRadiusFactors(GAUSSIAN_RADIOUS_FACTORS);
      gaussian->SetInput(shrinker->GetOutput());
      shrinker->Delete();
      gaussian->GetOutput()->ReleaseDataFlagOn();

    vtkImageToStructuredPoints* toStructuredPoints=vtkImageToStructuredPoints::New();
      toStructuredPoints->SetInput(gaussian->GetOutput());
      toStructuredPoints->GetOutput()->ReleaseDataFlagOn();
      gaussian->Delete();

    vtkContourFilter* mcubes=vtkContourFilter::New();
      mcubes->SetInput(toStructuredPoints->GetOutput());
      mcubes->ComputeScalarsOff();
      mcubes->ComputeGradientsOff();
      mcubes->ComputeNormalsOff();
      mcubes->SetValue(0,ISO_VALUE);
      mcubes->GetOutput()->ReleaseDataFlagOn();
      toStructuredPoints->Delete();

    vtkDecimate* decimator=vtkDecimate::New();
      decimator->SetInput(mcubes->GetOutput());
      decimator->SetInitialFeatureAngle(FEATURE_ANGLE);
      decimator->SetMaximumIterations(DECIMATE_ITERATIONS);
      decimator->SetMaximumSubIterations(0);
      decimator->PreserveEdgesOn();
      decimator->PreserveTopologyOff;
      decimator->SetMaximumError(1);
      decimator->SetTargetReduction(DECIMATE_REDUCTION);
      decimator->SetInitialError(DECIMATE_ERROR);
      decimator->SetErrorIncrement(DECIMATE_ERROR_INCREMENT);
      decimator->GetOutput()->ReleaseDataFlagOn();
      mcubes->Delete();
	
   vtkSmoothPolyDataFilter* smoother=vtkSmoothPolyDataFilter::New();
      smoother->SetInput(decimator->GetOutput());
      smoother->SetNumberOfIterations(SMOOTH_ITERATIONS);
      smoother->SetRelaxationFactor(SMOOTH_FACTOR);
      smoother->SetFeatureAngle(SMOOTH_ANGLE); 
      smoother->FeatureEdgeSmoothingOff();
      smoother->BoundarySmoothingOff();
      smoother->SetConvergence(0);
      smoother->GetOutput()->ReleaseDataFlagOn();
      decimator->Delete();

    vtkPolyDataNormals* normals=vtkPolyDataNormals::New();
      normals->SetInput(smoother->GetOutput());
      normals->SetFeatureAngle(FEATURE_ANGLE);
      normals->GetOutput()->ReleaseDataFlagOn();
      smoother->Delete();


     vtkStripper* stripper=vtkStripper::New();
      stripper->SetInput(normals->GetOutput());
      stripper->GetOutput()->ReleaseDataFlagOn();
      normals->Delete();

  if (myid != 0)
    {
    // Satellite process! Send data through port.
    vtkOutputPort *upPort = vtkOutputPort::New();
    
    // connect the port to the output of the pipeline
    upPort->SetInput(stripper->GetOutput());

    // Multiple ports can go through the same connection.
    // This is used to differentiate ports
    upPort->SetTag(PORT_TAG);

    // Loop which processes RMI requests. 
    // Use vtkMultiProcessController::BREAK_RMI_TAG to break it.

    upPort->WaitForUpdate(); 
    cerr<<"Processor"<<myid<<"end"<<"\n";

    // We are done. Clean up.
    upPort->Delete();
    }
  else
    {
    // If I am the root process

    int i;
    vtkAppendPolyData *app = vtkAppendPolyData::New();
    vtkInputPort *downPort;

    // Add my pipeline's output to the append filter
    app->AddInput(stripper->GetOutput());

    // ###################### important ####################
    // # This tells the append filter to request pieces from
    // # each of its inputs.  Since each of its inputs comes from
    // # a different process,  each process generates a separate 
    // # piece of the data (data parallelism).
    // # If this is not used, all processes will iso-surface
    // # all the data.
    app->ParallelStreamingOn();
    
    // This is the main thread: Collect the data and render it.
    for (i = 1; i < numProcs; ++i)
      {
      downPort = vtkInputPort::New();
      downPort->SetRemoteProcessId(i);

      // Multiple ports can go through the same connection.
      // This is used to differentiate ports
      downPort->SetTag(PORT_TAG);

      app->AddInput(downPort->GetPolyDataOutput());

      // Reference already incremented by AddInput(). Delete()
      // will only decrement the count, not destroy the object.
      // The ports will be destroyed when the append filter
      // goes away.
      downPort->Delete();
      downPort = NULL;
      }
     
      vtkPolyDataWriter* writer=vtkPolyDataWriter::New();
 //   vtkStructuredGridWriter.* writer= vtkStructuredGridWriter::New();
      writer->SetInput(app->GetOutput());
      writer->SetFileName(SAVE_FILE_NAME);
      writer->SetFileType(1);

      vtkTimerLog* timer=vtkTimerLog::New();
      timer->StartTimer();
      writer->Write();
      timer->StopTimer();
      
   
      
     // Tell the other processors to stop processing RMIs.
     for (i = 1; i < numProcs; ++i)
      {
      controller->TriggerRMI(i, vtkMultiProcessController::BREAK_RMI_TAG); 
      }
    // Clean up
    cerr<<"write time="<<timer->GetElapsedTime()<<"\n";
    cerr<<"Pocssor   "<<myid<<"end "<<"\n";
    app->Delete();
    writer->Delete();
    }

  // clean up objects in all processes.
    stripper->Delete();
}


int main( int argc, char* argv[] )
{
  vtkMultiProcessController *controller;

  // Note that this will create a vtkMPIController if MPI
  // is configured, vtkThreadedController otherwise.
  controller = vtkMultiProcessController::New();

  controller->Initialize(&argc, &argv);

  controller->SetSingleMethod(MyMain,0);

  // When using MPI, the number of processes is determined
  // by the external program which launches this application.
  // However, when using threads, we need to set it ourselves.
  if (controller->IsA("vtkThreadedController"))
    {
    // Set the number of processes to 2 for this example.
    controller->SetNumberOfProcesses(2);
    } 
  controller->SingleMethodExecute();

  controller->Finalize();
  controller->Delete();

  return 0;
}





?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
天天操天天综合网| 日韩av一区二区在线影视| 久久综合久久鬼色| 欧美tickle裸体挠脚心vk| 日韩欧美专区在线| 欧美sm美女调教| 久久久久久久综合狠狠综合| 日韩欧美激情在线| 日韩精品一区国产麻豆| 日韩欧美激情在线| 日本一区二区不卡视频| 国产精品欧美一区二区三区| 1区2区3区国产精品| 亚洲在线一区二区三区| 午夜精品福利一区二区蜜股av| 天堂精品中文字幕在线| 麻豆精品一区二区综合av| 国产精品99久久久久久宅男| heyzo一本久久综合| 色欧美片视频在线观看在线视频| 欧美视频一区在线观看| 日韩精品一区二区三区老鸭窝| 久久婷婷国产综合精品青草| 国产精品女人毛片| 亚洲一区二区三区四区在线观看| 蜜桃av一区二区| 成人精品一区二区三区四区| 欧美三级中文字| 亚洲精品一区二区三区精华液| 国产精品嫩草99a| 午夜影院在线观看欧美| 国产成人免费高清| 88在线观看91蜜桃国自产| 欧美国产日韩亚洲一区| 五月天激情综合网| 国产69精品久久久久777| 日本福利一区二区| 精品成人在线观看| 亚洲免费在线视频| 看片网站欧美日韩| 91啪亚洲精品| 久久综合久久综合久久| 亚洲一区二区av在线| 国产酒店精品激情| 欧美另类久久久品| 亚洲欧美一区二区视频| 久草在线在线精品观看| 欧美三级资源在线| 日韩毛片精品高清免费| 看国产成人h片视频| 欧美无乱码久久久免费午夜一区| 久久精品一区二区三区不卡牛牛| 偷拍与自拍一区| 91国产精品成人| 中文字幕亚洲欧美在线不卡| 麻豆精品视频在线| 666欧美在线视频| 亚洲精品日产精品乱码不卡| 国产黄色精品视频| 日韩视频中午一区| 日韩va欧美va亚洲va久久| 色香蕉成人二区免费| 国产精品久久久久久久久久久免费看| 热久久久久久久| 欧美日韩成人综合在线一区二区| 亚洲欧美国产77777| 成人的网站免费观看| 国产日韩精品一区二区三区在线| 蜜臀久久99精品久久久久宅男| 欧美日韩国产大片| 亚洲国产精品一区二区久久| 欧美亚洲国产一区二区三区| 亚洲欧美日韩人成在线播放| 99久久99久久免费精品蜜臀| 中文字幕第一页久久| 国产91精品久久久久久久网曝门| 国产香蕉久久精品综合网| 韩国在线一区二区| 2020日本不卡一区二区视频| 激情图区综合网| 久久久精品综合| 成人黄色软件下载| 国产精品国产三级国产普通话99 | 欧美日韩三级一区二区| 亚洲一区视频在线观看视频| 一本色道**综合亚洲精品蜜桃冫| 最新热久久免费视频| 91蝌蚪porny| 亚洲大片在线观看| 欧美一区二区高清| 国产a久久麻豆| 成人欧美一区二区三区1314| 欧美在线免费观看视频| 日本成人超碰在线观看| 精品久久久久久久久久久久包黑料| 精彩视频一区二区三区| 国产亚洲短视频| 99re热这里只有精品免费视频| 亚洲国产成人av好男人在线观看| 555夜色666亚洲国产免| 国产一区二区三区精品欧美日韩一区二区三区 | 亚洲国产视频直播| 欧美一级日韩免费不卡| 国产精品一卡二卡| 亚洲福利一二三区| 2020日本不卡一区二区视频| 91一区一区三区| 日本美女一区二区三区| 欧美激情一区二区三区在线| 91小宝寻花一区二区三区| 午夜欧美大尺度福利影院在线看| 久久日韩精品一区二区五区| av中文字幕一区| 日韩av中文字幕一区二区| 国产欧美日韩久久| 久久婷婷综合激情| 欧美日韩卡一卡二| 国产91精品久久久久久久网曝门| 亚洲777理论| 欧美激情一二三区| 欧美一区二区三区白人| 色综合色狠狠天天综合色| 日本欧美加勒比视频| 亚洲欧洲一区二区三区| 久久久精品国产免大香伊| 91黄色小视频| 国产成人8x视频一区二区| 日韩精品一卡二卡三卡四卡无卡| 国产精品久久看| 精品国产乱码久久久久久牛牛| 一本大道久久a久久精二百| 国产很黄免费观看久久| 日本欧美韩国一区三区| 亚洲自拍偷拍九九九| 国产精品久久夜| 久久先锋资源网| 2024国产精品视频| 欧美一二区视频| 欧美高清性hdvideosex| 欧美视频完全免费看| fc2成人免费人成在线观看播放| 久久99精品久久久久久国产越南| 亚洲1区2区3区4区| 一级精品视频在线观看宜春院| 国产精品麻豆一区二区| 26uuu国产电影一区二区| 欧美一三区三区四区免费在线看| 欧美专区在线观看一区| 欧美影院一区二区三区| 欧美影院一区二区三区| 日本韩国一区二区三区| 91久久精品国产91性色tv | 亚洲国产一区二区视频| 一区二区视频在线| 亚洲综合区在线| 亚洲香肠在线观看| 亚洲电影一区二区三区| 亚洲 欧美综合在线网络| 亚洲综合免费观看高清在线观看| 亚洲精品你懂的| 洋洋av久久久久久久一区| 亚洲精品国久久99热| 亚洲日本在线视频观看| 亚洲综合色丁香婷婷六月图片| 亚洲一区二区3| 日本欧美久久久久免费播放网| 老司机午夜精品| 国产91精品免费| 色先锋aa成人| 欧美日韩国产高清一区二区三区 | 欧美精品一区二区三区很污很色的| 欧美一区二区三区爱爱| 日韩精品一区二区三区在线 | 亚洲欧美激情小说另类| 亚洲一卡二卡三卡四卡无卡久久| 日韩激情视频网站| 国产电影一区在线| 在线看国产一区二区| 欧美一区二区精品久久911| 久久综合资源网| 亚洲黄色小说网站| 日日夜夜免费精品| 成人免费电影视频| 欧美手机在线视频| 久久人人超碰精品| 亚洲综合免费观看高清完整版在线| 日本成人在线看| 99re热视频精品| 欧美一区二区精品久久911| 国产精品久久久久久久久免费相片| 亚洲综合图片区| 国产精品亚洲第一区在线暖暖韩国| 91原创在线视频| 91精品中文字幕一区二区三区| 国产午夜亚洲精品理论片色戒| 亚洲欧美另类图片小说| 国产精品中文欧美| 91麻豆精品国产91久久久久久 | 国产精品一区二区久激情瑜伽| 99久久精品国产精品久久|