This type of problem is one which can result in so many possibilities, that it can become counter-productive to do computationally. Assuming 90% can be solved in a cost-effective amount of time, there will always be exceptions that break the rules - for example, if you have a radial room with more than four sides? How do you define what passes as a ‘bump’ and what is treated beyond a ‘bump’? The question is how much ‘automation’ are you after. Any good programmer will tell you that a robust system should output consistent results and require minimal maintenance.
One recommendation I would make to avoid a seemingly simple ambition snowballing into one overly-complex problem that takes more time to solve than it saves, is to add a proxy object manually in each room defining its extents as a four sided object. This is very easy for the human brain to do, but pattern recognition is notoriously difficult for a program to do (CAPTCHA problem). Its far from perfect, but at least keeps things achievable and realistic without entering into PHD territory.