RE:Convertir un BMP a una matriz
GDI es la respuesta.
Graphics Device Interface de Windows maneja los bitmaps.
Estos tiene una estructura compleja y pueden tener varios tipos de encabezados.
Lo mejor es que utilices la funcion LoadImage, que te permite cargar imagenes desde archivos y recursos.
Luego utilizas el HDC (Handle to Device Context) de la ventana para crear un hdc compatible con el bitmap que cargaste, esto con CreateCompatibleDC.
La función GetDIBits obtendra los bits del bitmap que cargaste.
Debes tomar en cuenta la compresión del Bitmap. este puede ser de 1 bit por pixel (monocromatico), 2 bpp (4 colores), ..., 8 bpp (2 ^ 8 colores), ..., 32 bpp (2 ^ 32 Colores o colores VGA).
Si creas una variable BITMAP y la asocias al HANDLE del bitmap que te retornó LoadImage con la función SelectObject obtendras las medidas en pixel, los bits por pixel, el ancho de cada scan line. etc...
Suerte...