三部作「焦点がぼけた画像とぼけた画像の復元」の最終記事をご紹介します。 最初の2つはかなりの興味をそそりました-このエリアは本当に面白いです。 このパートでは、標準のウィナーフィルターと比較して最高の品質を提供するメソッドのファミリを検討します。これらは、Total Variatonの事前に基づいたメソッドです。
また、伝統的に、私はこの方法を実装したSmartDeblurの新しいバージョンを(オープンソースのソースとともに)投稿しました。 最終的な品質は、Topaz InFocusなどの商業的な同等品のレベルでした。 非常に大きなブラーのある実際の画像を処理する例を次に示します。

はじめに
ここではデコンボリューションの基本理論については説明しませんが、以前の記事で詳しく説明しました。 それらを読んでいない、または忘れている人のために、用語と古典的なアプローチを理解するために、まずそれらに精通することをお勧めします。
パート1.理論 ;
パート2.実践 。
Total Variation(以下TVの前称)の説明に進む前に、古典的なWienerフィルターのようなアルゴリズムの欠点を理解する必要がありますか? 最も基本的なものは、小さなレベルのノイズ、境界のぼやけ、小さなディテール、および人間の知覚の観点からのノイズリダクションが低い場合でも、リンギングのタイプ(オブジェクトのエッジの周期的なハロー)の効果です。 これはすべて、Wienerフィルターの実際のアプリケーションを大幅に妨害し、そのアプリケーションを、たとえば関心のある碑文を読むための技術的な画像復元のタスクに限定します。
したがって、近年、視覚の質を改善することを目的とする多くの異なる方法が開発されました。 この場合、原則として部品の数は増えないことに注意してください。
事前のテレビの説明
結果の観点から見た全変動の主な品質は、鋭いエッジの保存とデコンボリューションのアーティファクトの平滑化です。 次のように書かれています。

残念ながら、非常に複雑な最適化技術を使用する必要があるため、この関数の計算は簡単な方法で行うことはできません。
別の方法として、絶対値の代わりに平滑化された関数を使用できます。

イプシロンがゼロになる傾向がある場合、結果はTotal Variationの最初の決定の傾向がありますが、最適化プロセスはより複雑になります。 逆に、十分に大きいイプシロンでは、最適化の結果は、エッジがぼやけているウィナーフィルターに似ています。 残念ながら、上記の式は非2次形式なので、WienerおよびTikhonovフィルターの場合のように、フーリエ周波数空間で単純に計算することはできません。 したがって、近似解を見つけるには、段階的な最適化方法の1つが必要です-たとえば、古典的な勾配降下法:

tauは次の式で計算されます。

そして、平滑化された関数の勾配は次のように定義されます:

反復の数は非常に大きくなければなりません-数百。
これは、TV優先の実装における最も基本的なアプローチであり、「額」と呼ばれます。 それでも、それでも非常に良い結果が得られます。 それに基づいて、多くの研究が科学的出版物に登場し、それらはまだ品質を改善し、計算時間を短縮しようとしています。
実用的な実装
説明した式は、原則として単純ですが、実装は非常に面倒です。 主な問題は、高性能を達成することです。 反復の数は非常に多く、各反復には多くの複雑なアクションが含まれます。 すなわち、画像全体のいくつかの畳み込み、完全な勾配と発散の計算。
私はすぐに良い仕事の速度を達成することができなかったとすぐに言わなければなりません、数メガピクセルの画像で最終的な計算時間は2-3分です。 しかし、プレビューは高速です-0.2秒のオーダー。
Windowsビルドは次の場所からダウンロードできます。
github.com/downloads/Y-Vladimir/SmartDeblur/SmartDeblur-1.27-win.zipソース(GPL v3ライセンス)は、
github.com /
Y-Vladimir /
SmartDeblurで入手できます。
2番目のパートで説明した以前のバージョンと比較した主な変更点:
- 2つのデコンボリューション方法が追加されます:TV事前およびTikhonovフィルタリング
- ガウスぼかしを復元するためのサポートが追加されました
- 速度の改善(約2.5倍)
- メモリ消費の削減(約1.5倍)
- デフォルトで処理される画像の最大サイズは3000です(ただし、設定で変更できます)
- 設定セクションを追加
- 更新チェッカーを追加
- ドラッグアンドドロップのサポート
- サンプル画像とセットアップのヒントを含むヘルプ画面を追加しました
- プレビューモードでの波紋のバグを修正
Qtを使用するC ++言語。
比較
さて、今最も重要なことは、ぼやけた画像を処理するときに期待できる品質です。 Topaz InFocusのトップ商用製品と比較します。 他のアナログ(FocusMagicなど)は、長い間サポートされていないか、まったく受け入れられない処理結果をもたらします。 行きましょう。
まず、Topaz InFocus Webサイトから広告の例をご覧ください:
www.topazlabs.com/infocus/_images/licenseplate_compare.jpg
Topaz InFocusの結果は次のとおりです。

そして、これは次のパラメーターを使用したSmartDeblurの結果です。
タイプ:モーションブラー、長さ:10.1、角度:-45、スムーズ:60%

ご覧のとおり、結果は非常に似ています。 そして、どちらが良いかはそれほど明白ではありません。 Topaz InFocusは、TVの前処理に加えて、エッジシャープニングの形での後処理に類似したアルゴリズムを使用しているようです。 非常に高い確率で与えられた最初の不鮮明な画像は合成であることに注意してください。 つまり 歪みのない画像が撮影され、モーションブラーフィルターが適用されます。 これは、ほぼ完全な回復と、疑わしいほどに全体の歪みパラメーター(45度の角度と10ピクセルの長さ)によって確認できます。
それでは、手動フォーカスフォーカスを使用して、昨日キヤノン500Dで撮影した実際の画像を見てみましょう。

次のパラメーターを使用したTopaz InFocusの結果:
タイプ:焦点外、半径:5.5、アーチファクトの抑制:0.34

以下のパラメーターを使用したSmartDeblurの結果:
タイプ:焦点が合っていない、半径:5.9、スムーズ:60%

引き分けがあります、あなたは言うことができます。 各プログラムのパラメーターは、最高の品質を確保するために選択されました。
私が撮影した別の実際の例:

以下のパラメーターを使用したSmartDeblurの結果:
タイプ:モーションブラー、長さ:6.6、角度:-37、スムーズ:53%

結論
3番目の最終記事は終了しました。 それほど大きくはありませんでしたが、役に立つと思います。 ご覧のとおり、結果として得られる処理品質は、実際の使用にはすでに十分に受け入れられています。 残る主な問題は、明るいオブジェクトが存在する場所にあり、処理後に顕著なリンギング効果が得られることです。 これは、明るい領域では、ピクセルの明るさを表示する直線性が侵害され、実際の明るさを誤って解釈するという事実によるものだと思います。 おそらく、対数輝度の前処理などが必要です。
もう一度思い出させてください:
Windowsビルドは次の場所からダウンロードできます。
github.com/downloads/Y-Vladimir/SmartDeblur/SmartDeblur-1.27-win.zipソース(GPL v3ライセンス)は、
github.com /
Y-Vladimir /
SmartDeblurで入手できます。
そしていつものように-SmartDeblurについてのコメントや提案を非常にうれしく思います!
誰がプログラムを試すか-プレビューモードと高品質モードのスムーズ品質パラメーターの動作は非常に異なることに注意してください。 したがって、スムージングスライダーの最終結果は、高品質レンダリングが完了した後にのみ評価できます。
PSメールで私に書いてくれたみんなへの大きなリクエスト。 前の2つの記事の公開後、CCTVカメラのフレームにある車の番号を復元するようにとの大量の手紙を受け取りました(そして引き続き受け取りました)。
私はこれをしません! SmartDeblurもこれを行うことはできません。 これは、ソースデータにない新しい詳細を含む高解像度の画像が複数の低解像度の画像から取得される場合、まったく異なる種類のタスク、つまり超解像度です。 いつかやろうと思うかもしれませんが、確かに近い将来ではありません。
リンクを
更新して続行:
ブラインドデコンボリューション-ぼやけた画像の自動回復 -
ウラジミール・ユジコフ(ウラジミール・ユジコフ)