Vor anderthalb Jahren stöberte ich im Blog eines der erfolgreichen russischen Porträtfotografen mit einem erkennbaren Stil, und der Gedanke kam mir in den Sinn, warum nicht einfach die Kamera auf ein Stativ stellen, die Lichter einmal ins Studio stellen, alle Kameraeinstellungen vornehmen und die automatische Fotoverarbeitung mit dem Vorgegebenen durchführen Profil? Die Blog-Fotos waren großartig, aber sehr ähnlich.

Da ich zu Leuten gehöre, die nicht wissen, wie man Bilder am Telefon macht und Kameras mag, hat mir die Idee sehr gut gefallen. Ja, ich habe alle Arten von Fotokabinen und Fotoständern gesehen, aber die Entwickler dieser Geräte haben es nicht einmal geschafft, normale Farben herzustellen. Ich entschied, dass dies daran lag, dass die Entwickler die Fotografie nicht verstanden.
Damit bei dieser Idee nicht dasselbe passiert wie bei den anderen (die sich im Anfangsstadium nicht rührten oder ins Stocken gerieten). Ich entschied, dass das Wichtigste darin bestand, alles als Ganzes zum Laufen zu bringen und keine separate Komponente zu polieren, um zu glänzen. Und da ich nach der hauptberuflichen Vollzeitarbeit nur sehr wenig Entwicklungszeit habe, habe ich 1-2 Stunden maximale Kraft und am Wochenende etwas mehr. Sie sollten versuchen, nichts Neues zu lernen und das verfügbare Wissen optimal zu nutzen.
Ich möchte in diesem Artikel erzählen, welche Probleme ich auf meinem Weg hatte und wie ich sie gelöst habe.
Eine kleine Erklärung der Aufnahmebedingungen und -ausrüstung: Ich habe nur Kameras mit dem APS-C-Sensor-Minimum und professionellen Studioblitzen in Betracht gezogen. Dies ist die einzige Möglichkeit, zu jeder Tages- und Nachtzeit qualitativ hochwertige Bilder zu garantieren.
Alle Menschen unterschiedlicher Statur
Das erste, was mich überraschte, als ich die Kamera auf ein Stativ stellte, war, dass es nicht so einfach ist, in den Rahmen zu passen und sogar eine gute Komposition zu haben. Wenn Sie sich von und zur Kamera bewegen, verschlechtert sich auch die gesamte Komposition, wenn sie für eine bestimmte Person, die an einem bestimmten Punkt steht, richtig platziert ist. Ja, Sie können einen Stuhl setzen und sagen, dass Sie auf einem Stuhl sitzen müssen, aber es wird nicht sehr interessant sein. Sie können die Fotos immer noch zuschneiden, aber dann verschlechtert sich die Qualität erheblich. Nun, der letzte Weg, den ich gewählt habe, ist, die Kamera automatisch zielen zu lassen.
Hier gibt es auch 2 Möglichkeiten. Richtig - die optische Achse ist immer horizontal, die Kamera bewegt sich auf und ab und es ist einfacher zu implementieren - passen Sie die Position der Kamera mit Neigungen an. In diesem Fall kommt es zu vielversprechenden Verzerrungen, die jedoch während der Verarbeitung recht gut korrigiert werden, wenn Sie sich an den Kamerawinkel erinnern.
Da ich praktisch keine Erfahrung mit der Herstellung von Eisengeräten hatte, versuchte ich, etwas so gebrauchsfertiges wie möglich zu finden. Ich fand mehrere Geräte für Panoramaaufnahmen im Bereich von 1000 US-Dollar, die es ermöglichten, Neigungen und Drehungen manuell zu steuern und Panoramen automatisch aufzunehmen. Aber es war unmöglich, sie von einem Computer aus zu steuern. Es gibt auch einige Geräte zur Steuerung von Videokameras, zum Beispiel zum Aufnehmen von Kamerakranen. Gute Geräte mit Hinweisen auf digitale Steuerung sind sehr teuer und es ist völlig unklar, ob eine API verfügbar ist. Infolgedessen habe ich hier ein solches Gerät auf einer beliebten Seite gefunden:

Von der Elektronik gibt es nichts. Vor einem Jahr war nur die Version mit Kollektormotoren (mit integrierten Getrieben) erhältlich, die ich gekauft habe. Es war notwendig, dieses Ding irgendwie von einem Computer aus zu verwalten. Auf dem Forum unseres Instituts schlugen sie vor, dass die Verwendung des Arduino der günstigste Weg sei. Also habe ich es getan. Ich habe mir ein anderes Motorschild gekauft, da die Motoren dort mit 12 Volt betrieben werden. Nachdem ich versucht hatte, dies einzuschalten, spürte ich alle Schmerzen, die Kollektormotoren einer Person bereiten können - es ist nicht nur unmöglich, sie in einem bestimmten Winkel zu drehen, es ist auch nicht einfach, sich nur ein wenig zu drehen. Mein erster Gedanke war, dort einen Schrittmotor anzubringen. Ich habe sehr lange nach einem Schrittmotor gesucht, der in diese Plattform passt, anstatt in den, der dort stand, aber nicht gefunden werden konnte. Dann begann er darüber nachzudenken, wie man das Servo hineinschrauben kann, kaufte es sogar, konnte aber auch nichts Zuverlässiges finden. Der nächste Gedanke war, den Beschleunigungsmesser an der Plattform zu befestigen und die Plattform allmählich in einen vorbestimmten Winkel zu drehen. Ich habe den Beschleunigungsmesser mit einem Gyroskop und einem Kompass verschraubt, aber er war sehr fehlerhaft und ich habe diese Idee auch abgelehnt (einen Monat später wurde mir klar, dass das chinesische Netzteil für die Kamera für die Störungen des Beschleunigungsmessers verantwortlich war, von denen es keine schlechten Störungen gab). Und dann habe ich versehentlich gelesen, wie das Servo angeordnet ist. Ich mochte die Idee, einen Widerstand zu schrauben, um den Winkel zu messen, aber ich musste ihn irgendwie an eine Riemenscheibe anschließen. Ich musste zum ersten Mal in meinem Leben FreeCAD lernen und 3D-Druck verwenden. Kurz gesagt, nach der Verarbeitung der Datei konnte alles gesammelt werden.

Ich musste mich mit dem Programm für Arduino quälen, um einen bestimmten Winkel einzustellen, da die Kamera auf der Plattform ein großes Trägheitsmoment hat und nicht sofort stoppt. Am Ende stellte sich jedoch heraus, dass der Winkel mit einer Genauigkeit von etwa 1 Grad eingestellt wurde.
Nun zum automatischen Zielen - die Idee ist einfach, das Gesicht oben auf dem Rahmen zu machen. Sie müssen also nur ein Gesicht finden und die Plattform in jedem Bild aus der Live-Ansicht anpassen. Ich wusste nichts über das Identifizieren von Gesichtern, daher habe ich das Tutorial mit den Haar-Zeichen (Haarkaskaden) verwendet. Ich fand heraus, dass diese Methode für Einzelpersonen nicht funktioniert. Es findet auf jedem Frame eine Menge Müll neben dem, was benötigt wird, und verbraucht viel Prozessorzeit. Dann fand er ein weiteres Beispiel für die Verwendung neuronaler Netze über OpenCV. Neuronale Netze funktionieren einwandfrei! Aber ich war froh, bis ich anfing, Fotos parallel zu verarbeiten. Und Linux begann irgendwie, Prozessorzeit zwischen dem Plattformverwaltungsthread und den Fotoverarbeitungsprozessen zuzuweisen. Er ging den Weg des geringsten Widerstands - er fing an, Gesichter auf der Grafikkarte zu machen. Alles begann perfekt zu funktionieren.
Trotz der Tatsache, dass ich mich nicht mit den Details befassen wollte, führte ich dennoch einen kleinen Test durch. Und ich habe den Intel Neural Compute Stick 2 gekauft - ich habe versucht, statt einer Grafikkarte darauf zu zählen. Meine Ergebnisse sind ungefähr gleich (Ziffern - Verarbeitungszeit für ein Bild mit einer Größe von 800 x 533) -
- Core i5 9400F - 59
- Core i7 7500U - 108
- Core i7 3770-110
- GeForce GTX 1060 6Gb - 154
- GeForce GTX 1050 2 GB - 199
- Core i7 3770, Ubuntu 18.04 mit OpenCV von OpenVINO - 67
- Intel Neural Compute Stick 2, Ubuntu 18.04 mit OpenCV von OpenVINO - 349
Es stellte sich heraus, dass es ausreichte, Bilder der Größe 300 auf der kleineren Seite zu verarbeiten, damit das Gesicht einer Person, die in voller Höhe im Rahmen stand, zuverlässig lokalisiert wurde. Funktioniert bei solchen Bildern schneller. Ich verwende derzeit die GeForce GTX 1050. Ich bin sicher, dass sie erheblich verbessert werden kann, aber jetzt gibt es ein viel ernsthafteres Problem.
Ausstellung
Es ist kein Geheimnis, dass das Foto korrekt belichtet werden muss. In meinem Fall ist dies umso wichtiger, als keine Retusche erfolgt. Damit Hautfehler weniger auffallen, sollte das Foto so hell wie möglich sein, kurz vor einer Überbelichtung, jedoch ohne Überbelichtung.
Die Helligkeit des endgültigen Bildes bei Blitzaufnahmen hängt von folgenden Parametern ab:
- Blitzleistung
- Die Entfernung vom Blitz zum Motiv
- Blende
- ISO-Wert
- Optionen beim Konvertieren von RAW
Nachdem der Frame erstellt wurde, können wir nur den letzten Parameter ändern. Das Ändern über einen weiten Bereich ist jedoch nicht sehr gut, da bei einer großen positiven Korrektur der Belichtung des dunklen Rahmens Rauschen auftritt und im umgekehrten Fall in hellen Bereichen Übersteuerungen auftreten können.
Das TTL-System (Through The Lens) wird verwendet, um die Belichtung während der Blitzaufnahme automatisch zu bestimmen. Es funktioniert wie folgt:
- Der Blitz macht eine Reihe von kleinen Blitzen.
- Zu diesem Zeitpunkt misst die Kamera die Belichtung, fokussiert und misst die Entfernung zum Fokusmotiv.
- Basierend auf diesen Daten wird die erforderliche Blitzleistung berechnet.
- Der Blitz wird erneut ausgelöst und zu diesem Zeitpunkt wird der Verschluss geöffnet und ein Bild aufgenommen.
Dieses System funktioniert hervorragend, wenn Sie die Bilder nach der Aufnahme manuell anpassen können. Aber um das fertige Ergebnis zu erhalten, funktioniert es unbefriedigend. Wenn das - ich habe den Profoto-Blitz für> 100t.r.
Ich habe bekannte Bedingungen, Blitze sollten die ganze Zeit an einem Ort stehen. Sie können die Belichtung also einfach anhand der Position einer Person im Raum berechnen. Das Problem entsteht - wie kann man die Position einer Person bestimmen?
Die erste Idee bestand darin, die Entfernung zum Fokussierobjekt von EXIF zu nehmen und für das erste Bild eine große Belichtungskorrektur im RAV-Wandler durchzuführen und für das nächste die Blitzleistung oder Blende anzupassen. Es ist sehr wahrscheinlich, dass eine Person viele Aufnahmen macht und an einem Ort steht. Es stellte sich jedoch heraus, dass die Entfernung in EXIF sehr diskret geschrieben ist. Je weiter das Objekt entfernt ist, desto größer ist der Schritt. Darüber hinaus nimmt für verschiedene Objektive der Abstand zum Objekt unterschiedliche Wertesätze an, und einige messen ihn überhaupt nicht.
Die nächste Idee ist die Verwendung eines Ultraschall-Entfernungsmessers. Dieses Gerät misst die Entfernung ziemlich genau, jedoch nur bis zu einem Meter und nur, wenn eine Person nicht in etwas gekleidet ist, das Schallwellen absorbiert. Wenn Sie den Entfernungsmesser auf das Servo setzen und es wie ein Radar drehen, wird es etwas besser - es misst bis zu 1,5 Meter, was ebenfalls sehr klein ist (die Leute bekommen das Beste, wenn Sie sie aus einer Entfernung von 2 Metern abschießen).
Natürlich wusste ich, dass selbst preiswerte Telefone bereits Tiefenkarten erstellen und den Hintergrund selektiv verwischen. Aber ich wollte mich nicht darauf einlassen. Leider gab es keine Wahl. Zuerst wollte ich 2 Webcams kaufen, kombinieren und die Verschiebungskarte mit OpenCV lesen. Aber zum Glück habe ich viele Tiefenkameras gefunden, die dies bereits in sich selbst tun. Ich habe mich für Intel D435 entschieden (wenn jemand eines kaufen möchte, wird es unter Linux im Hauptkernel-Zweig nicht unterstützt. Es gibt Patches für Debian und Ubuntu im librealsense-Repository. Ich musste sie für Fedora reparieren).

Sobald ich alles angeschlossen hatte, schrieb ich ein Testprogramm, das den Abstand zu einem kleinen Quadrat in der Mitte misst. Dieser Code funktioniert also immer noch. Und es funktioniert ziemlich gut. Natürlich müssen Sie mit der RGB-Kamera nach einem Gesicht im Bild suchen und den Abstand zwischen Blitz und Gesicht berechnen. Aber das sind Pläne für die Zukunft.
Entsprechend der Position einer Person im Raum ist es erforderlich, die Korrektur der Exposition zu berechnen. Zuerst habe ich mir eine Formel ausgedacht, die nur für eine Punktlichtquelle im Vakuum funktioniert (tatsächlich war das Fehlen reflektierender Wände und Decken von Bedeutung). Aber dann machte er nur eine Reihe von Aufnahmen mit einer konstanten Blitzleistung und stellte die Belichtung in einem Equalizer mit dem Auge ein. Es stellte sich heraus, dass die Korrektur fast linear von der Entfernung abhing. Ich benutze das Rembrandt-Beleuchtungsschema, ein Blitz mit einer Softbox befindet sich in der Ebene der Kamera.
Bei der Belichtungskorrektur muss jedoch etwas unternommen werden. Idealerweise müssen Sie die Blitzleistung ändern, aber bisher ändern sich meine Membran und meine Additive <1 / 6Ev - im Rav-Konverter. Meine Flash-Synchronisierung kann über Bluetooth über die Telefon-App gesteuert werden. In Zukunft möchte ich herausfinden, wie das Protokoll dort angeordnet ist, und die Leistung der Blitze ändern.
Hier ist ein Vergleich der konstanten Blitzleistung mit TTL und meiner Methode. Es funktioniert viel stabiler und genauer TTL:

Vielfalt
Wenn ein Mädchen (oder sogar ein Mann) zu einem Fotoshooting zum Fotografen kommt, möchte sie (oder er) normalerweise ein Foto eines anderen Plans, eines größeren, bei dem nur ihr Gesicht und allgemeiner in voller Länge oder hüfthoch sind. Nicht jeder weiß es, aber das Beste ist, dass der Plan durch Ändern der Brennweite des Objektivs geändert wird. Das heißt, eine Person steht immer in einem Abstand von beispielsweise 2 Metern. Wenn wir in voller Höhe schießen müssen, wickeln wir das 35-mm-Objektiv ein, wenn nur das Gesicht 135 mm beträgt und wenn es hüfthoch ist, dann 50 mm oder 85 mm. Nun, oder ändern Sie nicht die Objektive und stellen Sie das Objektiv mit Zoom ein. Dem Benutzer anzubieten, den Zoom mit den Händen an der Kamera zu drehen, die auf einer beweglichen Plattform steht und ein Kabelbündel durchbricht, klingt nicht sehr gut. Also kaufte ich eine Packung Ersatzteile bei aliexpress, nahm einen Servoantrieb, der für mich zur Steuerung der Plattform nicht nützlich war, und tat dies:

Und so funktioniert es:
Die Ergebnisse des ersten Tests in einem Fotostudio, zunächst wollte ich sehen, wie vielfältig es wäre, Bilder aufzunehmen, nichts zu bewegen oder während der Aufnahme neu zu konfigurieren:

Video verarbeiten:
Ergebnis
Dies sind einige der besten Aufnahmen, die gemacht wurden:

Wie jeder um Erlaubnis zur Veröffentlichung gebeten hat, wenn Sie sich selbst erkennen und das Foto entfernen möchten - schreiben Sie mir
Warum habe ich das getan? Dies ist eine Sache, die noch nicht passiert ist, zumindest habe ich so etwas nicht gefunden. Potenziell nützlich - jetzt gibt es viele Spezialisten wie Psychologen, Business-Trainer, Sporttrainer und Friseure, die ihre Dienste über Blogs verkaufen. Sie benötigen viele Fotos und genau die Form, in der sie wollen, nicht den Fotografen. Manche Leute mögen es einfach nicht, wenn ein Fremder (Fotograf) sie beim Fotografieren ansieht. Am einfachsten ist die großartige Unterhaltung für Firmenveranstaltungen, Ausstellungen und andere Veranstaltungen.
Ich habe den Softwareteil, die Verarbeitung von Fotos und die Benutzerinteraktion nicht beschrieben, da bereits so viel Text vorhanden ist, dass ich den zweiten Teil später schreiben werde. Diese Punkte sind bereits ziemlich gut ausgearbeitet, so dass Personen, die mit der Programmierung nicht vertraut sind, das System verwenden können.