Parece que tu variable $filename no esta debidamente inicializada que por lo que entiendo existe casos en los que no envias archivos
Lo que podrias es validar tu variable es decir:
Código PHP:
$filename = $_FILES['imagen']['name'];
if(empty($filename))
$filename = "";
Tambien te recomendaria que si este campo no es obligatorio "siempre" lo quites dentro de sus "propiedades" el NOT NULL y lo dejes simplemente como NULL
Saludillos.