diff --git a/fsl/data/mghimage.py b/fsl/data/mghimage.py
index c65411dd5f57db2f4abfc42eb3f4a9e0f03ade48..9ba9c27e3b4199461408933882c8e47d4774c8f2 100644
--- a/fsl/data/mghimage.py
+++ b/fsl/data/mghimage.py
@@ -40,13 +40,28 @@ class MGHImage(fslimage.Image):
         """
 
         if isinstance(image, six.string_types):
-            image = nib.load(image)
+            filename = image
+            image    = nib.load(image)
+        else:
+            filename = None
 
         data   = image.get_data()
         affine = image.affine
 
         fslimage.Image.__init__(self, data, xform=affine)
 
+        if filename is not None:
+            self.setMeta('mghImageFile', filename)
+
+
+    @property
+    def mghImageFile(self):
+        """If this ``MGHImage`` was loaded from a file, returns the file
+        name. Otherwise returns ``None``.
+        """
+        return self.getMeta('mghImageFile', None)
+
+
 
 ALLOWED_EXTENSIONS = ['.mgz', '.mgh']
 """List of file extensions interpreted as MGH image files.