I've done this a couple ways.

First, you can you [hook_ds_pre_render_alter](http://cgit.drupalcode.org/ds/tree/ds.api.php?id=f8c79728a428e89f380a8ab8cbf695a8b9867a1a&h=8.x-3.x) (I can't find a better link to ds.api.php!) like hook_preprocess_node and just hide your title field if the image field is set.

Or you can create a custom ds field (yes, you have access to the whole entity). I usually enable the `hidden` region at `/admin/structure/ds/settings`, then I add both my title field and image field to the hidden region on my view mode and then just render whichever one I need in my ds field's `build()` method via the field's [view method](https://api.drupal.org/api/drupal/core%21lib%21Drupal%21Core%21Field%21FieldItemBase.php/function/FieldItemBase%3A%3Aview/8.5.x), in this case it would be like 

    $this->entity()->field_MY_IMAGE_FIELD->view('teaser');

or    

    $this->entity()->title->view('teaser');