「画像処理プログラミング」シリーズ第13回記事。
まず、「バブルボケ」または「シャボン玉ボケ」とは、
(カメラやレンズの)中級マニア層の用語(俗語)であり、
写真の背景点光源等で現れる、光源(ハイライト)の円形の
ボケに「輪郭」があり、あたかも「シャボン玉」あるいは
「バブル(泡)」のように見える状態を指している。
だいたい、以下の写真のような感じだ。
![_c0032138_08190358.jpg]()
上写真は解像度が小さいので、後で「シャボン玉ボケ」部
を拡大して紹介しよう。
この「シャボン玉(バブル)ボケ」は、レンズの「収差」
(すなわち、光学的な欠陥)により発生するものである。
近代の一般的な(写真用)レンズは設計時に収差が出ない
ように高度な補正を行っている為、まずこうした状態には
ならず、一部のオールドレンズ(50年程度昔の物、又は
その時代の設計を踏襲して現代で製造された復刻版製品)
でないと、このような「シャボン玉(バブル)ボケ」は
発生しない。
上の写真は、東独で1960年代~1970年代頃に製造
された「Meyer Optik Goerlitz DOMIPLAN 50mm/F2.8」
(注:メーカー名の原語綴りには変母音が含まれるが、
記載便宜上、それを省略し、代替表記を行っている)
というオールドレンズを使用して撮ったものである。
(下の機材写真参照)
![_c0032138_08190320.jpg]()
この「DOMIPLAN 50/2.8」は3群3枚、いわゆる一般的に
「トリプレット」と呼ばれる、とても単純なレンズ構成だ。
(参考:トリプレットは、1890年代に英国にて発明)
シンプルかつ、製造上でもコストダウンが可能な為、
1960年代当時、ローコストな(標準)レンズを作りたい
理由で、こうした単純構成を採用したのだと思われる。
(参考:「東ドイツカメラの全貌」、1998年版、蔵書)
この構成は、当時の国内外のローコストな銀塩コンパクト
カメラ等の一部でも、採用されていたと思われる。
「トリプレット」構成でも、絞りを少し絞り込むと収差が
減少して比較的良い写りになるが、冒頭の写真のように絞り
を開放にして撮ると、(諸)収差が増大して、シャボン玉
ボケやら、他の要因(解像感が低下する等)が発生する。
この収差発生を嫌って、レンズ構成を1枚増やし、3群4枚
とすると、これはいわゆる「テッサー型(構成)」となり、
このテッサー型の方が、極めて多くの戦後の銀塩コンパクト
機等に採用されていたと思う。
(参考:テッサー型構成は、カール・ツァイス社の
ルドルフ技師が1902年に発明した構成だが、恐らく、
特許であるとか、戦争とか、製造上の問題点とかで、
このテッサー型レンズが世間一般の様々なカメラに搭載
されたのは、前述のように、第二次大戦後、つまり
1950年代以降の話である。
また、1950年代以降のカメラやレンズであっても、あえて
テッサー型を採用せず、レンズの少ないトリプレット型や、
逆にレンズ枚数を増やして複雑化したプラナー型(変形
ダブルガウス型)等のレンズも、勿論あった)
では、もう1枚、 トリプレット型のDOMIPLAN 50/2.8
による「シャボン玉(バブル)ボケ」の写真を掲載しておく。
![_c0032138_08190319.jpg]()
上写真だが、シャボン玉ボケの部分を拡大して掲載しよう。
![_c0032138_08190377.jpg]()
これが「シャボン玉(バブル)ボケ」である。
なお、一般初級層、または初級マニア層等が良く混乱して
使う、別の用語(俗語)に、「玉ボケ」(丸ボケ)がある。
「玉ボケ」は、この「シャボン玉(バブル)ボケ」を指して
言う場合と、そうではなく、ただ単に近代レンズ等で絞りを
開放にして撮影し、背景点光源ボケが円形になっているだけ
の状態(つまり、輪郭=フチ、が存在しないボケの状態)を
指す場合がある。
混乱するので、今回の記事では、以下のように定義する。
「玉ボケ」(稀に、「丸ボケ」とも)
→単なる円形(光源)ボケ。あらゆる(近代)レンズで
絞りを開放にする事で発生する。
(注:画面周辺部では「口径食」の発生により、ボケ
形状が完全な真円にはならない場合もある)
また、一部の近代レンズでは、「円形絞り機構」等で
ある程度絞った状態でも、「玉ボケ」に近い円形の
ボケが得られるように、と配慮した設計の物もある。
「シャボン玉(バブル)ボケ」
→上記の円形(光源)ボケに、輪郭(フチ)がある状態。
一部のオールドレンズ等、収差補正が行き届いていない
レンズを(主に絞り開放で)使うと発生する。
では、もう1枚、DOMIPLAN 50/2.8を使って、シャボン玉
(バブル)ボケを発生させた例を下写真で紹介する。
![_c0032138_08190890.jpg]()
個人的には、「シャボン玉(バブル)ボケ」は、ちょっと
背景が「うるさく」(=ごちゃごちゃしていて、汚らしい)
感じてしまい、積極的に、これを作画に利用したいとは、
あまり思えない。
ただまあ、現代レンズでは、まず味わえないような特性で
あるから、この独特な描写を好む中上級マニア層も居る。
なので、近代では、前述の「Meyer(マイヤー) Optik」
のブランド名を用い(注:はるか昔に休眠しているブランド
であるが、再度復活させた)これが強く発生するレンズ
「TRIOPLAN 100mm/F2.8」(トリプレット構成である)
を、2010年代後半に新規に製造販売したのだが、これは
マニマ向けの少数生産品なので、新品で20万円以上、
中古でも軽く10万円以上もする高額商品であるので
未所有だ。(=高価すぎる、又はコスパが悪いという判断)
(注1:今回使用の「DOMIPLAN 50/2.8」はTRIOPLAN
の姉妹レンズであるが、新製品(復刻版)ではなく、
実際に50年程前に製造されたオールドレンズであるので、
中古購入価格は約7,000円と、適切な相場であった)
(注2:復活した「Meyer Optik」だが、2018年頃、
経営者が事故に合い、以降、活動を停止してしまって
いる。残念ながら今後の新品入手は困難な状態だ)
TRIOPLANの方がDOMIPLANよりも焦点距離が長いので
「シャボン玉(バブル)ボケ」が出易いと想像できる。
逆に言えば、DOMIPLANは「シャボン玉(バブル)ボケ」
が出難いのであるが、そのあたりは技能で回避できる。
(注:姉妹レンズには、PRIMOPLAN(58mm/F1.9)や
その復刻版もある。こちらはトリプレット型では無い。
復刻版を含め高価につき、未所有なので、玉ボケの
発生の有無や詳細に関しては不明だ)
今回使用機SONY α7はフルサイズ機であり、ボケがやや
出易く、かつ、ヘリコイドアダプターを用いて、必要と
あれば近接撮影に持ち込み、被写界深度を浅くできる。
すなわちボケ量を増やす事ができる。その際での構図の
調整はSONY機の(プレシジョン)デジタルズーム機能を
併用しても良い。まあつまり、撮影技能次第でボケ量の
コントロールは、どうとでもなる話である)
ちなみに参考だが、「シャボン玉(バブル)ボケ」は
TRIOPLANやDOMIPLANといった特定のレンズだけで
出るという話では無く、3群3枚構成の単純なレンズを持って
来れば、他のレンズでも出せるし、3群3枚ではなくても
収差の補正が行き届いていないオールドレンズであるとか、
あるいは、近年流行のLOMOGRAPHY社やLENSBABY社から
発売されている「ぐるぐるボケレンズ」では、ペッツヴァール
型の2群4枚構成での後群を分離した3群4枚構成であり、
これのボケ調整や被写体の選び方、あるいは設定次第では
「ぐるぐるボケレンズ」でも、軽い「シャボン玉(バブル)
ボケ」を出せる場合もある。(注:常に出る訳では無い、
この辺のコントロールは、かなり高度な技能を必要とする)
----
さて、ここまでが「シャボン玉(バブル)ボケ」の説明
である。
で、今回の記事は、レンズの紹介記事ではなく・・
「プログラミング・シリーズ」記事である。
つまり、現代においては「シャボン玉(バブル)ボケ」
が出るレンズは少ない訳であり、そうであれば、現代の
高性能レンズを用いて撮った写真を、「画像処理技術」
(注:ここで言う「画像処理」とは、パソコン等で
写真を自動的に解析・演算して、新しい効果を付与したり
するテクノロジーを示す。
世間ではPhotoshop等のレタッチソフトを用いて写真等の
画像を手動(人力)で加工編集(レタッチ)する事を
”画像処理”と言う場合もあるが、ここで言う「画像処理」
は、そうした手動の作業では無く、コンピューター等により
自動的に計算処理される工学・光学的技術の事である。
Photoshop等による人力での技能は「画像編集」と呼び、
「画像処理」とは明確に区分する事が望ましい)
・・を用いて、「シャボン玉(バブル)ボケ」を付与する
ソフトをプログラミングする、という趣旨の記事だ。
(下図は、プログラミング開発環境を用いて、今回のソフト
のGUI部を開発中の様子)
![_c0032138_08190889.jpg]()
だが、予め書いておくが、今回のソフトは「失敗作」で
ある(汗)
本シリーズ記事では、世の中に前例の無い、全く新しい
画像処理手法(アルゴリズム)を、1から自力で考えて
それを実装(プログラミング)する、という趣旨であり、
世の中に他に存在するプログラム(ソースコード)や
ライブラリ(OpenCV等)は、一切参照や使用をしない、
完全なオリジナルである事をルールとしている。
で、これはもう「研究」というレベルであり、その全てが
成功するものでは無い。 本シリーズ記事においては、
目標として、研究テーマのうち3割~5割が成功すれば
良い、という感じに考えている。
「研究」レベルの高度な事をやってはいるが、実はこれは
あくまで趣味の世界の話だ。別に、誰からも「シャボン玉
ボケソフトを作りなさい!」と言われている訳では無いし、
いつまでにそれを作るという義務も責任も無い。
また、出来たソフトは例え成功例であっても配布や販売を
行う事もしない。(=販売したら、仕事になってしまう
のだが、そういう趣旨/志向性では無い訳だ)
完全なる「趣味」の世界であるが、逆に「趣味」である
からこそ、これまで誰もやって来なかった新しい事に挑戦
できる訳だ。”仕事では無い”という事を最大限に活用した
プログラミングの研究開発の話であり、本シリーズでは、
「こういう発想で、新規のプログラムを作る」という事が
最も言いたい事である。
・・まあつまり、世間一般のプログラミングの記事では、
プログラムの書き方とか、ライブラリ関数の使い方とか、
そんな風な受動的な内容ばかりであり、「それでは、それが
上手く動いたとしても、”習い事”の世界ではないか!」
と常々思っていて、そういう風な「習い事」では、それが
「本当に”プログラミングをしている”のかどうか?」
という点が、個人的には極めて疑問に感じてしまう訳だ。
![_c0032138_08190837.jpg]()
今回の「アルゴリズム」(画像処理の手順)は、比較的
高度である。で、こうした、他に前例の無いアルゴリズムは
「知的財産」となる。本シリーズは「プログラミングの仕方」
の記事では無いし、苦労して考え出した知的財産を、無償で
公開するつもりも、さらさら無いので、その中身については
ここに書く事は無い。
ただ、今回の処理での流れ(フローチャート)を、ごく簡単
に示しておけば・・
1)写真画像を入力する
2)写真画像を解析し、円形の背景ボケ部と思われる部分を
抽出する(その際、抽出レベルを数段階で選べる)
3)抽出した円形ボケ部の輪郭を得る
4)輪郭部の光量(輝度等)を増し、元画像に合成する
その際、光量増加量を数段階で選べる
5)出来上がった合成画像を表示する
6)必要に応じて、2)3)での解析中の画像も表示できる
となる。
これは、やや複雑な処理である為、GUIを作っているC#言語
だけでは実現が難しく、別途、「画像処理計算エンジン部」
をC++言語で作る事とした。
案の定、計算エンジン部のソースコード量は52KB(半角文字
で約52,000文字)と、やや大きくなったが、これを単独の
EXEとしてコンパイル(ビルド)し、GUI部から呼び出せる
ようにしてプログラム全体が完成。(注:プログラム量が
比較的大きいのは、外部ライブラリ等を一切使用しない事も
理由としてある。本シリーズのプログラミングでは、たとえ
JPEG画像を読み込む、とか、それを縮小する、とかの単純な
処理(機能)であっても、全て自分で1から記述したソース
コードを使うルールとしている=他者の真似や引用は禁止)
計算時間は、Web掲載クラスの数十万画素の写真であれば、
1秒程度で終わるが、カメラで撮ったままの数千万画素
という写真となると、数十秒以上と長い。まあでもここは
実際にも複雑な計算をさせているので、やむをえない。
ただし、この為、GUI側で何かパラメーターを変更した都度
計算を行う訳にはいかない。それをしたら、ちょっと何か
操作をするたびに、数秒から数十秒も待たなくてはならない。
計算は、あくまでパラメーター設定後に、纏めて実行する
ようにしていこう。
さて、では、背景ボケのある(入力)画像を選ぼう。
![_c0032138_08190940.jpg]()
まずはこんなものか? 近代レンズで撮影したものなので、
この段階では「シャボン玉(バブル)ボケ」は出ていない。
![_c0032138_08191250.jpg]()
写真を、出来上がったソフトに入力して、自動加工する。
*GUI画面の左側が入力画像。
*その下部が、上記フローチャートの2) と4)に相当する
抽出レベルと増強レベルの調整用スライダーである。
*スライダーを設定したら、「BUBBLE」ボタンを押すと
別途、計算エンジン(EXE)がバックグラウンドで計算を
開始し、小画素であれば、数秒後に計算が終了して、
結果が右側画面に自動表示される。
*計算結果画像は、必要に応じてクリップボードにコピー
する事が出来る。→早速そうしてみよう。
![_c0032138_08191502.jpg]()
これが計算結果。
「シャボン玉(バブル)ボケ」は、確かに付加されては
いるが、とてつもなく不自然である(汗)
まるで背景ボケの輪郭をマウスでなぞって、白っぽい
線を描いたようだ。
これでは残念ながら、成功例とは言えないだろう。
ちなみに、画像のどの部分に影響(シャボン玉(バブル)
ボケの効果)を与えたのか?は、画像処理の途中経過が、
別の合成画像として保存されるように作ってある。
そちらも確認してみよう。
![_c0032138_08191952.jpg]()
計算エンジンは、上の画像上の水色の部分に、シャボン玉
(バブル)ボケ輪郭の効果を付与しようとした訳だ。
これは間違っていない。正しくここに輪郭効果が出れば
問題は無い、なのに何故、結果画像は不自然なのか・・(?)
他の画像で試してみよう。
あるいは、パラメーターの設定が悪いのかも知れない、
様々なパラメーターでも試してみよう。
![_c0032138_08192238.jpg]()
別の画像での計算結果。
こちらは一応「シャボン玉(バブル)ボケ」っぽいが
効果が極めて地味だ。
そして、これ以上効果を高めるようにパラメーターを
設定すると、背景ボケ部のみならず、被写体部分にも
影響が出てしまう。なので、これ以上強く効果を出す
事が出来ない。(=破綻してしまう)
アルゴリズム(計算手法)は、間違いなく動作している
模様である。だから、一般的に言う「バグ」では無い。
一般的な「バグ」とは、「正解」がちゃんとあるのだが、
間違ってプログラミングしてしまった状態を示すと思う。
だが、このような、全く新規のアルゴリズムの場合は、
正解があるとも無いとも言えず、プログラムが正しく動作
していたとしても、目的とする効能が得られないならば
これはバグではなく、「失敗の開発結果」であろう。
アルゴリズムを改良(または作り直し)して、あまり
不自然では無い「シャボン玉(バブル)ボケ」を
生み出すようにする事が、一番まっとうな解決手段だ。
・・だが、もうこのあたりで興味が無くなって来て
しまっている(汗)
仕事等で、絶対にやらなくてはならない研究開発では無く、
趣味の作業なので、やるかやらないかは自分次第である。
これを始める前にアルゴリズムを考え、それをメモし、
「よし、これで作れば、上手くいくはず!」と考えて
いたのだが、予想が外れた、という事である。
正直、作り直す気には、もうなれない(汗)
(「作る事自体が楽しい」と言い換えれるかも知れない)
そうであれば、もうこれは失敗作として葬ってしまおう。
だが、その前に・・
あえてパラメーターを出鱈目に設定し、何か面白い
効果が出ないだろうか? つまり「想定外の偶然が、何か
得られないだろうか?」(≒音楽で言う「アドリブ」)
そんな視点で、もう少しだけ本ソフトを触ってみる。
![_c0032138_08192898.jpg]()
上は、滅茶苦茶強い効果に設定した例。
もう、ここまでやると「シャボン玉(バブル)ボケ」
ではなく、全く別の効果である。
まあでも、それが面白いのであれば、結果オーライだ。
だが、あまり面白いとも思えない。これでは、まるで
「ドーナツボケ」である。
だが、いったい、何が「不自然」となる原因なのか?
画像特徴の抽出部か? 効果の付与部なのか?
![_c0032138_08192881.jpg]()
上画像は、計算エンジンの途中経過で、入力された
画像の特徴を解析している状態の画像だ。
アルゴリズムの研究開発では、1発でそれが上手くいく
保証はまるで無い為、人間が後で見て様子がわかるような
途中画像(中間画像)を沢山出力しておく事が、望ましい
セオリー(研究開発のやりかた)である。
この途中経過画像は、本記事冒頭のDOMIPLAN 50/2.8
で撮った写真の解析である。
ここでの課題は、被写体部まで抽出してしまっている
事にありそうだ。この為、付与効果を強めようとすると、
背景の(円形)ボケ部のみならず、主要被写体部にまで
「シャボン玉」輪郭が付与されてしまうので、それは
もう破綻している状態であるから、あまり効果を高める
事が出来ない訳だ。
もう1つの課題だが、背景ボケが、完全に独立した円形
の状態ではなく、いくつもの円形ボケが集まって複雑な
形状になってしまっている状況が見える事だ。
これでは、輪郭部の光量を増加しても、不自然になる
ばかりである。
この課題については、撮影技能の方で対処する、つまり
円形ボケが独立しているような写真を撮る、という事だ。
・・だから、結局、このソフトの場合には、まずは
入力する写真を円形ボケとなっているものを厳選し、
そういう写真に対して、比較的地味な効果を付与する
のであれば、不自然に破綻する状態にはならない事が
推測できる。
では、そうやってみよう。
![_c0032138_08192880.jpg]()
被写体部(前景の灯篭)に、ほとんど影響を与えず、
背景の光源ボケ部に、「シャボン玉(バブル)ボケ」が
ある程度個別に付与されている。
まあ、これで良いのだが、それにしても地味な結果だ(汗)
画素数が小さいのも仇になっているのか? あまり大きな
画素数の画像を入力すると、計算時間がかかりすぎるので
あまり好まないが、まあ、とりあえず中画素でやってみよう。
![_c0032138_08192827.jpg]()
あまり状況に変化は無い、まあこれでも、一応効果は付与
されてはいるが、例によって、恐ろしく地味である。
はたまた、写真あるいは撮影機材が悪いのか? こういう
効能を得るには、あまり高性能のレンズではなく、むしろ
低性能(オールド)なレンズ、あるいは特殊効果のレンズを
用いた方が良いのかも知れない(?)
では、ちょっと前述した「ぐるぐるボケレンズ」を
使って撮影した写真を入力してみよう。画素数も大きくする。
![_c0032138_08193393.jpg]()
600万画素を、数十秒も待って計算させた結果が、やはり
とても地味なものなので、ちょっとがっかりである。
まあ確かに「シャボン玉(バブル)ボケ」にはなっては
いるが、これもやはり、なんだか効能がわかりにくい。
それに、もしかすると、この写真、ソフトを通す前から
すでに「シャボン玉(バブル)ボケ」傾向が出ては
いないであろうか?
ちょっと元画像を拡大して確認してみよう。
![_c0032138_08193354.jpg]()
こちらが元画像の拡大写真。
「ぐるぐるボケレンズ」は、3群4枚の変形ペッツヴァール
型構成であり、DOMIPLAN等の3群3枚トリプレット型構成と
類似する部分がある為、これもまた僅かながら「シャボン
玉(バブル)ボケ」傾向が出ているように見える。
もう、ここらへんで力尽きた(汗) 本ソフトは潔く
失敗作として葬る事としよう。
まあでも、今回の失敗は、次回に、また経験や今回作った
ソースコードを活かしていけば良いという話だ。
----
最後に、本シリーズ記事での研究の成否を挙げておく。
○=成功、△=不明、X=失敗
第01回:○:横浜写真の自動生成
第02回:△:擬似紅葉
第03回:○:高精度ピーキング処理
第04回:X:「ロココ調」変換
第05回:○:ボケ質解析
第06回:X:ぐるぐるボケ写真の自動生成
第07回:△:紅葉予測ソフト
第08回:○:「野獣派」変換
第09回:X:「点描画」変換
第10回:△:良質なボケの生成
第11回:X:良質なボケに補正
第12回:○:オリンパスブルーの生成
第13回:X:シャボン玉ボケの生成
総合成績=5勝5敗3分、勝率=3割8分5厘
まあ、勝率(研究の成功率)が3割を超えているので
とりあえずは、良しとするか・・
(目標値は5割、最低値が3割の成功率だ)
----
では、今回のプログラミング記事は、このあたりまで。
次回記事掲載は、例によって不定期としておくが、
次のプログラミングは、出来るだけ成功させたいものだ。
まず、「バブルボケ」または「シャボン玉ボケ」とは、
(カメラやレンズの)中級マニア層の用語(俗語)であり、
写真の背景点光源等で現れる、光源(ハイライト)の円形の
ボケに「輪郭」があり、あたかも「シャボン玉」あるいは
「バブル(泡)」のように見える状態を指している。
だいたい、以下の写真のような感じだ。

を拡大して紹介しよう。
この「シャボン玉(バブル)ボケ」は、レンズの「収差」
(すなわち、光学的な欠陥)により発生するものである。
近代の一般的な(写真用)レンズは設計時に収差が出ない
ように高度な補正を行っている為、まずこうした状態には
ならず、一部のオールドレンズ(50年程度昔の物、又は
その時代の設計を踏襲して現代で製造された復刻版製品)
でないと、このような「シャボン玉(バブル)ボケ」は
発生しない。
上の写真は、東独で1960年代~1970年代頃に製造
された「Meyer Optik Goerlitz DOMIPLAN 50mm/F2.8」
(注:メーカー名の原語綴りには変母音が含まれるが、
記載便宜上、それを省略し、代替表記を行っている)
というオールドレンズを使用して撮ったものである。
(下の機材写真参照)

「トリプレット」と呼ばれる、とても単純なレンズ構成だ。
(参考:トリプレットは、1890年代に英国にて発明)
シンプルかつ、製造上でもコストダウンが可能な為、
1960年代当時、ローコストな(標準)レンズを作りたい
理由で、こうした単純構成を採用したのだと思われる。
(参考:「東ドイツカメラの全貌」、1998年版、蔵書)
この構成は、当時の国内外のローコストな銀塩コンパクト
カメラ等の一部でも、採用されていたと思われる。
「トリプレット」構成でも、絞りを少し絞り込むと収差が
減少して比較的良い写りになるが、冒頭の写真のように絞り
を開放にして撮ると、(諸)収差が増大して、シャボン玉
ボケやら、他の要因(解像感が低下する等)が発生する。
この収差発生を嫌って、レンズ構成を1枚増やし、3群4枚
とすると、これはいわゆる「テッサー型(構成)」となり、
このテッサー型の方が、極めて多くの戦後の銀塩コンパクト
機等に採用されていたと思う。
(参考:テッサー型構成は、カール・ツァイス社の
ルドルフ技師が1902年に発明した構成だが、恐らく、
特許であるとか、戦争とか、製造上の問題点とかで、
このテッサー型レンズが世間一般の様々なカメラに搭載
されたのは、前述のように、第二次大戦後、つまり
1950年代以降の話である。
また、1950年代以降のカメラやレンズであっても、あえて
テッサー型を採用せず、レンズの少ないトリプレット型や、
逆にレンズ枚数を増やして複雑化したプラナー型(変形
ダブルガウス型)等のレンズも、勿論あった)
では、もう1枚、 トリプレット型のDOMIPLAN 50/2.8
による「シャボン玉(バブル)ボケ」の写真を掲載しておく。


なお、一般初級層、または初級マニア層等が良く混乱して
使う、別の用語(俗語)に、「玉ボケ」(丸ボケ)がある。
「玉ボケ」は、この「シャボン玉(バブル)ボケ」を指して
言う場合と、そうではなく、ただ単に近代レンズ等で絞りを
開放にして撮影し、背景点光源ボケが円形になっているだけ
の状態(つまり、輪郭=フチ、が存在しないボケの状態)を
指す場合がある。
混乱するので、今回の記事では、以下のように定義する。
「玉ボケ」(稀に、「丸ボケ」とも)
→単なる円形(光源)ボケ。あらゆる(近代)レンズで
絞りを開放にする事で発生する。
(注:画面周辺部では「口径食」の発生により、ボケ
形状が完全な真円にはならない場合もある)
また、一部の近代レンズでは、「円形絞り機構」等で
ある程度絞った状態でも、「玉ボケ」に近い円形の
ボケが得られるように、と配慮した設計の物もある。
「シャボン玉(バブル)ボケ」
→上記の円形(光源)ボケに、輪郭(フチ)がある状態。
一部のオールドレンズ等、収差補正が行き届いていない
レンズを(主に絞り開放で)使うと発生する。
では、もう1枚、DOMIPLAN 50/2.8を使って、シャボン玉
(バブル)ボケを発生させた例を下写真で紹介する。

背景が「うるさく」(=ごちゃごちゃしていて、汚らしい)
感じてしまい、積極的に、これを作画に利用したいとは、
あまり思えない。
ただまあ、現代レンズでは、まず味わえないような特性で
あるから、この独特な描写を好む中上級マニア層も居る。
なので、近代では、前述の「Meyer(マイヤー) Optik」
のブランド名を用い(注:はるか昔に休眠しているブランド
であるが、再度復活させた)これが強く発生するレンズ
「TRIOPLAN 100mm/F2.8」(トリプレット構成である)
を、2010年代後半に新規に製造販売したのだが、これは
マニマ向けの少数生産品なので、新品で20万円以上、
中古でも軽く10万円以上もする高額商品であるので
未所有だ。(=高価すぎる、又はコスパが悪いという判断)
(注1:今回使用の「DOMIPLAN 50/2.8」はTRIOPLAN
の姉妹レンズであるが、新製品(復刻版)ではなく、
実際に50年程前に製造されたオールドレンズであるので、
中古購入価格は約7,000円と、適切な相場であった)
(注2:復活した「Meyer Optik」だが、2018年頃、
経営者が事故に合い、以降、活動を停止してしまって
いる。残念ながら今後の新品入手は困難な状態だ)
TRIOPLANの方がDOMIPLANよりも焦点距離が長いので
「シャボン玉(バブル)ボケ」が出易いと想像できる。
逆に言えば、DOMIPLANは「シャボン玉(バブル)ボケ」
が出難いのであるが、そのあたりは技能で回避できる。
(注:姉妹レンズには、PRIMOPLAN(58mm/F1.9)や
その復刻版もある。こちらはトリプレット型では無い。
復刻版を含め高価につき、未所有なので、玉ボケの
発生の有無や詳細に関しては不明だ)
今回使用機SONY α7はフルサイズ機であり、ボケがやや
出易く、かつ、ヘリコイドアダプターを用いて、必要と
あれば近接撮影に持ち込み、被写界深度を浅くできる。
すなわちボケ量を増やす事ができる。その際での構図の
調整はSONY機の(プレシジョン)デジタルズーム機能を
併用しても良い。まあつまり、撮影技能次第でボケ量の
コントロールは、どうとでもなる話である)
ちなみに参考だが、「シャボン玉(バブル)ボケ」は
TRIOPLANやDOMIPLANといった特定のレンズだけで
出るという話では無く、3群3枚構成の単純なレンズを持って
来れば、他のレンズでも出せるし、3群3枚ではなくても
収差の補正が行き届いていないオールドレンズであるとか、
あるいは、近年流行のLOMOGRAPHY社やLENSBABY社から
発売されている「ぐるぐるボケレンズ」では、ペッツヴァール
型の2群4枚構成での後群を分離した3群4枚構成であり、
これのボケ調整や被写体の選び方、あるいは設定次第では
「ぐるぐるボケレンズ」でも、軽い「シャボン玉(バブル)
ボケ」を出せる場合もある。(注:常に出る訳では無い、
この辺のコントロールは、かなり高度な技能を必要とする)
----
さて、ここまでが「シャボン玉(バブル)ボケ」の説明
である。
で、今回の記事は、レンズの紹介記事ではなく・・
「プログラミング・シリーズ」記事である。
つまり、現代においては「シャボン玉(バブル)ボケ」
が出るレンズは少ない訳であり、そうであれば、現代の
高性能レンズを用いて撮った写真を、「画像処理技術」
(注:ここで言う「画像処理」とは、パソコン等で
写真を自動的に解析・演算して、新しい効果を付与したり
するテクノロジーを示す。
世間ではPhotoshop等のレタッチソフトを用いて写真等の
画像を手動(人力)で加工編集(レタッチ)する事を
”画像処理”と言う場合もあるが、ここで言う「画像処理」
は、そうした手動の作業では無く、コンピューター等により
自動的に計算処理される工学・光学的技術の事である。
Photoshop等による人力での技能は「画像編集」と呼び、
「画像処理」とは明確に区分する事が望ましい)
・・を用いて、「シャボン玉(バブル)ボケ」を付与する
ソフトをプログラミングする、という趣旨の記事だ。
(下図は、プログラミング開発環境を用いて、今回のソフト
のGUI部を開発中の様子)

ある(汗)
本シリーズ記事では、世の中に前例の無い、全く新しい
画像処理手法(アルゴリズム)を、1から自力で考えて
それを実装(プログラミング)する、という趣旨であり、
世の中に他に存在するプログラム(ソースコード)や
ライブラリ(OpenCV等)は、一切参照や使用をしない、
完全なオリジナルである事をルールとしている。
で、これはもう「研究」というレベルであり、その全てが
成功するものでは無い。 本シリーズ記事においては、
目標として、研究テーマのうち3割~5割が成功すれば
良い、という感じに考えている。
「研究」レベルの高度な事をやってはいるが、実はこれは
あくまで趣味の世界の話だ。別に、誰からも「シャボン玉
ボケソフトを作りなさい!」と言われている訳では無いし、
いつまでにそれを作るという義務も責任も無い。
また、出来たソフトは例え成功例であっても配布や販売を
行う事もしない。(=販売したら、仕事になってしまう
のだが、そういう趣旨/志向性では無い訳だ)
完全なる「趣味」の世界であるが、逆に「趣味」である
からこそ、これまで誰もやって来なかった新しい事に挑戦
できる訳だ。”仕事では無い”という事を最大限に活用した
プログラミングの研究開発の話であり、本シリーズでは、
「こういう発想で、新規のプログラムを作る」という事が
最も言いたい事である。
・・まあつまり、世間一般のプログラミングの記事では、
プログラムの書き方とか、ライブラリ関数の使い方とか、
そんな風な受動的な内容ばかりであり、「それでは、それが
上手く動いたとしても、”習い事”の世界ではないか!」
と常々思っていて、そういう風な「習い事」では、それが
「本当に”プログラミングをしている”のかどうか?」
という点が、個人的には極めて疑問に感じてしまう訳だ。

高度である。で、こうした、他に前例の無いアルゴリズムは
「知的財産」となる。本シリーズは「プログラミングの仕方」
の記事では無いし、苦労して考え出した知的財産を、無償で
公開するつもりも、さらさら無いので、その中身については
ここに書く事は無い。
ただ、今回の処理での流れ(フローチャート)を、ごく簡単
に示しておけば・・
1)写真画像を入力する
2)写真画像を解析し、円形の背景ボケ部と思われる部分を
抽出する(その際、抽出レベルを数段階で選べる)
3)抽出した円形ボケ部の輪郭を得る
4)輪郭部の光量(輝度等)を増し、元画像に合成する
その際、光量増加量を数段階で選べる
5)出来上がった合成画像を表示する
6)必要に応じて、2)3)での解析中の画像も表示できる
となる。
これは、やや複雑な処理である為、GUIを作っているC#言語
だけでは実現が難しく、別途、「画像処理計算エンジン部」
をC++言語で作る事とした。
案の定、計算エンジン部のソースコード量は52KB(半角文字
で約52,000文字)と、やや大きくなったが、これを単独の
EXEとしてコンパイル(ビルド)し、GUI部から呼び出せる
ようにしてプログラム全体が完成。(注:プログラム量が
比較的大きいのは、外部ライブラリ等を一切使用しない事も
理由としてある。本シリーズのプログラミングでは、たとえ
JPEG画像を読み込む、とか、それを縮小する、とかの単純な
処理(機能)であっても、全て自分で1から記述したソース
コードを使うルールとしている=他者の真似や引用は禁止)
計算時間は、Web掲載クラスの数十万画素の写真であれば、
1秒程度で終わるが、カメラで撮ったままの数千万画素
という写真となると、数十秒以上と長い。まあでもここは
実際にも複雑な計算をさせているので、やむをえない。
ただし、この為、GUI側で何かパラメーターを変更した都度
計算を行う訳にはいかない。それをしたら、ちょっと何か
操作をするたびに、数秒から数十秒も待たなくてはならない。
計算は、あくまでパラメーター設定後に、纏めて実行する
ようにしていこう。
さて、では、背景ボケのある(入力)画像を選ぼう。

この段階では「シャボン玉(バブル)ボケ」は出ていない。

*GUI画面の左側が入力画像。
*その下部が、上記フローチャートの2) と4)に相当する
抽出レベルと増強レベルの調整用スライダーである。
*スライダーを設定したら、「BUBBLE」ボタンを押すと
別途、計算エンジン(EXE)がバックグラウンドで計算を
開始し、小画素であれば、数秒後に計算が終了して、
結果が右側画面に自動表示される。
*計算結果画像は、必要に応じてクリップボードにコピー
する事が出来る。→早速そうしてみよう。

「シャボン玉(バブル)ボケ」は、確かに付加されては
いるが、とてつもなく不自然である(汗)
まるで背景ボケの輪郭をマウスでなぞって、白っぽい
線を描いたようだ。
これでは残念ながら、成功例とは言えないだろう。
ちなみに、画像のどの部分に影響(シャボン玉(バブル)
ボケの効果)を与えたのか?は、画像処理の途中経過が、
別の合成画像として保存されるように作ってある。
そちらも確認してみよう。

(バブル)ボケ輪郭の効果を付与しようとした訳だ。
これは間違っていない。正しくここに輪郭効果が出れば
問題は無い、なのに何故、結果画像は不自然なのか・・(?)
他の画像で試してみよう。
あるいは、パラメーターの設定が悪いのかも知れない、
様々なパラメーターでも試してみよう。

こちらは一応「シャボン玉(バブル)ボケ」っぽいが
効果が極めて地味だ。
そして、これ以上効果を高めるようにパラメーターを
設定すると、背景ボケ部のみならず、被写体部分にも
影響が出てしまう。なので、これ以上強く効果を出す
事が出来ない。(=破綻してしまう)
アルゴリズム(計算手法)は、間違いなく動作している
模様である。だから、一般的に言う「バグ」では無い。
一般的な「バグ」とは、「正解」がちゃんとあるのだが、
間違ってプログラミングしてしまった状態を示すと思う。
だが、このような、全く新規のアルゴリズムの場合は、
正解があるとも無いとも言えず、プログラムが正しく動作
していたとしても、目的とする効能が得られないならば
これはバグではなく、「失敗の開発結果」であろう。
アルゴリズムを改良(または作り直し)して、あまり
不自然では無い「シャボン玉(バブル)ボケ」を
生み出すようにする事が、一番まっとうな解決手段だ。
・・だが、もうこのあたりで興味が無くなって来て
しまっている(汗)
仕事等で、絶対にやらなくてはならない研究開発では無く、
趣味の作業なので、やるかやらないかは自分次第である。
これを始める前にアルゴリズムを考え、それをメモし、
「よし、これで作れば、上手くいくはず!」と考えて
いたのだが、予想が外れた、という事である。
正直、作り直す気には、もうなれない(汗)
(「作る事自体が楽しい」と言い換えれるかも知れない)
そうであれば、もうこれは失敗作として葬ってしまおう。
だが、その前に・・
あえてパラメーターを出鱈目に設定し、何か面白い
効果が出ないだろうか? つまり「想定外の偶然が、何か
得られないだろうか?」(≒音楽で言う「アドリブ」)
そんな視点で、もう少しだけ本ソフトを触ってみる。

もう、ここまでやると「シャボン玉(バブル)ボケ」
ではなく、全く別の効果である。
まあでも、それが面白いのであれば、結果オーライだ。
だが、あまり面白いとも思えない。これでは、まるで
「ドーナツボケ」である。
だが、いったい、何が「不自然」となる原因なのか?
画像特徴の抽出部か? 効果の付与部なのか?

画像の特徴を解析している状態の画像だ。
アルゴリズムの研究開発では、1発でそれが上手くいく
保証はまるで無い為、人間が後で見て様子がわかるような
途中画像(中間画像)を沢山出力しておく事が、望ましい
セオリー(研究開発のやりかた)である。
この途中経過画像は、本記事冒頭のDOMIPLAN 50/2.8
で撮った写真の解析である。
ここでの課題は、被写体部まで抽出してしまっている
事にありそうだ。この為、付与効果を強めようとすると、
背景の(円形)ボケ部のみならず、主要被写体部にまで
「シャボン玉」輪郭が付与されてしまうので、それは
もう破綻している状態であるから、あまり効果を高める
事が出来ない訳だ。
もう1つの課題だが、背景ボケが、完全に独立した円形
の状態ではなく、いくつもの円形ボケが集まって複雑な
形状になってしまっている状況が見える事だ。
これでは、輪郭部の光量を増加しても、不自然になる
ばかりである。
この課題については、撮影技能の方で対処する、つまり
円形ボケが独立しているような写真を撮る、という事だ。
・・だから、結局、このソフトの場合には、まずは
入力する写真を円形ボケとなっているものを厳選し、
そういう写真に対して、比較的地味な効果を付与する
のであれば、不自然に破綻する状態にはならない事が
推測できる。
では、そうやってみよう。

背景の光源ボケ部に、「シャボン玉(バブル)ボケ」が
ある程度個別に付与されている。
まあ、これで良いのだが、それにしても地味な結果だ(汗)
画素数が小さいのも仇になっているのか? あまり大きな
画素数の画像を入力すると、計算時間がかかりすぎるので
あまり好まないが、まあ、とりあえず中画素でやってみよう。

されてはいるが、例によって、恐ろしく地味である。
はたまた、写真あるいは撮影機材が悪いのか? こういう
効能を得るには、あまり高性能のレンズではなく、むしろ
低性能(オールド)なレンズ、あるいは特殊効果のレンズを
用いた方が良いのかも知れない(?)
では、ちょっと前述した「ぐるぐるボケレンズ」を
使って撮影した写真を入力してみよう。画素数も大きくする。

とても地味なものなので、ちょっとがっかりである。
まあ確かに「シャボン玉(バブル)ボケ」にはなっては
いるが、これもやはり、なんだか効能がわかりにくい。
それに、もしかすると、この写真、ソフトを通す前から
すでに「シャボン玉(バブル)ボケ」傾向が出ては
いないであろうか?
ちょっと元画像を拡大して確認してみよう。

「ぐるぐるボケレンズ」は、3群4枚の変形ペッツヴァール
型構成であり、DOMIPLAN等の3群3枚トリプレット型構成と
類似する部分がある為、これもまた僅かながら「シャボン
玉(バブル)ボケ」傾向が出ているように見える。
もう、ここらへんで力尽きた(汗) 本ソフトは潔く
失敗作として葬る事としよう。
まあでも、今回の失敗は、次回に、また経験や今回作った
ソースコードを活かしていけば良いという話だ。
----
最後に、本シリーズ記事での研究の成否を挙げておく。
○=成功、△=不明、X=失敗
第01回:○:横浜写真の自動生成
第02回:△:擬似紅葉
第03回:○:高精度ピーキング処理
第04回:X:「ロココ調」変換
第05回:○:ボケ質解析
第06回:X:ぐるぐるボケ写真の自動生成
第07回:△:紅葉予測ソフト
第08回:○:「野獣派」変換
第09回:X:「点描画」変換
第10回:△:良質なボケの生成
第11回:X:良質なボケに補正
第12回:○:オリンパスブルーの生成
第13回:X:シャボン玉ボケの生成
総合成績=5勝5敗3分、勝率=3割8分5厘
まあ、勝率(研究の成功率)が3割を超えているので
とりあえずは、良しとするか・・
(目標値は5割、最低値が3割の成功率だ)
----
では、今回のプログラミング記事は、このあたりまで。
次回記事掲載は、例によって不定期としておくが、
次のプログラミングは、出来るだけ成功させたいものだ。