Jq 1.5, 538 535 488 476 bytes
This is a straightforward representation. I haven't attempted any fancy encodings yet. Replaced 0,0 pairs with Z function.
Thanks again to Jonathan Frech for helping eliminate 3 bytes!
def B:recurse(if.>0then./2|floor else empty end)|.%2;def S:256+.|[B]|reverse[2:]|map(if.>0then"#"else" "end)|join("");def Z:0,0;[[Z,3,1,1,4,5,2],[1,4,5,2,2,3,Z],[Z,Z,2,3,Z],[Z,Z,3,1,1,4]]as$m|[[],[9,15,12,4,124,228,39,62],[Z,Z,Z,Z,124,228,39,62,32,48,240,144],[32,48,240,144,151,254,194,67,194,67,127,233,9,15,12,4],[124,228,39,62,32,48,240,144,32,48,240,144,151,254,194,67],[194,67,127,233,9,15,12,4,9,15,12,4,124,228,39,62]]as$c|$m[]|range(16)as$l|map($c[.][$l]|S)|join("")
Character count
$ wc -c picture.jq
476 picture.jq
Sample run
$ jq -Mnr -f picture.jq
# # # # # ##### ## #
## #### ####### # # ##
#### ## ## # ### #######
# # # # ##### ### # #
# # ### ##### ##### # # #
####### ### # ### # ## ####
## # # ### # ####### ##
# ## ##### ##### # # #
## # # # # #####
# ## ## ####### #
####### #### ## # ###
### # # # # # #####
# # # # ### ##### #
#### ####### ### # ##
## ## # # #######
# # ## ##### # #
# # ##### ## # #
####### # # ## ##
## # ### ####### ####
# ##### ### # # # #
##### # # # # # ###
### # ## #### #######
# ####### ## ## #
##### # # # # ##
# # # ##### ##### ## #
## ####### # ### # # ##
#### ## # ### # ### #######
# # # ##### ##### ### # #
# # ### ##### # # # #
####### ### # ## ## ####
## # # ####### #### ##
# ## ##### # # # # #
#
##
####
# #
# # ###
#######
## #
# ##
##### ## #
### # # ##
# ### #######
##### ### # #
# # #
## ####
#### ##
# # #
# # # # # #####
## #### ####### #
#### ## ## # ###
# # # # #####
# # ### ##### ##### #
####### ### # ### # ##
## # # ### # #######
# ## ##### ##### # #
## # #
# ## ##
####### ####
### # # # #
# # # # ###
#### #######
## ## #
# # ##