[vtkusers] Emulating Matlab imagesc() function in VTK

Prathamesh Kulkarni prathameshmkulkarni at gmail.com
Sat Aug 14 14:20:15 EDT 2010


Hi Nicholas,

At a first glance, it appears that you could try doing the following
changes:

 import->SetImportVoidPointer(pm);
 import->SetWholeExtent(0,Nxp-1,0,Nyp-1,0,0);
 import->SetDataExtent(0,Nxp-1,0,Nyp-1,0,0);

Also, your lookupTable does not appear to be connected to the imageActor.


Prathamesh

On Sat, Aug 14, 2010 at 12:49 PM, Nicholas Kinar <n.kinar at usask.ca> wrote:

>
>
>  I think, the same code should work fine if you use a 1D double array
> instead of 2D.
>
>  Prathamesh
>
>
>
> Prathamesh,
>
> Thank you very much for your response; this is greatly appreciated!  I
> tried changing my example code to use a 1D double array, but I still receive
> a similar result.  The window that is displayed by VTK shows only "garbage"
> data.  The rendered data appears as a series of white lines which I believe
> to be indicative of uninitialized memory.
>
> What am I doing wrong with my example code?  Perhaps I am not utilizing the
> SetWholeExtent() and SetDataExtent() functions properly?  Might there be
> another way to display the matrix?
>
> Here is the example function that I am now attempting to run.  What I now
> do is copy the data into a 1D array before passing it into the
> SetImportVoidPointer() function:
>
>
> void test_VTK()
> {
>     std::string fileName = "M.txt";
>     double deltax = 1.0e-3;
>     double deltay = 1.0e-3;
>
>     int Nx = 1000;
>     int Ny = 1000;
>     int PML_num = 20;
>
>     int Nxp = Nx + 2 * PML_num;
>     int Nyp = Ny + 2 * PML_num;
>
>     TNT::Array2D<double> M(Nxp, Nyp);
>     //double **pm;
>     load_matrix( fileName, &M );
>
>     vtkSmartPointer<vtkImageImport> import =
>             vtkSmartPointer<vtkImageImport>::New();
>
>     // copy into 1D Array
>     std::cout << "Copying data " << std::endl;
>     int num = Nxp * Nyp;
>     TNT::Array1D<double> pm(num);
>     std::cout << "Have now created the matrix" << std::endl;
>     int counter = 0;
>     for(int i = 0; i < Nxp; i++)
>     {
>         for(int j = 0; j < Nyp; j++)
>         {
>             pm[counter++] = M[i][j];
>
>         }
>     }
>     std::cout << "Finishing copying data" << std::endl;
>
>
>     import->SetImportVoidPointer((void*)pm);
>     import->SetWholeExtent(0,Nxp,0,Nyp,0,0);
>     import->SetDataExtent(0,Nxp,0,Nyp,0,0);
>
>     //vtkSmartPointer<vtkImageData> data =
>     //        vtkSmartPointer<vtkImageData>::New();
>     //data->setDimensions( 1040, 1040, 0 );
>
>
>     vtkSmartPointer<vtkLookupTable> lookupTable =
>             vtkSmartPointer<vtkLookupTable>::New();
>
>     vtkSmartPointer<vtkScalarBarActor> colorbar =
>                 vtkSmartPointer<vtkScalarBarActor>::New();
>
>     // add a colorbar
>
>     lookupTable->SetNumberOfColors(9344);
>     lookupTable->SetTableRange(0,10);
>     lookupTable->ForceBuild();
>
>     colorbar->SetLookupTable(lookupTable);
>     colorbar->SetWidth(0.05);
>     colorbar->SetPosition(0.95, 0.1);
>     colorbar->SetLabelFormat("%.3g");
>     colorbar->PickableOff();
>     colorbar->VisibilityOn();
>
>     //std::string bunny = "633px-Bunny.jpg";
>
>     //read the image
>     //vtkSmartPointer<vtkJPEGReader> jPEGReader =
>     //        vtkSmartPointer<vtkJPEGReader>::New();
>     //jPEGReader->SetFileName ( bunny.c_str() );
>     //jPEGReader->Update();
>
>
>     vtkSmartPointer<vtkImageViewer2> viewer =
>              vtkSmartPointer<vtkImageViewer2>::New();
>     viewer->SetInput(import->GetOutput());
>     viewer->SetInput( import->GetOutput() );
>
>     //setup renderer
>
>     vtkSmartPointer<vtkRenderer> renderer =
>           vtkSmartPointer<vtkRenderer>::New();
>     renderer->AddActor ( viewer->GetImageActor() );
>     renderer->AddActor(colorbar);
>     renderer->ResetCamera();
>
>     //setup render window
>
>     vtkSmartPointer<vtkRenderWindow> renderWindow =
>           vtkSmartPointer<vtkRenderWindow>::New();
>     renderWindow->AddRenderer ( renderer );
>
>     //setup render window interactor
>
>     vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor =
>           vtkSmartPointer<vtkRenderWindowInteractor>::New();
>     vtkSmartPointer<vtkInteractorStyleImage> style =
>           vtkSmartPointer<vtkInteractorStyleImage>::New();
>
>     renderWindowInteractor->SetInteractorStyle( style );
>
>     //render and start interaction
>
>     renderWindowInteractor->SetRenderWindow ( renderWindow );
>     renderWindowInteractor->Initialize();
>     renderWindowInteractor->Start();
>
>
> } // end function
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20100814/3c0066c6/attachment.htm>


More information about the vtkusers mailing list