Самое простое в данном случае - использовать ту же разность, но не для изображения в целом, а для отдельных каналов. В том числе насыщенности и оттенка.
Найдя маску для каждой пары каналов - их можно объединить и получить более точную маску.
А случае с машиной, в центре машины у вас большое черное пятно, потому что разница в зеленом канале - нивелировалось обратной разницей в красном и синем. В сумме - получилось что-то около 0.
Если суммировать модули разности для каждого канала - этой проблемы бы не было.
Если хочется пойти дальше - нужно разбить изображения по уровням детализации (посмотрите вейвлет обработку фото). Находя маски по каждому уровню отдельно, и комбинируя их - вероятно существенно улучшите результат.