DeepFloorPlan / utils /rgb_ind_convertor.py
rawanessam's picture
Upload 24 files
f8fc500 verified
import numpy as np
from PIL import Image
# use for index 2 rgb
floorplan_room_map = {
0: [ 0, 0, 0], # background
1: [192,192,224], # closet
2: [192,255,255], # bathroom/washroom
3: [224,255,192], # livingroom/kitchen/diningroom
4: [255,224,128], # bedroom
5: [255,160, 96], # hall
6: [255,224,224], # balcony
7: [224,224,224], # not used
8: [224,224,128] # not used
}
# boundary label
floorplan_boundary_map = {
0: [ 0, 0, 0], # background
1: [255,60,128], # opening (door&window)
2: [255,255,255] # wall line
}
# boundary label for presentation
floorplan_boundary_map_figure = {
0: [255,255,255], # background
1: [255, 60,128], # opening (door&window)
2: [ 0, 0, 0] # wall line
}
# merge all label into one multi-class label
floorplan_fuse_map = {
0: [ 0, 0, 0], # background
1: [192,192,224], # closet
2: [192,255,255], # batchroom/washroom
3: [224,255,192], # livingroom/kitchen/dining room
4: [255,224,128], # bedroom
5: [255,160, 96], # hall
6: [255,224,224], # balcony
7: [224,224,224], # not used
8: [224,224,128], # not used
9: [255,60,128], # extra label for opening (door&window)
10: [255,255,255] # extra label for wall line
}
# invert the color of wall line and background for presentation
floorplan_fuse_map_figure = {
0: [255,255,255], # background
1: [192,192,224], # closet
2: [192,255,255], # batchroom/washroom
3: [224,255,192], # livingroom/kitchen/dining room
4: [255,224,128], # bedroom
5: [255,160, 96], # hall
6: [255,224,224], # balcony
7: [224,224,224], # not used
8: [224,224,128], # not used
9: [255,60,128], # extra label for opening (door&window)
10: [ 0, 0, 0] # extra label for wall line
}
def rgb2ind(im, color_map=floorplan_room_map):
ind = np.zeros((im.shape[0], im.shape[1]))
for i, rgb in color_map.items():
ind[(im==rgb).all(2)] = i
# return ind.astype(int) # int => int64
return ind.astype(np.uint8) # force to uint8
def ind2rgb(ind_im, color_map=floorplan_room_map):
rgb_im = np.zeros((ind_im.shape[0], ind_im.shape[1], 3))
for i, rgb in color_map.items():
rgb_im[(ind_im==i)] = rgb
return rgb_im
def unscale_imsave(path, im, cmin=0, cmax=255):
Image.fromarray(im, 'L').save(path)