Randomly decorating a level based on a floor plan?

Hi, I’ve a 49x49 texture that I use for my levels (see below)

Black pixels represent walls, Green represents doors, red and cyan represent enemies and their facing directions, blue is glass, and white is empty.

Now, I’ve gotta decorate this. The game’s set in an office, so one thing i thought was to loop through every empty and door cell, get the neighbours, and then use that to determine whether it’s next to a wall or not. Then pick random cells and random props and spawn them. Now, this works fine, issue is that my decorations are not one unit in size. Some are desks, that take up 4x3 units. Some are vending machines, they take up 4x2. So when it places a decoration, sometimes they stick out and block entry. Sometimes they spawn inside each other. It’s really annoying.

TLDR: Placing props of varying sizes along walls in my level. Props are blocking doors. Props are inside one another. It is not good. What can I do?

Iterate the pixels, create usable wall spans. These would be lines of black/white pixels all in a row.

Once you have that, consume chunks of those spans with your accoutrements.

Each accoutrement would consume X number of wall pixels out of the span, producing two remaining spans on either side of it.

Lather rinse repeat until the density reaches what you want.

So create a new class called WallSpan which is just a list of cells, find cells that are in a row and then create a WallSpan containing them?