diff --git a/CHANGELOG.rst b/CHANGELOG.rst
index 4ff49b20c5fd9ccfcf6c5d0605f036e1c0ef01c8..124547fc22a8b59885df6173959d23fc42784bba 100644
--- a/CHANGELOG.rst
+++ b/CHANGELOG.rst
@@ -6,6 +6,13 @@ order.
 -------------------------
 
 
+Added
+^^^^^
+
+
+* New :meth:`.Image.iscomplex` attribute.
+
+
 Changed
 ^^^^^^^
 
diff --git a/fsl/data/image.py b/fsl/data/image.py
index dd423d4b5f8fc5341ea104378e5cf1d58e3aed1f..2e75733899cffac91a691305e19851d3e1bf1fbd 100644
--- a/fsl/data/image.py
+++ b/fsl/data/image.py
@@ -1195,6 +1195,14 @@ class Image(Nifti):
         else:          return nvals
 
 
+    @property
+    def iscomplex(self):
+        """Returns ``True`` if this image has a complex data type, ``False``
+        otherwise.
+        """
+        return np.issubdtype(self.dtype, np.complexfloating)
+
+
     @Nifti.voxToWorldMat.setter
     def voxToWorldMat(self, xform):
         """Overrides the :meth:`Nifti.voxToWorldMat` property setter.
diff --git a/tests/test_image.py b/tests/test_image.py
index 58d9fc625d5e107385c7280088b1c0c3d595af91..22402c4c2c4b3d5ec3255259f9d606d22d463024 100644
--- a/tests/test_image.py
+++ b/tests/test_image.py
@@ -299,6 +299,7 @@ def _test_Image_atts(imgtype):
             path = op.abspath(op.join(testdir, path))
             i    = fslimage.Image(path)
 
+            assert not   i.iscomplex
             assert tuple(i.shape)                       == tuple(expdims)
             assert tuple(i.data.shape)                  == tuple(expdims)
             assert tuple(i.pixdim)                      == tuple(exppixdims)
@@ -1369,3 +1370,15 @@ def test_identifyAffine():
     rubbish = np.random.random((4, 4))
     with pytest.raises(ValueError):
         identify(img, rubbish)
+
+
+def test_complex():
+    data       = np.random.random((5, 5, 5)) + \
+                 np.random.random((5, 5, 5)) * 1j
+    image      = fslimage.Image(data)
+    dmin, dmax = image.dataRange
+
+    assert image.iscomplex
+    assert image[3, 3, 3] == data[3, 3, 3]
+    assert dmin == data.min()
+    assert dmax == data.max()