The current implementation of the ImageVtkMapper has serious performace issues when rendering binary images as an outline.
I had a look at the code, did some profiling and came to the conclusion that the biggest problem is the creation of the vtkPolyData that represents the outline of the binary image. To check this, I switched the 'binary outline' property to 'false' and had the segmentation rendered as 'normal' image. Here I saw no performance issues.
The biggest chunk of time seems to be spent in vtkImageData::GetScalarPointer(). A better way of creating the outline or accessing the pixel data is needed to increase the performance.
Furthermore I noticed that the performance is bad even if the segmentation is not even displayed. e.g. when you create a segmentation at the top of the image and scroll around in the lower part of the image.
That's because the mapper does not even check if there is something to render for the current rendering geometry. An easy way to fix this would be to check for an intersection of the 2D rendering geometry with the 3D geometry of the segmentation. If there is no intersection there is nothing to render and we can early out.