Satu setengah tahun yang lalu, saya menjelajahi blog dari salah satu fotografer potret Rusia yang sukses dengan gaya yang dapat dikenali, dan pemikiran itu merayap di kepala saya, mengapa tidak hanya meletakkan kamera di atas tripod, meletakkan lampu di studio sekali, mengatur semua pengaturan kamera dan melakukan pemrosesan foto otomatis dengan yang diberikan profil? Foto-foto blog itu bagus, tetapi sangat mirip satu sama lain.

Karena saya milik orang yang tidak tahu cara mengambil gambar di telepon dan suka kamera, saya sangat menyukai ide itu. Ya, saya melihat semua jenis photo booth dan photo stand, tetapi para pengembang perangkat ini bahkan belum menguasai pembuatan warna normal. Saya memutuskan bahwa ini karena pengembang tidak mengerti fotografi.
Sehingga dengan ide ini hal yang sama tidak terjadi seperti dengan yang lain (yang tidak bergeming atau terhenti pada tahap awal). Saya memutuskan bahwa hal yang paling penting adalah membuat semuanya berfungsi secara keseluruhan, dan tidak memoles beberapa komponen terpisah untuk bersinar. Dan karena saya memiliki waktu pengembangan yang sangat sedikit, setelah pekerjaan penuh waktu utama, saya memiliki kekuatan maksimum 1-2 jam, dan sedikit lebih banyak pada akhir pekan, Anda harus mencoba untuk tidak mempelajari sesuatu yang baru, manfaatkan pengetahuan yang tersedia.
Saya ingin memberi tahu di artikel ini masalah apa yang saya hadapi dan bagaimana saya menyelesaikannya.
Sedikit penjelasan tentang kondisi dan peralatan pemotretan: Saya menganggap hanya kamera dengan sensor minimum APS-C dan studio profesional berkedip, satu-satunya cara untuk menjamin gambar berkualitas tinggi kapan saja, siang atau malam hari.
Semua orang bertubuh berbeda
Hal pertama yang saya kaget ketika menempatkan kamera pada tripod adalah tidak mudah masuk ke dalam bingkai dan bahkan memiliki komposisi yang baik. Saat Anda bergerak dari dan ke kamera, seluruh komposisi juga akan memburuk jika ditempatkan dengan benar untuk orang tertentu yang berdiri di titik tertentu. Ya, Anda dapat meletakkan kursi dan mengatakan bahwa Anda perlu duduk di kursi, tetapi itu tidak akan sangat menarik. Anda masih dapat memotong foto, tetapi kualitasnya akan sangat menurun. Nah, cara terakhir yang saya pilih adalah membuat kamera membidik secara otomatis.
Ada juga 2 opsi di sini. Benar - sumbu optik selalu horisontal, kamera bergeser ke atas dan ke bawah, dan lebih mudah diterapkan - sesuaikan posisi kamera dengan miring. Dalam hal ini, akan ada distorsi yang menjanjikan, tetapi mereka cukup baik diperbaiki selama pemrosesan jika Anda ingat sudut kamera.
Karena saya praktis tidak memiliki pengalaman dalam pembuatan segala jenis perangkat besi, saya mencoba menemukan sesuatu yang siap digunakan. Saya menemukan beberapa perangkat untuk pemotretan panorama dalam kisaran $ 1000, yang semuanya memungkinkan untuk mengontrol kemiringan dan belokan secara manual, serta secara otomatis memotret panorama. Tetapi tidak mungkin untuk mengendalikan mereka dari komputer. Ada juga beberapa perangkat untuk mengendalikan kamera video, untuk mengambil gambar dari derek kamera, misalnya. Perangkat bagus yang memiliki petunjuk kontrol digital sangat mahal, dan sama sekali tidak jelas apakah ada API yang tersedia. Akibatnya, saya menemukan perangkat semacam ini di situs populer:

Dari elektronik tidak ada apa-apa. Setahun yang lalu, hanya versi dengan mesin kolektor (dengan gearbox terintegrasi) yang tersedia, yang saya beli. Itu perlu entah bagaimana mengelola hal ini dari komputer. Di forum lembaga kami, mereka menyarankan bahwa cara yang paling terjangkau adalah dengan menggunakan Arduino. Jadi saya lakukan. Saya membeli pelindung motor lain, karena mesin di sana ditenagai oleh 12 volt. Setelah saya mencoba untuk mengaktifkannya, saya merasakan semua rasa sakit yang dapat ditimbulkan oleh motor pengumpul kepada seseorang - mereka tidak hanya mustahil untuk berputar pada sudut tertentu, hanya "memutar sedikit" juga tidak mudah. Pikiran pertama saya adalah meletakkan motor stepper di sana. Untuk waktu yang sangat lama saya mencari motor stepper yang cocok dengan platform ini daripada yang berdiri di sana, tetapi tidak dapat menemukannya. Kemudian ia mulai berpikir tentang bagaimana Anda dapat mengacaukan servo ke dalamnya, bahkan membelinya, tetapi juga tidak dapat menemukan sesuatu yang dapat diandalkan. Pikiran berikutnya adalah mengencangkan accelerometer ke platform dan secara bertahap memutar platform ke sudut yang telah ditentukan. Saya mengacaukan accelerometer dengan giroskop dan kompas, tetapi sangat buggy dan saya juga menolak ide ini (sebulan kemudian saya menyadari bahwa catu daya China untuk kamera disalahkan atas gangguan akselerometer, yang darinya tidak ada gangguan buruk). Dan kemudian saya tidak sengaja membaca bagaimana pengaturan servo. Saya menyukai gagasan memasang resistor untuk mengukur sudut, tetapi saya harus menghubungkannya dengan katrol. Saya harus belajar FreeCAD dan menggunakan pencetakan 3D untuk pertama kalinya dalam hidup saya. Singkatnya, setelah memproses file, semuanya bisa dikumpulkan.

Saya harus menyiksa diri sendiri dengan program untuk Arduino untuk mengatur sudut yang diberikan, karena kamera pada platform memiliki momen inersia yang besar dan tidak berhenti dengan segera. Namun pada akhirnya, ternyata mengatur sudut dengan akurasi sekitar 1 derajat.
Sekarang tentang membidik otomatis - idenya sederhana untuk membuat wajah berada di bagian atas bingkai. Jadi, Anda hanya perlu menemukan wajah dan menyesuaikan platform di setiap gambar dari liveview. Saya tidak tahu apa-apa tentang mengidentifikasi wajah, jadi saya menggunakan tutorial menggunakan tanda Haar (cascade haar). Saya menemukan bahwa bagi individu metode ini tidak berfungsi. Ia menemukan pada setiap frame banyak sampah di samping apa yang dibutuhkan dan menghabiskan banyak waktu prosesor. Kemudian dia menemukan contoh lain tentang cara menggunakan jaringan saraf melalui OpenCV. Jaringan saraf bekerja dengan baik! Tapi saya senang sampai saya mulai memproses foto secara paralel. Dan Linux entah bagaimana mulai mengalokasikan waktu prosesor antara utas manajemen platform dan proses pemrosesan foto. Dia mengambil jalan perlawanan paling sedikit - dia mulai membuat wajah pada kartu video. Semuanya mulai bekerja dengan sempurna.
Terlepas dari kenyataan bahwa saya tidak ingin mempelajari detailnya, saya tetap melakukan tes kecil. Dan saya membeli Intel Neural Compute Stick 2 - Saya mencoba mengandalkannya alih-alih kartu video. Hasil saya kira-kira sama (digit - waktu pemrosesan untuk satu gambar berukuran 800x533) -
- Core i5 9400F - 59
- Core i7 7500U - 108
- Core i7 3770-110
- GeForce GTX 1060 6Gb - 154
- GeForce GTX 1050 2Gb - 199
- Core i7 3770, ubuntu 18.04 dengan opencv dari OpenVINO - 67
- Intel Neural Compute Stick 2, ubuntu 18.04 dengan opencv dari OpenVINO - 349
Ternyata itu sudah cukup untuk memproses gambar berukuran 300 di sisi yang lebih kecil sehingga wajah seseorang yang berdiri pada ketinggian penuh dalam bingkai dapat ditemukan. Bekerja lebih cepat pada gambar seperti itu. Saat ini saya menggunakan GeForce GTX 1050. Saya yakin ini bisa sangat ditingkatkan, tetapi sekarang ada masalah yang jauh lebih serius.
Eksposisi
Bukan rahasia lagi bahwa foto itu harus diekspos dengan benar. Dalam kasus saya, ini bahkan lebih penting karena tidak ada retouching. Agar cacat kulit menjadi kurang terlihat, foto harus seringan mungkin, di ambang paparan berlebih, tetapi tanpa paparan berlebih.
Kecerahan gambar akhir saat memotret dengan blitz tergantung pada parameter berikut:
- Kekuatan flash
- Jarak dari flash ke subjek
- Bukaan
- Nilai ISO
- Opsi saat mengonversi dari RAW
Setelah bingkai dibuat, kita hanya bisa mengubah parameter terakhir. Tetapi mengubahnya dalam rentang yang luas tidak terlalu baik, karena dengan koreksi positif besar dari paparan bingkai gelap akan ada kebisingan, dan dalam kasus sebaliknya mungkin ada kliping di area terang.
Sistem TTL (Melalui Lensa) digunakan untuk secara otomatis menentukan pencahayaan selama pemotretan blitz. Ia bekerja sebagai berikut:
- Flash membuat serangkaian flash kecil.
- Pada saat ini, kamera mengukur pencahayaan, fokus, dan mengukur jarak ke subjek fokus.
- Berdasarkan data ini, ia menghitung output flash yang diperlukan.
- Blitz menyala lagi, dan saat ini rana terbuka, gambar diambil.
Sistem ini berfungsi dengan baik ketika Anda dapat secara manual menyesuaikan gambar setelah pemotretan. Tetapi untuk mendapatkan hasil akhir, itu bekerja dengan tidak memuaskan. Jika itu - saya mencoba flash Profoto untuk> 100t.r.
Saya memiliki kondisi yang terkenal, flash harus berdiri sepanjang waktu di satu tempat. Jadi, Anda bisa menghitung paparan dengan posisi seseorang di ruang angkasa. Masalah muncul - bagaimana cara menentukan posisi seseorang?
Gagasan pertama adalah hanya mengambil jarak ke objek pemfokusan dari EXIF ββdan untuk frame pertama melakukan banyak kompensasi pencahayaan pada konverter RAV, dan untuk yang berikutnya, sesuaikan daya blitz atau apertur. Sangat mungkin bahwa seseorang akan membuat banyak tembakan, berdiri di satu tempat. Namun ternyata jarak dalam EXIF ββditulis sangat diskrit, semakin jauh objek - semakin besar langkahnya. Selain itu, untuk lensa yang berbeda, jarak ke objek mengambil set nilai yang berbeda, dan beberapa tidak mengukurnya sama sekali.
Gagasan selanjutnya adalah menggunakan pengintai ultrasonik. Perangkat ini mengukur jarak dengan cukup akurat, tetapi hanya sampai satu meter dan hanya jika seseorang tidak mengenakan sesuatu yang menyerap gelombang suara. Jika Anda meletakkan range finder pada servo drive dan memutarnya seperti radar, ia akan menjadi sedikit lebih baik - ukurannya mencapai 1,5 meter, yang juga sangat kecil (orang mendapatkan yang terbaik jika Anda mengambilnya dari jarak 2 meter).
Tentu saja, saya tahu bahwa ponsel murah pun sudah membangun peta mendalam dan mengaburkan latar belakang secara selektif. Tetapi saya tidak ingin terlibat di dalamnya. Sayangnya, tidak ada pilihan. Pertama saya ingin membeli 2 webcam, menggabungkannya dan membaca peta perpindahan menggunakan OpenCV. Tapi, untungnya, saya menemukan banyak kamera mendalam yang sudah melakukan ini di dalam diri mereka. Saya memilih Intel D435 (jika seseorang ingin membeli satu, itu tidak didukung di Linux di cabang kernel utama. Ada patch untuk debian dan ubuntu di repositori librealsense. Saya harus memperbaikinya untuk fedora).

Segera setelah saya menghubungkan semuanya, saya menulis program uji yang mengukur jarak ke kotak kecil di tengah. Jadi kode ini masih berfungsi. Dan itu bekerja dengan cukup baik. Tentu saja, Anda perlu mencari wajah dalam gambar dari kamera RGB dan menghitung jarak dari lampu kilat ke wajah itu. Tetapi ini adalah rencana untuk masa depan.
Menurut posisi seseorang di ruang angkasa, perlu untuk menghitung koreksi paparan. Pada awalnya saya datang dengan beberapa formula yang bekerja hanya untuk sumber titik cahaya dalam ruang hampa (pada kenyataannya, tidak adanya dinding pantulan dan langit-langit penting). Tapi kemudian dia hanya membuat serangkaian pemotretan dengan output blitz yang konstan dan menyesuaikan pencahayaan dengan equalizer oleh mata, ternyata koreksi hampir secara linear tergantung pada jarak. Saya menggunakan skema pencahayaan Rembrandt, flash dengan softbox ada di bidang kamera.
Tetapi sesuatu harus dilakukan dengan koreksi eksposur. Idealnya, Anda perlu mengubah kekuatan flash, tetapi sejauh ini diafragma dan aditif saya berubah <1 / 6Ev - di rav converter. Sinkronisasi flash saya dapat dikontrol melalui bluetooth menggunakan aplikasi telepon. Jadi di masa depan saya berencana untuk mencari tahu bagaimana protokol diatur di sana dan mengubah kekuatan flash.
Berikut ini adalah perbandingan output flash konstan dengan TTL dan metode saya. Ini bekerja jauh lebih stabil dan TTL lebih akurat:

Berbagai
Ketika seorang gadis (atau bahkan laki-laki) datang ke fotografer untuk pemotretan, dia (atau dia) biasanya menginginkan foto dari rencana yang berbeda, yang lebih besar, di mana hanya wajahnya dan yang lebih umum yang panjangnya penuh atau setinggi pinggang. Tidak semua orang tahu, tetapi yang terbaik, rencana diubah dengan mengubah focal length lensa. Artinya, seseorang selalu berdiri pada jarak, katakanlah, 2 meter, jika kita perlu memotret dengan ketinggian penuh, kita bungkus lensa 35mm, jika hanya wajahnya 135mm, dan jika setinggi pinggang, lalu 50mm atau 85mm. Nah, atau jangan ganti lensa dan atur lensa dengan zoom. Untuk menawarkan pengguna untuk memutar zoom dengan tangannya di atas kamera, yang berdiri di atas platform bergerak, menerobos seikat kabel, tidak terdengar sangat bagus. Jadi saya membeli paket suku cadang di aliexpress, mengambil servo drive yang tidak berguna bagi saya untuk mengendalikan platform dan melakukan ini:

Dan ini cara kerjanya:
Hasil tes pertama di studio foto, pertama-tama saya ingin melihat betapa beragamnya mengambil foto, tidak memindahkan apa pun atau mengonfigurasi ulang selama pemotretan:

Memproses video:
Hasil
Ini adalah beberapa bidikan terbaik yang telah dibuat:

seperti semua orang meminta izin untuk menerbitkan, jika Anda mengenali diri Anda dan ingin menghapus foto - tuliskan kepada saya
Mengapa saya melakukan ini? Ini adalah hal yang belum terjadi, setidaknya saya belum menemukan yang seperti itu. Berpotensi berguna - sekarang ada banyak spesialis, seperti psikolog, pelatih bisnis, pelatih olahraga, penata rambut yang menjual layanan mereka melalui blog, mereka membutuhkan banyak foto, dan dalam bentuk yang mereka inginkan, bukan fotografer. Beberapa orang tidak menyukainya ketika orang asing (fotografer) memandang mereka ketika memotret. Yah, yang paling sederhana adalah hiburan hebat untuk acara perusahaan, pameran, dan acara lainnya.
Saya tidak menjelaskan bagian perangkat lunak, bagaimana foto diproses dan tentang interaksi pengguna, karena sudah ada begitu banyak teks, saya akan menulis bagian kedua nanti. Poin-poin ini sudah berjalan dengan baik sehingga orang-orang yang tidak terbiasa dengan pemrograman dapat menggunakan sistem.