Это то, что я бы сделал
.img-container {position:relative;}
,img-container h4{position:absolute;bottom:0; left:0;height:Npx;line-height:20px; font-size:18px;}
.img-container img {margin-bottom:Npx;}
Если существует риск, что текст будет занимать более одной строки, вы захотите увеличить значение N, в противном случае это будет 20px.
<div class="img-container">
<h4 class="caption">A picture of a dog</h4> //or h3, or h5 etc... - whichever is most appropriate given how you've used headings on your site
<img src,,,,>
</div>
Поместить заголовок перед изображением в разметке и сделать его заголовком, я думаю, как можно более семантически приблизиться к тому, чтобы сказать "это картинка ..."