Learning光学・カメラ信号処理・プログラミングや機械学習に関する趣味のブログです。[アルゴリズム]私が使っている開発環境についてお話します。・・・MicrosoftのOSが好きという訳で使っている訳ではありません。MacやLinuxの方が好き。仕事に使うには多くの人が使っているので、いろいろなソフトウェアや開発環境が使えるのがメリット。テキストやスクリプトで使うことが多いのでGUIなどはでうでも良い。Windows10でも良いのだが、最新OSはトラブル対応などがネットに載っていないのでなるべくアップデートは避けている。Cygwin64・・・Windows上でLinuxが使えるようになるツール。OSと言ってもよいかも。Windowsのコマンドやソフトウェアを起動できるのでLinuxよりも便利。MagickやPyhonなども使える。IBMのRapportというウィルス対策ソフトは消してしまった方がいいです。Cygwinの速度が異常に遅くなります。Studio・・・厳密に言うとCやC++ではないのですが、このエディタとデバッグ機能はCやC++のプログラミングには最強?CUDAとの相性もいい。Microsoftにしては珍しく使えるソフト、開発環境なのでタダにしてほしいが。CUDA・・・NVIDIAのGPUプログラミングの開発環境。CodeV・・・光学シミュレーションソフトウェア。他のZemaxも含めてWindows版しかない。DirectX・・・Windowsのgame開発ライブラリ。リアルタイム動作やカメラのコントロールなどはこれが必要。この環境で、Cのプログラミングや光学シミュレーション、カメラの接続、リアルタイム動作などのことがすべて出来るようになります。Professionalのメモリ空間も2TBも魅力的だが、まだ安価なボードが無いので、それまではWindow7のサポート期限が来るまでは使い続ける予定。[はじめに]今日は、カメラの光学的な本質的な課題についてお話したいと思います。図はカメラの光学的な課題についての図です。左上に「被写界深度」の問題がありますが、こちらはレンズが明るく、センサーが大きい方がより被写界深度が浅くなります。」などは全てレンズが大きく、センサーサイズが大きい方が有利なのです。「回折限界」は、センサーの物理的な大きさ、つまり画素ピッチで効いてきますし、絞りも絞ってしますと小絞りボケと言って画像がボケてしまいます。「解像力」、レンズには球面収差というのがあって、要はレンズ球面のなだらかさなのですが、こちらもレンズが大きい方が有利なようです。センサーも物理的に大判の方が当然解像力には有利です。「感度、明るさ」、こちらもレンズは大きい方が明るいですし、センサーも画素が大きい方が感度を上げられます。近年では裏面照射型のイメージセンサーが開発されてきてますが、こちらは画素が大きいのは設計が難しいとか?でも一般的には画素が大きい方が感度が高いです。言うように、光学的には解像力を高くカメラを物理的に小さく出来る要素がほとんどないのです。近年4K・8Kカメラと言ってますが、ちゃんと4K・8Kの解像度が出るのは放送局やシネマに使っているカメラだけだと思います。放送局やシネマ用カメラは被写界深度が浅くても、被写体をクローズアップできるなどメリットがあるためこの用途では良いようです。一般の人にはとても使いにくいカメラです。近年CマウントやM12マウントの4Kカメラが発売されていますが、本当に4Kの解像力があるのかあやしいと思っています。センサー屋さんは4Kの画素ありますよ~。レンズ屋さんはMTFがありますよ~。言っているだけのような気がします。スマホなどはスマホ会社の技術屋さんも言ってましたが、やはり計ってもいないようです。問題意識を持って頑張っているメーカーさんもあるようです。[はじめに]今日は、超解像について話してみたいと思います。超解像でネットで検索してみると『再構成型』と『学習型』って出てくると思いますけど、何のことか?さっぱりわからないと思います。学会等で一種の宗教論争のようにも。あとエンハンサーやシャープネスとの違いも良くわかりませんね。そこで私なりの理解を説明したいと思います。再構成型と呼ばれているのは、簡単に言うと、過去や近傍から近い画像を探してきて、そのデータから画像を埋めることのようです。確かにこの方法ならば解像度は向上しますが、ただこの方法の欠点は、探してきた画像が正しいことが前提になります。これが結構間違うのですよ。次に学習型と呼ばれるものは、これ私20年ほどやっていますが、この方法は一番画質がいいと思います。波形パターンなどに分類して、統計的に確からしい値を予測します。この方法は厳密に言うと解像度は上がりませんが、帯域劣化による解像感は向上します。個人的には、ボケを取る技術と思っています。一言にボケと言ってもいろいろあります。・サンプリング時の帯域制限によるボケ・レンズのMTFによるボケ・光学LPFによるボケ・小絞り(回折)ボケ・ピンボケ・動きボケ・ホールドボケ各々のボケのモデルを解く事が超解像だと思っています。この学習型超解像を回折ボケの除去に応用して例を次に説明します。回折ボケをほぼ完璧に戻せることがわかります。この場合はアップコンバータのように画素補間を行わなず、情報が少し残っているので、帯域劣化のみ復元できれば、ほぼ元通り戻すことが出来ます。編集機やカメラの設定に付いているエンハンサーやシャープネスと何が違うの?って良く聞かれるのですが、エンハンサーやシャープネスは要はmatlabの窓関数うんぬんの話で、要は上図のような考え方で、高解像度画像を予測しています。簡単に言うと隣接画素は相関があるでしょ。緑の部分と同じと思って引いてあげると赤が残ります。それを繰り返していくと何十タップも繰り返すとSNが向上して行くでしょ。この理論の大前提は、隣接画素に相関がある場合に成り立つのですが、画像ですから相関がない場合も十分あります。強力な光の周辺はリンギングなどの劣化が起こるのです。learning)とは、人工知能における研究課題の一つで、人間が自然に行っている学習能力と同様の機能をコンピュータで実現しようとする技術・手法のことである。(Wikipediaより)とありますが、難しく考えることはありません。あるデータの平均値を取って、そのデータを中心値と仮定することも機械学習の1つです。学者さんは簡単なことも難しい言葉を使ってわかり難く説明して、自分は凄いんだって言っているだけのような気がします。その機械学習の中でも、ニューラルネットを用いて、特徴量も学習させたのがディープラーニング(深層学習)になります。この機械学習で何が出来るかは、次に説明します。機械学習やディープラーニング(深層学習)は、今流行りの認識などに用いられていますが、要は認識とは境界(又は閾値)を求めているのです。実は機械学習は認識以外にも超解像などの画像生成にも用いることが出来るのです。超解像では、認識のように閾値を求めるのではなく、入力画像に対する係数行列を求めているのです。超解像と言っても何も無いところは作れないので、入力画素から作るのですが、その入力画素をどう使って(ブレンドして)作るかが鍵なのかも知れません。[はじめに]このカメラ、NHK技研公開で公開された8Kカメラです。私も8Kカメラの開発に携わってきましたが問題だらけ、本質的な課題はまだ解決してないんじゃないかと思います。8Kカメラは解像度を出すために、レンズを明るく大きく、センサーも35mmの大判センサーを使っています。回折限界という光学の回折現象にためにボケちゃうので、レンズを明るく大型のものに、センサーの大型にする必要があるのです。レンズやセンサーを大型化すると被写界深度が浅くなり、フォーカスが合わせずらく、フォーカスがあったところしか8Kの解像度がでないのです。4K・8Kカメラはプロでもフォーカスが合わせずらくなり、フォーカスアシストやオートフォーカスが付き出したのです。8K解像度をちゃんと出すためには、この光学的な問題でどうしても大型になってしまうのです。近年スマホで4Kとかありますけど、おそらくまともに4K解像度が出来るスマホは皆無だと。開発者に聞いてみたら計ったことも無いとか。彼ら4Kの画素数があり、多くのデータを通信させて通信料が稼げればそれで良くって、4K解像度が出るか出ないかはどうでもいいことのようです。監視カメラや自動車の車載カメラなどは、やはり小型で解像度の高いカメラがほしいようですが、近年になってその問題に気づき始めたようです。[はじめに]このブログは、人の視覚のように、広い範囲を、歪まず、遠くも、近くも、くっきり写すには?をテーマに考えて行きたいと思います。私は前職でスーパーハイビジョンカメラの開発を行っていたのですが、その時に、こんなに大きく、フォーカスも合わせにくい、フォーカスがあったところしか8K解像度が出ない。こんなカメラが世の中に普及するのか疑問に思っていました。ソネットポイントこの広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。この広告は180日新規投稿のないブログに表示されます。