PDA

Vollständige Version anzeigen : Photoshop Kanal/Auswahl der dominierenden Farbe


Aaron
15.10.14, 11:58
Hallo,
ich bräuchte Hilfe bei der Frage, wie ich einen neuen Kanal erstellen kann, der nur dort gefärbt ist, wo im Original-CYMK-Bild die Farbe cyan dominiert.
Jeder Pixel hat Farbwerte, z. B. C:16, Y:19, M:27, K:12. Und ich möchte jetzt eine Auswahl der Pixel haben, wo der C-Wert größer als die anderen Werte ist. Im obigen Beispiel ist der Magenta Wert am größten, der Pixel würde also nicht gewählt.
Auswahl->Farbbereich auswählen ist hierfür zu unpräzise.

Kennt ihr da eine Möglichkeit?

heikehk
15.10.14, 14:27
Hallo Aaron.
Also ehrlich gesagt tue ich mir gerade ein wenig schwer zu verstehen, was genau du machen möchtest. Meinst du, dass sich das mit Hilfe einen Screenshots irgendwie klarer visualisieren lässt?
Gruß
Heike

stefu
15.10.14, 14:46
Mir ist definitiv keine Möglichkeit bekannt, dies umzusetzen.

Ich wüsste auch nicht, wo ich da ansetzen sollte, bei internen Werkzeugen oder Funktionen.
Im Scripting wäre es vielleicht denkbar.

Für mich klingt es nach einem wissenschaftlichen Ansatz, vielleicht gibt es hier schon entsprechende Scripts in diversen Fachbereichen, so dass Du das Rad nicht neu erfinden musst.

Lieben Gruß
Stephan

Aaron
15.10.14, 15:34
Hallo Aaron.
Also ehrlich gesagt tue ich mir gerade ein wenig schwer zu verstehen, was genau du machen möchtest. Meinst du, dass sich das mit Hilfe einen Screenshots irgendwie klarer visualisieren lässt?

Hallo Heike, ist eigentlich ganz simpel: Wenn du mit der Pipette über das Bild fährst, werden dir unter Info die Farbwerte angezeigt, z. B. bei rgb: Rot, Grün und Blau. Und ich möchte jetzt alle Pixel auswählen, wo der Wert für Blau (oder cyan bei CYMK) größer ist als der für Gelb und Rot.

@stefu: Ja, mit einem Script geht es wahrscheinlich sehr einfach. Das werde ich dann wohl angehen müssen, wenn es keinen einfacheren Weg gibt.

heikehk
15.10.14, 15:47
Hast du mal so ein Bild? Für was brauchst du das?
Ich bin grad echt nicht in der Lage eine Idee zu entwickeln.
Vielleicht ließe sich da mit einer kanalberechnung was machen.
In den kanälen ist ja alles schwarz weiß, wo Farbe ist / bzw. Nicht.
Vielleicht könnte man darüber was hinbekommen.

Was willst du denn mit der ermittelten Auswahl anstellen?
Gruß
Heike

virra
15.10.14, 18:54
Du müsstest mal ermitteln, welcher Farbwert an sich der höchste in deinem Dokument ist.

Um z.B. alle Flächen, die mehr als 50% c haben zu ermitteln, würde ich das so machen: Fläche in neutralem Grau anlegen (RGB: 128/128/128).
Nun den Inhalt des c-Kanals kopieren. Als neue Ebene oberhalb der grauen Fläche einsetzen. Ebene auf Modus DIFFERENZ stellen. mit Befehl-shift-E eine Zusammenfassung der Ebenen machen und den Kram in den neuen c-kanal einsetzen, invertieren.

Allerdings kann es ja sein, dass du z.B. irgendwo 90% y hast, dann müsste deine Graufläche eben ein 90%iges Grau haben.

stefu
15.10.14, 19:30
Die Auswahl soll doch pro Pixel in der Analyse erfolgen.
Bei jedem Pixel soll geschaut werden, ob Cyan überwiegt.

virra
15.10.14, 23:35
Darf ich mal fragen, wozu man so’n Killefitt benötigt?

stefu
16.10.14, 12:22
Die einzig sinnvolle Anwendungsmöglichkeit, wäre in wissenschaftlichen Bereichen zu finden, denke ich.

hydro
16.10.14, 15:24
Darf ich mal fragen, wozu man so’n Killefitt benötigt?

Off top
Was ist noch gleich der Unterschied zwischen killefitt, fissematenten, Tinnef und Sperenzchen? Und wie kriegt man das in den falschen Kanal?

Aaron
16.10.14, 18:19
Wofür ich den Killefitt brauche? Ganz einfach: Stellt euch einen Buchscan vor: Sowohl die Buchseite wie auch die Fläche daneben ist weiß-gräulich. Möchte ich jetzt die Buchseite freistellen, kann ich ausnutzen, dass sie leicht vergilbt ist. Anders als im Rest des Scans überwiegt gelb hier die anderen Töne.
Also, überall dort, wo man etwas auswählen möchte, was sich nur durch einen leichten Farbstich von anderen Bereichen unterscheidet, kann das nützlich sein.

stefu
16.10.14, 18:25
Hm.
Das verwirrt mich nun komplett.

Bei einem Buchscan unterscheidet sich die Seite, wie Du richtig sagst aufgrund des z. B. vergilbt sein vom Rest. Insofern wäre die Auswahl doch auch so einfach möglich ohne solch einen Aufwand — zumal sich der Scan meistens so gut abhebt, dass selbst die Automatiken kaum Probleme haben.

Und PS hat doch wirklich viele Freistellungsmöglichkeiten an Bord.
Etwas so anzugehen finde ich kurios.

Doch wer weiß.
Vielleicht hast Du da ein Feature im Sinn, was wirklich noch fehlt.
Ich kann es mir zwar nicht vorstellen, doch: so what?

virra
16.10.14, 19:25
Hm. Also ich nutze Photoshop seit Version 3.0 und habe noch niemals eine Verwendung für so eine Idee gehabt. Mit Scans ist das wie mit Freisteller-Fotos: Schlampt man bei der Erstellung muss man viel Schmalz investieren und hat dann trotzdem nur die b-Variante.

Ich hatte ja vermutet, dass du die Funktion für irgendein abgefahrenes, abstraktes Kunstprojekt nutzen willst, aber das – öh – also – hm, nicht böse sein, aber das ist echt profan.

Kleiner Tipp: Wenn du im Prinzip einen Unterschied hast, der groß genug zur sauberen Unterscheidung ist, kannst du den per Gradationsebene verstärken, um dann über Kanäle freizustellen. Die Hilfsebene schmeißt du nachher weg. Bei einem Buch biste aber mit dem Pfadwerkzueg bestimmt schneller und besser zu Wege.

Aaron
17.10.14, 01:14
Hm. Also ich nutze Photoshop seit Version 3.0 und habe noch niemals eine Verwendung für so eine Idee gehabt. Mit Scans ist das wie mit Freisteller-Fotos: Schlampt man bei der Erstellung muss man viel Schmalz investieren und hat dann trotzdem nur die b-Variante.
Ganz exakt! Und wenn die Scans zu einer Zeit angefertigt wurden, als man damit noch nicht befasst war, muss man jetzt solche Überlegungen anstellen.

Kleiner Tipp: Wenn du im Prinzip einen Unterschied hast, der groß genug zur sauberen Unterscheidung ist, kannst du den per Gradationsebene verstärken, um dann über Kanäle freizustellen. Die Hilfsebene schmeißt du nachher weg. Bei einem Buch biste aber mit dem Pfadwerkzueg bestimmt schneller und besser zu Wege.
Da hast du im Grunde recht, nur sind es ein paar tausend Scans, die in der Ausleuchtung sehr unterschiedlich sind. Das einzig gemeinsame ist der gelbe Farbstich, der mal stark und mal sehr gering ausgeprägt ist. Wegen der großen Anzahl soll das ganze natürlich automatisiert ablaufen. Wenn ich mir Dateien einzeln vornehme, war das natürlich immer möglich, das ganze zu trennen, aber dann kann ich es auch per Hand ausschneiden. Eine statische Tonwertkorrektur bringt wegen der Schwankungen nichts, zudem gibt es auch sehr dunkle Bildteile, wo gelb auch deutlich ausgeprägt ist (Gelb ist über das ganze Bild in etwa gleichmäßig ausgeprägt.).


Bei einem Buchscan unterscheidet sich die Seite, wie Du richtig sagst aufgrund des z. B. vergilbt sein vom Rest. Insofern wäre die Auswahl doch auch so einfach möglich ohne solch einen Aufwand — zumal sich der Scan meistens so gut abhebt, dass selbst die Automatiken kaum Probleme haben.

Und PS hat doch wirklich viele Freistellungsmöglichkeiten an Bord.

Aber wenn der Scandienstleister es so gescannt hat, dass neben dem Buch helle Streifen auftauchen, die die gleiche Helligkeit wie die Buchseite hat (nur dass da cyan dominiert, statt gelb. In Graustufen würde es aber gar keinen Unterschied mehr geben), dann hat die Automatik ein Problem. Nur zum Verständnis: Es geht um tausende Scans und die Automatik funktioniert auch bei ca. 50 %. Damit bleiben aber immer noch tausende, die ich nicht mit dem Pfadwerzeug angehen möchte.

Ein Script scheint mir hier die einzige Lösung. Ich habe jetzt mal eines geschrieben, bei größeren Dateien bricht es aber noch ab und läuft viel zu langsam.
Wenn ich es korrigiert habe, poste ich noch einmal eine Version. Da ich aber keinen Schimmer von jsx habe, freue ich mich auch über Anmerkungen dazu.


#target photoshop
var docAktuell = app.activeDocument;

var docWidth = docAktuell.width;
var docHeight = docAktuell.height;

function selectYellow(){
for (var i = 1; i < docHeight; i++)
{
var colorSamplerRef = docAktuell.colorSamplers.add([UnitValue(i+" pixels") , UnitValue(0+" pixels")]);

for (var j = 1; j < docWidth; j++)
{
var pixelLoc = [UnitValue(i+" pixels") , UnitValue(j+" pixels")];

colorSamplerRef.move(pixelLoc);
var currentColor = colorSamplerRef.color;

var magentaVal = (currentColor.cmyk.magenta);
var cyanVal = Math.round(currentColor.cmyk.cyan);
var yellowVal = Math.round(currentColor.cmyk.yellow);
var blackVal = Math.round(currentColor.cmyk.black);

if( yellowVal > magentaVal &&
yellowVal > cyanVal &&
yellowVal > blackVal)
{
var selectRegion = Array(Array(i,j),Array(i,j+1),Array(i+1,j+1),Array (i+1,j));

app.activeDocument.selection.select(selectRegion,S electionType.EXTEND,0,false);
}
}
app.activeDocument.colorSamplers.removeAll();
}
}
selectYellow();

heikehk
17.10.14, 08:16
Liest sich momentan logisch. Aber unter Umständen ist eine Selektion bei großen Dokumenten aufgrund der pixelmaße dann zu viel. Unter Umständen gibt es da Restriktionen für die Zähler. Wenn du Pixel für Pixel analysierst, dann kann das durchaus dauern... Eine bessere Idee Für eine Script-Lösung hab ich allerdings gerade nicht.

Was genau willst du denn mit den Seiten dann machen?
Ich hãtte eher versucht, dass ich die Seiten auf schwarz weiß stelle und zwar so, dass die gelblichen und Cyan ähnlichen Farben weiß werden und der Rest tiefschwarz. Dann hättest du ja auch deine Maske. Das dann umgedreht und es wird nurnoch der Seiteneingang eingeblendet und die Seite verschwindet.

Dann die Seiten auf ein Dokument platzieren, dass die gewünschte Größe hat.
Falls nötig evtl. Die Seiten trennen, was links und was rechts ausgerichtet werden muss.

Ohne beispielseiten ist das aber schwer zu prüfen, ob das geht.

Gruß
Heike

stefu
17.10.14, 13:23
In Graustufen würde es aber gar keinen Unterschied mehr geben
Dann würde auch Dein Script nicht mehr funktionieren ;)

Ich kann zwar in etwa nachvollziehen, wo das Problem liegt, doch wird es immer auch auf Handarbeit hinauslaufen. 50%-Automatik ist ein recht guter Wert, den man bestimmt noch etwas optimieren könnte und der auf 60-70% steigern könnte.