Стереокамера на 2-х 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.
Желтая кнопка на фотографии в данной конструкции не
задействована.
Спусковая кнопка подает 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 расстояния до ближайшего объекта.
Для просмотра я по-прежнему считаю решение с использованием StereoPhotoViewer Applet наиболее
удачным. Однако борьба за безопасность полетов,
как известно в результате приводит к их прекращению. Поэтому,
чтобы не читать многочисленные предупреждения и постоянно
настраивать Java, я предлагаю теперь смотреть стереоснимки с помощью HTML-5.
3.12.2015
Установите проигрыватель Flash
|
Облако тегов:
...
|