Это не требует машинного обучения. Это требует, однако, 2D деконволюции. Изображение с двойным отражением P
является ничем иным, как отраженным одиночным изображением R
, свернутым с матрицей смещения M
, наложенной на оригинальное заданное изображение O
. Итак: P = R*M + O
, где *
- это символ свертки 2D.
Только P
известно. Однако вы можете вручную выбрать сегмент в P
, когда не видите отражения, в этой области, P-Q==O
. Зная это, R*M=P-Q == 0
в этих областях.
Матрица смещения неизвестна. В своем идеальном состоянии это полностью черное изображение с двумя белыми пикселями на расстоянии, которое создает разделение между двойным отражением. Задача состоит в том, чтобы извлечь эту матрицу из текущего изображения. Это простая методика с наименьшей ошибкой, подходящая под грубое усилие резкости (остроты). В результате получается матрица с двумя белыми пятнами.
Исходя из этого и R*M== 0
в определенных областях, рассчитайте R
, отраженное изображение.
Исходя из этого, рассчитайте O = P-R*M
изображение без отражения.
Недостатком является то, что вся эта операция может добавить значительный шум и артефакты.
- Подгонка наименьшей ошибки имеет некоторую остаточную ошибку (создаст острые артефакты после деконволюции),
- Матрица смещения не будет идеальной (вводит размытие и шум),
- Деконволюция сама по себе не является тривиальной операцией, подверженной числовому шуму и делению на почти нулевые задачи.
- Маскировка области в 2D-операциях, очевидно, будет отображаться в 2D-БПФ, а при деконволуции это приведет к появлению более крупных пятен (изменения интенсивности и цвета).
- Не говоря уже о том, что если изображение не в сверхвысоком разрешении, качество быстро ухудшится.
- И так далее ...
Я предлагаю использовать фильтр ;-). Или используя отражение как художественный эффект. Или избегая отражения.