vtkImageConvolve图像卷积变换

发布时间:2024年01月05日

?

#include <vtkImageActor.h>
#include <vtkImageCast.h>
#include <vtkImageConvolve.h>
#include <vtkImageMandelbrotSource.h>
#include <vtkImageMapper3D.h>
#include <vtkInteractorStyleImage.h>
#include <vtkNamedColors.h>
#include <vtkNew.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkRenderer.h>
#include "vtkAutoInit.h"

VTK_MODULE_INIT(vtkRenderingFreeType)
VTK_MODULE_INIT(vtkRenderingOpenGL2);
VTK_MODULE_INIT(vtkInteractionStyle);
VTK_MODULE_INIT(vtkRenderingVolumeOpenGL2);
int main(int, char* [])
{
??? vtkNew<vtkNamedColors> colors;

??? // Create an image
??? vtkNew<vtkImageMandelbrotSource> source;
??? source->Update();

??? vtkNew<vtkImageCast> originalCastFilter;
??? originalCastFilter->SetInputConnection(source->GetOutputPort());
??? originalCastFilter->SetOutputScalarTypeToUnsignedChar();
??? originalCastFilter->Update();

??? vtkNew<vtkImageConvolve> convolveFilter;
??? convolveFilter->SetInputConnection(source->GetOutputPort());
??? double kernel[9] = { 1, 1, 1, 1, 1, 1, 1, 1, 1 };
??? convolveFilter->SetKernel3x3(kernel);
??? convolveFilter->Update();

??? vtkNew<vtkImageCast> convolvedCastFilter;
??? convolvedCastFilter->SetInputConnection(convolveFilter->GetOutputPort());
??? convolvedCastFilter->SetOutputScalarTypeToUnsignedChar();
??? convolvedCastFilter->Update();

??? // Create an actor
??? vtkNew<vtkImageActor> originalActor;
??? originalActor->GetMapper()->SetInputConnection(
??????? originalCastFilter->GetOutputPort());

??? vtkNew<vtkImageActor> convolvedActor;
??? convolvedActor->GetMapper()->SetInputConnection(
??????? convolvedCastFilter->GetOutputPort());

??? // Define viewport ranges
??? // (xmin, ymin, xmax, ymax)
??? double leftViewport[4] = { 0.0, 0.0, 0.5, 1.0 };
??? double rightViewport[4] = { 0.5, 0.0, 1.0, 1.0 };

??? // Setup renderer
??? vtkNew<vtkRenderer> originalRenderer;
??? originalRenderer->SetViewport(leftViewport);
??? originalRenderer->AddActor(originalActor);
??? originalRenderer->SetBackground(colors->GetColor3d("Sienna").GetData());
??? originalRenderer->ResetCamera();

??? vtkNew<vtkRenderer> convolvedRenderer;
??? convolvedRenderer->SetViewport(rightViewport);
??? convolvedRenderer->AddActor(convolvedActor);
??? convolvedRenderer->SetBackground(colors->GetColor3d("RoyalBlue").GetData());
??? convolvedRenderer->ResetCamera();

??? // Setup render window
??? vtkNew<vtkRenderWindow> renderWindow;
??? renderWindow->SetSize(600, 300);
??? renderWindow->AddRenderer(originalRenderer);
??? renderWindow->AddRenderer(convolvedRenderer);
??? renderWindow->SetWindowName("ImageConvolve");

??? // Setup render window interactor
??? vtkNew<vtkRenderWindowInteractor> renderWindowInteractor;
??? vtkNew<vtkInteractorStyleImage> style;

??? renderWindowInteractor->SetInteractorStyle(style);

??? // Render and start interaction
??? renderWindowInteractor->SetRenderWindow(renderWindow);
??? renderWindow->Render();
??? renderWindowInteractor->Initialize();

??? renderWindowInteractor->Start();

??? return EXIT_SUCCESS;
}

文章来源:https://blog.csdn.net/laziji/article/details/135408897
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。