/********************************************************************** 文件名: 5.6_IdealLowPassExample.cpp Copyright (c) 张晓东, 罗火灵. All rights reserved. 更多信息请访问: http://www.vtkchina.org (VTK中国) http://blog.csdn.net/www_doling_net (东灵工作室) **********************************************************************/ #include #include #include #include #include #include #include #include #include #include #include #include //测试图像:../data/lena-gray.jpg int main(int argc, char* argv[]) { if (argc < 2) { std::cout< reader = vtkSmartPointer::New(); reader->SetFileName(argv[1]); reader->Update(); vtkSmartPointer fftFilter = vtkSmartPointer::New(); fftFilter->SetInputConnection(reader->GetOutputPort()); fftFilter->Update(); vtkSmartPointer lowPassFilter = vtkSmartPointer::New(); lowPassFilter->SetInputConnection(fftFilter->GetOutputPort()); lowPassFilter->SetXCutOff(0.05); lowPassFilter->SetYCutOff(0.05); lowPassFilter->Update(); vtkSmartPointer rfftFilter = vtkSmartPointer::New(); rfftFilter->SetInputConnection(lowPassFilter->GetOutputPort()); rfftFilter->Update(); vtkSmartPointer ifftExtractReal = vtkSmartPointer::New(); ifftExtractReal->SetInputConnection(rfftFilter->GetOutputPort()); ifftExtractReal->SetComponents(0); vtkSmartPointer castFilter = vtkSmartPointer::New(); castFilter->SetInputConnection(ifftExtractReal->GetOutputPort()); castFilter->SetOutputScalarTypeToUnsignedChar(); castFilter->Update(); vtkSmartPointer originalActor = vtkSmartPointer::New(); originalActor->SetInput(reader->GetOutput()); vtkSmartPointer erodedActor = vtkSmartPointer::New(); erodedActor->SetInput(castFilter->GetOutput()); double leftViewport[4] = {0.0, 0.0, 0.5, 1.0}; double rightViewport[4] = {0.5, 0.0, 1.0, 1.0}; vtkSmartPointer renderWindow = vtkSmartPointer::New(); renderWindow->SetSize(640, 320); renderWindow->Render(); renderWindow->SetWindowName("IdealLowPassExample"); vtkSmartPointer interactor = vtkSmartPointer::New(); interactor->SetRenderWindow(renderWindow); vtkSmartPointer leftRenderer = vtkSmartPointer::New(); renderWindow->AddRenderer(leftRenderer); leftRenderer->SetViewport(leftViewport); leftRenderer->SetBackground(1.0, 1.0, 1.0); vtkSmartPointer rightRenderer = vtkSmartPointer::New(); renderWindow->AddRenderer(rightRenderer); rightRenderer->SetViewport(rightViewport); rightRenderer->SetBackground(1.0, 1.0, 1.0); leftRenderer->AddActor(originalActor); rightRenderer->AddActor(erodedActor); leftRenderer->ResetCamera(); rightRenderer->ResetCamera(); renderWindow->Render(); interactor->Start(); return EXIT_SUCCESS; }