@Override
public Image5D duplicate() {
final String newTitle = WindowManager.makeUniqueName(getTitle());
final ImagePlus impOrig = new ImagePlus(newTitle, imageStack);
final ImagePlus impCopy =
(new ij.plugin.filter.Duplicater()).duplicateStack(impOrig, newTitle);
final ImageStack stackCopy = impCopy.getStack();
final Image5D i5d =
new Image5D(newTitle, stackCopy, getNChannels(), getNSlices(),
getNFrames());
i5d.setCalibration(getCalibration().copy());
for (int i = 0; i < getNChannels(); i++) {
i5d.setCurrentPosition(0, 0, i, 0, 0);
i5d.chCalibration[i] = chCalibration[i].copy();
i5d.chDisplayProps[i] = chDisplayProps[i].copy();
i5d.restoreCurrentChannelProperties();
}
i5d.setDisplayGrayInTiles(displayGrayInTiles);
i5d.setDisplayMode(displayMode);
i5d.setCurrentPosition(currentPosition);
return i5d;
}