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');