Fujifilm FinePix Real 3D W1の記録画像を扱う

一時期流行った3Dカメラです 以前に書いた記事の復刻に近い

このカメラでステレオ静止画と動画が撮れますけど、まずは静止画からですね。カメラ本体で立体視できるようになっていますが、なんとかPCやあわよくばココ(blog)で見てもらいたいので、大昔にMFCのダイアログベースのプログラムを書きました。MFCの習作として書いたのですが、一応紹介しておきます。動作画面は、

ここで左上の“MPOを開く”ボタンをクリック。

ファイルを開くダイアログが下図のように出ますから、どれかの*.MPOをクリック。

シングルクリックでファイルを選択するとpreviewが出ます。進めるならば、”開く”をクリック。

このままで慣れれば裸眼立体視はできるはずです。上図は交差法の表示なので、平行法にしたければ”方式”のラジオボタンをクリック。このままで平行法にすると、

スマホから画面をご覧になっている場合は、スマホを回転させて”横長”にして見ると見やすいです。PCで拡大縮小してしまうと、二つの画像の間隔(つまり中心と中心の距離)が両眼の間隔を超えると、そもそも平行法での立体視は不可能なので、その場合は交差法で見てください。)拡張子MPOなファイルの構造は、JPEG画像を2枚(fujiのカメラが出すmpoファイルの場合)連結したものなので、”つなぎ目”を捕まえれば、その前後で2枚のjpegに分解できます。上記mposhowのソースでは、

		if (mpoFile.is_open()) {
			// read the image data into a buffer
			mpoFile.rdbuf()->pubsetbuf(internal_buf, M);
			fileSize = (int)mpoFile.tellg();
			stereoData = new char[fileSize];
			mpoFile.seekg(0, ios::beg);
			mpoFile.read(stereoData, fileSize);
			mpoFile.close();

			// start of the next image
			char startOfImage[8] = { 'F', 'F', 'D', '8', 'F', 'F', 'E', '1' };
			int imageBreak;

			// find the break point between the image pairs
			for (int i = 0; i < fileSize; i += 4) {

この辺ですかね。mposhowはmpoファイルしか扱えないので、preview付きのC++ Builder CEで作ったプログラムを後で作りました。そちらと、動画をどうするかは続編の記事で書くかもしれません。

一応バイナリをダウンロードできるようにしておきます。前もしたような記憶があります。一点注意すべきは、このプログラムmposhowは未完で、jpsファイルのpreviewまではできますけど、肝心の表示部分は動きません。それはC++ Builder CE版で。ダウンロードは、以下で、

“mposhow binary” をダウンロード mposhow-bin.zip 10.72 MB

交差法を使いすぎると、近年問題になっている”スマホ斜視”の症状が出るかもしれませんので、なるべく平行法で見てください。筆者は反射的に交差法(より目)になってしまうので、あらためて平行法の練習が必要です。平行法は基本的にリラックスするのが吉です。あ、vectorへのアップじゃないので、説明書は付いていません。この記事を参考にしてください。ダイアログの“JPEGセーブ”にチェックを入れてMPOを開くと、左右に分離した二つのJPEG画像が書き出されます。(補足)

mposhowのバイナリだけでは見るべきファイルがないので、おまけで大昔に日光で撮った画像を付けておきます。

コメント