Отримайте різницю між двома зображеннями як прозоре зображення в GIMP


21

У мене є два зображення , Aі Bякі схожі в багатьох регіонах.

Я хочу створити образ Cтак, щоб

B = C on top of A

де Cслід бути максимально прозорим. on top ofє нормальним шаром суперпозиції.

Так Cє якась різниця між Aі B. Якщо Aі Bоднакові, то Cповністю прозорі. Якщо Aі Bдуже відрізняються, то їх Cбуло б майже ідентично B.


На цю запитання є чудова відповідь на Stack Overflow, який використовує ImageMagick: stackoverflow.com/questions/5132749/…
AB

Відповіді:


23

Ви можете використовувати режим шару "різниця", щоб створити маску шару, і застосувати її до B так:

  1. Відкрийте обидва зображення у вигляді шарів, A знизу, B зверху
  2. У діалоговому вікні шару позначте режим шару В як "різницю". Тепер ви повинні бачити зображення в основному чорними - зображення однакові, кольоровими областями позначають різні області. Однак ці кольори не відповідають кольорам групи B, як вам потрібно
  3. Правка-> Копіювати видиме, щоб отримати копію обчисленого ефекту на B
  4. Дублюючий шар B, поверніть його режим назад на "Звичайний" (назвемо цей шар С)
  5. У меню Шари додайте маску шару до C (Layer-> Mask-> Add Layer Mask).
  6. Вибравши маску, вставте вміст, скопійований на кроці 3 (редагувати-> вставити).
  7. Прикріпіть вставлений вміст на маску шару (шар-> шар прив’язки)

Ось ви - зробіть Шари А і В невидимими, і ви повинні бути дуже близькими до того, що хочете. Подальші операції з маскою шару (я рекомендую використовувати Colors-> curve) можуть регулювати непрозорість / прозорість ділянок на шарі C.

оновлення Нещодавно я відповів на подібне запитання на Stackoverflow, де ОП хотів виконати завдання програмно (використовуючи Python + Python-imaging-library) - я опублікував повну програму з цього питання, і це може допомогти будь-кому зацікавлена ​​в цій відповіді.


On the layer's dialog, mark B's layer mode as "difference". Вибачте, що? Я переглядаю вікно інструменту "Шари", і якщо я клацну правою кнопкою миші на шар B, я не бачу нічого подібного layer mode. Найближче, що я знайшов, це Add Layer Mask, але я не думаю, що саме про це ви маєте на увазі. Використовуючи v2.8.22.
Адріан

при вибраному шарі режим шару можна вибрати в спадному меню вгорі діалогового вікна шарів, а не в меню правою кнопкою миші.
jsbueno

У мене є певна плутанина або проблеми з кроком 6 - це, здається, вставляє вміст у новий шар, навіть із вибраною "маскою C", створюючи четвертий шар під назвою "Плаваючий вибір (наклеєний шар)", який зміщений з вихідного положення - це те, як воно повинно виглядати?
Code Jockey

Це "плаваючий вибір", поки ви не "прикріпите" його до місця призначення (Ctrl-H). Переконайтеся, що маска активна, коли ви вставляєте (Ctrl-V), інакше кріплення може перейти в інше місце.
ксеноїд

5

Існує простий спосіб зробити це:

Відкрийте зображення у вигляді двох шарів, запустіть Фільтри - Анімація - Оптимізуйте (різниця), у вас має вийти одне й те саме зображення, яке тепер виготовлено з нижнього шару та розрізненого шару зверху.

Речі ускладнюються, лише якщо ви маєте часткову прозорість, оскільки фільтр її видаляє.
Ось такий спосіб, який я знайшов для цього випадку:

  • Видаліть Альфа-канал на обох шарах (дія знаходиться в контекстному меню)

Зображення отримають білий фон, але не хвилюйтеся, ми скасуємо його пізніше.

  • Фільтри - Анімація - Оптимізація (різниця)

Тепер у нас є різницевий шар з білим тлом у місцях часткової прозорості, але нам потрібні прозорі пікселі, тому ми приймемо форму розріз і скопіюємо зображення цієї форми з початкового верхнього шару. Переконайтеся, що вибраний новостворений розрізний шар і продовжуйте:

  • Шар - розмір шару до розміру зображення
  • Редагувати - копіювати (Ctrl + C)
  • Поверніться до вихідного зображення
  • Скасувати, Скасувати, щоб повернути прозорість до наших шарів
  • Редагувати - Вставити як - Новий шар
  • Альфа до вибору (у контекстному меню) на вклеєному шарі "diff"
  • Видаліть вставлений шар diff
  • Переконайтесь, що вибрано верхній шар і скопіюйте з нього (Ctrl + C)
  • Тепер у вас є diff, просто вставте його (Ctrl + V) і створіть з нього новий шар.

Звичайно, ніякої магії не відбувається, і частково прозорий верхній шар не змінить кольори або зменшить прозорість нижнього шару, тому це лише у випадках розширення, де змінені пікселі верхнього шару покривають нижній шар.


Метод PS jsbueno для мене не вийшов.


1

У GIMP є режим пензлика під назвою "Колір стирання". Застосовуючи цю пензлик, пофарбовану кольором X, на визначений піксель P1 створюється піксель P2 зі зниженим альфа-каналом, так як змішування P2 з пікселем із кольором X у звичайному режимі призводить до пікселя P1. Такий же ефект, застосований до вибраної області або цілого зображення, може бути досягнутий за допомогою дії "Колір до Альфи" .

Режим кисті також можна застосувати до "Інструменту клонування". У цьому випадку можна взяти колір з пікселів фонового зображення A і застосувати його до відповідних пікселів результативного зображення B. Зображення, що залишилося, є бажаним зображенням C.

Детально створення зображення C полягає в наступному:

  1. Покладіть зображення A і B як шари (A нижче B).
  2. Скопіюйте зображення B і назвіть його C. Поставте його між A і B. Сховати зображення B.
  3. Виберіть "Інструмент клонування". На панелі "Параметри інструмента" встановіть такі параметри: Режим: "Стерти колір"; Кисть: використовуйте гостру круглу пензлик ("Твердість 100") Розмір: зробіть пензлик більшим, щоб легко намалювати все зображення відразу.
  4. Виберіть шар та CTRL + у верхньому лівому пікселі, щоб вибрати місце, в якому буде клонуватись та запам'ятати його положення (для 100% збільшення воно буде (1,1), для 50% - (2,2) тощо).
  5. Тепер виберіть шар С і починайте малювати вгорі ліворуч і накрийте все зображення, не піднімаючи пензлик. Може здатися, що образ не змінюється. Але якщо ви заховаєте шар A, ви побачите, що шар C тепер містить потрібне зображення.
  6. Результат перевірки: Покажіть шар A і шар C. Змініть видимість шару B, щоб переконатися, що зображення виглядають однаково. (Ви також можете вибрати режим "Різниця" для шару B; у такому випадку ви повинні отримати абсолютно чорне зображення.)

Примітка. Цей метод працює як описано, якщо фонове зображення непрозоре. На прозорих частинах фонового зображення змішування C у верхній частині A виглядає відмінно від зображення B.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.