Стереокамера на 2-х Raspberry Pi


Raspberry Pi

О стереосъемке я писал уже довольно давно в 2005 году. Развитие проекта фотокубики и появление у меня 3D принтера позволило собрать простую стереокамеру, которая, однако, показала неплохие результаты и имеет потенциал для развития.

Предлагаемая стереокамера может рассматриваться как упрощенный вариант  аппаратов, описанных в статьях Панорамная камера на 4-х Raspberry Pi и Съемка панорам с квадракоптера 4 камерами Raspberry Pi. Число компьютеров уменьшено с 4х до 2х и добавлен видоискатель.

Использовался экран 5" Display Waveshare  Raspberry Pi Touch Screen Display Monitor 800x480 HDMI - LCD. Он чувствителен к касанию, но в реальной съемке пользоваться пером  не очень удобно, поэтому все управление камерой осуществляется одной спусковой кнопкой и КЗУ (контактно запоминающие устройство) для выбора выдержки. Драйверы перьевого ввода отстают от выхода релизов RASPBIAN, и хотя для этой конструкции это не принципиально, но экранное меню и прочие красоты я пока отложил в долгий ящик. Конкретно данная камера собрана на двух Raspberry Pi моделей A и B+. В данной конструкции B+ избыточна, но потенциально позволяет реализовать дистанционное управление через WiFi.

Raspberry Pi

Желтая кнопка  на фотографии в данной конструкции не задействована.
Спусковая кнопка подает 5 В через сопротивление в 1 кОм на спаренную оптопару TLP521-2,  которая запускает съемку на обоих компьютерах. Развязка через стереопару нужна чтобы при старте один из компьютеров не сделал ложный снимок запущенный сигналом с другого компьютера. С этим легко справится и программно, но это решение уменьшает и вероятность выгорания сразу двух компьютеров в случае возникновения нештатной ситуации. Три перемычки задают в двоичном коде степень двойки на которую множится минимальное время экспозиции. Программы на обеих компьютерах одинаковые, что повышает синхронность их срабатывания, хотя и не гарантирует. Ниже приведенная программа постоянно выводит картинку предварительного просмотра на HDMI. Контроль осуществляется перетыканием на лету разъема с одной камеры на другую.

import RPi.GPIO as GPIO
import time
import picamera
fr=0
flag1=0
GPIO.setmode(GPIO.BCM)
GPIO.setup(24, GPIO.IN, pull_up_down = GPIO.PUD_UP)
GPIO.setup(23, GPIO.IN, pull_up_down = GPIO.PUD_UP)
GPIO.setup(22, GPIO.IN, pull_up_down = GPIO.PUD_UP)
GPIO.setup(27, GPIO.IN, pull_up_down = GPIO.PUD_UP)
f = open('/home/pi/fotopicam/foto.txt', 'r')
fs = f.read()
f.close()
ffs = fs +'f'
f = open('/home/pi/fotopicam/foto.txt', 'w')
f.write(ffs)
f.close()
with picamera.PiCamera() as camera:
camera.resolution = (2592, 1944)
camera.framerate = 15
#camera.rotation = 180
camera.awb_mode = "sunlight"
camera.exif_tags['IFD0.Artist'] = "RWPBB"
camera.iso = 100
camera.exposure_mode = "auto"
camera.analog_gains =1
time.sleep(0.5)
camera.exposure_mode = "off"
bp=GPIO.input(23) + 2*GPIO.input(22) + 4*GPIO.input(27)
sp=400*2**bp
camera.shutter_speed = sp
camera.start_preview()
start = time.time()
def printFunction(channel):
global start
fin = time.time()
if fin-start>4:
start = time.time()
global fr
fr=fr+1
bp=GPIO.input(23) + 2*GPIO.input(22) + 4*GPIO.input(27)
sp=400*2**bp
camera.shutter_speed = sp
camera.capture("/home/pi/fotopicam/"+ffs+"pir%03d.jpg" % fr)
camera.exposure_mode = "auto"
time.sleep(0.5)
camera.exposure_mode = "off"

GPIO.add_event_detect(24, GPIO.FALLING, callback=printFunction, bouncetime=300)
while True:
a=1

GPIO.cleanup()

Крепление камер напечатано на 3D принтере и позволяет их закрепить, как с портретной, так и с ландшафтной ориентацией и менять стереобазу.  Оптимальной обычно считается база равная 1/30 расстояния до ближайшего объекта.

stl
camplat1.stl
stl
camplat2r.stl
stl
oporaplata3.stl

Для просмотра я по-прежнему считаю решение с использованием StereoPhotoViewer Applet наиболее удачным.  Однако борьба за безопасность полетов, как известно в результате приводит к их прекращению. Поэтому, чтобы не читать многочисленные предупреждения и постоянно настраивать Java, я предлагаю теперь смотреть стереоснимки с помощью HTML-5.


3.12.2015
Установите проигрыватель Flash

Облако тегов:
3D печать
Arduino
Raspberry Pi
Аэрофотосъемка
Байдарки
Геомеханика
История
Камеры
Макросъемка
Объективы
Освещение
Панорамы
Принадлежности
Принтеры
Программы
Сканеры
Стереосъемка
Фильтры
Фокусировка
Фотокубики
...
rss