Outputting Matrix Loop in Template
You're almost there. 

Every block returns a MatrixBlockModel, so you have to reference your block when getting the attributes:

{% for block in entry.threeHomepageImages.type('images') %}
    &lt;h2&gt;{{ block.imageTitle }}&lt;/h2&gt;
    {# Save images to variable for reuse #}
    {% set image = block.image %}
    {# Check if there is any images #}
    {% if image | length %}
        {# Get url #}
        {% set image = image.first().getUrl() %}
        &lt;img src="{{ image }}" alt="{{ block.alt }}" /&gt; 
    {% endif %}
{% endfor %}