Hay que asignarle la propiedad transition a la imagen. Después con jquery detectamos cuando se haga scroll.. y le decimos que si se scrollea más de determinada cantidad de pixeles, la imagen cambie de tamaño. Todo esto sin asignarle un alto fijo al contenedor, sino no va a modificar su tamaño.
Código CSS :
.logo{
width:100%;
-webkit-transition:all .3s linear;
-moz-transition:all .3s linear;
-ms-transition:all .3s linear;
-o-transition:all .3s linear;
transition:all .3s linear;
}
Código Javascript :
$(window).scroll(function(){
if($(this).scrollTop() >= 200){
$(".logo").width("50%")
}
else{
$(".logo").width("100%")
}
});
Te dejo un ejemplo de cómo lo haria yo.. imitando un poco el diseño que pasaste.
http://codepen.io/fede5426/pen/xGpEpR
No es responsive y lo hice en un monitor de 23", si se ve mal sepan entender que solamente era un ejemplo, el efecto funciona igual..
Saludos