Если изображение подделано каким-либо дополнительным контентом, как удалить этот дополнительный контент из изображения в Java?

Я хочу знать, есть ли какое-либо решение для следующего сценария:

У меня есть приложение, которое загружает файлы после сканирования и перекодирования на сервер. Предположим, загружается файл изображения, который был изменен с некоторым дополнительным содержимым над ним. Теперь, поскольку загруженный файл нелегитимен, я хочу удалить дополнительное подделанное содержимое и загрузить только оригинальную часть этого файла изображения. Возможно ли это сделать на Java?

Благодарю.

2 ответа

Решение

В общем случае это невозможно обнаружить, но есть несколько эвристических методов, позволяющих определить, было ли изображение отредактировано. Попробуйте использовать инструменты на http://imageedited.com/ чтобы понять, что возможно.

Удаление редактирования - намного более сложная проблема, которая, вероятно, невозможна с текущими методами.

Я просто размышляю здесь, и я не знаю, насколько хорошо это будет работать на практике, но вы можете сделать это, если ограничитесь конкретными источниками фальсификации. Например, предположим, что вы хотите удалить логотип, добавленный к изображению memegenerator.net.

Вы заранее знаете, как выглядит текст и где он находится. Создайте прозрачный шаблон PNG, соответствующий тексту. Затем суммируйте различия между цветом изображения и пикселя шаблона, умножая каждый на альфа пикселя шаблона. Поскольку для этого конкретного логотипа он в основном белый (хотя кажется, что у него тонкая черная тень), вы получите ложные срабатывания для изображения с белой частью, поэтому вам также необходимо убедиться, что окружающие пиксели (в пределах толерантность) не белая. Это не умно, но может работать на определенных сайтах.

Для чего-то более гибкого (например, логотипы на изображениях, размер которых впоследствии был изменен), вы находитесь на территории OCR и TinEye-подобного сопоставления изображений, которые являются более продвинутыми, чем я мог бы вам посоветовать.

Чтобы правильно выявлять все виды "подделки" и отфильтровывать "нелегитимные" из "легитимных" в целом, вам понадобится искусственный интеллект, который сможет понять значение и контекст того, что он видит. Короткий ответ: вы не можете. Вот для чего люди.

Если это для веб-сайта, вероятно, лучшее, что вы можете сделать, - это кнопка отчета, которая позволяет пользователям вашего сайта сообщать изображения, которые не соответствуют правилам вашего сайта.

Другие вопросы по тегам