Script Bash che converte foto .MPO in Anaglifo

Guides, tutorials & docs
Post Reply
User avatar
Roberto_65
Collaboratore
Collaboratore
Posts: 516
Joined: 6 December 2007, 23:56
OpenMandriva: 2009.1
Kernel: i686 x86_64
Desktop: Gnome Xfce4
Location: Triangolo delle Bermude
Contact:

Script Bash che converte foto .MPO in Anaglifo

Post by Roberto_65 »

Le foto MPO sono nel formato 3D (uniche foto che racchiudono le 2 immagini sinistro e destro in una unica foto), vengono ottenute da speciali fotocamere 3D.
Il formato MPO, dagli applicativi Libuz vengono visti come noemali foto 2D.
Il formato MPO è quello che usa Nintendo 3DS.
Purtroppo credo che non esistano applicazioni per Linux che riescono a far vedere questo formato in 3D.

Code: Select all

#!/bin/bash
# Nome File:  mpo2jpg
echo; echo
echo $0
echo "######################################################################"
echo "# Ver. 2.1 - 09/08/2011 -  (C)-MIB-PIANETALINUX - by Roberto Zaffuto #"
echo "#   Converte  foto .MPO (destro e sinistro), in anaglifo rosso-blu   #"
echo "######################################################################"
echo -n "Premi il tasto [ENTER]..."; read
function settapar() {
	mkdir -p left right anaglyph mpo gif_anim stereo-Cross stereo-Parallel
	LEFT="left/${BASENAME}-L.jpg"
	RIGHT="right/${BASENAME}-R.jpg"
	GIF="gif_anim/${BASENAME}.gif"
	STEREO1="stereo-Parallel/${BASENAME}-stereo-Parallel-Eye.jpg"
	STEREO2="stereo-Cross/${BASENAME}-stereo-Cross-Eye.jpg"
	ANAGLYPH="anaglyph/${BASENAME}-anaglyph.jpg"
}
function elabora() {
	echo "###########################"
	echo "ELABORO FOTO: "$SRC
	echo "###########################"
	# Estrae immagine destra e sinistra dal formato MPO
	echo "Estraggo le immagini destra e sinistra dal formato MPO"
	exiftool -trailer:all= "$SRC" -o "$LEFT"
	exiftool "$SRC" -mpimage2 -b > "$RIGHT"

	# Regola il contrasto delle immagigini
	echo "**********************************"
	echo "Regolo il contrasto delle immagini"
	echo "**********************************"
	convert -contrast-stretch 100,100,100 "$LEFT" "$LEFT"
	convert -contrast-stretch 100,100,100 "$RIGHT" "$RIGHT"
 
	# Estrae il valore del parallasse
	echo "*********************************"
	echo "Estraggo il valore del parallasse"
	echo "*********************************"
	PARALLAX=`exiftool -b -Parallax "$RIGHT"`
	if [ ! $PARALLAX ]; then
		PARALLAX=0
	fi
	echo "Parallasse = "$PARALLAX
 
	# Setta la dimenzione originale dell'immagine
	WIDTH=`exiftool -b -ImageWidth "$RIGHT"`
 
	# Moltiplica il parallasse
	SHIFT=$((WIDTH/100))
 
	# Ricalcola il parallasse in pixel
	PARALLAX=`echo "($PARALLAX * $SHIFT + 0.5)/1" | bc`

	# Setta i valori di default per il parallasse positivo
	GRAVITY_LEFT=East
	GRAVITY_RIGHT=West

	# Inverte la gravità negativa per il parallasse negativo
	if [ "${PARALLAX:0:1}" = "-" ] ; then
		PARALLAX=${PARALLAX#-}
		GRAVITY_LEFT=West
		GRAVITY_RIGHT=East
	fi;
	 
	# Aggiusta la dimenzione per l'immagine
	WIDTH=$((WIDTH-PARALLAX))
	 
	# Modifica le immagini con i valori elaborati
	echo "*******************************************"
	echo "Modifico le immagini con i valori elaborati"
	echo "*******************************************"
	mogrify -verbose -gravity $GRAVITY_LEFT -crop ${WIDTH}x0+0+0 +repage $LEFT 
	mogrify -verbose -gravity $GRAVITY_RIGHT -crop ${WIDTH}x0+0+0 +repage $RIGHT
	
	# Genera Anaglifo Rosso-Blu
	echo "*************************"
	echo "Genero Anaglifo Rosso-Blu"
	echo "*************************"
	composite -stereo +0 $LEFT $RIGHT $ANAGLYPH
	mogrify -resize "1024x1024>" $ANAGLYPH
	
	# Genera immagine stereo Sinistra-Destro (Parallel)
	echo "*************************************************"
	echo "Genero immagine stereo Sinistra-Destro (Parallel)"
	echo "*************************************************"
	montage $LEFT $RIGHT -verbose -mode Concatenate -tile x1 -resize "1024x1024>" $STEREO1
	
	# Genera immagine stereo Destro-Sinistra (Crossing)
	echo "*************************************************"
	echo "Genero immagine stereo Destro-Sinistra (Crossing)"
	echo "*************************************************"
	montage $RIGHT $LEFT -verbose -mode Concatenate -tile x1 -resize "1024x1024>" $STEREO2
	
	# Genera GIF animata 
	echo "******************"
	echo "Genero GIF animata"
	echo "******************"
	convert -verbose -delay 30 $LEFT $RIGHT -resize 600x600 $GIF;
	
	cp $SRC mpo/$SRC 2> /dev/null
	rm $SRC 2> /dev/null
}
function ciclo() {
	for SRC in $(ls *$EST)
	do echo $SRC
		BASENAME="`basename $SRC $EST`"
		settapar
		elabora
	done
}
 
if [ $1 ]; then
	SRC=$1
	BASENAME="`basename $SRC .MPO`"
	if [ ! -f $SRC ]; then
		echo $BASENAME" Non trovato."
		exit 1
	fi
	settapar
	elabora
   else
	EST=".MPO"
	ciclo
	EST=".mpo"
	ciclo
fi

echo; echo "Done"; read
Per utilizzare lo script è facile: basta creare un file, copiarlo dentro la directory dove ci sono le foto MPO, dargli i permessi in esecuzione e cliccarci sopra.

Gli Anaglifi prodotti vanno visti con occhialini Rosso-Blu.
Alcune foto nel formato MPO le potete scaricare da: http://3dmedia.com/gallery/

---------------------------------------

This script extracts the left and right image from any .MPO file, crops them to match the embedded parallax value, then makes an anaglyph image, stereopair (JPS, Stereo JPEG analogue), and also an animated GIF for your viewing pleasure.
Prequisites: bash, ExifTool, ImageMagick, and bc.
Last edited by Roberto_65 on 12 August 2011, 9:55, edited 6 times in total.
Roberto_65
Packager delle MIB-Live
Il creatore delle MIB-Live
L'inventore di MIB-LiveToFlash
Triangolo delle Bermude http://www.sitohd.com/siti/3209

User avatar
Roberto_65
Collaboratore
Collaboratore
Posts: 516
Joined: 6 December 2007, 23:56
OpenMandriva: 2009.1
Kernel: i686 x86_64
Desktop: Gnome Xfce4
Location: Triangolo delle Bermude
Contact:

Re: Script Bash che converte foto .MPO in Anaglifo

Post by Roberto_65 »

Nuova versione piu' veloce e piu' precisa !

Ricordo che questo script: MPO2JPG dipende da:

bc
imagemagik
libimage-exiftool-perl

Fatemi sapere se ne sarete soddisfatti !
Roberto_65
Packager delle MIB-Live
Il creatore delle MIB-Live
L'inventore di MIB-LiveToFlash
Triangolo delle Bermude http://www.sitohd.com/siti/3209

User avatar
Roberto_65
Collaboratore
Collaboratore
Posts: 516
Joined: 6 December 2007, 23:56
OpenMandriva: 2009.1
Kernel: i686 x86_64
Desktop: Gnome Xfce4
Location: Triangolo delle Bermude
Contact:

Re: Script Bash che converte foto .MPO in Anaglifo

Post by Roberto_65 »

RESERVED
Roberto_65
Packager delle MIB-Live
Il creatore delle MIB-Live
L'inventore di MIB-LiveToFlash
Triangolo delle Bermude http://www.sitohd.com/siti/3209

Post Reply