O Imagem, com letra maiúscula, é o tipo de dados. Você definiu uma estrutura com todos os dados necessários de uma imagem e usou um typedef, e aí você passa a usar essa palavra Imagem para designar essa struct. É algo equilavente a "int", "char", etc, porém definido por você.
Já o imagem com letra minúscula é o nome que você está dando a uma variável específica, que é do tipo Imagem.
Então, quando você declara
Imagem imagem
Seria análogo a um
int i
Quanto ao erro do seu programa, talvez tenha sido por você não ter declarado a struct antes da linha em que você está usando.
Fórum