Я использую следующий метод. Я уверен, что фон отличается по яркости и цвету от объекта. Я делаю снимки с самым низким значением ISO, равным 100, с помощью объекта и фона, используя штатив, выставляю их справа и делаю несколько снимков (скажем, пять). Я использую укладку изображения, чтобы усреднить шум. Затем я делаю то же самое с удаленным объектом, но здесь я беру время экспозиции так же, как на фотографиях с присутствующим объектом. Затем я использую две картинки объекта плюс фон (A) и только фон (B), чтобы создать маску следующим образом. Я преобразовываю A и B в линейное цветовое пространство, назовем получившиеся изображения A 'и B'.
Затем я нормализую B ', так что A' и B 'идентичны в фоновой области. Так как они были почти одинаково выставлены, поправочный коэффициент должен быть близок к 1. Затем, работая с 32-битной плавающей точкой, я вычитаю B 'из A' и затем устанавливаю значения серого пикселей, равные 0, если они находятся в пределах некоторого Допуск нуля (какое значение вы должны выбрать, зависит от шума, который вы можете измерить после того, как вы сделали вычитание). Затем у вас получится изображение с фоном, равным нулю, и у объекта есть пиксели со значениями серого, которые почти никогда не равны нулю (вот почему вам нужно взять яркость фона, совершенно отличную от объекта).
Следующим шагом является установка значений серого, которые не равны нулю, равных 1. Затем у вас есть маска, которую мы можем назвать M. Затем вы можете умножить исходное изображение A на M, это сделает фон темным. Чтобы сделать серый фон серым с некоторым значением серого Y, вы можете добавить к этому Y * (1-M).
Это будет работать довольно хорошо, за исключением, возможно, по краям. Здесь вы можете увидеть обесцвечивание из-за краевых пикселей, которые принадлежат объекту, но которые зафиксировали свет как от объекта, так и от исходного фона. Когда фон был изменен, значения серого этих пикселей должны были быть изменены. В случае с бананом, это не будет большой проблемой, это большая проблема, когда у вас есть такие объекты, как лица людей, волосы по краям обесцветятся из-за этого эффекта.
Единственный надежный способ решить эту проблему - сделать снимки объекта с двумя или более различными фонами. Это позволяет учесть влияние фона в краевых пикселях, а затем заменить этот вклад на то, что было бы, если бы фон был равномерным со значением серого Y. Вы можете, например, светит дополнительным светом только на задний план, чтобы на него не влиял объект, кроме края.