btw, does anyone want to comment on my [comment above](https://github.com/scikit-image/scikit-image/pull/546#issuecomment-17854658)? I'm imagining something like this:

Somewhere in `colorconv.py` or `util/`:

```python
def get_spatial_dims_2d_3d(ar):
    """Return a guess for the number of spatial dimensions of `ar`.

    If it is ambiguous because the final dimension has length 3, and
    so could be channels, return `None`.
    """"
    if ar.ndim == 2:
        return 2
    if ar.ndim == 3 and ar.shape[-1] != 3:
        return 3
    if ar.ndim == 3 and ar.shape[-1] == 3:
        return None
    if ar.ndim == 4 and ar.shape[-1] == 3:
        return 3
    else:
        raise ValueError("Expected 2D or 3D array, got %iD." % ar.ndim)
```

in `slic.py`:

```python
    spatial_dims = get_spatial_dims_2d_3d(image)
    if spatial_dims:
        multichannel = spatial_dims < image.ndim # override user or default setting
```

Thoughts? I like this because I've been caught out forgetting to set `multichannel` correctly, when it would have been easy to guess. @stefanv @JDWarner @ahojnnes