Image & Pchelkin
Image Image
Π—Π΄ΠΎΡ€ΠΎΠ²ΠΎ, ΠŸΡ‡Π΅Π»ΠΊΠΈΠ½. Π― Ρ‚ΡƒΡ‚ возился с ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ, Π³Π΄Π΅ фотография ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΏΠ»Π΅Ρ‚Π°ΡŽΡ‚ΡΡ – ΠΏΡ‹Ρ‚Π°ΡŽΡΡŒ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ простоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ автоматичСски подстраиваСт ΡΠΊΡΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ Π½Π° основС Π°Π½Π°Π»ΠΈΠ·Π° сцСны. Как Ρ‚Ρ‹ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡˆΡŒ ΠΊ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ?
Pchelkin Pchelkin
Π—Π²ΡƒΡ‡ΠΈΡ‚ ΠΊΠ°ΠΊ интСрСсная Π·Π°Π΄Π°Ρ‡ΠΊΠ°. Начни с профилирования – ΠΏΡ€ΠΎΠ³ΠΎΠ½ΠΈ нСсколько ΠΊΠ°Π΄Ρ€ΠΎΠ² Ρ‡Π΅Ρ€Π΅Π· всю Ρ†Π΅ΠΏΠΎΡ‡ΠΊΡƒ ΠΈ посмотри, Π³Π΄Π΅ ΡƒΠ·ΠΊΠΈΠ΅ мСста. Для настройки экспозиции ΠΌΠΎΠΆΠ½ΠΎ сильно ΠΎΠ±Π»Π΅Π³Ρ‡ΠΈΡ‚ΡŒ сСбС Π·Π°Π΄Π°Ρ‡Ρƒ, работая с ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½Π½Ρ‹ΠΌ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ; Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚ΡŒ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ часто достаточно для ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½ΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° сцСны, Π½ΠΎ ΠΏΡ€ΠΈ этом Π²Ρ‹ΠΈΠ³Ρ€Ρ‹Π²Π°Π΅ΡˆΡŒ Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Π² 16 Ρ€Π°Π·. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉ Ρ†Π΅Π»ΠΎΡ‡ΠΈΡΠ»Π΅Π½Π½ΡƒΡŽ Π°Ρ€ΠΈΡ„ΠΌΠ΅Ρ‚ΠΈΠΊΡƒ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ большС – вСщСствСнныС числа Ρ…ΠΎΡ€ΠΎΡˆΠΈ, Π½ΠΎ для Ρ†ΠΈΠΊΠ»Π° Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ фиксированная Ρ‚ΠΎΡ‡ΠΊΠ° ΠΈΠ»ΠΈ SIMD-ускорСниС Π²Ρ‹ΠΈΠ³Ρ€Ρ‹Π²Π°ΡŽΡ‚ с ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹ΠΌ пСрСвСсом. Если Ρƒ тСбя дСсктоп, ΠΏΠ΅Ρ€Π΅Π»ΠΎΠΆΠΈ вычислСния ядра Π½Π° GPU с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ compute shader ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉ OpenCL/CUDA; Ρ‚Π° ΠΆΠ΅ Π»ΠΎΠ³ΠΈΠΊΠ° Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² 50–100 Ρ€Π°Π· быстрСС, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Ρ‹ ΠΏΠ΅Ρ€Π΅Π½Π΅ΡΠ΅ΡˆΡŒ Ρ†ΠΈΠΊΠ» Π² ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠΎΡ‚ΠΎΠΊΠΈ. На мобильном устройствС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ (Vision/Metal для iOS ΠΈΠ»ΠΈ RenderScript/NDK для Android). Бохраняй состояниС ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠ°Π΄Ρ€Π°ΠΌΠΈ. НапримСр, пСрСноси гистограмму ΠΈΠ· ΠΊΠ°Π΄Ρ€Π° N Π² N+1 ΠΈ пСрСсчитывай Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ части, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ измСнились. ΠšΡΡˆΠΈΡ€ΡƒΠΉ всС Π΄Π°Π½Π½Ρ‹Π΅ ΠΊΠ°Π»ΠΈΠ±Ρ€ΠΎΠ²ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚Π΅Π±Π΅ понадобятся, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΊΠ°Π΄Ρ€Π΅. И ΠΏΠΎΠΌΠ½ΠΈ, простоС ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ: Ссли Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с частотой 30 ΠΊΠ°Π΄Ρ€ΠΎΠ² Π² сСкунду, Ρƒ тСбя ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ 33 миллисСкунды Π½Π° ΠΊΠ°Π΄Ρ€. Π”Π΅Ρ€ΠΆΠΈ критичСский ΠΏΡƒΡ‚ΡŒ мСньшС 20 миллисСкунд, ΠΈ Ρƒ тСбя останСтся запас для интСрфСйса ΠΈ логирования. ΠšΠΎΡ„Π΅ Π² Ρ€ΡƒΠΊΠ΅, сдСлай быстрый Π±Π΅Π½Ρ‡ΠΌΠ°Ρ€ΠΊ, ΠΈΡ‚Π΅Ρ€ΠΈΡ€ΡƒΠΉ ΠΈ ΠΏΠΎΠ΄ΠΊΡ€ΡƒΡ‡ΠΈΠ²Π°ΠΉ. Π£Π΄Π°Ρ‡ΠΈ!