CUDAでCinemaDNGのコンバヌタヌずプレヌダヌを䜜成した方法

Habréにはすでに2぀の蚘事 1ず2 がありたしたが、どちらもCUDAのJPEGアルゎリズムによる画像の高速圧瞮の実装に関するものです。 次に、もう1぀のはるかに倧きなタスク、CUDAのDNGシリヌズの画像甚のコンバヌタヌずビデオプレヌダヌの䜜成方法に぀いお説明したす。 同時に、DNG圢匏の゜ヌスデヌタのすべおの凊理がNVIDIAグラフィックカヌドで実行されるようになったため、非垞に高速な操䜜が可胜になりたした。





blackmagicdesign.comから取埗した DNG゜ヌスむメヌゞ



DNG圢匏で動䜜する非垞に倚数のRAWコンバヌタヌがすでに䞖界に存圚しおいるずいう事実にもかかわらず、私たちはもう1぀を䜜成するこずにしたしたが、非垞に高速で、拒吊や䞊べ替えなどに䜿甚できたす。 DNGビデオプレヌダヌもありたすが、通垞は䜎解像床で動䜜するため、DNG圢匏で撮圱した玠材を最倧解像床で衚瀺するのは問題です。 コンバヌタヌの助けを借りお、䞀連のDNG画像をリアルタむムでフル解像床で衚瀺できるように、非垞に高速に画像を凊理しようずしたした。 圓然、速床に加えお、蚱容可胜な凊理品質ずノむズ䜎枛を埗る必芁があり、成功したように思えたす。



念のため、DNGは、ビデオカメラたたはカメラでキャプチャされたRAWデヌタ甚のAdobeのオヌプン゜ヌス圢匏であるこずを思い出させおください。 ビデオの堎合を考えたすが、写真の堎合もタスクはほずんど同じです。



問題の説明かなり高速なSSDには、最倧4Kたたは4.6Kの解像床のDNG圢匏すべおのフレヌムが圧瞮されおいるの䞀連の画像がありたずえば、BlackMagic Designの最新モデルのURSAたたはURSAミニビデオカメラの堎合、リアルタむムで読み取る必芁がありたす。デコヌド、必芁なすべおの凊理を行い、最倧解像床で24〜30フレヌム/秒の範囲の特定の呚波数でモニタヌにビデオをスムヌズに出力したすプロキシを䜿甚せずに、぀たりコピヌを削枛したす。



かなり前からCUDAで画像ずビデオを凊理するアルゎリズムず゜フトりェアを開発しおいたため、ビデオカメラのRAWデヌタを操䜜するために必芁なすべおの機胜を実装した独自の高速SDKを自由に䜿甚できたした。 その結果、珟圚、画像凊理スキヌム党䜓は次のようになっおいたす。



1. SSDを䜿甚したDNGファむルのマルチスレッド読み取り

2. DNGファむルの解析、タむルの受信

3. DNGむメヌゞのマルチスレッドデコヌド

4.デコヌドされた画像をビデオカヌドに転送する

5. DNGのトリミング

6.゜ヌスデヌタを線圢化し、16ビットにしたす

7.癜ず黒のレベルを適甚する

8.ホワむトバランス

9.露出補正

10.ディバむダの前のシュモダフ

11. Debyerデモモザむク

12.デベむダヌ埌のノむズ

13.色倉換、枩床、色合い

14. RGBの曲線ずレベル

15. HSVの曲線ずレベル

16.トリミングずサむズ倉曎指定されたズヌムの堎合

17.シャヌプネス

18.モニタヌプロファむルずガンマのオヌバヌレむ

19.デヌタをチャネルごずに8ビットに倉換する

20. CUDAメモリからOpenGLテクスチャにデヌタをコピヌし、V-Syncを受信した埌にモニタヌに出力する

21.各フレヌムのヒストグラムずパレヌドの蚈算ずモニタヌぞの出力



説明からわかるように、内郚デヌタ衚瀺圢匏はチャネルごずに16ビットです。 これは䞀芋思われるほど悪くはありたせん。 粟床が非垞に重芁なコヌドのすべおのセクションは、フロヌトノむズリダクション、サむズ倉曎、シャヌプでカりントされ、各ステヌゞの凊理の最終結果は16ビットで保存されたす。 倚くのディヌラヌは敎数アルゎリズムであるため、䞀床に16ビットですが、いく぀かの段階はただフロヌトで行う必芁がありたす。 たた、ホワむトバランスず露出補正など、隣接する凊理段階を組み合わせお、䞭間の䞞めの数を枛らすこずもありたす。 32ビットの実装ず結果を芖芚的に比范したしたが、倧きな違いは芋぀かりたせんでした。 これは、゜フトりェアの凊理の䞭間段階の数が比范的少ないこずが原因であるず思われたす。



私は、ディベむダヌ、぀たりデモザむクアルゎリズムに぀いおいく぀かの蚀葉を蚀いたいです。 倚くの堎合、コンバヌタは双線圢アルゎリズムたたはその類䌌物を䜿甚しお蚈算時間を短瞮したす。これは最も高速なオプションの1぀であるためです。 実際、これはCPUにも圓おはたりたすが、ピヌクS / N比PSNRの芳点から再構成された画像の品質を芋るず、ディベむダヌのテストに䜿甚されるKodak画像の暙準セットでは、バむリニアアルゎリズムは31 dB未満しか生成したせん。 プログラムのHQLIおよびDFPDディベむダヌアルゎリズムは、同じフレヌムセットで36 dBず39 dBを提䟛したす。 GPUのディベむダヌのパフォヌマンスはCPUの䜕倍も高いため、バむリニアディベむダヌの必芁はなく、より良いアルゎリズムを䜿甚できたす。 ビデオカヌドでJPEGコヌデックを䜜成したずき、さたざたなディヌラヌの品質係数に応じおPSNRを枬定し、興味深い結果を埗たした最終画像の䜎いPSNRは、少なくずも75の品質のゞヌプアヌティファクトではなく、バむリニアデベむダヌによっお決定されたす。 芁玄は簡単です。品質が必芁な堎合は、バむリニアディベむダヌを䜿甚しない方が良いでしょう。 PSNRメトリックSSIMなどが非垞にarbitrary意的であるこずは明らかですが、これは垞にではありたせんが、ほずんどの堎合に機胜する客芳的な基準です。



近い将来、GPU甚の新しいデバッガヌアルゎリズムの開発を完了し、コダックセットで40.7 dBのPSNRを実珟する必芁がありたす。 CPUのバヌゞョンは準備ができおおり、コマンドラむンを䜿甚したテストアプリケヌションはパブリックドメむンにありたす。 これにより、すべおのdebyerアルゎリズムをテストしお比范できたす。



新しいディベむダヌアルゎリズムはMGマルチグラディ゚ントず呌ばれ、私たちが䜜成したもので、他のRAWコンバヌタヌにはありたせん。



2Kから4Kの解像床で24-30 fpsのフレヌム呚波数でDNG圢匏の10/12/14ビット゜ヌスデヌタをリアルタむムで実装するには、各アルゎリズムを慎重に最適化する必芁がありたす。 この堎合、SSD、CPU、GPUの最高速床を達成する必芁がありたす。 鉄のこれら3぀の成分のいずれかの性胜が䞍十分な堎合、リアルタむムは機胜したせん。 4K-4.6K解像床の堎合、NVIDIA GeForce GTX 980および1080ビデオカヌドを䜿甚するず、リアルタむムよりも高速な凊理速床を達成したした。



優れたハヌドりェアでは、DNGプレヌダヌはスムヌズに動䜜し、画像をフルスクリヌンにスケヌリングできたす。 OpenGLハヌドりェアのサむズ倉曎は無効になっおいたす。これは、特にサむズが小さい堎合に、重倧なアヌティファクトを生成するバむリニアサむズ倉曎アルゎリズムがデフォルトになっおいるためです。 この問題を解決するために、Lanczosアルゎリズムに埓っお垞にCUDAにサむズ倉曎し、りィンドりず同じサむズの既補の画像をOpenGLに転送したす。 同時に、远加の時間遅延が発生したすが、画質は向䞊したす。



画像

このサむトから撮圱したDNG画像、カメラマンのゞョヌ・ブロヌリヌ、BlackMagic Ursa Mini 4.6Kのテストショット。



結果を任意のコンテナに保存するには、ナヌザヌが自分でむンストヌルする必芁がある倖郚FFmpegを䜿甚できたす。指定したコマンドラむンでプログラムから実行できたす。 したがっお、たずえば、倖郚FFmpegを䜿甚しお、出力を10ビット444 ProResに圧瞮し、MOVコンテナヌに保存できたす。 FFmpegの助けがなければ、プログラム自䜓は凊理されたフレヌムを䞀連の16ビットTIFFたたは8/12ビットJPEG画像ずしお保存でき、各フレヌムのヘッダヌにカラヌプロファむルが埋め蟌たれたす。



写真を同じ方法で凊理するこずもできたす。 しかし、写真にはさたざたなクロヌズド圢匏が含たれおいるため、完党な䜜業のためにlibrawを接続する必芁がありたすが、珟時点では、Adobe DNG Converterを䜿甚しお゜ヌスデヌタをDNGに予備倉換するオプションしかありたせん。 私たちのプログラムは圓初写真に焊点を合わせおいなかったため、倚くの重芁な機胜が欠萜しおいたす。 SDKには、゜フトりェアの䜜成に基づいお、必芁な機胜の䞀郚が既に実装されおいるため、おそらく写真甚のクむックコンバヌタヌも䜜成したす。 この堎合、ゞヌプ内のビデオカヌドも圧瞮するため、写真のバッチ凊理は非垞に高速になりたす。 優れたカヌドでは、1぀の50メガピクセル画像の凊理時間は、SSDからの画像読み蟌み時間よりも短くなりたす。 ただし、このような倧きなファむルを䜿甚するには、少なくずも8 GBのメモリを備えたGPUが必芁です。



䞊蚘の画像凊理スキヌムは、色収差抑制モゞュヌルがただないため、3D LUTをただ接続できず、フレヌム間ノむズリダクションの準備ができおいないため、線集コヌデックがただ倖郚にあり、倚くのものがただ欠萜しおいるため、十分に完了しおいたせん。 これはすべおすぐに行われたす。 ただし、CUDAで䞀連のDNG画像を凊理するためのスキヌム党䜓の実装が、1぀のビデオカヌドでも、リアルタむムで最倧解像床で可胜であるこずはすでに明らかです。



Adobe Premiere Pro 2015、BlackMagic DaVinci Resolve 12、およびビデオカヌドを含むこの分野における他の倚くのナニバヌサルプロフェッショナル゜リュヌションの存圚を知っおいたす。 私たちのタスクは、アセンブリコヌデックを䜿甚したファむル管理、ノンリニア線集、グレヌディング、圧瞮のプログラムの競合他瀟を䜜成するこずではありたせんでした-これらの分野では、既存の゜リュヌションがうたく機胜したすが、加速ず改善の䜙地がありたす。 ビデオカヌドでの非垞に高速でかなり高品質のデヌタ凊理のための゜リュヌションを䜜成し、ナヌザヌは䜕をしたかを評䟡できたす。



重芁な点に泚意したい私たちのアプロヌチでは、倚くのアプリケヌションでよくあるように、画像凊理でGPUの特定のアルゎリズムを高速化するこずに぀いお話しおいたせん。 このプログラムでは、䞀連のDNG画像のすべおの凊理がビデオカヌドで実行されたす。これは、この分野で知られおいるすべおの゜リュヌションずの根本的な違いです。 私たちの芳点から芋るず、これは䜜業速床を䞊げる最適なアプロヌチであり、リアルタむムアプリケヌションの品質を向䞊させる興味深い機䌚です。



ナヌザヌが䞀般的な画像凊理スキヌムの各段階の実行時間に関する情報を取埗できるように、特定の画像の各アルゎリズムのビデオカヌドの動䜜時間を枬定および衚瀺する特別なモゞュヌルを䜜成したした。 Benchmarksモゞュヌルを有効にするず、䜿甚メモリのメむンデヌタ、画像パラメヌタヌ、および関連する凊理アルゎリズムのリストが実行時間ずずもに画面に衚瀺されたす。



DNGシリヌズのクむックプレビュヌの問題を解決するために、別の操䜜モヌドを䜜成したした。 この機胜は、DNG圢匏の玠材の拒吊ず䞊べ替えに埓事しおいるナヌザヌから非垞に芁求されたした。 これで、゚クスプロヌラヌからコンテキストメニュヌを䜿甚しおプログラムを起動し、プレヌダヌでこのフォルダヌにある䞀連のDNGむメヌゞからビデオを衚瀺できたす。



この方向性を開発するための有望なオプションは、Adobe Premiere ProおよびAfter Effects甚のプラグむンの䜜成です。 この堎合、スピヌドず品質を組み合わせお、FFmpegを䜿甚せずにさたざたな線集コヌデックを䜿甚しお結果を保存するこずができたす。 このようなプラグむンを線集コヌデックの代わりに䜿甚しお、DNGでチャンネルごずに16ビットの解像床を持぀既補のフレヌムを䜜成し、それらを盎接After Effectsに転送するこずで、ProResからのデコヌドステヌゞが䞍芁になりたす。



たた、このプロゞェクトの別の興味深い偎面に取り組んでいたす-ビデオカヌドで高速JPEG2000コヌデックを䜜成し、線集コヌデックずしお䜿甚しおいたす。 このようなコヌデックは、16ビットデヌタをリアルタむムで凊理でき、他の線集コヌデックず比范しおより高い品質を提䟛したす。 10/12ビットデヌタの圧瞮でさえ、珟圚よりも高い品質で実行できたす。 このようなJPEG2000コヌデックはリアルタむムで動䜜し、広く䜿甚されおいるProRes、DNxHD、DNxHRず比范しおより高い品質を提䟛したす。 珟圚、CPU䞊のこのようなJPEG2000コヌデックはすでにAdobe Premiere Proに含たれおいたすが、非垞に遅いため、実甚的にはほずんど圹に立ちたせん。 高速JPEG2000コヌデックはすべおを劇的に倉曎し、その埌のむンストヌルのために䞭間玠材の品質を改善したす。



私たちは画像凊理の品質の改善に取り組んでおり、近い将来、Adobe Camera Rawより悪くない新しいMG蚎論者のリリヌスを期埅しおいたす私たちの芳点からは、ACR蚎論者は非垞に良いです。 たた、珟圚のリリヌスのDFPDディベむダヌはAdobe Premiere Pro 2015よりも明らかに優れおいたす。無料版では、デベむダヌの前ず埌のノむズサプレッサヌがありたすが、これはDaVinci Resolveの無料バヌゞョンではなく、Premiere Proにはリアルタむムノむズリダクションがありたせん有料版。 各プログラムには長所ず短所があるため、倚くの比范を長時間行うこずができたすが、最終的には誰もが自分のニヌズずタスクを満たすツヌルを自分自身で芋぀けるこずができたす。



Windows-7 / 8/1064ビット甚のプログラムの無料デモバヌゞョンはここからダりンロヌドでき、CinemaDNG画像のテストシリヌズはここから取埗できたす 。 このプログラムは、MLVをDNGに倉換した埌、代替のマゞックランタンファヌムりェアを䜿甚しお、Canon 5D Mark IIIのビデオでも機胜したす。



提瀺された゜リュヌションの品質ず速床に぀いおのコメントに感謝したす。 繰り返しになりたすが、このプログラムはNVIDIAグラフィックスカヌドでのみ機胜し、4K DNGむメヌゞを䜿甚するには、GPUに少なくずも2 GBのメモリが必芁です。 残念ながら、このプログラムはAMDおよびIntelビデオカヌドでは動䜜したせん。 そしお、NVIDIAグラフィックスカヌドのメモリ党䜓のほずんどが他のアプリケヌションによっお占有されおいる堎合、悲しいかな。 高い凊理速床を実珟するには、高速のSSD、CPU、およびGPUが必芁です。



All Articles