# how to make the height map for c++ image buffer

**URL:** https://discourse.vtk.org/t/how-to-make-the-height-map-for-c-image-buffer/9921
**Category:** Support
**Tags:** code
**Created:** [November 22, 2022, 5:35am UTC](https://discourse.vtk.org/t/how-to-make-the-height-map-for-c-image-buffer/9921 "2022-11-22T05:35:32Z")
**Posts on this page:** 4
**Page:** 1

<div class="post-metadata">

### Author: ![J\_Kim](https://discourse.vtk.org/user_avatar/discourse.vtk.org/j_kim/32/4525_2.png) [@J\_Kim](https://discourse.vtk.org/u/J_Kim)
#### Post date: [November 22, 2022, 5:35am UTC](https://discourse.vtk.org/t/how-to-make-the-height-map-for-c-image-buffer/9921/1 "2022-11-22T05:35:32Z")

</div>

Hi all  
I want to make the height map for c++ image buffer.  
 ![image](https://discourse.vtk.org/uploads/default/original/2X/0/0161479b9a80f2058ba2e5fb932cfae9a2e20177.png)  
to  
 ![image](https://discourse.vtk.org/uploads/default/original/2X/1/1ea0a8943101b009b9052d7f47e0988e136d2749.png)

This is what I have done upto now.

1. using vtkDelaunay2D

```auto
int nImageWidth = 500, nImageHeight = 1000;
BYTE* pBuffer = new BYTE[nImageWidth*nImageHeight];

vtkNew<vtkPoints> points;
for (int y = 0; y < nImageHeight ; y++) {
	for (int x = 0; x < nImageWidth ; x++) {
		double dData = (double)pBuffer[(nImageWidth * y) + x];
		points->InsertNextPoint(x, y, dData);	
	}
}

vtkNew<vtkPolyData> inputPolyData;
inputPolyData->SetPoints(points);

vtkNew<vtkDelaunay2D> delaunay;
delaunay->SetInputData(inputPolyData);
delaunay->Update();

vtkNew<vtkPolyDataMapper> mapper;
mapper->SetInputData(delaunay->GetOutput());

vtkNew<vtkActor> actor;
actor->SetMapper(mapper);

vtkNew<vtkRenderer> renderer;
renderer->AddActor(actor);
renderer->SetBackground(.1, .2, .3);
renderer->ResetCamera();

m_vtkRenderWindow->AddRenderer(renderer);
m_vtkRenderWindow->Render();

```

The above method has two problems.  
First: ‘delaunay-\>Update()’ takes too much time.  
Second: Large images cannot use the above method.

1. using vtkImageImport

```auto
int nImageWidth = 500, nImageHeight = 1000;
BYTE* pBuffer = new BYTE[nImageWidth*nImageHeight];

vtkNew<vtkImageImport> imageImport;
imageImport->SetDataSpacing(1, 1, 1);
imageImport->SetDataOrigin(0, 0, 0);
imageImport->SetWholeExtent(0, pImage->GetFrameWidth() - 1, 0, pImage->GetFrameHeight() - 1, 0, 0);
imageImport->SetDataExtentToWholeExtent();
imageImport->SetNumberOfScalarComponents(1);
imageImport->SetDataScalarTypeToUnsignedChar();
imageImport->SetImportVoidPointer(pBuffer);
imageImport->Update();

// Here i need to convert to height map.
// but, i have no idea..

```

Please advise on solution.  
Thank you in advance.

---

<div class="post-metadata">

### Author: ![Francois\_Mazen](https://discourse.vtk.org/user_avatar/discourse.vtk.org/francois_mazen/32/3290_2.png) [@Francois\_Mazen](https://discourse.vtk.org/u/Francois_Mazen)
#### Post date: [November 22, 2022, 9:28am UTC](https://discourse.vtk.org/t/how-to-make-the-height-map-for-c-image-buffer/9921/2 "2022-11-22T09:28:42Z")

</div>

Hi @J_Kim

Have you looked at the vtkWarpScalar filter?  
[https://vtk.org/doc/nightly/html/classvtkWarpScalar.html#details](https://vtk.org/doc/nightly/html/classvtkWarpScalar.html#details)

---

<div class="post-metadata">

### Author: ![J\_Kim](https://discourse.vtk.org/user_avatar/discourse.vtk.org/j_kim/32/4525_2.png) [@J\_Kim](https://discourse.vtk.org/u/J_Kim)
#### Post date: [November 23, 2022, 5:54am UTC](https://discourse.vtk.org/t/how-to-make-the-height-map-for-c-image-buffer/9921/4 "2022-11-23T05:54:52Z")

</div>

I am very grateful for your advice.  
I was able to succeed using vtkWarpScalar filter as per your advice.

 ![image](https://discourse.vtk.org/uploads/default/original/2X/3/3ad524e2b8878009610c983c1bf572ac36b35b55.png)

---

<div class="post-metadata">

### Author: ![Francois\_Mazen](https://discourse.vtk.org/user_avatar/discourse.vtk.org/francois_mazen/32/3290_2.png) [@Francois\_Mazen](https://discourse.vtk.org/u/Francois_Mazen)
#### Post date: [November 24, 2022, 8:10am UTC](https://discourse.vtk.org/t/how-to-make-the-height-map-for-c-image-buffer/9921/5 "2022-11-24T08:10:10Z")

</div>

Great to read that you’ve figured out your issue!
