【chronograph】というシリーズをスタートしました。
挨拶
どうもこんにちは。前回の記事で作家離脱宣言をしたTakahashiToshioです。
堂々ドロップ宣言した後で大変申し上げにくいのですが、妻が里帰り出産のため実家帰省したのと残業帰省で一人考える時間が増えたため、一気に作家パワーといいますかアイデアを形にする気合が回復してしまいました(※1)。
前回の作家離脱宣言でも記載しましたが、アイデアとパワーがあれば復帰もやぶさかではありません。むしろ今がラストチャンス。ここでやらなければ、いつやるのか。というわけで、今回は前々から考えていたスリットスキャンの新時代、通称【chronograph】シリーズの紹介になります。
経緯・過去のおさらい
前回の記事「父になる事と作家活動について」にも記載していますが、スリットスキャンには現状大きく下記の問題点が存在しています。
①スキャナカメラがしんどい
→デカイ重い面倒くさい上手く撮れないの四重苦。どんだけ工夫しても「面倒くさい」という項目を消すことができないのでモチベーションが低下してしまいます。
②スリットスキャンの結果を想像しやすい
→最終的な結果が「こうなるだろうな」という予想(イメージ)して撮る事が多く、自分の中で斬新な発見が見られなくなりました。モチベーションが低下してしまいます。
③説明が必要になるが、説明すると技術主体に見られやすい
→スリットスキャンの技法説明は写真の説明に必須なのですが、技法を説明すると鑑賞者は技術だけと見られやすいので、説明するモチベーションが低下してしまいます。(※2)
④見てる人も、既に飽きている
→あーまたスリットスキャンね。知ってる知ってる。と思われている。撮るモチベーションが低下してしまい(ry
結論としてはスリットスキャンの撮影は【モチベーションが上がらない】のです。
元々写真を撮ることが嫌いになったわけではありません。作品とか気にしないのであれば、旅行行って写真を撮った方が遥かに楽しめます。作品を生むしんどさですね。
それでもスリットスキャンにこだわるのは、もはや病気なのかもしれません。そしてただ【写真】を撮るのではなく【作品】が作りたいと思う気持ちは、作家としての宿命なのかも。それだけ私はスリットスキャンという技法が好きですし、自分のステートメントに合う手法なのだなと感じているのです。
【chronograph】
スリットスキャンの時間軸を、直線方向ではなく回転方向に写す。
これが【chronograph】の一番の肝といいますか、重要なテーマでした。
元々のコンセプトは、過去作成したソフトウェアのスリットスキャンが元になっています。定点撮影した写真を、縦or横に一列ずつ並べることでスリットスキャンしていました。
タイトルからも想像できると思いますが、イメージは時計です。
回転方向でスキャンすることで、時計と同じような動きになると考えました。スリットスキャンする時間も、1分or1時間or12時間といった時計の針が一周する時間帯でまとめています。
ビジュアルからイメージできる技法であれば、深く説明する説明もなくなるんじゃないかなと考えましたが、いかがでしょうか。
ちなみに往相図シリーズは動画で説明していました。同じような動画も、いつか作りたいと思っています。
How to make
いわゆるソースコードです。使用は自己責任でお願いします。画像ファイルは長編を横にした画像ファイルを使用しており、枚数は長編分用意しています。
環境は、mac OS Catalina10.15.7、Anaconda環境でpython3.7 Opencv3.42で確認しています。
import numpy as np
import matplotlib.pyplot as plt
import cv2
import glob
import argparse
import copy
import math
motofiles = glob.glob("/元画像ディレクトリ/*.JPG")
slitfiles = glob.glob("/極座標変換保存画像ディレクトリ/*.jpg")
################
####極座標変換####
################
i = 0
for f in motofiles:
#image読み込み
frame= cv2.imread(f,cv2.IMREAD_COLOR)
#画像回転
frame = cv2.rotate(frame, cv2.ROTATE_90_CLOCKWISE)
#極座標変換
fh, fw = frame.shape[:2]
center = ( fw / 2 , fh / 2 )
radius = int(fw *0.5)
M = radius
flags = cv2.INTER_CUBIC + cv2.WARP_FILL_OUTLIERS
lin_polar_img = cv2.warpPolar(frame,(fw, fh), center, M, flags)
cv2.imwrite("/極座標変換保存先ディレクトリ/"+ str(i) + ".jpg",np.array(lin_polar_img))
print (i)
i = i+1
print("kyokuzahyouend")
################
####slitscan####
################
slitpic = np.ones((fh, fw, 3), np.uint8) * 255
x = 1
y = 1
j = 0
for y in slitfiles:
#image読み込み
frame2= cv2.imread(y,cv2.IMREAD_COLOR)
for x in range(fw):
slitpic[int(j), int(x)] = frame2[int(j), int(x)]
x= x + 1
j = j +1
print(j)
cv2.imwrite("/Volumes/Picure_temp/slitscan_temp/test2/slitresults.jpg",np.array(slitpic))
print("slitcomplete")
################
#####逆変換#####
################
radius2 = int(fw * 0.7)
#ここの0.7は画像によって変えて下さい
recovered_lin_polar_img = cv2.warpPolar(slitpic, (fh, fh),center, radius2, flags+cv2.WARP_INVERSE_MAP)
cv2.imwrite("/Volumes/Picure_temp/slitscan_temp/test2/results.jpg",np.array(recovered_lin_polar_img))
print("All complete")
本職でもなく、自分専用で作っている部分もあるので細かいツッコミされると泣いてしまうかもしれません。
元となる画像は、インターバルで写真を撮るか、FFmpeg等のツールを使って動画ファイルから画像ファイルに変換して下さい。
内容としては、元画像の読み込み順次極座標変換し、それをスリットスキャン、最終的に逆変換をかけています。極座標とか久しぶりに使ったけど、こんな形で役に立つとは思わなかったです。学生時代の自分に感謝。
画像ファイルの量やサイズによりますが、鬼のように重いです。夜回したら次の日の朝に出来上がるレベルです。
なおOpenCVでの極座標変換は、下記サイトを参考にさせていただきました。
余談
実は当初、この手法はハード的に実施しようと考えていました。同じように極座標変換することは難しいかもしれませんが、多分頑張れば同様のことはできるはずですし、ハード(カメラ)を作ることはロマンがあります。
例えばカメラのセンサそのものを回転させるのは面白いのではないかと考えていました。回転方向のスリットスキャンという目的に合う事も勿論ですが、センサの一部を同心状に動かすことでイメージサークル内を無駄なく使うことができます。
センサー部分を回転させるのは一見難易度が高そうに見えますが、カメラ本体を動かしたり、Raspberry Piのカメラのようにカメラモジュールに自由度が高いものならそれほど難しくないと考えています。
他にもカメラ+レンズを回転させる方法もありますが、中心部のセンター出しが大変です。ハード的な微調整はかなり難しく、初期で試行錯誤しましたが有益な結果は得られませんでした。これはセンサーを回転させる方法も同一で、軽い気持ちでトライすると痛い目に合いそうなので現在は遠慮している状態です。
ちなみにスキャナカメラは先に書いたように大変なので今回はトライしていませんが、4✕5サイズ相当のセンサーサイズを実現できます。なかなか夢とロマンがあるので、いつかチャレンジはしてみたいですね。
終わりに
久々に新しい技法での作品作りでしたが、個人的に納得いく撮影ができて満足しています。写真そのものは、今後撮っていくので更に良いものも撮れていくでしょう。たぶん。
とはいえ問題も山積みです。数千枚撮影して、使われるのは数千ピクセル分のみ。プログラムが重いのも当たり前です。無駄が多い撮影です。
とはいえ考え方を変えれば無駄を削ぎ落としているとも言えます。写真から不要な部分をトリミングするが如く、必要な時間軸のみをプロットして一枚に収めるスリットスキャンの技法において、不純物を取り除く作業の一つとも捉えることができるかもしれません。
また技術上の問題もあります。短時間(例えば1分)撮影では、撮影枚数が少ないためスリットスキャンした写真の粗も酷くなります。動画ファイルなら枚数は稼げますが、現状の主力は4k。縦2160px程度です。円形の画像にすると画素数でいえば300万画素相当まで低下します。L版サイズに印刷耐えられるのか!?という状態です。
また1時間のような長時間撮影の場合、その場から離れることが出来ません。今後子育てしていくにあたり、その時間を用意できるのか。不安な部分ではあります。12時間での撮影は…考えないようにしています。
ご存知の方もいらっしゃるかもしれませんが、私にとって写真作品は一年に一枚撮れれば良いというレベルでゆっくりしたものです。基本的に機材やソフトウェアと写真が紐づくのが作品なので、現在の大量に撮られる写真と一線を画するものだと考えています。
現状、自分の納得できる手法であることに間違いありません。ゆっくりペースを決めて撮影していきたいです。とはいえ出来れば8kが撮れるカメラが欲しいので、頑張って仕事してお金を稼ごうと思います笑
最後にですが、自分の作品のファンといってくれる妻から高評価なのが一番モチベーションあがりました。
これからも家族を大事に、写真と向き合っていこうと思った次第です。ではでは。
(※1)やはり一人の時間も必要ですね。頭でなにかを考える時間がなかったです。今後子育てのフェイズに入ると、妻が子育てで同じ思いをすると思うので、フォローしていきたいと考えています。
(※2)写真(家)界隈の場合、機材について話した時点で評価がない世の中です。写真は、機材がないと撮れません。
過去作ったカメラはこちらでまとめています。