Как я могу обработать изображение, чтобы удалить водяной знак в моем приложении iPhone?

Я хочу удалить водяной знак с картинки в приложении для iPhone / iPad. Есть ли какая-либо обработка изображений, которую я могу выполнить в этом приложении, чтобы сделать это?

4 ответа

Решение

Не может быть сделано, извини.

Изображение с водяным знаком первоначально представляло собой два изображения (основание и водяной знак), которые были объединены для получения результата. Проблема здесь в том, что наиболее распространенные форматы изображений (такие как JPG, PNG или GIF) не имеют понятия слоев - так что основание будет одним слоем, а водяной знак - другим: в результате получится только один слой, на который оба были перерисованы. Это несколько похоже на физическое рисование: если вы рисуете одно изображение на бумаге акварелью, а затем другое на том же месте, их цвета будут смешиваться, и вы не сможете определить, какие части принадлежат одной или другой, как они стали одним изображением.

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

Теперь информация необратимо теряется из результата - другими словами, невозможно восстановить базу, зная только результат (или результат и водяной знак) - кстати, именно в этом и заключается водяные знаки.

Я позаимствовал спрайты изображений Stackru для демонстрации; фактические используемые изображения не уникальны, техника будет работать так же хорошо с любыми изображениями. This was the watermark I used: любимая

And this is the result image, after merging with the base: логотип SO, модифицированный

Now, even though we have the exact watermark image used, there's no way to recover what was underneath that star in the original image. Through image processing operations, we could almost remove the star from the result, but there's not enough data to tell us what used to be underneath: логотип без звезд - that information got erased in the merge at the beginning.

We could guess what used to be there, but then we're not doing recovery any more, we're interpreting the image and guessing what possibly could have been there - and that's pretty hard, even for a human; computers are really bad at that. This is the original image, before I watermarked it - I bet you were expecting something slightly different, no?

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

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

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

Посмотрите на источник! Большинство или текущий водяной знак делается в php как автоматический скрипт. В большинстве случаев вы увидите базовую картинку в источнике

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