Uzyskaj różnicę między dwoma obrazami jako przezroczystym obrazem w GIMP

21

Mam dwa obrazy Ai Bktóre są podobne w wielu regionach.

Chcę stworzyć obraz C, aby

B = C on top of A

gdzie Cpowinno być jak najbardziej przejrzyste. on top ofto normalna superpozycja warstw.

CJest więc jakaś różnica między Ai B. Jeśli Ai Bsą identyczne, to Cjest całkowicie przezroczysty. Jeśli Ai Bsą bardzo różne, to ich Cbędzie prawie identyczna B.

cheesus więc przestań krzywdzić Monikę
źródło
Istnieje świetna odpowiedź na to pytanie na temat przepełnienia stosu, które korzysta z ImageMagick: stackoverflow.com/questions/5132749/…
AB

Odpowiedzi:

23

Możesz użyć trybu warstwy „różnica”, aby utworzyć maskę warstwy i zastosować ją do B w następujący sposób:

  1. Otwórz oba obrazy jako warstwy, A na dole, B na górze
  2. W oknie dialogowym warstwy zaznacz tryb warstwy B jako „różnicę”. Powinieneś teraz zobaczyć obraz głównie czarny, ponieważ obrazy są podobne, a kolorowe obszary oznaczają obszary, które są różne. Te kolory jednak nie będą pasować do kolorów B, jak chcesz
  3. Edycja-> Kopiuj widoczne, aby uzyskać kopię obliczonego efektu na B
  4. Zduplikuj warstwę B, zmień tryb z powrotem na „Normalny” (nazwijmy tę warstwę C)
  5. W menu Warstwy dodaj maskę warstwy do C (Warstwa-> Maska-> Dodaj maskę warstwy).
  6. Po zaznaczeniu maski wklej zawartość skopiowaną w kroku 3 (edycja-> wklej).
  7. Zakotwicz wklejoną zawartość na masce warstwy (warstwa-> Warstwa zakotwiczenia)

Proszę bardzo - uczyń warstwy A i B niewidocznymi, a powinieneś być bardzo blisko tego, co chcesz. Dalsze operacje na masce warstwy (zalecam użycie kolorów-> krzywa) mogą dostosować krycie / przezroczystość obszarów na warstwie C.

aktualizacja Niedawno odpowiedziałem na podobne pytanie do Stackoverflow, gdzie OP chciał wykonać zadanie programowo (za pomocą Python + biblioteka obrazowania Python) - zamieściłem pełny program na to pytanie i może być pomocny dla każdego zainteresowany tą odpowiedzią.

jsbueno
źródło
On the layer's dialog, mark B's layer mode as "difference". Przepraszam, co? Patrzę na okno narzędzia Warstwy i jeśli kliknę prawym przyciskiem myszy warstwę B, nie widzę niczego, co wygląda jak layer mode. Najbliższe znalazłem Add Layer Mask, ale nie sądzę, że o to ci chodzi. Korzystanie z wersji 2.8.22.
Adrian
po wybraniu warstwy tryb warstwy można wybrać w menu rozwijanym u góry okna dialogowego warstw, a nie z menu po kliknięciu prawym przyciskiem myszy.
jsbueno
Mam trochę zamieszania lub kłopotów z krokiem 6 - wydaje się, że wklejam zawartość do nowej warstwy, nawet z wybraną „maską C”, tworząc czwartą warstwę o nazwie „Floating Selection (Pasted Layer)”, która jest przesunięta z pierwotnej pozycji - czy tak to powinno wyglądać?
Code Jockey
Jest to „wybór swobodny”, dopóki nie „zakotwiczymy” go do miejsca docelowego (Ctrl-H). Upewnij się, że maska ​​jest aktywna podczas wklejania (Ctrl + V), w przeciwnym razie zakotwiczenie może pójść gdzie indziej.
ksenoid
5

Jest na to prosta metoda:

Otwórz obrazy jako dwie warstwy, uruchom Filtry - Animacja - Optymalizuj (Różnica), powinieneś uzyskać ten sam wynikowy obraz, który jest teraz wykonany z dolnej warstwy i warstwy różnicowej na niej.

Sprawy komplikują się tylko wtedy, gdy masz częściową przezroczystość, ponieważ filtr ją usuwa.
Oto obejście, które znalazłem w tym przypadku:

  • Usuń kanał alfa na obu warstwach (akcja znajduje się w menu kontekstowym)

Obrazy otrzymają białe tło, ale nie martw się, cofniemy je później.

  • Filtry - Animacja - Optymalizacja (Różnica)

Teraz mamy warstwę różnicową z białym tłem w miejscach częściowej przezroczystości, ale potrzebujemy tych pikseli, aby były przezroczyste, więc weźmiemy kształt różnicy i skopiujemy obraz tego kształtu z oryginalnej górnej warstwy. Upewnij się, że nowo wygenerowana warstwa różnicowa jest zaznaczona i kontynuuj:

  • Warstwa - warstwa do rozmiaru obrazu
  • Edycja - Kopiuj (Ctrl + C)
  • Wróć do oryginalnego obrazu
  • Cofnij, Cofnij, aby przywrócić przezroczystość naszym warstwom
  • Edycja - Wklej jako - Nowa warstwa
  • Alpha to Selection (w menu kontekstowym) na wklejonej warstwie różnicowej
  • Usuń wklejoną warstwę różnicową
  • Upewnij się, że wybrana jest górna warstwa i skopiuj z niej (Ctrl + C)
  • Teraz masz różnicę, po prostu Wklej (Ctrl + V) i utwórz z niej nową warstwę.

Oczywiście nie dzieje się żadna magia, a częściowo przezroczysta górna warstwa nie zmieni kolorów ani nie zmniejszy przezroczystości dolnej warstwy, więc dotyczy to tylko przypadków rozszerzenia, gdy zmienione piksele górnej warstwy zakrywają dolną warstwę.


Metoda PS jsbueno nie zadziałała dla mnie.

użytkownik
źródło
1

GIMP ma tryb pędzla o nazwie „Kasowanie kolorów”. Zastosowanie tego pędzla, pokolorowanego kolorem X, do zdefiniowania piksela P1 tworzy piksel P2 z obniżonym kanałem alfa, tak jak mieszanie P2 z pikselem z kolorem X w trybie normalnym daje piksel P1. Ten sam efekt, zastosowany do wybranego regionu lub całego obrazu, można uzyskać za pomocą akcji „Kolor do alfa” .

Tryb pędzla można również zastosować do „narzędzia klonowania”. W takim przypadku możliwe jest pobranie koloru z pikseli obrazu tła A i zastosowanie go do odpowiednich pikseli obrazu wynikowego B. Zdjęcie, które pozostało, jest pożądanym obrazem C.

Szczegółowo tworzenie obrazu C jest następujące:

  1. Umieść obrazy A i B jako warstwy (A poniżej B).
  2. Zduplikuj obraz B i nazwij go C. Umieść go między A i B. Ukryj obraz B.
  3. Wybierz „Narzędzie klonowania”. W okienku „Opcje narzędzi” ustaw następujące opcje: Tryb: „Usuń kolor”; Pędzel: użyj ostrego okrągłego pędzla („Twardość 100”). Rozmiar: powiększ pędzel, aby łatwo pomalować cały obraz na raz.
  4. Wybierz Warstwę i CTRL + na lewym górnym pikselu, aby wybrać miejsce, z którego chcesz sklonować i zapamiętać jego pozycję (dla 100% powiększenia będzie to (1,1), dla 50% będzie to (2,2) itd.).
  5. Teraz wybierz warstwę C i zacznij malować od lewego górnego rogu i zakryj cały obraz bez podnoszenia pędzla. Może się wydawać, że obraz się nie zmienia. Ale jeśli ukryjesz warstwę A, zobaczysz, że warstwa C zawiera teraz pożądany obraz.
  6. Sprawdź wynik: Pokaż warstwę A i warstwę C. Przełącz widoczność warstwy B, aby upewnić się, że obrazy wyglądają tak samo. (Możesz również wybrać tryb „Różnica” dla warstwy B, w takim przypadku powinieneś uzyskać absolutnie czarny obraz.)

Uwaga: Ta metoda działa zgodnie z opisem, jeśli obraz w tle jest nieprzejrzysty. Na przezroczystych częściach obrazu tła mieszanie C na górze A wygląda inaczej niż na obrazku B.

użytkownik2367602
źródło